RG9jdW1lbnQgVGl0bGU6Cj09PT09PT09PT09PT09PQpQaW1jb3JlIHYzLjAuNSBDTVMgLSBNdWx0 aXBsZSBXZWIgVnVsbmVyYWJpbGl0aWVzCgoKUmVmZXJlbmNlcyAoU291cmNlKToKPT09PT09PT09 PT09PT09PT09PT0KaHR0cDovL3d3dy52dWxuZXJhYmlsaXR5LWxhYi5jb20vZ2V0X2NvbnRlbnQu cGhwP2lkPTE0ODIKCgpSZWxlYXNlIERhdGU6Cj09PT09PT09PT09PT0KMjAxNS0wNS0wOAoKClZ1 bG5lcmFiaWxpdHkgTGFib3JhdG9yeSBJRCAoVkwtSUQpOgo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KMTQ4MgoKCkNvbW1vbiBWdWxuZXJhYmlsaXR5IFNjb3JpbmcgU3lzdGVt Ogo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNi4yCgoKUHJvZHVjdCAmIFNl cnZpY2UgSW50cm9kdWN0aW9uOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClBpbWNv cmUgaXMgYSBwb3dlcmZ1bCBhbmQgcm9idXN0IFplbmQgRnJhbWV3b3JrIGJhc2VkIFBIUCBjb250 ZW50IG1hbmFnZW1lbnQgc3lzdGVtIChDTVMpIGZvciBjcmVhdGluZyBhbmQgbWFuYWdpbmcgZGln aXRhbCAKY29udGVudCBhbmQgYXNzZXRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBvcGVuLXNvdXJjZSBC U0QgbGljZW5zZS4gQ3JlYXRlIG91dHN0YW5kaW5nIGRpZ2l0YWwgZXhwZXJpZW5jZXMgb24gdGhl IG1vc3QgZmxleGlibGUgCmNvbnRlbnQgbWFuYWdlbWVudCBwbGF0Zm9ybSBhdmFpbGFibGUuIE1h bmFnZSBhbmQgZWRpdCBhbnkgdHlwZSBvZiBkaWdpdGFsIGNvbnRlbnQsIGZvciBhbnkgZGV2aWNl IGFuZCBjaGFubmVsIGluIGEgMTAwJSAKZmxleGlibGUgYW5kIHBlcnNvbmFsaXplZCB3YXkuIFBp bWNvcmUgZmVhdHVyZXMgYXdhcmQtd2lubmluZyBzaW5nbGUtc291cmNlIGFuZCBtdWx0aS1jaGFu bmVsIHB1Ymxpc2hpbmcgZnVuY3Rpb25hbGl0eSAKbWFraW5nIGl0IGVhc3kgdG8gbWFuYWdlLCB1 cGRhdGUsIGFuZCBpbnRlZ3JhdGUgY29udGVudCBhbmQgZGF0YSBmcm9tIHZhcmlvdXMgc291cmNl cy4gV2l0aCBwaW1jb3JlIGJyYW5kcyBjYW4gY3JlYXRlIAphbmQgbWFuYWdlIHJpY2ggZGlnaXRh bCBleHBlcmllbmNlcyBmb3IgYWxsIG9mIHRoZWlyIG91dHB1dCBjaGFubmVscyBhdCBvbmNlOiB3 ZWIsIG1vYmlsZSwgYXBwcywgc29jaWFsIHBsYXRmb3JtcywgCnByaW50IGFuZCBkaWdpdGFsIHNp Z25hZ2UuIFdpdGggcGltY29yZSB5b3UgY2FuIHRydWx5IGBlZGl0IG9uY2UgJiByZXVzZSBhbnl3 aGVyZWAuCgooQ29weSBvZiB0aGUgSG9tZXBhZ2U6IGh0dHBzOi8vd3d3LnBpbWNvcmUub3JnLyAp CgoKQWJzdHJhY3QgQWR2aXNvcnkgSW5mb3JtYXRpb246Cj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpBbiBpbmRlcGVuZGVudCB2dWxuZXJhYmlsaXR5IGxhYm9yYXRvcnkgcmVzZWFyY2hl ciBkaXNjb3ZlcmVkIG11bHRpcGxlIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgb2ZmaWNpYWwgUElN IENvcmUgdjMuMC41IENvbnRlbnQgTWFuYWdlbWVudCBTeXN0ZW0uCgoKVnVsbmVyYWJpbGl0eSBE aXNjbG9zdXJlIFRpbWVsaW5lOgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIw MTUtMDUtMDE6CVJlc2VhcmNoZXIgTm90aWZpY2F0aW9uICYgQ29vcmRpbmF0aW9uIChBbGFpbiBI b21ld29vZCAtIFB3QyBOZXcgWmVhbGFuZCkKMjAxNS0wNS0wMToJVmVuZG9yIE5vdGlmaWNhdGlv biAoUGltQ29yZSBDTVMgU2VjdXJpdHkgVGVhbSkKMjAxNS0wNS0wNToJVmVuZG9yIFJlc3BvbnNl L0ZlZWRiYWNrIChQaW1Db3JlIENNUyBTZWN1cml0eSBUZWFtKQoyMDE1LTA1LTA3OglWZW5kb3Ig Rml4L1BhdGNoIChQaW1Db3JlIERldmVsb3BlciBUZWFtKQoyMDE1LTA1LTA4OglQdWJsaWMgRGlz Y2xvc3VyZSAoVnVsbmVyYWJpbGl0eSBMYWJvcmF0b3J5IC0gQWxhaW4gSG9tZXdvb2QpCgoKRGlz Y292ZXJ5IFN0YXR1czoKPT09PT09PT09PT09PT09PT0KUHVibGlzaGVkCgoKQWZmZWN0ZWQgUHJv ZHVjdChzKToKPT09PT09PT09PT09PT09PT09PT0KUGltY29yZSBHbWJIClByb2R1Y3Q6IFBpbUNv cmUgLSBDb250ZW50IE1hbmFnZW1lbnQgU3lzdGVtIDMuMC41CgoKRXhwbG9pdGF0aW9uIFRlY2hu aXF1ZToKPT09PT09PT09PT09PT09PT09PT09PT0KUmVtb3RlCgoKU2V2ZXJpdHkgTGV2ZWw6Cj09 PT09PT09PT09PT09PQpIaWdoCgoKVGVjaG5pY2FsIERldGFpbHMgJiBEZXNjcmlwdGlvbjoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4xCkEgKHRpbWUtYmFzZWQpIGJsaW5kIHNx bCBpbmplY3Rpb24gd2ViIHZ1bG5lcmFiaWxpdHkgaGFzIGJlZW4gZGlzY292ZXJlZCBpbiB0aGUg b2ZmaWNpYWwgUGltY29yZSB2My4wLjUgQ29udGVudCBNYW5hZ2VtZW50IFN5c3RlbSAod2ViLWFw cGxpY2F0aW9uKS4KVGhlIHZ1bG5lcmFiaWxpdHkgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgb3Ig cHJpdmlsZWdlZCB1c2VyIGFjY291bnRzIHRvIGV4ZWN1dGUgb3duIHNxbCBjb21tYW5kcyB0byBj b21wcm9taXNlIHRoZSBhZmZlY3RlZCB3ZWItc2VydmVyIGRibXMuCgpBIGJsaW5kIGF1dGhlbnRp Y2F0ZWQgU1FMIGluamVjdGlvbiB2dWxuZXJhYmlsaXR5IGV4aXN0cyBpbiB0aGUgZmlsdGVyaW5n IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEhUVFAgZXJyb3IgZGlzcGxheSBpbiB0aGUgYWRtaW5pc3Ry YXRpb24gcGFuZWwuIApBdXRoZW50aWNhdGVkIGlzIHJlcXVpcmVkIHRvIGV4cGxvaXQgdGhpcyB2 dWxuZXJhYmlsaXR5LCBob3dldmVyIGxvdyBwcml2aWxlZ2UgdXNlcnMgbWF5IGhhdmUgYWNjZXNz IHRvIHRoaXMgZnVuY3Rpb25hbGl0eSAoaS5lLiBpdHMgbG9jYXRlZCAKdW5kZXIgYE1hcmtldGlu ZyAtIFNlYXJjaCBFbmdpbmUgT3B0aW1pc2F0aW9uYCkuIFRoZSByZXF1ZXN0IG1ldGhvZCB0byBl eGVjdXRlIHRoZSBtYWxpY2lvdXMgc3FsIGNvbW1hbmRzIGlzIEdFVCBhbmQgdGhlIGlzc3VlIGlz IGV4aXN0cyBpbiAKdGhlIGNvZGUgbGluZSBvZiB0aGUgd2ViLWFwcGxpY2F0aW9uLgoKVGhlIHNl Y3VyaXR5IHJpc2sgb2YgdGhlIHNxbCB2dWxuZXJhYmlsaXR5IGlzIGVzdGltYXRlZCBhcyBoaWdo IHdpdGggYSBjdnNzIChjb21tb24gdnVsbmVyYWJpbGl0eSBzY29yaW5nIHN5c3RlbSkgY291bnQg b2YgNi4yLgpFeHBsb2l0YXRpb24gb2YgdGhlIHJlbW90ZSBzcWwgaW5qZWN0aW9uIHdlYiB2dWxu ZXJhYmlsaXR5IHJlcXVpcmVzIGEgbG93IHByaXZpbGVnZSBhcHBsaWNhdGlvbiB1c2VyIGFjY291 bnQgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uLiAKU3VjY2Vzc2Z1bCBleHBsb2l0YXRpb24gb2Yg dGhlIHNxbCBpbmplY3Rpb24gdnVsbmVyYWJpbGl0eSByZXN1bHRzIGluIGFwcGxpY2F0aW9uIGFu ZCB3ZWItc2VydmljZSBvciBkYm1zIGNvbXByb21pc2UuCgpSZXF1ZXN0IE1ldGhvZChzKToKCQkJ CQkJWytdIEdFVAoKVnVsbmVyYWJsZSBNb2R1bGUocyk6CgkJCQkJCVsrXSAuL21pc2MvaHR0cC1l cnJvci1sb2cKClZ1bG5lcmFibGUgUGFyYW1ldGVyKHMpOgoJCQkJCQlbK10gX2RjCgoKMS4yCkEg Y29tbWFuZCBleGVjdXRpb24gd2ViIHZ1bG5lcmFiaWxpdHkgaGFzIGJlZW4gZGlzY292ZXJlZCBp biB0aGUgb2ZmaWNpYWwgUGltY29yZSB2My4wLjUgQ29udGVudCBNYW5hZ2VtZW50IFN5c3RlbSAo d2ViLWFwcGxpY2F0aW9uKS4KVGhlIHZ1bG5lcmFiaWxpdHkgYWxsb3dzIHJlbW90ZSBhdHRhY2tl cnMgb3IgbG9jYWwgcHJpdmlsZWdlIHVzZXIgYWNjb3VudHMgdG8gY29tcHJvbWlzZSB0aGUgd2Vi LXNlcnZlciBieSBleGVjdXRpb24gb2YgbWFsaWNpb3VzIGNvZGUuCgpUaGUgbmV3c2xldHRlciBz ZW5kaW5nIGZ1bmN0aW9uYWxpdHkgdXNlcyB1bnNhbml0aXplZCB1c2VyIHByb3ZpZGVkIGlucHV0 IGFzIHBhcnQgb2YgYSBzaGVsbCBjb21tYW5kLiBBdXRoZW50aWNhdGVkIHVzZXJzIGNhbiBtYW5p cHVsYXRlIAp0aGVzZSB2YWx1ZXMgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29tbWFuZHMuIE5vdGUg dGhhdCBsb3cgcHJpdmlsZWdlIHVzZXJzIGFyZSBsaWtlbHkgdG8gaGF2ZSBhY2Nlc3MgdG8gdGhp cyBmdW5jdGlvbmFsaXR5IChlLmcuIG1hcmtldGluZyB1c2VycykuIApBdXRoZW50aWNhdGVkIGlz IHJlcXVpcmVkIHRvIGV4cGxvaXQgdGhpcyB2dWxuZXJhYmlsaXR5LiBUaGUgcmVxdWVzdCBtZXRo b2QgdG8gZXhlY3V0ZSBpcyBQT1NUIGFuZCB0aGUgYXR0YWNrIHZlY3RvciBpcyBsb2NhdGVkIG9u IHRoZSAKYXBwbGljYXRpb24tc2lkZSBvZiB0aGUgb25saW5lIHNlcnZpY2UuCgpUaGUgc2VjdXJp dHkgcmlzayBvZiB0aGUgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgaXMg ZXN0aW1hdGVkIGFzIGhpZ2ggd2l0aCBhIGN2c3MgKGNvbW1vbiB2dWxuZXJhYmlsaXR5IHNjb3Jp bmcgc3lzdGVtKSBjb3VudCBvZiA2LjEuCkV4cGxvaXRhdGlvbiBvZiB0aGUgYXJiaXRyYXJ5IGNv ZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgcmVxdWlyZXMgbm8gdXNlciBpbnRlcmFjdGlvbiBi dXQgYSBsb3cgcHJpdmlsZWdlIHdlYi1hcHBsaWNhdGlvbiB1c2VyIGFjY291bnQuClN1Y2Nlc3Nm dWwgZXhwbG9pdGF0aW9uIG9mIHRoZSByZW1vdGUgdnVsbmVyYWJpbGl0eSByZXN1bHRzIGluIHVu YXV0aG9yaXplZCBleGVjdXRpb24gb2Ygc3lzdGVtIHNwZWNpZmljIGNvZGVzLgoKUmVxdWVzdCBN ZXRob2Qocyk6CgkJCQkJCVsrXSBQT1NUCgpWdWxuZXJhYmxlIE1vZHVsZShzKToKCQkJCQkJWytd IC9yZXBvcnRzL25ld3NsZXR0ZXIvc2VuZAoKVnVsbmVyYWJsZSBQYXJhbWV0ZXIocyk6CgkJCQkJ CVsrXSBIT1NUCgoKMS4zClR3byByZWZsZWN0ZWQgY3Jvc3Mgc2l0ZSBzY3JpcHRpbmcgd2ViIHZ1 bG5lcmFiaWxpdHkgaGFzIGJlZW4gZGlzY292ZXJlZCBpbiB0aGUgb2ZmaWNpYWwgUGltY29yZSB2 My4wLjUgQ29udGVudCBNYW5hZ2VtZW50IFN5c3RlbSAod2ViLWFwcGxpY2F0aW9uKS4KVGhlIHZ1 bG5lcmFiaWxpdHkgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8gaW5qZWN0IG93biBzY3JpcHQg Y29kZSBvbiB0aGUgY2xpZW50LXNpZGUgdG8gdGhlIHVzZXIgKGJyb3dzZXIpIGFwcGxpY2F0aW9u IHJlcXVlc3RzLgoKVHdvIHJlZmxlY3RlZCBjcm9zcyBzaXRlIHNjcmlwdGluZyB2dWxuZXJhYmls aXRpZXMgZXhpc3QgaW4gdGhlIGFkbWluaXN0cmF0aW9uIHBhbmVsLiBUaGUgaXNzdWVzIGFyZSBs b2NhdGVkIGluIHRoZSBgaWRgIHZhbHVlIG9mIHRoZSBlY2hvIGJhY2sgdGhyb3VnaCAKdGhlIGBl eHBvcnRDbGFzc0FjdGlvbigpYCBhbmQgYGV4cG9ydEN1c3RvbUxheU91dERlZmluaXRpb25BY3Rp b24oKWAgZnVuY3Rpb25zIG9mIHRoZSBgdXNlckNsYXNzQ29udHJvbGxlci5waHBgIGZpbGUuIFRo ZSByZXF1ZXN0IG1ldGhvZCB0byBleGVjdXRlIGlzIEdFVCAKYW5kIHRoZSBpc3N1ZXMgYXJlIGxv Y2F0ZWQgb24gdGhlIGNsaWVudC1zaWRlIG9mIHRoZSBvbmxpbmUtc2VydmljZSB3ZWIgYXBwbGlj YXRpb24uCgpUaGUgc2VjdXJpdHkgcmlzayBvZiB0aGUgY3Jvc3Mgc2l0ZSBzY3JpcHRpbmcgd2Vi IHZ1bG5lcmFiaWxpdGllcyBhcmUgZXN0aW1hdGVkIGFzIG1lZGl1bSB3aXRoIGEgY3ZzcyAoY29t bW9uIHZ1bG5lcmFiaWxpdHkgc2NvcmluZyBzeXN0ZW0pIGNvdW50IG9mIDMuMi4KRXhwbG9pdGF0 aW9uIG9mIHRoZSBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gdnVsbmVyYWJpbGl0eSByZXF1aXJl cyBubyB1c2VyIGludGVyYWN0aW9uIG9yIHByaXZpbGVnZWQgd2ViLWFwcGxpY2F0aW9uIHVzZXIg YWNjb3VudCB3aXRoIHBhc3N3b3JkLgpTdWNjZXNzZnVsIGV4cGxvaXRhdGlvbiBvZiB0aGUgdnVs bmVyYWJpbGl0eSByZXN1bHRzIGluIHNlc3Npb24gaGlqYWNraW5nLCBwZXJzaXN0ZW50IHBoaXNo aW5nLCBwZXJzaXN0ZW50IGV4dGVybmFsIHJlZGlyZWN0cyBhbmQgcGVyc2lzdGVudCAKbWFuaXB1 bGF0aW9uIGZ1bmN0aW9uIG9yIGNvbm5lY3RlZCBtb2R1bGUgY29udGV4dC4KClJlcXVlc3QgTWV0 aG9kKHMpOgoJCQkJCQlbK10gR0VUCgpWdWxuZXJhYmxlIE1vZHVsZShzKToKCQkJCQkJWytdIGV4 cG9ydENsYXNzQWN0aW9uKCkKCQkJCQkJWytdIGV4cG9ydEN1c3RvbUxheU91dERlZmluaXRpb25B Y3Rpb24oKQoJCQkJCQkKVnVsbmVyYWJsZSBGaWxlKHMpOgoJCQkJCQlbK10gdXNlckNsYXNzQ29u dHJvbGxlci5waHAKClZ1bG5lcmFibGUgUGFyYW1ldGVyKHMpOgoJCQkJCQlbK10gaWQKCgpQcm9v ZiBvZiBDb25jZXB0IChQb0MpOgo9PT09PT09PT09PT09PT09PT09PT09PQoxLjEKVGhlIGJsaW5k IHNxbCBpbmplY3Rpb24gd2ViIHZ1bG5lcmFiaWxpdHkgY2FuIGJlIGV4cGxvaXRlZCBieSByZW1v dGUgYXR0YWNrZXJzIHdpdGggbG93IHByaXZpbGVnZSBhcHBsaWNhdGlvbiB1c2VyIGFjY291bnQg YW5kIGxvdyB1c2VyIGludGVyYWN0aW9uLgpGb3Igc2VjdXJpdHkgZGVtb25zdHJhdGlvbiBvciB0 byByZXByb2R1Y2UgdGhlIHZ1bG5lcmFiaWxpdHkgZm9sbG93IHRoZSBwcm92aWRlZCBpbmZvcm1h dGlvbiBhbmQgc3RlcHMgYmVsb3cgdG8gY29udGludWUuCgpHZXQgcmVxdWVzdHMgdG8gL2FkbWlu L21pc2MvaHR0cC1lcnJvci1sb2cgZmFpbCB0byBzYW5pdGlzZSB0aGUgdmFsdWUgb2YgdGhlICJs aW1pdCIgcGFyYW1ldGVyIHdoaWNoIGFsbG93cyB1c2VycyB0byBpbmplY3QgU1FMIHN0YXRlbWVu dHMuCgpUaGUgdW5zYW5pdGl6ZWQgdmFsdWUgb2YgdGhlIHBhcmFtZXRlciBpcyBpbmNsdWRlZCBp biB0aGUgZm9sbG93aW5nIFNRTCBxdWVyeSBpbiBNaXNjQ29udHJvbGxlci5waHA6CiRsb2dzID0g JGRiLT5mZXRjaEFsbCgiU0VMRUNUIGNvZGUsdXJpLGBjb3VudGAsZGF0ZSBGUk9NIGh0dHBfZXJy b3JfbG9nICIgLiAkY29uZGl0aW9uIC4gIiBPUkRFUiBCWSAiIC4gJHNvcnQgLiAiICIgLiAkZGly IC4gIiBMSU1JVCAiIC4gJG9mZnNldCAuICIsIiAuICRsaW1pdCk7CgpQb0Mgb3IgRXhwbG9pdGNv ZGU6ClRoaXMgdnVsbmVyYWJpbGl0eSBjYW4gYmUgZXhwbG9pdGVkIHdpdGggYSB0aW1lIGJhc2Vk IHRlY2huaXF1ZSBhcyBkZXNjcmliZWQgb246Cmh0dHBzOi8vcmF0ZWlwLmNvbS9ibG9nL3NxbC1p bmplY3Rpb25zLWluLW15c3FsLWxpbWl0LWNsYXVzZS8KCi0tLSBQb0MgU2Vzc2lvbiBMb2dzIFtH RVRdIC0tLQoJR0VUIC9hZG1pbi9taXNjL2h0dHAtZXJyb3ItbG9nP19kYz0xNDMwMjU1NTk5NTY2 JmxpbWl0PTIwJTIwUFJPQ0VEVVJFJTIwYW5hbHlzZSgoc2VsZWN0JTIwZXh0cmFjdHZhbHVlKHJh bmQoKSxjb25jYXQoMHgzYSwoSUYoTUlEKHZlcnNpb24oKSwxLDEpJTIwTElLRSUyMDUsQkVOQ0hN QVJLKDUwMDAwMDAsU0hBMSgxKSksMSkpKSkpLDEpJmZpbHRlcj0gSFRUUC8xLjEKCUhvc3Q6IFtW VUxORVJBQkxFXQoJQWNjZXB0OiAqLyoKCUFjY2VwdC1MYW5ndWFnZTogZW4tVVMsZW47cT0wLjUK CUFjY2VwdC1FbmNvZGluZzogZ3ppcCwgZGVmbGF0ZQoJWC1waW1jb3JlLWNzcmYtdG9rZW46IDQ0 ZWZkOGZlODk4MDY0NzBkYjk0MmJiYjIwY2UxZTY5MDllYWU0YmMKCVgtUmVxdWVzdGVkLVdpdGg6 IFhNTEh0dHBSZXF1ZXN0CglSZWZlcmVyOiBodHRwOi8vW1ZVTE5FUkFCTEVdL2FkbWluLz9fZGM9 MTQzMDI1NTQ2OAoJQ29va2llOiBwaW1jb3JlX2FkbWluX3NpZD1sbGN2MGlxM2J0aGI2YWxwc2Nu ajQwMWRjMQoJQ29ubmVjdGlvbjoga2VlcC1hbGl2ZQoJClJlZmVyZW5jZShzKToKYWRtaW4vbWlz Yy9odHRwLWVycm9yLWxvZz9fZGM9CgoKMS4yClRoZSBjb2RlIGV4ZWN1dGlvbiB3ZWIgdnVsbmVy YWJpbGl0eSBjYW4gYmUgZXhwbG9pdGVkIGJ5IHJlbW90ZSBhdHRhY2tlcnMgd2l0aG91dCBwcml2 aWxlZ2UgYXBwbGljYXRpb24gdXNlciBhY2NvdW50IG9yIHVzZXIgaW50ZXJhY3Rpb24uCkZvciBz ZWN1cml0eSBkZW1vbnN0cmF0aW9uIG9yIHRvIHJlcHJvZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSBm b2xsb3cgdGhlIHByb3ZpZGVkIGluZm9ybWF0aW9uIGFuZCBzdGVwcyBiZWxvdyB0byBjb250aW51 ZS4KClRoZSB1c2VycyBob3N0bmFtZSBpcyByZXRyaWV2ZWQgdGhyb3VnaCAkX1NFUlZFUlsnSFRU UF9YX0ZPUldBUkRFRF9IT1NUJ10gb3IgJF9TRVJWRVJbJ0hUVFBfSE9TVCddIGFuZCB0aGVuIGlu Y2x1ZGVkIGluIGEgY29tbWFuZCB0aGF0IGlzIGV4ZWN1dGVkIChOZXdzbGV0dGVyQ29udHJvbGxl ci5waHApLgoKUG9DOiBUaGUgY29tbWFuZCB0byBiZSBleGVjdXRlZCBjYW4gYmUgaW5zZXJ0ZWQg aW50byBhbiBYLWZvcndhcmRlZC1ob3N0IEhUVFAgaGVhZGVyLCBmb3IgZXhhbXBsZToKLS0tIFBv QyBTZXNzaW9uIExvZ3MgW1BPU1RdIC0tLQoJUE9TVCAvYWRtaW4vcmVwb3J0cy9uZXdzbGV0dGVy L3NlbmQgSFRUUC8xLjEKCUhvc3Q6IDFbVlVMTkVSQUJMRV0KCUFjY2VwdDogKi8qCglBY2NlcHQt TGFuZ3VhZ2U6IGVuLVVTLGVuO3E9MC41CglBY2NlcHQtRW5jb2Rpbmc6IGd6aXAsIGRlZmxhdGUK CUNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0 PVVURi04CglYLXBpbWNvcmUtY3NyZi10b2tlbjogNDRlZmQ4ZmU4OTgwNjQ3MGRiOTQyYmJiMjBj ZTFlNjkwOWVhZTRiYwoJWC1SZXF1ZXN0ZWQtV2l0aDogWE1MSHR0cFJlcXVlc3QKCVJlZmVyZXI6 IGh0dHA6Ly9bVlVMTkVSQUJMRV0vYWRtaW4vP19kYz0xNDMwMjU5ODY2NDUxCglDb250ZW50LUxl bmd0aDogMjAKCUNvb2tpZTogcGltY29yZV9hZG1pbl9zaWQ9bGxjdjBpcTNidGhiNmFscHNjbmo0 MDFkYzEKCUNvbm5lY3Rpb246IGtlZXAtYWxpdmUKCVByYWdtYTogbm8tY2FjaGUKCUNhY2hlLUNv bnRyb2w6IG5vLWNhY2hlCglYLWZvcndhcmRlZC1ob3N0OiAgJiYgY2F0IC9ldGMvcGFzc3dkIHwg bmMgaGFja2VyIDEyMzQKCQpSZWZlcmVuY2Uocyk6Ci9hZG1pbi9yZXBvcnRzL25ld3NsZXR0ZXIv c2VuZAkKCgoxLjMKVGhlIGNyb3NzIHNpdGUgc2NyaXB0aW5nIHdlYiB2dWxuZXJhYmlsaXRpZXMg Y2FuIGJlIGV4cGxvaXRlZCBieSByZW1vdGUgYXR0YWNrZXJzIHdpdGggbG93IHByaXZpbGVnZSBh cHBsaWNhdGlvbiB1c2VyIGFjY291bnQgYW5kIGxvdyB1c2VyIGludGVyYWN0aW9uLgpGb3Igc2Vj dXJpdHkgZGVtb25zdHJhdGlvbiBvciB0byByZXByb2R1Y2UgdGhlIHZ1bG5lcmFiaWxpdHkgZm9s bG93IHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiBhbmQgc3RlcHMgYmVsb3cgdG8gY29udGludWUu CgpVbnNhbml0aXplZCB1c2VyIHByb3ZpZGVkIGlucHV0IGluIHRoZSAiaWQiIHBhcmFtZXRlciBp cyBlY2hvZWQgYmFjayB0byB0aGUgdXNlciBpbiB0aGUgZXhwb3J0Q2xhc3NBY3Rpb24oKSBhbmQg ZXhwb3J0Q3VzdG9tTGF5T3V0RGVmaW5pdGlvbkFjdGlvbigpIGZ1bmN0aW9ucyBpbiB1c2VyQ2xh c3NDb250cm9sbGVyLnBocC4KCk9ubHkgYXV0aGVudGljYXRlZCB1c2VycyB3aXRoIHBlcm1pc3Np b24gdG8gYWNjZXNzIHRoZSBjbGFzcyBleHBvcnQgZnVuY3Rpb25hbGl0eSBhcmUgdnVsbmVyYWJs ZSB0byB0aGlzIChpLmUuIGFkbWluaXN0cmF0b3JzKQoKUG9DOgpodHRwOi8vW1ZVTE5FUkFCTEVd L2FkbWluL2NsYXNzL2V4cG9ydC1jbGFzcz9pZD08c2NyaXB0PmFsZXJ0KDEpPC9zY3JpcHQ+Cmh0 dHA6Ly9bVlVMTkVSQUJMRV0vYWRtaW4vY2xhc3MvZXhwb3J0LWN1c3RvbS1sYXlvdXQtZGVmaW5p dGlvbj9pZD08c2NyaXB0PmFsZXJ0KDEpPC9zY3JpcHQ+CgoKU29sdXRpb24gLSBGaXggJiBQYXRj aDoKPT09PT09PT09PT09PT09PT09PT09PT0KVVJMKHMpOiBodHRwczovL2dpdGh1Yi5jb20vcGlt Y29yZS9waW1jb3JlL2NvbW1pdC9hMDFhNGM4N2E3ODJhN2IyMGNjYzQwODFjOTM0MDY5OGYyZDUy NTczCgpwaW1jb3JlL21vZHVsZXMvYWRtaW4vY29udHJvbGxlcnMvQ2xhc3NDb250cm9sbGVyLnBo cApAQCAtNDg0LDEwICs0ODQsMTIgQEAgcHVibGljIGZ1bmN0aW9uIGdldEFsbExheW91dHNBY3Rp b24oKSB7CiAgICAgcHVibGljIGZ1bmN0aW9uIGV4cG9ydENsYXNzQWN0aW9uKCkgewogCiAgICAg ICAgICR0aGlzLT5yZW1vdmVWaWV3UmVuZGVyZXIoKTsKLSAgICAgICAgJGNsYXNzID0gT2JqZWN0 IENsYXNzRGVmaW5pdGlvbjo6Z2V0QnlJZChpbnR2YWwoJHRoaXMtPmdldFBhcmFtKGBgaWRgYCkp KTsKKworICAgICAgICAkaWQgPSBpbnR2YWwoJHRoaXMtPmdldFBhcmFtKGBgaWRgYCkpOworICAg ICAgICAkY2xhc3MgPSBPYmplY3QgQ2xhc3NEZWZpbml0aW9uOjpnZXRCeUlkKCRpZCk7CiAKICAg ICAgICAgaWYgKCEkY2xhc3MgaW5zdGFuY2VvZiBPYmplY3QgQ2xhc3NEZWZpbml0aW9uKSB7Ci0g ICAgICAgICAgICAkZXJyb3JNZXNzYWdlID0gYGA6IENsYXNzIHdpdGggaWQgWyBgYCAuICR0aGlz LT5nZXRQYXJhbShgYGlkYGApIC4gYGAgbm90IGZvdW5kLiBdYGA7CisgICAgICAgICAgICAkZXJy b3JNZXNzYWdlID0gYGA6IENsYXNzIHdpdGggaWQgWyBgYCAuICRpZCAuIGBgIG5vdCBmb3VuZC4g XWBgOwogICAgICAgICAgICAgIExvZ2dlcjo6ZXJyb3IoJGVycm9yTWVzc2FnZSk7CiAgICAgICAg ICAgICBlY2hvICRlcnJvck1lc3NhZ2U7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00OTYsMTQgKzQ5 OCwxMyBAQCBwdWJsaWMgZnVuY3Rpb24gZXhwb3J0Q2xhc3NBY3Rpb24oKSB7CiAgICAgICAgICAg ICBoZWFkZXIoYGBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0gYGBj bGFzc19gYCAuICRjbGFzcy0+Z2V0TmFtZSgpIC4gYGBfZXhwb3J0Lmpzb24gYGBgYCk7CiAgICAg ICAgICAgICBlY2hvICRqc29uOwogICAgICAgICB9Ci0KICAgICB9CiAKIAogICAgIHB1YmxpYyBm dW5jdGlvbiBleHBvcnRDdXN0b21MYXlvdXREZWZpbml0aW9uQWN0aW9uKCkgewogCiAgICAgICAg ICR0aGlzLT5yZW1vdmVWaWV3UmVuZGVyZXIoKTsKLSAgICAgICAgJGlkID0gJHRoaXMtPmdldFBh cmFtKGBgaWRgYCk7CisgICAgICAgICRpZCA9IGludHZhbCgkdGhpcy0+Z2V0UGFyYW0oYGBpZGBg KSk7CiAKICAgICAgICAgaWYgKCRpZCkgewogICAgICAgICAgICAgJGN1c3RvbUxheW91dCA9IE9i amVjdCBDbGFzc0RlZmluaXRpb24gQ3VzdG9tTGF5b3V0OjpnZXRCeUlkKCRpZCk7CgpwaW1jb3Jl L21vZHVsZXMvcmVwb3J0cy9jb250cm9sbGVycy9OZXdzbGV0dGVyQ29udHJvbGxlci5waHAKQEAg LTE4NSw3ICsxODUsNyBAQCBwdWJsaWMgZnVuY3Rpb24gc2VuZEFjdGlvbigpIHsKIAogICAgICAg ICAkbGV0dGVyID0gTmV3c2xldHRlciBDb25maWc6OmdldEJ5TmFtZSgkdGhpcy0+Z2V0UGFyYW0o YGBuYW1lYGApKTsKICAgICAgICAgaWYoJGxldHRlcikgewotICAgICAgICAgICAgJGNtZCA9IFRv b2wgQ29uc29sZTo6Z2V0UGhwQ2xpKCkgLiBgYCBgYCAuIHJlYWxwYXRoKFBJTUNPUkVfUEFUSCAu IERJUkVDVE9SWV9TRVBBUkFUT1IgLiBgYGNsaWBgIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGBg c2VuZC1uZXdzbGV0dGVyLnBocGBgKS4gYGAgYGAgLiAkbGV0dGVyLT5nZXROYW1lKCkgLiBgYCBg YCAuIFRvb2w6OmdldEhvc3RVcmwoKTsKKyAgICAgICAgICAgICRjbWQgPSBUb29sIENvbnNvbGU6 OmdldFBocENsaSgpIC4gYGAgYGAgLiByZWFscGF0aChQSU1DT1JFX1BBVEggLiBESVJFQ1RPUllf U0VQQVJBVE9SIC4gYGBjbGlgYCAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBgYHNlbmQtbmV3c2xl dHRlci5waHBgYCkuIGBgIGBgIC4gZXNjYXBlc2hlbGxhcmcoJGxldHRlci0+Z2V0TmFtZSgpKSAu IGBgIGBgIC4gZXNjYXBlc2hlbGxhcmcoVG9vbDo6Z2V0SG9zdFVybCgpKTsKICAgICAgICAgICAg IFRvb2wgQ29uc29sZTo6ZXhlY0luQmFja2dyb3VuZCgkY21kLCBQSU1DT1JFX0xPR19ESVJFQ1RP UlkgLiBgYC9uZXdzbGV0dGVyLS1gYCAuICRsZXR0ZXItPmdldE5hbWUoKSAuIGBgLmxvZ2BgKTsK ICAgICAgICAgfQogCgoKcGltY29yZS9tb2R1bGVzL2FkbWluL2NvbnRyb2xsZXJzL01pc2NDb250 cm9sbGVyLnBocApAQCAtMzI1LDggKzMyNSw4IEBAIHB1YmxpYyBmdW5jdGlvbiBodHRwRXJyb3JM b2dBY3Rpb24oKSB7CiAKICAgICAgICAgJGRiID0gUmVzb3VyY2U6OmdldCgpOwogCi0gICAgICAg ICRsaW1pdCA9ICR0aGlzLT5nZXRQYXJhbShgYGxpbWl0YGApOwotICAgICAgICAkb2Zmc2V0ID0g JHRoaXMtPmdldFBhcmFtKGBgc3RhcnRgYCk7CisgICAgICAgICRsaW1pdCA9IGludHZhbCgkdGhp cy0+Z2V0UGFyYW0oYGBsaW1pdGBgKSk7CisgICAgICAgICRvZmZzZXQgPSBpbnR2YWwoJHRoaXMt PmdldFBhcmFtKGBgc3RhcnRgYCkpOwogICAgICAgICAkc29ydCA9ICR0aGlzLT5nZXRQYXJhbShg YHNvcnRgYCk7CiAgICAgICAgICRkaXIgPSAkdGhpcy0+Z2V0UGFyYW0oYGBkaXJgYCk7CiAgICAg ICAgICRmaWx0ZXIgPSAkdGhpcy0+Z2V0UGFyYW0oYGBmaWx0ZXJgYCk7CgoKU2VjdXJpdHkgUmlz azoKPT09PT09PT09PT09PT0KMS4xClRoZSBzZWN1cml0eSByaXNrIG9mIHRoZSBibGluZCBzcWwg aW5qZWN0aW9uIHdlYiB2dWxuZXJhYmlsaXR5IGluIHRoZSBwaW1jb3JlIGNtcyBpcyBlc3RpbWF0 ZWQgYXMgaGlnaC4gKENWU1MgNi4yKQoKMS4yClRoZSBzZWN1cml0eSByaXNrIG9mIHRoZSBjb2Rl IGV4ZWN1dGlvbiB3ZWIgdnVsbmVyYWJpbGl0eSBpbiB0aGUgcGltY29yZSBjbXMgaXMgZXN0aW1h dGVkIGFzIGhpZ2guIChDVlNTIDYuMSkKCjEuMwpUaGUgc2VjdXJpdHkgcmlzayBvZiB0aGUgcmVm bGVjdGVkIGNyb3NzIHNpdGUgc2NyaXB0aW5nIHdlYiB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIHBp bWNvcmUgY21zIGFyZSBlc3RpbWF0ZWQgYXMgbWVkaXVtLiAoQ1ZTUyAzLjIpCgoKQ3JlZGl0cyAm IEF1dGhvcnM6Cj09PT09PT09PT09PT09PT09PQpBbGFpbiBIb21ld29vZCAtIFB3QyBOZXcgWmVh bGFuZCAoaHR0cDovL3d3dy5wd2MuY28ubnovc2VydmljZXMvYXNzdXJhbmNlLXNlcnZpY2VzL3B3 Yy1zZWN1cml0eS8pCgoKRGlzY2xhaW1lciAmIEluZm9ybWF0aW9uOgo9PT09PT09PT09PT09PT09 PT09PT09PT09ClRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBpbiB0aGlzIGFkdmlzb3J5IGlzIHBy b3ZpZGVkIGFzIGl0IGlzIHdpdGhvdXQgYW55IHdhcnJhbnR5LiBWdWxuZXJhYmlsaXR5IExhYiBk aXNjbGFpbXMgYWxsIHdhcnJhbnRpZXMsIGVpdGhlciBleHByZXNzZWQgCm9yIGltcGxpZWQsIGlu Y2x1ZGluZyB0aGUgd2FycmFudGllcyBvZiBtZXJjaGFudGFiaWxpdHkgYW5kIGNhcGFiaWxpdHkg Zm9yIGEgcGFydGljdWxhciBwdXJwb3NlLiBWdWxuZXJhYmlsaXR5LUxhYiBvciBpdHMgc3VwcGxp ZXJzIGFyZSBub3QgbGlhYmxlIAppbiBhbnkgY2FzZSBvZiBkYW1hZ2UsIGluY2x1ZGluZyBkaXJl Y3QsIGluZGlyZWN0LCBpbmNpZGVudGFsLCBjb25zZXF1ZW50aWFsIGxvc3Mgb2YgYnVzaW5lc3Mg cHJvZml0cyBvciBzcGVjaWFsIGRhbWFnZXMsIGV2ZW4gaWYgVnVsbmVyYWJpbGl0eS1MYWIgCm9y IGl0cyBzdXBwbGllcnMgaGF2ZSBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1 Y2ggZGFtYWdlcy4gU29tZSBzdGF0ZXMgZG8gbm90IGFsbG93IHRoZSBleGNsdXNpb24gb3IgbGlt aXRhdGlvbiBvZiBsaWFiaWxpdHkgZm9yIApjb25zZXF1ZW50aWFsIG9yIGluY2lkZW50YWwgZGFt YWdlcyBzbyB0aGUgZm9yZWdvaW5nIGxpbWl0YXRpb24gbWF5IG5vdCBhcHBseS4gV2UgZG8gbm90 IGFwcHJvdmUgb3IgZW5jb3VyYWdlIGFueWJvZHkgdG8gYnJlYWsgYW55IHZlbmRvciBsaWNlbnNl cywgCnBvbGljaWVzLCBkZWZhY2Ugd2Vic2l0ZXMsIGhhY2sgaW50byBkYXRhYmFzZXMgb3IgdHJh ZGUgd2l0aCBmcmF1ZC9zdG9sZW4gbWF0ZXJpYWwuCgpEb21haW5zOiAgICB3d3cudnVsbmVyYWJp bGl0eS1sYWIuY29tICAgCS0gd3d3LnZ1bG4tbGFiLmNvbQkJCSAgICAgICAJCS0gd3d3LmV2b2x1 dGlvbi1zZWMuY29tCkNvbnRhY3Q6ICAgIGFkbWluQHZ1bG5lcmFiaWxpdHktbGFiLmNvbSAJLSBy ZXNlYXJjaEB2dWxuZXJhYmlsaXR5LWxhYi5jb20gCSAgICAgICAJCS0gYWRtaW5AZXZvbHV0aW9u LXNlYy5jb20KU2VjdGlvbjogICAgbWFnYXppbmUudnVsbmVyYWJpbGl0eS1kYi5jb20JLSB2dWxu ZXJhYmlsaXR5LWxhYi5jb20vY29udGFjdC5waHAJCSAgICAgICAJLSBldm9sdXRpb24tc2VjLmNv bS9jb250YWN0ClNvY2lhbDoJICAgIHR3aXR0ZXIuY29tLyMhL3Z1bG5fbGFiIAkJLSBmYWNlYm9v ay5jb20vVnVsbmVyYWJpbGl0eUxhYiAJICAgICAgIAkJLSB5b3V0dWJlLmNvbS91c2VyL3Z1bG5l cmFiaWxpdHkwbGFiCkZlZWRzOgkgICAgdnVsbmVyYWJpbGl0eS1sYWIuY29tL3Jzcy9yc3MucGhw CS0gdnVsbmVyYWJpbGl0eS1sYWIuY29tL3Jzcy9yc3NfdXBjb21pbmcucGhwICAgCQktIHZ1bG5l cmFiaWxpdHktbGFiLmNvbS9yc3MvcnNzX25ld3MucGhwClByb2dyYW1zOiAgIHZ1bG5lcmFiaWxp dHktbGFiLmNvbS9zdWJtaXQucGhwICAJLSB2dWxuZXJhYmlsaXR5LWxhYi5jb20vbGlzdC1vZi1i dWctYm91bnR5LXByb2dyYW1zLnBocAktIHZ1bG5lcmFiaWxpdHktbGFiLmNvbS9yZWdpc3Rlci8K CkFueSBtb2RpZmllZCBjb3B5IG9yIHJlcHJvZHVjdGlvbiwgaW5jbHVkaW5nIHBhcnRpYWxseSB1 c2FnZXMsIG9mIHRoaXMgZmlsZSByZXF1aXJlcyBhdXRob3JpemF0aW9uIGZyb20gVnVsbmVyYWJp bGl0eSBMYWJvcmF0b3J5LiBQZXJtaXNzaW9uIHRvIAplbGVjdHJvbmljYWxseSByZWRpc3RyaWJ1 dGUgdGhpcyBhbGVydCBpbiBpdHMgdW5tb2RpZmllZCBmb3JtIGlzIGdyYW50ZWQuIEFsbCBvdGhl ciByaWdodHMsIGluY2x1ZGluZyB0aGUgdXNlIG9mIG90aGVyIG1lZGlhLCBhcmUgcmVzZXJ2ZWQg YnkgClZ1bG5lcmFiaWxpdHktTGFiIFJlc2VhcmNoIFRlYW0gb3IgaXRzIHN1cHBsaWVycy4gQWxs IHBpY3R1cmVzLCB0ZXh0cywgYWR2aXNvcmllcywgc291cmNlIGNvZGUsIHZpZGVvcyBhbmQgb3Ro ZXIgaW5mb3JtYXRpb24gb24gdGhpcyB3ZWJzaXRlIAppcyB0cmFkZW1hcmsgb2YgdnVsbmVyYWJp bGl0eS1sYWIgdGVhbSAmIHRoZSBzcGVjaWZpYyBhdXRob3JzIG9yIG1hbmFnZXJzLiBUbyByZWNv cmQsIGxpc3QgKGZlZWQpLCBtb2RpZnksIHVzZSBvciBlZGl0IG91ciBtYXRlcmlhbCBjb250YWN0 IAooYWRtaW5AdnVsbmVyYWJpbGl0eS1sYWIuY29tIG9yIHJlc2VhcmNoQHZ1bG5lcmFiaWxpdHkt bGFiLmNvbSkgdG8gZ2V0IGEgcGVybWlzc2lvbi4KCgkJCQlDb3B5cmlnaHQgwqkgMjAxNSB8IFZ1 bG5lcmFiaWxpdHkgTGFib3JhdG9yeSAtIFtFdm9sdXRpb24gU2VjdXJpdHkgR21iSF3ihKIKCgoK LS0gClZVTE5FUkFCSUxJVFkgTEFCT1JBVE9SWSAtIFJFU0VBUkNIIFRFQU0KU0VSVklDRTogd3d3 LnZ1bG5lcmFiaWxpdHktbGFiLmNvbQpDT05UQUNUOiByZXNlYXJjaEB2dWxuZXJhYmlsaXR5LWxh Yi5jb20KUEdQIEtFWTogaHR0cDovL3d3dy52dWxuZXJhYmlsaXR5LWxhYi5jb20va2V5cy9hZG1p bkB2dWxuZXJhYmlsaXR5LWxhYi5jb20lMjgweDE5OEU5OTI4JTI5LnR4dAoKCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpTZW50IHRocm91Z2ggdGhlIEZ1 bGwgRGlzY2xvc3VyZSBtYWlsaW5nIGxpc3QKaHR0cHM6Ly9ubWFwLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2Z1bGxkaXNjbG9zdXJlCldlYiBBcmNoaXZlcyAmIFJTUzogaHR0cDovL3NlY2xpc3RzLm9y Zy9mdWxsZGlzY2xvc3VyZS8=