IyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCiMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQojICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgojICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQojIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQojIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKIyB1bmRlciB0aGUgTGljZW5zZS4KCkFjdGlvblNldF9MZGFwTWVudUFjdGlvblNldF9sYWJlbD1NZW51IExEQVAKCkVkaXRvcl9TaW5nbGVUYWJFbnRyeUVkaXRvcl9zaG9ydG5hbWU9RWRpdGV1ciBkJ2VudHJcdTAwRTllIHRhYnVsYWlyZQpFZGl0b3JfU2luZ2xlVGFiRW50cnlFZGl0b3JfZnVsbG5hbWU9RWRpdGV1ciBkJ2VudHJcdTAwRTllIHRhYnVsYWlyZSAo4CBvbmdsZXQgdW5pcXVlKQpFZGl0b3JfU2luZ2xlVGFiRW50cnlFZGl0b3JfZGVzY3JpcHRpb249Q2hhcXVlIGVudHJcdTAwRTllIGVzdCBvdXZlcnRlIGRhbnMgbGUgbVx1MDBFQW1lIFx1MDBFOWRpdGV1ciDgIG9uZ2xldCB1bmlxdWUuCkVkaXRvcl9NdWx0aVRhYkVudHJ5RWRpdG9yX3Nob3J0bmFtZT1FZGl0ZXVyIGQnZW50clx1MDBFOWUgdGFidWxhaXJlCkVkaXRvcl9NdWx0aVRhYkVudHJ5RWRpdG9yX2Z1bGxuYW1lPUVkaXRldXIgZCdlbnRyXHUwMEU5ZSB0YWJ1bGFpcmUgKOAgb25nbGV0cyBtdWx0aXBsZXMpCkVkaXRvcl9NdWx0aVRhYkVudHJ5RWRpdG9yX2Rlc2NyaXB0aW9uPUNoYXF1ZSBlbnRyXHUwMEU5ZSBlc3Qgb3V2ZXJ0ZSBkYW5zIHVuIFx1MDBFOWRpdGV1ciDgIG9uZ2xldCBzXHUwMEU5cGFyXHUwMEU5LgpFZGl0b3JfU2luZ2xlVGFiTGRpZkVudHJ5RWRpdG9yX3Nob3J0bmFtZT1FZGl0ZXVyIGQnZW50clx1MDBFOWUgTERJRgpFZGl0b3JfU2luZ2xlVGFiTGRpZkVudHJ5RWRpdG9yX2Z1bGxuYW1lPUVkaXRldXIgZCdlbnRyXHUwMEU5ZSBMRElGICjgIG9uZ2xldCB1bmlxdWUpCkVkaXRvcl9TaW5nbGVUYWJMZGlmRW50cnlFZGl0b3JfZGVzY3JpcHRpb249Q2hhcXVlIGVudHJcdTAwRTllIGVzdCBvdXZlcnRlIGRhbnMgbGUgbVx1MDBFQW1lIFx1MDBFOWRpdGV1ciDgIG9uZ2xldCB1bmlxdWUuCkVkaXRvcl9NdWx0aVRhYkxkaWZFbnRyeUVkaXRvcl9zaG9ydG5hbWU9RWRpdGV1ciBkJ2VudHJcdTAwRTllIExESUYKRWRpdG9yX011bHRpVGFiTGRpZkVudHJ5RWRpdG9yX2Z1bGxuYW1lPUVkaXRldXIgZCdlbnRyXHUwMEU5ZSBMRElGICjgIG9uZ2xldHMgbXVsdGlwbGVzKQpFZGl0b3JfTXVsdGlUYWJMZGlmRW50cnlFZGl0b3JfZGVzY3JpcHRpb249Q2hhcXVlIGVudHJcdTAwRTllIGVzdCBvdXZlcnRlIGRhbnMgdW4gXHUwMEU5ZGl0ZXVyIOAgb25nbGV0IHNcdTAwRTlwYXJcdTAwRTkuCgpFZGl0b3JfU2VhcmNoUmVzdWx0RWRpdG9yX25hbWU9RWRpdGV1ciBkZSByZWNoZXJjaGUKRWRpdG9yX1NjaGVtYUJyb3dzZXJfbmFtZT1FeHBsb3JhdGV1ciBkZSBzY2hcdTAwRTltYQoKVmlld19DYXRlZ29yeV9uYW1lPU5hdmlnYXRldXIgTERBUApWaWV3X0Nvbm5lY3Rpb25WaWV3X25hbWU9Q29ubmV4aW9ucwpWaWV3X0Jyb3dzZXJWaWV3X25hbWU9TmF2aWdhdGV1ciBMREFQClZpZXdfTW9kaWZpY2F0aW9uTG9nc1ZpZXdfbmFtZT1Mb2dzIGRlIG1vZGlmaWNhdGlvbnMKVmlld19TZWFyY2hMb2dzVmlld19uYW1lPUxvZ3MgZGUgcmVjaGVyY2hlcwoKTmV3V2l6YXJkX05ld0VudHJ5V2l6YXJkX25hbWU9RW50clx1MDBFOWUgTERBUApOZXdXaXphcmRfTmV3Q29udGV4dEVudHJ5V2l6YXJkX25hbWU9Q29udGV4dCBFbnRyXHUwMEU5ZSBMREFQCk5ld1dpemFyZF9OZXdTZWFyY2hXaXphcmRfbmFtZT1SZWNoZXJjaGUgTERBUApOZXdXaXphcmRfTmV3Qm9va21hcmtXaXphcmRfbmFtZT1TaWduZXQgTERBUApOZXdXaXphcmRfQmF0Y2hPcGVyYXRpb25XaXphcmRfbmFtZT1Hcm91cGUgZCdvcFx1MDBFOXJhdGlvbnMgTERBUAoKSW1wb3J0V2l6YXJkc19DYXRlZ29yeV9uYW1lPU5hdmlnYXRldXIgTERBUApJbXBvcnRXaXphcmRfSW1wb3J0TGRpZldpemFyZF9uYW1lPUxESUYgdmVycyBMREFQCkltcG9ydFdpemFyZF9JbXBvcnRMZGlmV2l6YXJkX2Rlc2NyaXB0aW9uPUltcG9ydGVyIHVuIGZpY2hpZXIgTERJRgpJbXBvcnRXaXphcmRfSW1wb3J0RHNtbFdpemFyZF9uYW1lPURTTUwgdmVycyBMREFQCkltcG9ydFdpemFyZF9JbXBvcnREc21sV2l6YXJkX2Rlc2NyaXB0aW9uPUltcG9ydGVyIHVuIGZpY2hpZXIgRFNNTAoKRXhwb3J0V2l6YXJkc19DYXRlZ29yeV9uYW1lPU5hdmlnYXRldXIgTERBUApFeHBvcnRXaXphcmRfRXhwb3J0TGRpZldpemFyZF9uYW1lPUxEQVAgdmVycyBMRElGCkV4cG9ydFdpemFyZF9FeHBvcnRMZGlmV2l6YXJkX2Rlc2NyaXB0aW9uPUV4cG9ydGVyIHZlcnMgdW4gZmljaGllciBMRElGCkV4cG9ydFdpemFyZF9FeHBvcnREZHNtbFdpemFyZF9uYW1lPUxEQVAgdmVycyBEU01MCkV4cG9ydFdpemFyZF9FeHBvcnREZHNtbFdpemFyZF9kZXNjcmlwdGlvbj1FeHBvcnRlciB2ZXJzIHVuIGZpY2hpZXIgRFNNTApFeHBvcnRXaXphcmRfRXhwb3J0Q3N2V2l6YXJkX25hbWU9TERBUCB2ZXJzIGZpY2hpZXIgQ1NWCkV4cG9ydFdpemFyZF9FeHBvcnRDc3ZXaXphcmRfZGVzY3JpcHRpb249RXhwb3J0ZXIgdmVycyB1biBmaWNoaWVyIENTVgpFeHBvcnRXaXphcmRfRXhwb3J0RXhjZWxXaXphcmRfbmFtZT1MREFQIHZlcnMgRXhjZWxcdTAwOTkKRXhwb3J0V2l6YXJkX0V4cG9ydEV4Y2VsV2l6YXJkX2Rlc2NyaXB0aW9uPUV4cG9ydGVyIHZlcnMgdW5lIGZldWlsbGUgRXhjZWxcdTAwOTkKRXhwb3J0V2l6YXJkX0V4cG9ydE9kZldpemFyZF9uYW1lPUxEQVAgdmVycyBmaWNoaWVyIE9ERgpFeHBvcnRXaXphcmRfRXhwb3J0T2RmV2l6YXJkX2Rlc2NyaXB0aW9uPUV4cG9ydGVyIHZlcnMgdW4gZmljaGllciBPREYKClNlYXJjaFBhZ2VfTGRhcFNlYXJjaF9sYWJlbD1SZWNoZXJjaGUgTERBUAoKUHJlZlBhZ2VfU2VhcmNoUmVzdWx0RWRpdG9yUHJlZmVyZW5jZVBhZ2VfbmFtZT1FZGl0ZXVyIGRlIHJlY2hlcmNoZQpQcmVmUGFnZV9Nb2RpZmljYXRpb25Mb2dzUHJlZmVyZW5jZVBhZ2VfbmFtZT1WdWUgbG9ncyBkZSBtb2RpZmljYXRpb24KUHJlZlBhZ2VfU2VhcmNoTG9nc1ByZWZlcmVuY2VQYWdlX25hbWU9VnVlIGxvZ3MgZGUgcmVjaGVyY2hlClByZWZQYWdlX0VudHJ5RWRpdG9yc1ByZWZlcmVuY2VQYWdlX25hbWU9RWRpdGV1cnMgZCdlbnRyXHUwMEU5ZQoKUHJvcFBhZ2VfU2NoZW1hX25hbWU9U2NoXHUwMEU5bWEKUHJvcFBhZ2VfUm9vdERTRV9uYW1lPVJvb3QgRFNFClByb3BQYWdlX1NlYXJjaF9uYW1lPVJlY2hlcmNoZQpQcm9wUGFnZV9FbnRyeV9uYW1lPUVudHJcdTAwRTllClByb3BQYWdlX0F0dHJpYnV0ZV9uYW1lPUF0dHJpYnV0ClByb3BQYWdlX1ZhbHVlX25hbWU9VmFsZXVyClByb3BQYWdlX0Jvb2ttYXJrX25hbWU9U2lnbmV0CgpBY3Rpb25fT3BlblNjaGVtYUJyb3dzZXJBY3Rpb25fbGFiZWw9T3V2cmlyIGwnZXhwbG9yYXRldXIgZGUgc2NoXHUwMEU5bWEKQWN0aW9uX05ld0Nvbm5lY3Rpb25BY3Rpb25fbGFiZWw9Tm91dmVsbGUgQ29ubmV4aW9uLi4uCkFjdGlvbl9OZXdFbnRyeUFjdGlvbl9sYWJlbD1Ob3V2ZWxsZSBlbnRyXHUwMEU5ZS4uLgpBY3Rpb25fTmV3QXR0cmlidXRlQWN0aW9uX2xhYmVsPU5vdXZlYXUgYXR0cmlidXQuLi4KQWN0aW9uX05ld1ZhbHVlQWN0aW9uX2xhYmVsPU5vdXZlbGxlIHZhbGV1ci4uLgpBY3Rpb25fTmV3U2VhcmNoQWN0aW9uX2xhYmVsPU5vdXZlbGxlIHJlY2hlcmNoZS4uLgpBY3Rpb25fTmV3Qm9va21hcmtBY3Rpb25fbGFiZWw9Tm91dmVhdSBzaWduZXQuLi4KQWN0aW9uX05ld0JhdGNoT3BlcmF0aW9uQWN0aW9uX2xhYmVsPU5vdXZlYXUgZ3JvdXBlIGQnb3BcdTAwRTlyYXRpb25zLi4uCkFjdGlvbl9PcGVuRW5jb2RlckRlY29kZXJEaWFsb2dBY3Rpb25fbGFiZWw9T3V2cmUgdW4gZW5jb2RldXIvZFx1MDBFOWNvZGV1cgpBY3Rpb25fTmV3TGRpZkZpbGVBY3Rpb25fbGFiZWw9Tm91dmVhdSBmaWNoaWVyIExESUYKQWN0aW9uX0dvdG9EbkFjdGlvbl9sYWJlbD1BbGxlciBhdSBETi4uLgoKRGVjb3JhdG9yX0Jyb3dzZXJWaWV3TGFiZWxEZWNvcmF0b3JfbGFiZWw9RFx1MDBFOWNvcmF0ZXVyIExEQVAKRGVjb3JhdG9yX0Jyb3dzZXJWaWV3TGFiZWxEZWNvcmF0b3JfZGVzY3JpcHRpb249RFx1MDBFOWNvcmUgbGVzIGljb25lcyBMREFQCg==