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IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgomaGVhZGVyKCR0ZXh0eydpbmRleF90aXRsZSd9LCAiIiwgImludHJvIiwgMSwgMSwgdW5kZWYsCiAgICAgICAgIldyaXR0ZW4gYnkgTmVpbCBGaXNoZXI8QlI+PEEgSFJFRj1tYWlsdG86bmVpbFxAbWFnbmVjb3IuY29tLmF1PkF1dGhvcjwvQT48QlI+PEEgSFJFRj1odHRwOi8vd3d3LmF1dGhvcnBhZ2UuaW52YWxpZD5Ib21lOi8vcGFnZTwvQT4iKTsKIyB1c2VzIHRoZSBpbmRleF90aXRsZSBlbnRyeSBmcm9tIC4vbGFuZy9lbiBvciBhcHByb3ByaWF0ZQoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCgoKIyBvdXRwdXQgYXMgd2ViIHBhZ2UKCgomaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKcHJpbnQgIjxocj5cbiI7CmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJcHJpbnQgIjxoMz5XQVJOSU5HOiBmb3VuZCAiOwoJcHJpbnQgJGNvbmZpZ3tlcnJvcnN9OwoJcHJpbnQgImVycm9ycyBpbiBjb25maWcgZmlsZSE8L2gzPjxicj5cbiI7Cn0KcHJpbnQgJnVpX2Zvcm1fc3RhcnQoICdiYXNpY19hcHBseS5jZ2knLCAicG9zdCIgKTsKcHJpbnQgIjxicj5cbiI7CnByaW50ICI8aDI+JHRleHR7J0ROU19zZXR0aW5ncyd9PC9oMj4iOwpwcmludCAiPGJyPjxicj5cbiI7CnByaW50ICR0ZXh0eydsb2NhbF9kb21haW4nfTsKcHJpbnQgJnVpX3RleHRib3goICJsb2NhbF9kb21haW4iLCAkY29uZmlne2RvbWFpbn17ZG9tYWlufSwgMzIgKTsKcHJpbnQgIjxicj48YnI+XG4iOwpwcmludCAkdGV4dHsnZG9tYWluX25lZWRlZCd9OwpwcmludCAmdWlfeWVzbm9fcmFkaW8oICJkb21haW5fbmVlZGVkIiwgKCRjb25maWd7ZG9tYWluX25lZWRlZH17dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPjxicj5cbiI7CnByaW50ICR0ZXh0eydleHBhbmRfaG9zdHMnfTsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAiZXhwYW5kX2hvc3RzIiwgKCRjb25maWd7ZXhwYW5kX2hvc3RzfXt1c2VkfSk/MTowICk7CnByaW50ICI8YnI+PGJyPlxuIjsKcHJpbnQgJHRleHR7J2JvZ3VzX3ByaXYnfTsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAiYm9ndXNfcHJpdiIsICgkY29uZmlne2JvZ3VzX3ByaXZ9e3VzZWR9KT8wOjEgKTsKcHJpbnQgIjxicj48YnI+XG4iOwpwcmludCAkdGV4dHsnZmlsdGVyd2luMmsnfTsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAiZmlsdGVyd2luMmsiLCAoJGNvbmZpZ3tmaWx0ZXJ3aW4ya317dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPjxicj5cbiI7CnByaW50ICR0ZXh0eydob3N0cyd9OwpwcmludCAmdWlfeWVzbm9fcmFkaW8oICJob3N0cyIsICgkY29uZmlne25vX2hvc3RzfXt1c2VkfT8wOjEpICk7CnByaW50ICI8YnI+XG4iOwpwcmludCAkdGV4dHsneGhvc3RzJ307CnByaW50ICZ1aV95ZXNub19yYWRpbyggInhob3N0cyIsICgkY29uZmlne2FkZG5faG9zdHN9e3VzZWR9PzE6MCkgKTsKcHJpbnQgIjxicj5cbiI7CnByaW50ICR0ZXh0eyd4aG9zdHNmaWxlJ307CnByaW50ICZ1aV90ZXh0Ym94KCAiYWRkbl9ob3N0cyIsICRjb25maWd7YWRkbl9ob3N0c317ZmlsZX0sIDQwICk7CnByaW50ICI8YnI+PGJyPlxuIjsKcHJpbnQgJHRleHR7J25lZ19jYWNoZSd9OwpwcmludCAmdWlfeWVzbm9fcmFkaW8oICJuZWdfY2FjaGUiLCAoJGNvbmZpZ3tuZWdfY2FjaGV9e3VzZWR9PzA6MSkgKTsKcHJpbnQgIjxicj48YnI+XG4iOwpwcmludCAkdGV4dHsnY2FjaGVfc2l6ZSd9OwpwcmludCAmdWlfeWVzbm9fcmFkaW8oICJjYWNoZV9zaXplIiwgKCRjb25maWd7Y2FjaGVfc2l6ZX17dXNlZH0/MTowKSApOwpwcmludCAiPGJyPlxuIjsKcHJpbnQgJHRleHR7J2N1c3RfY2FjaGVfc2l6ZSd9OwpwcmludCAmdWlfdGV4dGJveCggImN1c3RfY2FjaGVfc2l6ZSIsICRjb25maWd7Y2FjaGVfc2l6ZX17c2l6ZX0sIDQwICk7CnByaW50ICI8YnI+PGJyPlxuIjsKcHJpbnQgJHRleHR7J2xvZ19xdWVyaWVzJ307CnByaW50ICZ1aV95ZXNub19yYWRpbyggImxvZ19xdWVyaWVzIiwgKCRjb25maWd7bG9nX3F1ZXJpZXN9e3VzZWR9PzE6MCkgKTsKcHJpbnQgIjxicj48YnI+XG4iOwpwcmludCAkdGV4dHsnbG9jYWxfdHRsJ307CnByaW50ICZ1aV95ZXNub19yYWRpbyggImxvY2FsX3R0bCIsICgkY29uZmln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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKbGFuZz1lbgphdXRob3I9TmVpbCBGaXNoZXIKbW9kdWxlX2F1dGhvcj1OZWlsIEZpc2hlcgpob21lcGFnZT13d3cubm9uZXhpc3RlbnQuaW52YWxpZApjb3B5cmlnaHQ9KEMpIDIwMDYgYnkgTmVpbCBGaXNoZXIgPG5laWxAbWFnbmVjb3IuY29tLmF1PgpsaWNlbnNlPUdQTAoKaW5kZXhfdGl0bGU9RE5TTWFzcSAtIGludGVncmF0ZWQgRE5TIGFuZCBESENQIHNlcnZlcnMKRE5TX3NldHRpbmdzPUJhc2ljIEROUyBzZXR0aW5ncwpESENQX3NldHRpbmdzPURIQ1Agc2V0dGluZ3MKRE5TX3NlcnZlcnM9RE5TIFVwc3RyZWFtIFNlcnZlcnMgQ29uZmlndXJhdGlvbgppZmFjZV9zZXR0aW5ncz1OZXR3b3JrIEludGVyZmFjZSBTZXR0aW5ncwphbGlhc19zZXR0aW5ncz1BbGlhcyAvIFJlZGlyZWN0IFNldHRpbmdzCmxvY2FsX2RvbWFpbj1Mb2NhbCBkb21haW4gbmFtZSAKZG9tYWluX25lZWRlZD1Pbmx5IGZvcndhcmQgbmFtZXMgd2l0aCBhIGRvbWFpbiBwYXJ0IApleHBhbmRfaG9zdHM9QWRkIGxvY2FsIGRvbWFpbiBuYW1lIHRvIERIQ1AgbGVhc2VzICYgaG9zdHMgaW4gL2V0Yy9ob3N0cyAKYm9ndXNfcHJpdj1BbGxvdyB1bnJlc29sdmVkIHJldmVyc2UgbG9va3VwcyBvbiBsb2NhbCBuZXR3b3JrIHRvIHByb3BvZ2F0ZSBvdXQgCmZpbHRlcndpbjJrPVByZXZlbnQgd2luZG93cyBTT0EgJiBTUlYgcmVxdWVzdHMgcHJvcG9nYXRpbmcgb3V0CnJlc29sdj1SZWFkIC9ldGMvcmVzb2x2LmNvbmYgCnBvbGw9cG9sbCByZXNvbHYuY29uZiBmaWxlIApyZXNvbHZfZmlsZV9leHBsaWNpdD1Vc2Ugbm9uLXN0YW5kYXJkIHJlc29sdi5jb25mIGZpbGUKcmVzb2x2X2ZpbGU9bm9uLXN0YW5kYXJkIHJlc29sdi5jb25mIGZpbGUgdG8gdXNlCnN0cmljdF9vcmRlcj1BbHdheXMgdXNlIG5hbWVzZXJ2ZXJzIGluIG9yZGVyIHByb3ZpZGVkCmhvc3RzPVJlYWQgL2V0Yy9ob3N0cyBmaWxlCnhob3N0cz1Vc2UgYWRkaXRpb25hbCBob3N0cyBmaWxlCnhob3N0c2ZpbGU9RmlsZSB0byB1c2UgZm9yIGFkZGl0aW9uYWwgaG9zdHMKbmVnX2NhY2hlPUNhY2hlIG5lZ2F0aXZlIHJlc3BvbnNlcwpsb2dfcXVlcmllcz1Mb2cgZWFjaCBETlMgbG9va3VwCmNhY2hlX3NpemU9VXNlIGN1c3RvbSBjYWNoZSBzaXplCmN1c3RfY2FjaGVfc2l6ZT1DdXN0b20gY2FjaGUgc2l6ZSB0byB1c2UKbG9jYWxfdHRsPVVzZSBzcGVjaWZpZWQgbG9jYWwgVGltZS1Uby1MaXZlCnR0bD1Mb2NhbCBUVEwKZHluYW1pYz1EZWZpbmVkIGluIHJlc29sdi5jb25mIGZpbGUKZG9tYWluPUZvciBkb21haW4KYWRkcmVzcz1JUCBhZGRyZXNzCmluX3VzZT1JbiB1c2UKdXNlZD1JbiBVc2UKbm90X3VzZWQ9RGVmaW5lZCBvbmx5IChub3QgdXNlZCkKaW5fZmlsZT1EZWZpbmVkIGluIGNvbmZpZyBmaWxlCm5ld19kbnNfc2Vydj1BZGQgbmV3IHVwc3RyZWFtIHNlcnZlciB0byBjb25maWcgZmlsZQpzYXZlX2J1dHRvbj1TYXZlCnNlcnZlcnNfY29uZmlnPUNvbmZpZ3VyZSB1cHN0cmVhbSBETlMgU2VydmVycwphbGlhc19jb25maWc9Q29uZmlndXJlIEZvcmNlZCBEb21haW5zIGFuZCBBbGlhcyByZXNwb25zZXMKaWZhY2VfY29uZmlnPUNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMKREhDUF9jb25maWc9Q29uZmlndXJlIERIQ1AKcmVzdGFydD1SZXN0YXJ0IEROU21hc3EKcmVzdGFydGluZz1UcnlpbmcgdG8gcmVzdGFydCBETlNtYXNxLiBTY3JpcHQgbWVzc2FnZXMgYXJlOgpzcnZfZWRpdD1FZGl0IHVwc3RyZWFtIEROUyBzZXJ2ZXIKc3J2X25hbWVkPUZvciBzcGVjaWZpYyBkb21haW4Kc3J2X25hbWU9U3BlY2lmaWMgZG9tYWluCnNydl9hZGRyPVNlcnZlciBhZGRyZXNzCmRlbGV0PURlbGV0ZQppZmFjZT1JbnRlcmZhY2UKeGlmYWNlPUV4Y2VwdCBJbnRlcmZhY2UKbGlzdGVuPUxpc3RlbiBvbgpuZXdfaWZhY2U9QWRkIG5ldyBpbnRlcmZhY2UKaWZhY2VfbGlzdGVuPUludGVyZmFjZSB0byBsaXN0ZW4gb24KeGlmYWNlX2xpc3Rlbj1FeGNlcHQgaW50ZXJmYWNlcwpsaXN0ZW5fYWRkcj1MaXN0ZW4gQWRkcmVzcwpuZXdfYWRkcj1BZGQgbmV3IGFkZHJlc3MKZWRpdF9pZmFjZT1FZGl0IGludGVyZmFjZQppZmFjZV9uYW1lPUludGVyZmFjZSBuYW1lCmVkaXRfeGlmYWNlPUVkaXQgZXhjZXB0IGludGVyZmFjZQpsaXN0ZW5fbmFtZT1MaXN0ZW4gYWRkcmVzcwplZGl0X2xpc3Rlbj1FZGl0IGxpc3RlbiBhZGRyZXNzCnhpZmFjZV9uYW1lPUV4Y2VwdCBpbnRlcmZhY2UgbmFtZQpiaW5kX2lmYWNlPUJpbmQgdG8gaW5kaXZpZHVhbCBpbnRlcmZhY2VzIGluc3RlYWQgb2Ygd2lsZGNhcmQgYWRkcmVzcwpmb3JjZWQ9Rm9yY2VkIGRvbWFpbiByZXNwb25zZXMKbng9Rm9yY2VkIE5YRE9NQUlOIElQIGFkZHJlc3NlcwphbGlhcz1BbGlhc2VkIElQIGFkZHJlc3Nlcwpmb3JjZWRfZG9tYWluPURvbWFpbiBuYW1lCmZvcmNlZF9pcD1UbyBJUCBhZGRyZXNzCmZvcmNlZF9mcm9tPUZyb20gSVAgYWRkcmVzcwpmb3JjZWRfbWFzaz1OZXRtYXNrCmZvcmNlZF9tYXNrX3VzZWQ9VXNlIGEgbmV0bWFzawpmb3JjZWRfYWRkPUFkZCBuZXcgZm9yY2VkIGRvbWFpbgphbGlhc19hZGQ9QWRkIG5ldyBhbGlhcwpueF9hZGQ9QWRkIG5ldyBmb3JjZWQgTlhET01BSU4KZm9yY2VkX2VkaXQ9RWRpdCBmb3JjZWQgZG9tYWluIHJlcG9uc2UKYWxpYXNfZWRpdD1FZGl0IElQIGFkZHJlc3MgYWxpYXMKbnhfZWRpdD1FZGl0IEZvcmNlZCBOWERPTUFJTiByZXNwb25zZQpuZXRfaWQ9TmV0d29yay9DbGllbnQgSUQKdGltZWQ9VXNlIGEgbGVhc2UgdGltZQpsZWFzZXRpbWU9TGVhc2UgdGltZQpkaGNwX3JhbmdlPURIQ1AgSVAgYWRkcmVzcyByYW5nZXMKcmFuZ2VfZWRpdD1FZGl0IERIQ1AgcmFuZ2UKcmFuZ2VfYWRkPUFkZCBuZXcgREhDUCByYW5nZQppZGVkPU5ldHdvcmsgSUQKaWQ9TmV0d29yayBJRCB0byB1c2UKaG9zdHM9U3BlY2lmaWMgSG9zdHMKaG9zdF9hZGQ9QWRkIGEgbmV3IGhvc3Qgc3BlY2lmaWNhdGlvbgp2ZW5kb3JfY2xhc3Nlcz1WZW5kb3IgQ2xhc3MgU3BlY2lmaWNhdGlvbgp1c2VyX2NsYXNzZXM9VXNlciBDbGFzcyBTcGVjaWZpY2F0aW9uCnZlbmRvcj1WZW5kb3IKdXNlcj1Vc2VyCmNsYXNzPUNsYXNzCnZlbmRfYWRkPUFkZCBuZXcgdmVuZG9yIGNsYXNzCnVzZXJfYWRkPUFkZCBuZXcgdXNlciBjbGFzcwpyZWFkX2V0aGVycz1SZWFkIC9ldGMvZXRoZXJzIGZvciBsZWFzZSBpbmZvCm1pc2M9TWlzY2VsbGFuZW91cyBESENQIG9wdGlvbnMKZGhjcF9vcHRpb25zPU5vbi1zdGFuZGFyZCBESENQIG9wdGlvbnMKZGhjcF9vcHRpb249T3B0aW9uCmRoY3BfYWRkPUFkZCBuZXcgb3B0aW9uCmVkaXRfaG9zdD1FZGl0IERIQ1AgaG9zdCBzcGVjaWZpY2F0aW9uCmVkaXRfb3B0PUVkaXQgREhDUCBvcHRpb25zCm9wdF9zcGVjPURIQ1Agb3B0aW9uIHNwZWNpZmljYXRpb24KdXNlX2Jvb3RwPVVzZSBCT09UUCAobmV0d29yayBib290KQpib290cF9ob3N0PUhvc3RuYW1lCmJvb3RwX2ZpbGU9RmlsZQpib290cF9hZGRyZXNzPUlQIEFkZHJlc3MKbWF4X2xlYXNlcz1NYXhpbXVtIG51bWJlciBvZiBsZWFzZXMgdG8gZ3JhbnQKbGVhc2VmaWxlPVVzZSBhIG5vbnN0YW5kYXJkIGxlYXNlIGZpbGUKbGZpa2xldG91c2U9Tm9uc3RhbmRhcmQgbGVhc2VmaWxlIHRvIHVzZQplcnJvcl9oZWFkaW5nPVdhcm5pbmcgLSBFUlJPUiEhISEKZXJyX2xpbmU9RXJyb3IgaW4gbGluZTogCmVycl90eXBlPVR5cGUgb2YgZXJyb3IgaXM6CmVycl9oZWxwPVRyeSBnb2luZyBiYWNrIGFuZCByZXR5cGluZyB0aGUgb2ZmZW5kaW5nIGluZm9ybWF0aW9uCmVycl9ub3RpcD1Ob3QgYSB2YWxpZCBJUCBhZGRyZXNzCmVycl9ub3RtYXNrPU5vdCBhIHZhbGlkIG5ldG1hc2sKZXJyX25vdHRpbWU9bm90IGEgdmFsaWQgdGltZQplcnJfY29uZmlnYmFkPUNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgYW4gZXJyb3IKZXJyX2ZpbGViYWQ9QmFkIGZpbGUgbmFtZQplcnJfaG9zdGJhZD1CYWQgaG9zdCBuYW1lCmVycl9udW1iYmFkPUJhZCBudW1iZXIKZXJyX2RvbWFpbmJhZD1CYWQgZG9tYWluCmVycl9uYW1lYmFkPUJhZCBuYW1lCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG5zbWFzcS9sYW5nL2VufgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMzIxMCMiISATElUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRwAQD/AAAAAgAAAEkAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhZAAAJAgAAFwJAAAAEAAASQAAAPAPAADuDwAAzQ8AAKYPAACgDwAAVg8AAAwPAADFDgAAnA4AAJoOAABVDgAAEQ4AAM4NAACcDQAAmg0AAFINAABRDQAAPQ0AADcNAAAbDQAAGg0AAAENAAAADQAA3AwAANsMAADaDAAAyQwAAMgMAADHDAAAxgwAAI4MAAD/CwAAxAsAAMMLAACoCwAAlQsAAF0LAABCCwAAQQsAADULAAA0CwAAEwsAABELAAD7CgAA+AoAANsKAAC+CgAAugoAAKUKAAChCgAAmQoAAJUKAAB+CgAAegoAAHcKAAB1CgAAdAoAAF8KAABFCgAAQwoAACAKAAAeCgAAHQoAAPUJAADXCQAAtAkAALMJAACyCQAAsQkAAHgJAAB3CQAAdgkAAFwJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMjIEVORCBvZiMjIyBFTkQgb2YgaW5kZXguY2dpICMjIy4AAAAjIyBpZiBzdWJyb3V0aW5lcyBhcmUgbm90IGluIGFuIGV4dHJhIGZpbGUgcHV0IHRoZW0gaGVyZQAAAAAjIHVzZXMgdGhlIGluZGV4IGVudHJ5IGluIC9sYW5nL2VuACZmb290ZXIoIi8iLCAkdGV4dHsnaW5kZXgnfSk7ACZoZWFkZXIoICJETlNtYXNxIGNvbmZpZ3VyYXRpb24iLCAiIiApOwAAfQAJcHJpbnQgIiRrZXkgPSAkY29uZmlneyRrZXl9PGJyPiI7AHsAZm9yZWFjaCBteSAka2V5ICglY29uZmlnKQAjIG91dHB1dCBhcyB3ZWIgcGFnZQAAfQAJfQAJCX0ACQkJJGNvbmZpZ3siJGxpbmUifT0xOwAJCXsACQllbHNlIAAJCX0ACQkJJGNvbmZpZ3siJDEifT0kMjsACQl7AAkJaWYgKCRsaW5lID1+IC8oLiopXD0oLiopLykACQluZXh0IGlmKCAkbGluZSA9fiAvXlwjLyApOwAJewAJaWYgKGRlZmluZWQgKCRsaW5lKSkAewBmb3JlYWNoIG15ICRsaW5lIChAJGNvbmZpZ19maWxlKQAAbXkgJWNvbmZpZzsAACMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlACRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICIvZXRjL2Ruc21hc3EuY29uZiIgKTsAIyByZWFkIGNvbmZpZyBmaWxlACMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlAAAjIHVzZXMgdGhlIGluZGV4X3RpdGxlIGVudHJ5IGZyb20gLi9sYW5nL2VuIG9yIGFwcHJvcHJpYXRlACAgICAgICAgIldyaXR0ZW4gYnkgTmVpbCBGaXNoZXI8QlI+PEEgSFJFRj1tYWlsdG86bmVpbFxAbWFnbmVjb3IuY29tLmF1PkF1dGhvcjwvQT48QlI+PEEgSFJFRj1odHRwOi8vd3d3LmF1dGhvcnBhZ2UuaW52YWxpZD5Ib21lOi8vcGFnZTwvQT4iKTsAJmhlYWRlcigkdGV4dHsnaW5kZXhfdGl0bGUnfSwgIiIsICJpbnRybyIsIDEsIDEsIHVuZGVmLAAAAAAjIyBzYW5pdHkgY2hlY2tzAAAAIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQAACVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwAAJmluaXRfY29uZmlnKCJNT0RVTEVOQU1FIik7ACR8PTE7AGRvICcuLi93ZWItbGliLnBsJzsAACMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuACMAIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgAjICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUAIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgAjICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAAjACMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4AIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgAjICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5ACMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkAIyAgICAAIyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgTmVpbCBGaXNoZXIAIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgICAgICAAIwAjIS91c3IvYmluL3BlcmwAZG5zbWFzcS9zcnZfZWRpdC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0NTAzADEwNTEyMzIzNjQzADAxMzUzMQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL3BlcmwKIwojICAgIEROU01hc3EgV2VibWluIE1vZHVsZSAtIGRuc19lZGl0LmNnaTsgIHVwc3RyZWFtIHNlcnZlciBlZGl0CiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e3Nydl9lZGl0fS4iPC9oMj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggInNydl9lZGl0X2FwcGx5LmNnaSIsICJwb3N0IiApOwpwcmludCAmdWlfaGlkZGVuKCAiaWR4IiwgJGlue2lkeH0gKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2luX3VzZX0uJnVpX3llc25vX3JhZGlvKCAidXNlZCIsCgkJCQkoJGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fV17dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJHRleHR7c3J2X25hbWVkfS4mdWlfeWVzbm9fcmFkaW8oICJuYW1lZCIsIAoJCQkJKCRjb25maWd7c2VydmVyc31bJGlue2lkeH1de2RvbWFpbl91c2VkfSk/MTowICk7CnByaW50ICI8YnI+Ii4kdGV4dHtzcnZfbmFtZX07CnByaW50ICZ1aV90ZXh0Ym94KCAibmFtZSIsICRjb25maWd7c2VydmVyc31bJGlue2lkeH1de2RvbWFpbn0sIDUwICk7CnByaW50ICI8YnI+Ii4kdGV4dHtzcnZfYWRkcn07CnByaW50ICZ1aV90ZXh0Ym94KCAiYWRkciIsICRjb25maWd7c2VydmVyc31bJGlue2lkeH1de2FkZHJl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YWxzID0+IFtdLAoJCWZvcmNlZCA9PiBbXSwKCQlib2d1cyA9PiBbXSwKCQl1c2VyID0+IHsgdXNlZCA9PiAwLCB1c2VyID0+IiIgfSwKCQlncm91cCA9PiB7IHVzZWQgPT4gMCwgZ3JvdXAgPT4gIiIgfSwKCQlpbnRlcmZhY2UgPT4gIFtdLAoJCWV4X2ludGVyZmFjZSA9PiAgW10sCgkJbGlzdGVuX29uID0+IAlbXSwKCQlhbGlhcyA9PiBbXSwKCQliaW5kX2ludGVyZmFjZXMgPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCB9LAoJCW5vX2hvc3RzID0+IHsgdXNlZCA9PiAwLCBsaW5lID0+IDAgfSwKCQlhZGRuX2hvc3RzID0+IHsgdXNlZCA9PiAwLCBsaW5lID0+IDAsIGZpbGUgPT4gIiIgfSwKCQlleHBhbmRfaG9zdHMgPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCB9LAogCQlkb21haW4gPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCwgZG9tYWluID0+ICIiIH0sCgkJY2FjaGVfc2l6ZSA9PiB7IHVzZWQgPT4gMCwgbGluZSA9PjAsIHNpemUgPT4gMCB9LAoJCW5lZ19jYWNoZSA9PiB7IHVzZWQgPT4gMCwgbGluZSA9PiAwIH0sCgkJbG9jYWxfdHRsID0+IHsgdXNlZCA9PiAwLCBsaW5lID0+IDAsIHR0bCA9PiAwIH0sCgkJbG9nX3F1ZXJpZXMgPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCB9LAkKCQlkaGNwX3JhbmdlID0+IFtdLAoJCWRoY3BfaG9zdCA9PiBbXSwKCQl2ZW5kb3JfY2xhc3MgPT4gW10sCgkJdXNlcl9jbGFzcyA9PiBbXSwKCQlkaGNwX29wdGlvbiA9PiBbXSwKCQlkaGNwX2Jvb3QgPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCwgZmlsZSA9PiAiIiwKCQkJCWhvc3QgPT4gIiIsIGFkZHJlc3MgPT4gIiIgfSwKCQlkaGNwX2xlYXNlbWF4ID0+IHsgdXNlZCA9PiAwLCBsaW5lID0+IDAsIG1heCA9PiAwIH0sCgkJZGhjcF9sZWFzZWZpbGUgPT4geyB1c2VkID0+IDAsIGxpbmUgPT4gMCwgZmlsZSA9PiAiIiB9LAoJCWRoY3BfZXRoZXJzID0+IHsgdXNlZCA9PiAwLCBsaW5lID0+IDAgfQoJICAgICB9OwojCiMgcGFyc2UgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBhbmQgcG9wdWxhdGUgdGhlICVjb25maWcgc3RydWN0dXJlCiMgCnN1YiBwYXJzZV9jb25maWdfZmlsZQp7CgkKbXkgJGxpbmVubzsKbXkgJGNvbmZpZyA9IHNoaWZ0OwpteSAkY29uZmlnX2ZpbGUgPSBzaGlmdDsKJElQQUREUiA9ICJbMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9XC5bMC05XXsxLDN9IjsKJE5BTUUgPSAiW2EtekEtWlxfXC5dWzAtOWEtekEtWlxfXC5dKiI7CiRUSU1FID0gIlswLTl9K1tofG1dKiI7CiRGSUxFID0gIlswLTlhLXpBLVpcX1wtXC5cL10rIjsKJE5VTUJFUj0iWzAtOV0rIjsKCiRsaW5lbm89LTE7CmZvcmVhY2ggbXkgJGxpbmUgKEAkJGNvbmZpZ19maWxlKQp7CglteSAkc3VibGluZTsKCW15ICV0ZW1wOwoJCgkkbGluZW5vKys7CglpZiAoZGVmaW5lZCAoJGxpbmUpKQoJewoJCSMKCQkjIHdlIGFsd2F5cyB1c2UgcmVnZXhwIHN0YXJ0aW5nIHdpdGggCgkJIyBeW1wjXSpbXHNdKgoJCSMgYmVjYXVzZSB0aGF0IGFsbG93cyBmb3IgYSBjb21tZW50ZWQgb3V0IGxpbmUgd2l0aAoJCSMgIHBvc3NpYmx5IHNwYWNlKHMpIGJldHdlZW4gdGhlIGNvbW1lbnQgbWFya2VyIGFuZCBrZXl3b3JkCgkJIyB3aGlsZSByZWplY3RpbmcgYW55IGNvbW1lbnRzIHRoYXQgY2Fycnkgb3VyIGtleXdvcmQKCQkjCgkJIyByZWplY3QgbGluZXMgYmxhbmsgYXQgc3RhcnQhCgkJbmV4dCBpZiAoJGxpbmUgIX4gL15bMC05YS16QS1aXF9cLVwjXS8pOwoJCSMgTVggcmVjb3JkcyBzZXJ2ZXI/CgkJaWYgKCAkbGluZSA9fiAvKF5bXCNdKltcc10qbXgtaG9zdClcPShbMC05YS16QS1aXC5cLV0qKS8gKQoJCXsKCQl9CgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpteC10YXJnZXQpXD0oWzAtOWEtekEtWlwuXC1dKikvICkKCQl7CgkJfQoJCWVsc2lmICgkbGluZSA9fiAvXltcI10qW1xzXSpzZWxmbXgvICkKCQl7CgkJCSQkY29uZmlne3NlbGZteH17bGluZX09JGxpbmVubzsKCQkJJCRjb25maWd7c2VsZm14fXt1c2VkfT0oJGxpbmUgIX4gL15cIy8pOwoJCX0KCQllbHNpZiAoJGxpbmUgPX4gL15bXCNdKltcc10qbG9jYWxteC8gKQoJCXsKCQkJJCRjb25maWd7bG9jYWxteH17bGluZX09JGxpbmVubzsKCQkJJCRjb25maWd7bG9jYWxteH17dXNlZH09KCRsaW5lICF+IC9eXCMvKTsKCQl9CgkJIyBmb3J3YXJkIG5hbWVzIHdpdG91dCBhIGRvbWFpbj8KCQllbHNpZiAoJGxpbmUgPX4gL15bXCNdKltcc10qZG9tYWluLW5lZWRlZC8gKQoJCXsKCQkJJCRjb25maWd7ZG9tYWluX25lZWRlZH17dXNlZH09KCRsaW5lIX4vXlwjLyk7CgkJCSQkY29uZmlne2RvbWFpbl9uZWVkZWR9e2xpbmV9PSRsaW5lbm87CgkJfQoJCSNmb3J3YXJkIG5hbWVzIGluIG5vbnJvdXRlZCBhZGRyZXNzIHNwYWNlPwoJCWVsc2lmICgkbGluZSA9fiAvXltcI10qW1xzXSpib2d1cy1wcml2LyApCgkJewoJCQkkJGNvbmZpZ3tib2d1c19wcml2fXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQkJJCRjb25maWd7Ym9ndXNfcHJpdn17bGluZX09JGxpbmVubzsKCQl9CgkJIyBmaWx0ZXIgd2luZG93cyB3aWVyZG8gbmFtZXM/CgkJZWxzaWYgKCRsaW5lID1+IC9eW1wjXSpbXHNdKmZpbHRlcndpbjJrLyApCgkJewoJCQkkJGNvbmZpZ3tmaWx0ZXJ3aW4ya317dXNlZH09KCRsaW5lIX4vXlwjLyk7CgkJCSQkY29uZmlne2ZpbHRlcndpbjJrfXtsaW5lfT0kbGluZW5vOwoJCX0KCQkjIHJlc29sdi5jb25mIGZpbGUKCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKnJlc29sdi1maWxlXD0pKFswLTlhLXpBLVpcL1wuXC1dKikvICkKCQl7CgkJCSQkY29uZmlne3Jlc29sdl9maWxlfXtmaWxlbmFtZX09JDI7CgkJCSQkY29uZmlne3Jlc29sdl9maWxlfXtsaW5lfT0kbGluZW5vOwoJCQkkJGNvbmZpZ3tyZXNvbHZfZmlsZX17dXNlZH09KCRsaW5lIX4vXlwjLyk7CgkJfQoJCSMgYW55IHJlc29sdi5jb25mIGZpbGUgYXQgYWxsPwoJCWVsc2lmICgkbGluZSA9fiAvXltcI10qW1xzXSpuby1yZXNvbHYvICkKCQl7CgkJCSQkY29uZmlne25vX3Jlc29sdn17dXNlZH09KCRsaW5lIX4vXlwjLyk7CgkJCSQkY29uZmlne25vX3Jlc29sdn17bGluZX09JGxpbmVubzsKCQl9CgkJIyB1cHN0cmVhbSBzZXJ2ZXJzIGluIG9yZGVyPwoJCWVsc2lmICgkbGluZSA9fiAvXltcI10qW1xzXSpzdHJpY3Qtb3JkZXIvICkKCQl7CgkJCSQkY29uZmlne3N0cmljdF9vcmRlcn17dXNlZH09KCRsaW5lIX4vXlwjLyk7CgkJCSQkY29uZmlne3N0cmljdF9vcmRlcn17bGluZX09JGxpbmVubzsKCQl9CgkJIyBjaGVjayByZXNvbHYuIGNvbmYgcmVndWxhcmx5PwoJCWVsc2lmICgkbGluZSA9fiAvXltcI10qW1xzXSpuby1wb2xsLyApCgkJewoJCQkkJGNvbmZpZ3tub19wb2xsfXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQkJJCRjb25maWd7bm9fcG9sbH17bGluZX09JGxpbmVubzsKCQl9CgkJIyBleHRyYSBuYW1lIHNlcnZlcnM/CgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpzZXJ2ZXJcPSkoWzAtOWEtekEtWlwuXC1cL10qKS8gKQoJCXsKCQkJJHN1YmxpbmU9JDI7CgkJCSV0ZW1wID0ge307CgkJCWlmKCAkc3VibGluZSA9fiAvXC8oJE5BTUUpXC8oJElQQUREUikvICkKCQkJewoJCQkJJHRlbXB7ZG9tYWlufT0kMTsKCQkJCSR0ZW1we2RvbWFpbl91c2VkfT0xOwoJCQkJJHRlbXB7YWRkcmVzc309JDI7CgkJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkJJHRlbXB7dXNlZH09ICgkbGluZSAhfiAvXlwjLyk7CgkJCQlwdXNoIEB7ICQkY29uZmlne3NlcnZlcnN9IH0sIHsgJXRlbXAgfTsKCQkJfQoJCQllbHNpZiggJHN1YmxpbmUgPX4gLygkSVBBRERSKS8gKQoJCQl7CgkJCQkkdGVtcHtkb21haW59PSIiOwoJCQkJJHRlbXB7ZG9tYWluX3VzZWR9PTA7CgkJCQkkdGVtcHthZGRyZXNzfT0kMTsKCQkJCSR0ZW1we2xpbmV9PSRsaW5lbm87CgkJCQkkdGVtcHt1c2VkfT0gKCRsaW5lICF+IC9eXCMvKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7c2VydmVyc30gfSwgeyAldGVtcCB9OwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcHJpbnQgIkVycm9yIGluIGxpbmUgJGxpbmVubyEiOwoJCQkJJCRjb25maWd7ZXJyb3JzfSsrOwoJCQl9CgkJfQoJCSMgbG9jYWwtb25seSBkb21haW5zCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpsb2NhbFw9KShbMC05YS16QS1aXC5cLVwvXSopLyApCgkJewoJCQkkc3VibGluZT0kMjsKCQkJJXRlbXA9e307CgkJCWlmKCAkc3VibGluZSA9fiAvXC8oJE5BTUUpXC8vICkKCQkJewoJCQkJJHRlbXB7ZG9tYWlufT0kMTsKCQkJCSR0ZW1we2xpbmVub309JGxpbmVubzsKCQkJCSR0ZW1we3VzZWR9PSgkbGluZSAhfiAvXlwjLyk7CgkJCQlwdXNoIEB7ICQkY29uZmlne2xvY2Fsc30gfSwgeyAldGVtcCB9OwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcHJpbnQgIkVycm9yIGluIGxpbmUgJGxpbmVubyEiOwoJCQkJJCRjb25maWd7ZXJyb3JzfSsrOwoJCQl9CgkJfQoJCSMgZm9yY2UgbG9va3VwcyB0byBhZGRyZXNzZXMKCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmFkZHJlc3NcPSkoWzAtOWEtekEtWlwuXC1cL10qKS8gKQoJCXsKCQkJJHN1YmxpbmU9JDI7CgkJCSV0ZW1wID0ge307CgkJCWlmKCAkc3VibGluZSA9fiAvXC8oJE5BTUUpXC8oJElQQUREUikvICkKCQkJewoJCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJCSR0ZW1we2RvbWFpbn09JDE7CgkJCQkkdGVtcHthZGRyfT0kMjsKCQkJCSR0ZW1we3VzZWR9PSgkbGluZSAhfiAvXlwjLyk7CgkJCQlwdXNoIEB7ICQkY29uZmlne2ZvcmNlZH0gfSwgeyAldGVtcCB9OwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcHJpbnQgIkVycm9yIGluIGxpbmUgJGxpbmVubyEiOwoJCQkJJCRjb25maWd7ZXJyb3JzfSsrOwoJCQl9CgkJfQoJCSMgZGVwcmVjYXRlZCAvZXRjL3BwcC9yZXNvbHYuY29uZiBwZXJtaXNzaW9ucwoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qdXNlclw9KShbMC05YS16QS1aXC5cLVwvXSopLyApCgkJewoJCX0KCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmdyb3VwXD0pKFswLTlhLXpBLVpcLlwtXC9dKikvICkKCQl7CgkJfQoJCSMgd2hlcmUgYW5kIGhvdyBkbyB3ZSBsaXN0ZW4/CgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpsaXN0ZW4tYWRkcmVzc1w9KShbMC05XC5dKikvICkKCQl7CgkJCSRzdWJsaW5lPSQyOwoJCQkldGVtcCA9IHt9OwoJCQlpZiggJHN1YmxpbmUgPX4gLygkSVBBRERSKS8gKQoJCQl7CgkJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkJJHRlbXB7YWRkcmVzc309JDE7CgkJCQkkdGVtcHt1c2VkfT0gKCRsaW5lICF+IC9eXCMvKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7bGlzdGVuX29ufSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcmludCAiRXJyb3IgaW4gbGluZSAkbGluZW5vISI7CgkJCQkkJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9CgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpleGNlcHQtaW50ZXJmYWNlXD0pKFswLTlhLXpBLVpcLlwtXC9dKikvICkKCQl7CgkJCSRzdWJsaW5lPSQyOwoJCQkldGVtcCA9IHt9OwoJCQlpZiggJHN1YmxpbmUgPX4gLygkTkFNRSkvICkKCQkJewoJCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJCSR0ZW1we2lmYWNlfT0kMTsKCQkJCSR0ZW1we3VzZWR9PSAoJGxpbmUgIX4gL15cIy8pOwoJCQkJcHVzaCBAeyAkJGNvbmZpZ3tleF9pbnRlcmZhY2V9IH0sIHsgJXRlbXAgfTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXByaW50ICJFcnJvciBpbiBsaW5lICRsaW5lbm8hIjsKCQkJCSQkY29uZmlne2Vycm9yc30rKzsKCQkJfQoJCX0KCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmludGVyZmFjZVw9KShbMC05YS16QS1aXC5cLVwvXSopLyApCgkJewoJCQkkc3VibGluZT0kMjsKCQkJJXRlbXAgPSB7fTsKCQkJaWYoICRzdWJsaW5lID1+IC8oJE5BTUUpLyApCgkJCXsKCQkJCSR0ZW1we2xpbmV9PSRsaW5lbm87CgkJCQkkdGVtcHtpZmFjZX09JDE7CgkJCQkkdGVtcHt1c2VkfT0gKCRsaW5lICF+IC9eXCMvKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7aW50ZXJmYWNlfSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcmludCAiRXJyb3IgaW4gbGluZSAkbGluZW5vISI7CgkJCQkkJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9CgkJZWxzaWYgKCRsaW5lID1+IC9eW1wjXSpbXHNdKmJpbmQtaW50ZXJmYWNlcy8gKQoJCXsKCQkJJCRjb25maWd7YmluZF9pbnRlcmZhY2VzfXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQkJJCRjb25maWd7YmluZF9pbnRlcmZhY2VzfXtsaW5lfT0kbGluZW5vOwoJCX0KCQkjIGhvc3RzIGZpbGUKCQllbHNpZiAoJGxpbmUgPX4gL15bXCNdKltcc10qbm8taG9zdHMvICkKCQl7CgkJCSQkY29uZmlne25vX2hvc3RzfXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQkJJCRjb25maWd7bm9faG9zdHN9e2xpbmV9PSRsaW5lbm87CgkJfQoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qYWRkbi1ob3N0c1w9KShbMC05YS16QS1aXF9cLlwtXC9dKikvICkKCQl7CgkJCSQkY29uZmlne2FkZG5faG9zdHN9e2xpbmV9PSRsaW5lbm87CgkJCSQkY29uZmlne2FkZG5faG9zdHN9e2ZpbGV9PSQyOwoJCQkkJGNvbmZpZ3thZGRuX2hvc3RzfXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQl9CgkJIyBhZGQgZG9tYWluIHRvIGhvc3RzIGZpbGU/CgkJZWxzaWYgKCRsaW5lID1+IC9eW1wjXSpbXHNdKmV4cGFuZC1ob3N0cy8gKQoJCXsKCQkJJCRjb25maWd7ZXhwYW5kX2hvc3RzfXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQkJJCRjb25maWd7ZXhwYW5kX2hvc3RzfXtsaW5lfT0kbGluZW5vOwoJCX0gCgkJIyB0cmFuc2xhdGUgd2lsZC1jYXJkIHJlc3BvbnNlcyB0byBOWERPTUFJTgoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qYm9ndXMtbnhkb21haW5cPSkoWzAtOVwuXSopLyApCgkJewoJCQkkc3VibGluZT0kMjsKCQkJJXRlbXAgPSB7fTsKCQkJaWYoICRzdWJsaW5lID1+IC8oJElQQUREUikvICkKCQkJewoJCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJCSR0ZW1we2FkZHJ9PSQxOwoJCQkJJHRlbXB7dXNlZH09ICgkbGluZSAhfiAvXlwjLyk7CgkJCQlwdXNoIEB7ICQkY29uZmlne2JvZ3VzfSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcmludCAiRXJyb3IgaW4gbGluZSAkbGluZW5vISI7CgkJCQkkJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9CgkJIyBsb2NhbCBkb21haW4KCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmRvbWFpblw9KShbMC05YS16QS1aXC5cLVwvXSopLyApCgkJewoJCQkkJGNvbmZpZ3tkb21haW59e2xpbmV9PSRsaW5lbm87CgkJCSQkY29uZmlne2RvbWFpbn17ZG9tYWlufT0kMjsKCQkJJCRjb25maWd7ZG9tYWlufXt1c2VkfT0oJGxpbmUhfi9eXCMvKTsKCQl9CgkJIyBjYWNoZSBzaXplCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpjYWNoZS1zaXplXD0pKFswLTldKikvICkKCQl7CgkJCSQkY29uZmlne2NhY2hlX3NpemV9e2xpbmV9PSRsaW5lbm87CgkJCSQkY29uZmlne2NhY2hlX3NpemV9e3NpemV9PSQyOwoJCQkkJGNvbmZpZ3tjYWNoZV9zaXplfXt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJfQoJCSMgbmVnYXRpdmUgY2FjaGUgCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpuby1uZWdjYWNoZSkvICkKCQl7CgkJCSQkY29uZmlne25lZ19jYWNoZX17bGluZX09JGxpbmVubzsKCQkJJCRjb25maWd7bmVnX2NhY2hlfXt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJfQoJCSMgbG9jYWwgdHRsCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpsb2NhbC10dGxcPSkoWzAtOV0qKS8gKQoJCXsKCQkJJCRjb25maWd7bG9jYWxfdHRsfXtsaW5lfT0kbGluZW5vOwoJCQkkJGNvbmZpZ3tsb2NhbF90dGx9e3R0bH09JDI7CgkJCSQkY29uZmlne2xvY2FsX3R0bH17dXNlZH09KCRsaW5lICF+L15cIy8pOwoJCX0KCQkjIGxvZyByZXF1ZXN0cz8gCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpsb2ctcXVlcmllcykvICkKCQl7CgkJCSQkY29uZmlne2xvZ19xdWVyaWVzfXtsaW5lfT0kbGluZW5vOwoJCQkkJGNvbmZpZ3tsb2dfcXVlcmllc317dXNlZH09KCRsaW5lICF+L15cIy8pOwoJCX0KCQkjIGFsaWFzIElQIGFkZHJlc3NlcwoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qYWxpYXNcPSkoWzAtOVwuXCxdKikvICkKCQl7CgkJCSRzdWJsaW5lPSQyOwoJCQkldGVtcCA9IHt9OwoJCQlpZiggJHN1YmxpbmUgPX4gLygkSVBBRERSKVwsKCRJUEFERFIpXCwoJElQQUREUikvICkKCQkJeyAjIHdpdGggbmV0bWFzawoJCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJCSR0ZW1we2Zyb219PSQxOwoJCQkJJHRlbXB7dG99PSQyOwoJCQkJJHRlbXB7bmV0bWFza309JDM7CgkJCQkkdGVtcHtuZXRtYXNrX3VzZWR9PTE7CgkJCQkkdGVtcHt1c2VkfT0gKCRsaW5lICF+IC9eXCMvKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7YWxpYXN9IH0sIHsgJXRlbXAgfTsKCQkJfQoJCQllbHNpZiggJHN1YmxpbmUgPX4gLygkSVBBRERSKVwsKCRJUEFERFIpLyApCgkJCXsgIyBubyBuZXRtYXNrCgkJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkJJHRlbXB7ZnJvbX09JDE7CgkJCQkkdGVtcHt0b309JDI7CgkJCQkkdGVtcHtuZXRtYXNrfT0wOwoJCQkJJHRlbXB7bmV0bWFza191c2VkfT0wOwoJCQkJJHRlbXB7dXNlZH09ICgkbGluZSAhfiAvXlwjLyk7CgkJCQlwdXNoIEB7ICQkY29uZmlne2FsaWFzfSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcmludCAiRXJyb3IgaW4gbGluZSAkbGluZW5vISI7CgkJCQkkJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9CgkJIyBESENQCgkJIyBhZGRyZXNzIHJhbmdlIHRvIHVzZQoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qZGhjcC1yYW5nZVw9KShbMC05YS16QS1aXC5cLFwtXF9dKikvICkKCQl7CgkJCSV0ZW1wPXt9OwoJCQkkc3VibGluZT0kMjsKCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJJHRlbXB7dXNlZH09KCRsaW5lICF+L15cIy8pOwoJCQlpZiAoJHN1YmxpbmUgPX4gL14oJE5BTUUpXCwoJElQQUREUilcLCgkSVBBRERSKVwsKCRJUEFERFIpKFwsKikoXGQqW21oXSopLyApCgkJCXsKCQkJCSMgbmV0d29yayBpZCwgc3RhcnQsIGVuZCwgbmV0bWFzaywgdGltZSAob3B0aW9uYWxseSkKCQkJCSR0ZW1we2lkfT0kMTsKCQkJCSR0ZW1we2lkX3VzZWR9PTE7CgkJCQkkdGVtcHtzdGFydH09JDI7CgkJCQkkdGVtcHtlbmR9PSQzOwoJCQkJJHRlbXB7bWFza309JDQ7CgkJCQkkdGVtcHttYXNrX3VzZWR9PTE7CgkJCQkkdGVtcHtsZWFzZXRpbWV9PSQ2OwoJCQkJJHRlbXB7dGltZV91c2VkfT0oJDYgPX4gL15cZC8pOwoJCQkJJHRlbXB7dXNlZH0gPSggJGxpbmUgIX4gL15cIy8gKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7ZGhjcF9yYW5nZX0gfSwgeyAldGVtcCB9OwoJCQl9CgkJCWVsc2lmICgkc3VibGluZSA9fiAvXigkTkFNRSlcLCgkSVBBRERSKVwsKCRJUEFERFIpKFwsKikoXGQqW21oXSopLyApCgkJCXsKCQkJCSMgbmV0d29yayBpZCwgc3RhcnQsIGVuZCwgdGltZSAob3B0aW9uYWxseSkKCQkJCSR0ZW1we2lkfT0kMTsKCQkJCSR0ZW1we2lkX3VzZWR9PTE7CgkJCQkkdGVtcHtzdGFydH09JDI7CgkJCQkkdGVtcHtlbmR9PSQzOwoJCQkJJHRlbXB7bWFza309IiI7CgkJCQkkdGVtcHttYXNrX3VzZWR9PTA7CgkJCQkkdGVtcHtsZWFzZXRpbWV9PSQ1OwoJCQkJJHRlbXB7dGltZV91c2VkfT0oJDUgPX4gL15cZC8pOwoJCQkJJHRlbXB7dXNlZH0gPSggJGxpbmUgIX4gL15cIy8gKTsKCQkJCXB1c2ggQHsgJCRjb25maWd7ZGhjcF9yYW5nZX0gfSwgeyAldGVtcCB9OwoJCQl9CgkJCWVsc2lmICgkc3VibGluZSA9fiAvXigkSVBBRERSKVwsKCRJUEFERFIpXCwoJElQQUREUikoXCwqKShcZCpbbWhdKikvICkKCQkJewoJCQkJIyBzdGFydCwgZW5kLCBuZXRtYXNrLCB0aW1lIChvcHRpb25hbGx5KQoJCQkJJHRlbXB7aWR9PSIiOwoJCQkJJHRlbXB7aWRfdXNlZH09MDsKCQkJCSR0ZW1we3N0YXJ0fT0kMTsKCQkJCSR0ZW1we2VuZH09JDI7CgkJCQkkdGVtcHttYXNrfT0kMzsKCQkJCSR0ZW1we21hc2tfdXNlZH09MTsKCQkJCSR0ZW1we2xlYXNldGltZX09JDU7CgkJCQkkdGVtcHt0aW1lX3VzZWR9PSgkNSA9fiAvXlxkLyk7CgkJCQkkdGVtcHt1c2VkfSA9KCAkbGluZSAhfiAvXlwjLyApOwoJCQkJcHVzaCBAeyAkJGNvbmZpZ3tkaGNwX3JhbmdlfSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzaWYgKCRzdWJsaW5lID1+IC9eKCRJUEFERFIpXCwoJElQQUREUikoXCwqKShcZCpbbWhdKikvICkKCQkJewoJCQkJIyBzdGFydCwgZW5kLCB0aW1lIChvcHRpb25hbGx5KQoJCQkJJHRlbXB7aWR9PSIiOwoJCQkJJHRlbXB7aWRfdXNlZH09MDsKCQkJCSR0ZW1we3N0YXJ0fT0kMTsKCQkJCSR0ZW1we2VuZH09JDI7CgkJCQkkdGVtcHttYXNrfT0iIjsKCQkJCSR0ZW1we21hc2tfdXNlZH09MDsKCQkJCSR0ZW1we2xlYXNldGltZX09JDQ7CgkJCQkkdGVtcHt0aW1lX3VzZWR9PSgkNCA9fiAvXlxkLyk7CgkJCQkkdGVtcHt1c2VkfSA9KCAkbGluZSAhfiAvXlwjLyApOwoJCQkJcHVzaCBAeyAkJGNvbmZpZ3tkaGNwX3JhbmdlfSB9LCB7ICV0ZW1wIH07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlwcmludCAiRXJyb3IgaW4gbGluZSAkbGluZW5vISI7CgkJCQkkJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9CgkJIyBzcGVjaWZ5IGhvc3RzCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpkaGNwLWhvc3RcPSkoWzAtOWEtekEtWlwuXDpcLFwqXSopLykKCQl7CgkJCSMgdG9vIG1hbnkgdG8gY2xhc3NpZnkgLSBhbGwgYXMgc3RyaW5nIQoJCQkldGVtcCA9IHt9OwoJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkkdGVtcHtvcHRpb259PSQyOwoJCQkkdGVtcHt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJCXB1c2ggQHsgJCRjb25maWd7ZGhjcF9ob3N0fSB9LCB7ICV0ZW1wIH07CgkJfQoJCSMgdmVuZG9yIGNsYXNzCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpkaGNwLXZlbmRvcmNsYXNzXD0pKCROQU1FKVwsKCROQU1FKS8gKQoJCXsKCQkJJXRlbXAgPSB7fTsKCQkJJHRlbXB7bGluZX09JGxpbmVubzsKCQkJJHRlbXB7Y2xhc3N9PSQyOwoJCQkkdGVtcHt2ZW5kb3J9PSQzOwoJCQkkdGVtcHt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJCXB1c2ggQHsgJCRjb25maWd7dmVuZG9yX2NsYXNzfSB9LCB7ICV0ZW1wIH07CgkJfQoJCSMgdXNlciBjbGFzcwoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qZGhjcC11c2VyY2xhc3NcPSkoJE5BTUUpXCwoJE5BTUUpLyApCgkJewoJCQkldGVtcCA9IHt9OwoJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkkdGVtcHtjbGFzc309JDI7CgkJCSR0ZW1we3VzZXJ9PSQzOwoJCQkkdGVtcHt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJCXB1c2ggQHsgJCRjb25maWd7dXNlcl9jbGFzc30gfSwgeyAldGVtcCB9OwoJCX0KCQkjIC9ldGMvZXRoZXJzPwoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qcmVhZC1ldGhlcnMpLyApCgkJewoJCQkkJGNvbmZpZ3tkaGNwX2V0aGVyc317bGluZX09JGxpbmVubzsKCQkJJCRjb25maWd7ZGhjcF9ldGhlcnN9e3VzZWR9PSgkbGluZSAhfi9eXCMvKTsKCQl9CgkJIyBkY2hwIG9wdGlvbnMKCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmRoY3Atb3B0aW9uXD0pKFswLTlhLXpBLVpcLFxfXC5dKikvICkKCQl7CgkJCSMgdG9vIG1hbnkgdG8gY2xhc3NpZnkgLSBhbGwgYXMgc3RyaW5nIQoJCQkldGVtcCA9IHt9OwoJCQkkdGVtcHtsaW5lfT0kbGluZW5vOwoJCQkkdGVtcHtvcHRpb259PSQyOwoJCQkkdGVtcHt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJCXB1c2ggQHsgJCRjb25maWd7ZGhjcF9vcHRpb259IH0sIHsgJXRlbXAgfTsKCQl9CgkJIyBsZWFzZSB0aW1lCgkJZWxzaWYgKCRsaW5lID1+IC8oXltcI10qW1xzXSpkaGNwLWxlYXNlLW1heFw9KShbMC05XSopLyApCgkJewoJCQkkJGNvbmZpZ3tkaGNwX2xlYXNlbWF4fXtsaW5lfT0kbGluZW5vOwoJCQkkJGNvbmZpZ3tkaGNwX2xlYXNlbWF4fXttYXh9PSQyOwoJCQkkJGNvbmZpZ3tkaGNwX2xlYXNlbWF4fXt1c2VkfT0oJGxpbmUgIX4vXlwjLyk7CgkJfQoJCSMgYm9vdHAgaG9zdCAmIGZpbGUKCQllbHNpZiAoJGxpbmUgPX4gLyheW1wjXSpbXHNdKmRoY3AtYm9vdFw9KShbMC05YS16QS1aMC05XCxcX1wuXC9dKikvICkKCQl7CgkJCSRzdWJsaW5lPSQyOwoJCQlpZiggJHN1YmxpbmUgPX4gLyhbMC05YS16QS1aXC5cLVxfXC9dKylcLCgkTkFNRSlcLCgkSVBBRERSKS8gKQoJCQl7CgkJCQkkJGNvbmZpZ3tkaGNwX2Jvb3R9e2xpbmV9PSRsaW5lbm87CgkJCQkkJGNvbmZpZ3tkaGNwX2Jvb3R9e2ZpbGV9PSQxOwoJCQkJJCRjb25maWd7ZGhjcF9ib290fXtob3N0fT0kMjsKCQkJCSQkY29uZmlne2RoY3BfYm9vdH17YWRkcmVzc309JDM7CgkJCQkkJGNvbmZpZ3tkaGNwX2Jvb3R9e3VzZWR9PSgkbGluZSAhfi9eXCMvKTsKCQkJfQoJCX0KCQkjICBsZWFzZXMgZmlsZQoJCWVsc2lmICgkbGluZSA9fiAvKF5bXCNdKltcc10qZGhjcC1sZWFzZWZpbGVcPSkoWzAtOWEtekEtWjAtOVxfXC5cL10qKS8gKQoJCXsKCQkJJCRjb25maWd7ZGhjcF9sZWFzZWZpbGV9e2xpbmV9PSRsaW5lbm87CgkJCSQkY29uZmlne2RoY3BfbGVhc2VmaWxlfXtmaWxlfT0kMjsKCQkJJCRjb25maWd7ZGhjcF9sZWFzZWZpbGV9e3VzZWR9PSgkbGluZSAhfi9eXCMvKTsKCQl9CgkJZWxzZQoJCXsKCQkJIyBldmVyeXRoaW5nIGVsc2UgdGhhdCdzIG5vdCBhIGNvbW1lbnQgCgkJCSMgd2UgZG9uJ3QgdW5kZXJzdGFuZCBzbyBpdCBtYXkgYmUgYW4gZXJyb3IhCgkJCWlmKCAkbGluZSAhfiAvXiMvICkKCQkJewoJCQkJJGNvbmZpZ3tlcnJvcnN9Kys7CgkJCX0KCQl9Cgl9Cn0KCn0gI2VuZCBvZiBzdWIgcmVhZF9jb25maWdfZmlsZQojCiMgdXBkYXRlIHRoZSBjb25maWcgZmlsZSBhcnJheQojCiMgYXJndW1lbnRzIGFyZToKIyAJJGxpbmVubyAtIHRoZSBsaW5lIG51bWJlciAoYXJyYXkgaW5kZXgpIHRvIHVwZGF0ZQojIAkkdGV4dCAgIC0gdGhlIG5ldyBjb250ZW50cyBvZiB0aGUgbGluZQojIAkkZmlsZSAgIC0gcmVmZXJlbmNlIHRvIHRoZSBhcnJheSB0byBjaGFuZ2UKIyAJJGNvbW0gICAtIHB1dCBhIGNvbW1lbnQgbWFya2VyICgnIycpIGF0IHN0YXJ0IG9mIGxpbmU/CiMgCSAgICAgICAgICBmYWxzZSAoMCkgbWVhbnMgY29tbWVudCB0aGUgbGluZQojCnN1YiB1cGRhdGUKewoJbXkgJGxpbmVubyA9IHNoaWZ0OwoJbXkgJHRleHQgPSBzaGlmdDsKCW15ICRmaWxlID0gc2hpZnQ7CglteSAkY29tbSA9IHNoaWZ0OwoJbXkgJGxpbmU7CgoJJGxpbmUgPSAoICRjb21tICE9IDAgKSA/CgkJJHRleHQgOgoJCSIjIiAuICR0ZXh0OwoJaWYoICRsaW5lbm8gPT0gMCApCgl7CgkJcHVzaCBAJGZpbGUsICRsaW5lOwoJfQoJZWxzZQoJewoJCUAkZmlsZVskbGluZW5vXT0kbGluZTsKCX0KfSAjIGVuZCBvZiBzdWIgdXBkYXRlCjE7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRuc21hc3Evc2VydmVycy5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNzA0MAAxMDUxMjM1MDA3NgAwMTM0MDIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9wZXJsCiMKIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgLSBzZXJ2ZXIuY2dpOyBVcHN0cmVhbSBTZXJ2ZXJzIGNvbmZpZwojICAgIENvcHlyaWdodCAoQykgMjAwNiBieSBOZWlsIEZpc2hlcgojICAgIAojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKJmhlYWRlcigkdGV4dHsnaW5kZXhfdGl0bGUnfSwgIiIsICJpbnRybyIsIDEsIDEsIHVuZGVmLAogICAgICAgICJXcml0dGVuIGJ5IE5laWwgRmlzaGVyPEJSPjxBIEhSRUY9bWFpbHRvOm5laWxcQG1hZ25lY29yLmNvbS5hdT5BdXRob3I8L0E+PEJSPjxBIEhSRUY9aHR0cDovL3d3dy5hdXRob3JwYWdlLmludmFsaWQ+SG9tZTovL3BhZ2U8L0E+Iik7CiMgdXNlcyB0aGUgaW5kZXhfdGl0bGUgZW50cnkgZnJvbSAuL2xhbmcvZW4gb3IgYXBwcm9wcmlhdGUKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQoKCiMgb3V0cHV0IGFzIHdlYiBwYWdlCgpteSAkY291bnQ9MDsKJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CnByaW50ICI8aDI+IjsKcHJpbnQgJHRleHR7J0ROU19zZXJ2ZXJzJ307CnByaW50ICI8L2gyPiI7CnByaW50ICZ1aV9mb3JtX3N0YXJ0KCAic3J2X2FwcGx5LmNnaSIsICJwb3N0IiApOwpwcmludCAiPGgzPiIuJHRleHR7ZHluYW1pY30uIjwvaDM+IjsKcHJpbnQgJHRleHR7cmVzb2x2fTsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAicmVzb2x2IiwgKCRjb25maWd7bm9fcmVzb2x2fXt1c2VkfT8wOjEpICk7CnByaW50ICI8YnI+Ii4kdGV4dHtyZXNvbHZfZmlsZV9leHBsaWNpdH07CnByaW50ICZ1aV95ZXNub19yYWRpbyggInJlc29sdl9zdGQiLCAoJGNvbmZpZ3tyZXNvbHZfZmlsZX17dXNlZH0/MTowKSApOwpwcmludCAiPGJyPiIuJHRleHR7cmVzb2x2X2ZpbGV9OwpwcmludCAmdWlfdGV4dGJveCggInJlc29sdl9maWxlIiwgJGNvbmZpZ3tyZXNvbHZfZmlsZX17ZmlsZW5hbWV9LCA1MCApOwpwcmludCAiPGJyPjxicj4iLiR0ZXh0e3BvbGx9LiI8YnI+IjsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAicG9sbCIsICgkY29uZmlne25vX3BvbGx9e3VzZWR9PzA6MSkgKTsKcHJpbnQgIjxicj48YnI+Ii4kdGV4dHtzdHJpY3Rfb3JkZXJ9OwpwcmludCAmdWlfeWVzbm9fcmFkaW8oICJzdHJpY3QiLCAoJGNvbmZpZ3tzdHJpY3Rfb3JkZXJ9e3VzZWR9PzE6MCkgKTsKcHJpbnQgIjxicj48YnI+PGgzPiIuJHRleHR7aW5fZmlsZX0uIjwvaDM+IjsKcHJpbnQgJnVpX2NvbHVtbnNfc3RhcnQoIFsgJHRleHR7ZG9tYWlufSwgJHRleHR7YWRkcmVzc30sIAoJCQkgICAkdGV4dHtpbl91c2V9LCAiIiBdLCAxMDAgKTsKZm9yZWFjaCBteSAkc2VydmVyICggQHskY29uZmlne3NlcnZlcnN9fSApCnsKCWxvY2FsICggJG1vdmVyLCAkZWRpdCApOwoJaWYoICRjb3VudCA9PSBAeyRjb25maWd7c2VydmVyc319LTEgKQoJewoJCSRtb3Zlcj0iPGltZyBzcmM9aW1hZ2VzL2dhcC5naWY+IjsKCX0KCWVsc2UKCXsJCgkJJG1vdmVyID0gIjxhIGhyZWY9J3Nydl9tb3ZlLmNnaT9pZHg9JGNvdW50JiIuCgkJImRpcj1kb3duJz48aW1nIHNyYz0iLgoJCSJpbWFnZXMvZG93bi5naWYgYm9yZGVyPTA+PC9hPiI7Cgl9CiAgICAgICAgaWYoICRjb3VudCA9PSAwICkKCXsKCQkkbW92ZXIuPSI8aW1nIHNyYz1pbWFnZXMvZ2FwLmdpZj4iOwoJfQoJZWxzZQoJewoJCSRtb3ZlciAuPSAiPGEgaHJlZj0nc3J2X21vdmUuY2dpP2lkeD0kY291bnQmIi4KCQkiZGlyPXVwJz48aW1nIHNyYz1pbWFnZXMvdXAuZ2lmICIuCgkJImJvcmRlcj0wPjwvYT4iOwoJfQoJJGVkaXQgPSAiPGEgaHJlZj1zcnZfZWRpdC5jZ2k/aWR4PSRjb3VudD4iLiQkc2VydmVye2FkZHJlc3N9LiI8L2E+IjsKCXByaW50ICZ1aV9jb2x1bW5zX3JvdyggWyAkJHNlcnZlcntkb21haW59LCAkZWRpdCwKCQkoJCRzZXJ2ZXJ7dXNlZH0pPyR0ZXh0e3VzZWR9OiR0ZXh0e25vdF91c2VkfSwgJG1vdmVyIF0sCiAgICAgICAJCVsgIndpZHRoPTMwJSIsICJ3aWR0aD0zMCUiLCAid2lkdGg9MzAlIiwgIndpZHRoPTEwJSIgXQkpOwoJJGNvdW50Kys7Cn0KcHJpbnQgJnVpX2NvbHVtbnNfZW5k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cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKJmhlYWRlcigkdGV4dHsnaW5kZXhfdGl0bGUnfSwgIiIsICJpbnRybyIsIDEsIDEsIHVuZGVmLAogICAgICAgICJXcml0dGVuIGJ5IE5laWwgRmlzaGVyPEJSPjxBIEhSRUY9bWFpbHRvOm5laWxcQG1hZ25lY29yLmNvbS5hdT5BdXRob3I8L0E+PEJSPjxBIEhSRUY9aHR0cDovL3d3dy5hdXRob3JwYWdlLmludmFsaWQ+SG9tZTovL3BhZ2U8L0E+Iik7CiMgdXNlcyB0aGUgaW5kZXhfdGl0bGUgZW50cnkgZnJvbSAuL2xhbmcvZW4gb3IgYXBwcm9wcmlhdGUKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQoKCiMgb3V0cHV0IGFzIHdlYiBwYWdlCgpteSAkY291bnQ9MDsKJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CnByaW50ICI8aDI+IjsKcHJpbnQgJHRleHR7J2lmYWNlX2xpc3Rlbid9OwpwcmludCAiPC9oMj4iOwpwcmludCAmdWlfY29sdW1uc19zdGFydCggWyAkdGV4dHtpZmFjZX0sICR0ZXh0e2luX3VzZX0gXSwgMTAwICk7CmZvcmVhY2ggbXkgJGlmYWNlICggQHskY29uZmlne2ludGVyZmFjZX19ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1pZmFjZV9lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRpZmFjZXtpZmFjZX0uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbICRlZGl0LCAoJCRpZmFjZXt1c2VkfSk/JHRleHR7dXNlZH06JHRleHR7bm90X3VzZWR9IF0sCiAgICAgICAJCVsgIndpZHRoPTMwJSIsICJ3aWR0aD0zMCUiLCAid2lkdGg9MzAlIiBdCSk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj48YSBocmVmPWFkZC5jZ2k/d2hhdD1pbnRlcmZhY2U9bmV3JndoZXJlPWlmYWNlLmNnaT4iLgoJCSR0ZXh0e25ld19pZmFjZX0uIjwvYT48aHI+IjsKcHJpbnQgIjxoMj4iOwpwcmludCAkdGV4dHsneGlmYWNlX2xpc3Rlbid9OwpwcmludCAiPC9oMj4iOwokY291bnQ9MDsKcHJpbnQgJnVpX2NvbHVtbnNfc3RhcnQoIFsgJHRleHR7eGlmYWNlfSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkaWZhY2UgKCBAeyRjb25maWd7ZXhfaW50ZXJmYWNlfX0gKQp7CglteSAkZWRpdCA9ICI8YSBocmVmPXhpZmFjZV9lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRpZmFjZXtpZmFjZX0uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbICRlZGl0LCAoJCRpZmFjZXt1c2VkfSk/JHRleHR7dXNlZH06JHRleHR7bm90X3VzZWR9IF0sCiAgICAgICAJCVsgIndpZHRoPTMwJSIsICJ3aWR0aD0zMCUiLCAid2lkdGg9MzAlIiBdCSk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj48YSBocmVmPWFkZC5jZ2k/d2hhdD1leGNlcHQtaW50ZXJmYWNlPW5ldyZ3aGVyZT1pZmFjZS5jZ2k+Ii4KCQkkdGV4dHtuZXdfaWZhY2V9LiI8L2E+PGhyPiI7CnByaW50ICI8aDI+IjsKcHJpbnQgJHRleHR7J2xpc3Rlbl9hZGRyJ307CnByaW50ICI8L2gyPiI7CiRjb3VudD0wOwpwcmludCAmdWlfY29sdW1uc19zdGFydCggWyAkdGV4dHtsaXN0ZW5fYWRkcn0sICR0ZXh0e2luX3VzZX0gXSwgMTAwICk7CmZvcmVhY2ggbXkgJGlmYWNlICggQHskY29uZmlne2xpc3Rlbl9vbn19ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1saXN0ZW5fZWRpdC5jZ2k/aWR4PSRjb3VudD4iLiQkaWZhY2V7YWRkcmVzc30uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbICRlZGl0LCAoJCRpZmFjZXt1c2VkfSk/JHRleHR7dXNlZH06JHRleHR7bm90X3VzZWR9IF0sCiAgICAgICAJCVsgIndpZHRoPTMwJSIsICJ3aWR0aD0zMCUiLCAid2lkdGg9MzAlIiBdCSk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj4iOwpwcmludCAiPGJyPjxhIGhyZWY9YWRkLmNnaT93aGF0PWxpc3Rlbi1hZGRyZXNzPTAuMC4wLjAmd2hlcmU9aWZhY2UuY2dpPiIuCgkJJHRleHR7bmV3X2FkZHJ9LiI8L2E+PGhyPjxicj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggJ2lmYWNlX2FwcGx5LmNnaScsICJwb3N0IiApOwpwcmludCAkdGV4dHtiaW5kX2lmYWNlfTsKcHJpbnQgJnVpX3llc25vX3JhZGlvKCAiYmluZF9pZmFjZSIsICgkY29uZmlne2JpbmRfaW50ZXJmYWNlc317dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJnVpX3N1Ym1pdCggJHRleHR7c2F2ZV9idXR0b259ICk7CnByaW50ICZ1aV9mb3JtX2VuZCgpOwpwcmludCAiPGhyPjxicj48YSBocmVmPVwiaW5kZXguY2dpXCI+Ii4kdGV4dHsnRE5TX3NldHRpbmdzJ30uIjwvYT48YnI+IjsKcHJpbnQgIjxhIGhyZWY9XCJzZXJ2ZXJzLmNnaVwiPiIuJHRleHR7J3NlcnZlcnNfY29uZmlnJ30uIjwvYT48YnI+IjsKcHJpbnQgIjxhIGhyZWY9XCJhbGlhcy5jZ2lcIj4iLiR0ZXh0eydhbGlhc19jb25maWcnfS4iPC9hPjxicj4iOwpwcmludCAiPGhyPiI7CnByaW50ICI8YSBocmVmPVwiZGhjcC5jZ2lcIj4iOwpwcmludCAkdGV4dHsnREhDUF9jb25maWcnfTsKcHJpbnQgIjwvYT48YnI+IjsKJmZvb3RlcigiLyIsICR0ZXh0eydpbmRleCd9KTsKIyB1c2VzIHRoZSBpbmRleCBlbnRyeSBpbiAvbGFuZy9lbgoKCgojIyBpZiBzdWJyb3V0aW5lcyBhcmUgbm90IGluIGFuIGV4dHJhIGZpbGUgcHV0IHRoZW0gaGVyZQoKCiMjIyBFTkQgb2YgaWZhY2UuY2dpICMjIy4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRuc21hc3EvaWZhY2VfZWRpdC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDA2MQAxMDUxMjMyNDQ1MQAwMTM3NjMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9wZXJsCiMKIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgLSBpZmFjZV9lZGl0LmNnaTsgIGVkaXQgaW50ZXJmYWNlCiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e2VkaXRfaWZhY2V9LiI8L2gyPiI7CnByaW50ICZ1aV9mb3JtX3N0YXJ0KCAiaWZhY2VfZWRpdF9hcHBseS5jZ2kiLCAicG9zdCIgKTsKcHJpbnQgJnVpX2hpZGRlbiggImlkeCIsICRpbntpZHh9ICk7CnByaW50ICI8YnI+Ii4kdGV4dHtpbl91c2V9LiZ1aV95ZXNub19yYWRpbyggInVzZWQiLAoJCQkJKCRjb25maWd7aW50ZXJmYWNlfVskaW57aWR4fV17dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJHRleHR7aWZhY2VfbmFtZX07CnByaW50ICZ1aV90ZXh0Ym94KCAiaWZhY2UiLCAkY29uZmlne2ludGVyZmFjZX1bJGlue2lkeH1de2lmYWNlfSwgNTAgKTsKcHJpbnQgIjxicj48YnI+IiAuICZ1aV9zdWJtaXQoICR0ZXh0eydzYXZlX2J1dHRvbid9ICkuIjxi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PGgzPkludHJvZHVjdGlvbiB0byBETlNtYXNxPC9oMz4KRE5TbWFzcSBpcyBhbiBpbnRlZ3JhdGVkIEROUyBjYWNoaW5nIHByb3h5IHNlcnZlciBhbmQgREhDUCBzZXJ2ZXIgZGVzaWduZWQgCnRvIHJ1biBvbiBhIGhvc3QgdGhhdCBpcyBtYXNxdWVyYWRpbmcgYSBsb2NhbCBwcml2YXRlIG5ldHdvcmsgdG8gdGhlIHJlc3QKb2YgdGhlIGludGVybmV0LiA8cD4KPGgzPkNvbmZpZ3VyaW5nIEROU21hc3E8L2gzPgpJbiBtb3N0IGNhc2VzLCBhbGwgeW91J2xsIG5lZWQgdG8gY2hhbmdlIHdpbGwgYmUgdGhlIGxvY2FsIGRvbWFpbiBuYW1lLiBVbmRlcgpzb21lIGNpcmN1bXN0YW5jZXMsIHlvdSBtYXkgd2FudCB0byBjaGFuZ2UgaG93IEROU21hc3EgcmVzb2x2ZXMgbmFtZXMgdG8KYWxsb3cgZm9yIG90aGVyIGxvY2FsIG5hbWVzZXJ2ZXJzIChpZiBmb3IgZXhhbXBsZSB5b3UgYXJlIHVzaW5nIGEgVlBOCnR1bm5lbCB0byBhbm90aGVyIGxvY2F0aW9uKS48cD4KQWxsIHRoZSBmdW5jdGlvbmFsaXR5IG9mIEROU21hc3EgaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIGhlbHAgZmlsZSAtIApwbGVhc2UgcmVhZCB0aGUgbWFuIHBhZ2VzIQo8aDM+TGltaXRhdGlvbnM8L2gzPgpQbGVhc2UgcmVhZCB0aGUgUkVBRE1FIGZpbGUuPGJyPgpJbiBTaG9ydCwgdGhpcyBpcyBhIHF1aWNrIGFuZCBkaXJ0eSBpbXBsZW1lbnRhdGlvbiB3aXRoIHZpcnR1YWxseSA8ZW0+CglubyBlcnJvciBjaGVja2luZzwvZW0+LiBUaGVyZWZvcmUsIGl0IGFzc3VtZXMgPGVtPnlvdQoJa25vdyB3aGF0IHlvdSBhcmUgZG9pbmchPC9lbT4gPGJyPgo8aDM+VXNlIHdpdGggY2FyZSE8L2gzPiBJZiB5b3UgZW50ZXIgYSBuYW1lIHdoZXJlIGEgSVAgYWRkcmVzcyAKc2hvdWxkIGJlIChmb3IgZXhhbXBsZSkgdGhlbiB5b3Ug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dWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKCgojIG91dHB1dCBhcyB3ZWIgcGFnZQoKCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKaWYoICRjb25maWd7ZXJyb3JzfSA+IDAgKQp7CglteSAkbGluZT0iZXJyb3IuY2dpP2xpbmU9eHgmdHlwZT0iLiR0ZXh0e2Vycl9jb25maWdiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQomaGVhZGVyKCR0ZXh0eydpbmRleF90aXRsZSd9LCAiIiwgImludHJvIiwgMSwgMSwgdW5kZWYsCiAgICAgICAgIldyaXR0ZW4gYnkgTmVpbCBGaXNoZXI8QlI+PEEgSFJFRj1tYWlsdG86bmVpbFxAbWFnbmVjb3IuY29tLmF1PkF1dGhvcjwvQT48QlI+PEEgSFJFRj1odHRwOi8vd3d3LmF1dGhvcnBhZ2UuaW52YWxpZD5Ib21lOi8vcGFnZTwvQT4iKTsKcHJpbnQgIjxocj5cbiI7CiMgdXNlcyB0aGUgaW5kZXhfdGl0bGUgZW50cnkgZnJvbSAuL2xhbmcvZW4gb3IgYXBwcm9wcmlhdGUKcHJpbnQgIjxicj5cbiI7CnByaW50ICI8aDI+Ii4kdGV4dHtmb3JjZWR9LiI8L2gyPiI7CnByaW50ICI8YnI+PGJyPlxuIjsKbXkgJGNvdW50PTA7CnByaW50ICZ1aV9jb2x1bW5zX3N0YXJ0KCBbICR0ZXh0e2ZvcmNlZF9kb21haW59LCAkdGV4dHtmb3JjZWRfaXB9LAoJCQkkdGV4dHtpbl91c2V9IF0sIDEwMCApOwpmb3JlYWNoIG15ICRmcmNkICggQHskY29uZmlne2ZvcmNlZH19ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1mb3JjZWRfZWRpdC5jZ2k/aWR4PSRjb3VudD4iLiQkZnJjZHtkb21haW59LiI8L2E+IjsKCXByaW50ICZ1aV9jb2x1bW5zX3JvdyggWyAkZWRpdCwgJCRmcmNke2FkZHJ9LCAoJCRmcmNke3VzZWR9KSA/CgkJCSR0ZXh0e3VzZWR9IDogJHRleHR7bm90X3VzZWR9IF0sCgkJCVsgIndpZHRoPTMwJSIsICJ3aWR0aD0zMCUiLCAid2lkdGg9MzAlIiBdICk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj5cbiI7CnByaW50ICI8YSBocmVmPWFkZC5jZ2k/d2hhdD1hZGRyZXNzPS9uZXcvMC4wLjAuMCZ3aGVyZT1hbGlhcy5jZ2k+Ii4KCSR0ZXh0e2ZvcmNlZF9hZGR9LiI8L2E+IjsKcHJpbnQgIjxicj5cbiI7CnByaW50ICI8YnI+PGJyPlxuIjsKcHJpbnQgIjxocj4iOwpwcmludCAiPGJyPlxuIjsKcHJpbnQgIjxoMj4iLiR0ZXh0e2FsaWFzfS4iPC9oMj4iOwpwcmludCAiPGJyPjxicj5cbiI7CiRjb3VudD0wOwpwcmludCAmdWlfY29sdW1uc19zdGFydCggWyAkdGV4dHtmb3JjZWRfZnJvbX0sICR0ZXh0e2ZvcmNlZF9pcH0sCgkJCSR0ZXh0e2ZvcmNlZF9tYXNrfSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkZnJjZCAoIEB7JGNvbmZpZ3thbGlhc319ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1hbGlhc19lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRmcmNke2Zyb219LiI8L2E+IjsKCXByaW50ICZ1aV9jb2x1bW5zX3JvdyggWyAKCQkJJGVkaXQsICQkZnJjZHt0b30sIAoJCQkoJCRmcmNke25ldG1hc2tfdXNlZH0pID8gIAoJCQkJJCRmcmNke25ldG1hc2t9IDogIjI1NS4yNTUuMjU1LjI1NSIsCgkJCSgkJGZyY2R7dXNlZH0pID8KCQkJCSR0ZXh0e3VzZWR9IDogJHRleHR7bm90X3VzZWR9IF0sCgkJCVsgIndpZHRoPTI1JSIsICJ3aWR0aD0yNSUiLCAid2lkdGg9MjUlIiwgIndpZHRoPTI1JSIgXSApOwoJJGNvdW50Kys7Cn0KcHJpbnQgJnVpX2NvbHVtbnNfZW5kKCk7CnByaW50ICI8YnI+XG4iOwpwcmludCAiPGEgaHJlZj1hZGQuY2dpP3doYXQ9YWxpYXM9MC4wLjAuMCwwLjAuMC4wJndoZXJlPWFsaWFzLmNnaT4iLgoJJHRleHR7YWxpYXNfYWRkfS4iPC9hPiI7CnByaW50ICI8YnI+XG4iOwpwcmludCAiPGhyPiI7CnByaW50ICI8YnI+XG4iOwpwcmludCAiPGgyPiIuJHRleHR7bnh9LiI8L2gyPiI7CnByaW50ICI8YnI+PGJyPlxuIjsKJGNvdW50PTA7CnByaW50ICZ1aV9jb2x1bW5zX3N0YXJ0KCBbICR0ZXh0e2ZvcmNlZF9mcm9tfSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkZnJjZCAoIEB7JGNvbmZpZ3tib2d1c319ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1ueF9lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRmcmNke2FkZHJ9LiI8L2E+IjsKCXByaW50ICZ1aV9jb2x1bW5zX3JvdyggWyAKCQkJJGVkaXQsIAoJCQkoJCRmcmNke3VzZWR9KSA/CgkJCQkkdGV4dHt1c2VkfSA6ICR0ZXh0e25vdF91c2VkfSBdLAoJCQlbICJ3aWR0aD01MCUiLCAid2lkdGg9NTAlIiBdICk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj5cbiI7CnByaW50ICI8YSBocmVmPWFkZC5jZ2k/d2hhdD1ib2d1cy1ueGRvbWFpbj0wLjAuMC4wJndoZXJlPWFsaWFzLmNnaT4iLgoJJHRleHR7bnhfYWRkfS4iPC9hPiI7CnByaW50ICI8YnI+XG4iOwpwcmludCAiPGhyPiI7CnByaW50ICI8YnI+PGJyPlxuIjsKcHJpbnQgIjxicj48YnI+XG4iOwpwcmludCAiPGEgaHJlZj1cImluZGV4LmNnaVwiPiI7CnByaW50ICR0ZXh0eydETlNfc2V0dGluZ3MnfTsKcHJpbnQgIjwvYT48YnI+IjsKcHJpbnQgIjxhIGhyZWY9XCJzZXJ2ZXJzLmNnaVwiPiI7CnByaW50ICR0ZXh0eydETlNfc2VydmVycyd9OwpwcmludCAiPC9hPjxicj4iOwpwcmludCAiPGEgaHJlZj1cImlmYWNlLmNnaVwiPiI7CnByaW50ICR0ZXh0eydpZmFjZV9jb25maWcnfTsKcHJpbnQgIjwvYT48YnI+IjsKcHJpbnQgIjxocj4iOwpwcmludCAiPGEgaHJlZj1cImRoY3AuY2dpXCI+IjsKcHJpbnQgJHRleHR7J0RIQ1BfY29uZmlnJ307CnByaW50ICI8L2E+PGJyPiI7CiZmb290ZXIoIi8iLCAkdGV4dHsnaW5kZXgnfSk7CiMgdXNlcyB0aGUgaW5kZXggZW50cnkgaW4gL2xhbmcvZW4KCgoKIyMgaWYgc3Vicm91dGluZXMgYXJlIG5vdCBpbiBhbiBleHRyYSBmaWxlIHB1dCB0aGVtIGhlcmUKCgojIyMgRU5EIG9mIGFsaWFzLmNnaSAjIyMuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkbnNtYXNxL2RoY3AuY2dpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMTMwNjAAMTA1MTIzNDczNDUAMDEyNjMzACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vcGVybAojCiMgICAgRE5TTWFzcSBXZWJtaW4gTW9kdWxlIC0gZGhjcC5jZ2k7IERIQ1AgY29uZmlnCiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgomaGVhZGVyKCR0ZXh0eydpbmRleF90aXRsZSd9LCAiIiwgImludHJvIiwgMSwgMSwgdW5kZWYsCiAgICAgICAgIldyaXR0ZW4gYnkgTmVpbCBGaXNoZXI8QlI+PEEgSFJFRj1tYWlsdG86bmVpbFxAbWFnbmVjb3IuY29tLmF1PkF1dGhvcjwvQT48QlI+PEEgSFJFRj1odHRwOi8vd3d3LmF1dGhvcnBhZ2UuaW52YWxpZD5Ib21lOi8vcGFnZTwvQT4iKTsKIyB1c2VzIHRoZSBpbmRleF90aXRsZSBlbnRyeSBmcm9tIC4vbGFuZy9lbiBvciBhcHByb3ByaWF0ZQoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCgoKIyBvdXRwdXQgYXMgd2ViIHBhZ2UKCgomaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKcHJpbnQgIjxocj5cbiI7CmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJcHJpbnQgIjxoMz5XQVJOSU5HOiBmb3VuZCAiOwoJcHJpbnQgJGNvbmZpZ3tlcnJvcnN9OwoJcHJpbnQgImVycm9ycyBpbiBjb25maWcgZmlsZSE8L2gzPjxicj5cbiI7Cn0KcHJpbnQgIjxicj5cbiI7CnByaW50ICI8aDI+JHRleHR7J0RIQ1Bfc2V0dGluZ3MnfTwvaDI+IjsKcHJpbnQgIjxicj48aHI+PGJyPlxuIjsKbXkgJGNvdW50OwpteSAkd2lkdGg7CiRjb3VudD0wOwokd2lkdGg9IndpZHRoPTMzJSI7CnByaW50ICI8aDI+Ii4kdGV4dHt2ZW5kb3JfY2xhc3Nlc30uIjwvaDI+IjsKcHJpbnQgJnVpX2NvbHVtbnNfc3RhcnQoIFsgJHRleHR7Y2xhc3N9LAoJCQkJJHRleHR7dmVuZG9yfSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkcmFuZ2UgKCBAeyRjb25maWd7dmVuZG9yX2NsYXNzfX0gKQp7CglteSAkZWRpdCA9ICI8YSBocmVmPXZlbmRfZWRpdC5jZ2k/aWR4PSRjb3VudD4iLiQkcmFuZ2V7Y2xhc3N9LiI8L2E+IjsKCXByaW50ICZ1aV9jb2x1bW5zX3JvdyggWwoJCQkkZWRpdCwgJCRyYW5nZXt2ZW5kb3J9LAoJCQkoJCRyYW5nZXt1c2VkfSkgPwoJCQkJJHRleHR7dXNlZH0gOiAkdGV4dHtub3RfdXNlZH0gXSwKCQkJWyAkd2lkdGgsICR3aWR0aCwgJHdpZHRoIF0gKTsKCSRjb3VudCsrOwp9CnByaW50ICZ1aV9jb2x1bW5zX2VuZCgpOwpwcmludCAiPGJyPjxhIGhyZWY9YWRkLmNnaT93aGF0PWRoY3AtdmVuZG9yY2xhc3M9bmV3JndoZXJlPWRoY3AuY2dpPiIuCgkJJHRleHR7dmVuZF9hZGR9LiI8L2E+PGJyPjxocj48YnI+IjsKJGNvdW50PTA7CiR3aWR0aD0id2lkdGg9MzMlIjsKcHJpbnQgIjxoMj4iLiR0ZXh0e3VzZXJfY2xhc3Nlc30uIjwvaDI+IjsKcHJpbnQgJnVpX2NvbHVtbnNfc3RhcnQoIFsgJHRleHR7Y2xhc3N9LAoJCQkJJHRleHR7dXNlcn0sICR0ZXh0e2luX3VzZX0gXSwgMTAwICk7CmZvcmVhY2ggbXkgJHJhbmdlICggQHskY29uZmlne3VzZXJfY2xhc3N9fSApCnsKCW15ICRlZGl0ID0gIjxhIGhyZWY9dXNlcl9lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRyYW5nZXtjbGFzc30uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbCgkJCSRlZGl0LCAkJHJhbmdle3VzZXJ9LAoJCQkoJCRyYW5nZXt1c2VkfSkgPwoJCQkJJHRleHR7dXNlZH0gOiAkdGV4dHtub3RfdXNlZH0gXSwKCQkJWyAkd2lkdGgsICR3aWR0aCwgJHdpZHRoIF0gKTsKCSRjb3VudCsrOwp9CnByaW50ICZ1aV9jb2x1bW5zX2VuZCgpOwpwcmludCAiPGJyPjxhIGhyZWY9YWRkLmNnaT93aGF0PWRoY3AtdXNlcmNsYXNzPW5ldyZ3aGVyZT1kaGNwLmNnaT4iLgoJCSR0ZXh0e3VzZXJfYWRkfS4iPC9hPjxicj48aHI+PGJyPiI7CiRjb3VudD0wOwokd2lkdGg9IjIwJSI7CnByaW50ICI8aDI+Ii4kdGV4dHtkaGNwX3JhbmdlfS4iPC9oMj4iOwpwcmludCAmdWlfY29sdW1uc19zdGFydCggWyAkdGV4dHtuZXRfaWR9LCAkdGV4dHtmb3JjZWRfZnJvbX0sICR0ZXh0e2ZvcmNlZF9pcH0sCgkJCQkkdGV4dHtmb3JjZWRfbWFza30sICR0ZXh0e2xlYXNldGltZX0sCgkJCSAgICAgICAgJHRleHR7aW5fdXNlfQldLCAxMDAgKTsKZm9yZWFjaCBteSAkcmFuZ2UgKCBAeyRjb25maWd7ZGhjcF9yYW5nZX19ICkKewoJbXkgJGVkaXQgPSAiPGEgaHJlZj1yYW5nZV9lZGl0LmNnaT9pZHg9JGNvdW50PiIuJCRyYW5nZXtzdGFydH0uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbCgkJCSQkcmFuZ2V7aWR9LCAkZWRpdCwgJCRyYW5nZXtlbmR9LCAkJHJhbmdle21hc2t9LAoJCQkkJHJhbmdle2xlYXNldGltZX0sIAoJCQkoJCRyYW5nZXt1c2VkfSkgPwoJCQkJJHRleHR7dXNlZH0gOiAkdGV4dHtub3RfdXNlZH0gXSwKCQkJWyAkd2lkdGgsICR3aWR0aCwgJHdpZHRoLCAkd2lkdGgsICR3aWR0aCBdICk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj48YSBocmVmPWFkZC5jZ2k/d2hhdD1kaGNwLXJhbmdlPTAuMC4wLjAsMC4wLjAuMCZ3aGVyZT1kaGNwLmNnaT4iLgoJCSR0ZXh0e3JhbmdlX2FkZH0uIjwvYT48YnI+PGhyPjxicj4iOwokY291bnQ9MDsKJHdpZHRoPSJ3aWR0aD01MCUiOwpwcmludCAiPGgyPiIuJHRleHR7aG9zdHN9LiI8L2gyPiI7CnByaW50ICZ1aV9jb2x1bW5zX3N0YXJ0KCBbICR0ZXh0e2hvc3RzfSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkcmFuZ2UgKCBAeyRjb25maWd7ZGhjcF9ob3N0fX0gKQp7CglteSAkZWRpdCA9ICI8YSBocmVmPWhvc3RfZWRpdC5jZ2k/aWR4PSRjb3VudD4iLiQkcmFuZ2V7b3B0aW9ufS4iPC9hPiI7CglwcmludCAmdWlfY29sdW1uc19yb3coIFsKCQkJJGVkaXQsCgkJCSgkJHJhbmdle3VzZWR9KSA/CgkJCQkkdGV4dHt1c2VkfSA6ICR0ZXh0e25vdF91c2VkfSBdLAoJCQlbICR3aWR0aCwgJHdpZHRoIF0gKTsKCSRjb3VudCsrOwp9CnByaW50ICZ1aV9jb2x1bW5zX2VuZCgpOwpwcmludCAiPGJyPjxhIGhyZWY9YWRkLmNnaT93aGF0PWRoY3AtaG9zdD1uZXcsMC4wLjAuMCZ3aGVyZT1kaGNwLmNnaT4iLgoJCSR0ZXh0e2hvc3RfYWRkfS4iPC9hPjxicj48aHI+PGJyPiI7CiRjb3VudD0wOwokd2lkdGg9IndpZHRoPTUwJSI7CnByaW50ICI8aDI+Ii4kdGV4dHtkaGNwX29wdGlvbnN9LiI8L2gyPiI7CnByaW50ICZ1aV9jb2x1bW5zX3N0YXJ0KCBbICR0ZXh0e2RoY3Bfb3B0aW9ufSwgJHRleHR7aW5fdXNlfSBdLCAxMDAgKTsKZm9yZWFjaCBteSAkcmFuZ2UgKCBAeyRjb25maWd7ZGhjcF9vcHRpb259fSApCnsKCW15ICRlZGl0ID0gIjxhIGhyZWY9b3B0aW9uX2VkaXQuY2dpP2lkeD0kY291bnQ+Ii4kJHJhbmdle29wdGlvbn0uIjwvYT4iOwoJcHJpbnQgJnVpX2NvbHVtbnNfcm93KCBbCgkJCSRlZGl0LAoJCQkoJCRyYW5nZXt1c2VkfSkgPwoJCQkJJHRleHR7dXNlZH0gOiAkdGV4dHtub3RfdXNlZH0gXSwKCQkJWyAkd2lkdGgsICR3aWR0aCBdICk7CgkkY291bnQrKzsKfQpwcmludCAmdWlfY29sdW1uc19lbmQoKTsKcHJpbnQgIjxicj48YSBocmVmPWFkZC5jZ2k/d2hhdD1kaGNwLW9wdGlvbj0yNyZ3aGVyZT1kaGNwLmNnaT4iLgoJJHRleHR7ZGhjcF9hZGR9LiI8L2E+PGJyPjxocj48YnI+IjsKcHJpbnQgJnVpX2Zvcm1fc3RhcnQoICdkaGNwX2FwcGx5LmNnaScsICJnZXQiICk7CnByaW50ICI8aDI+Ii4kdGV4dHttaXNjfS4iPC9oMj48YnI+IjsKcHJpbnQgJHRleHR7cmVhZF9ldGhlcnN9LiZ1aV95ZXNub19yYWRpbyggImV0aGVycyIsIAoJCQkoJGNvbmZpZ3tkaGNwX2V0aGVyc317dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPjxicj4iLiR0ZXh0e3VzZV9ib290cH0uJnVpX3llc25vX3JhZGlvICggImJvb3RwIiwKCQkJKCRjb25maWd7ZGhjcF9ib290fXt1c2VkfSk/MTowICk7CnByaW50ICI8YnI+Ii4kdGV4dHtib290cF9ob3N0fS4mdWlfdGV4dGJveCggImJvb3RwX2hvc3QiLAoJCQkkY29uZmlne2RoY3BfYm9vdH17aG9zdH0sIDgwICk7CnByaW50ICI8YnI+Ii4kdGV4dHtib290cF9maWxlfS4mdWlfdGV4dGJveCggImJvb3RwX2ZpbGUiLAoJCQkkY29uZmlne2RoY3BfYm9vdH17ZmlsZX0sIDgwICk7CnByaW50ICI8YnI+Ii4kdGV4dHtib290cF9hZGRyZXNzfS4mdWlfdGV4dGJveCggImJvb3RwX2FkZHIiLAoJCQkkY29uZmlne2RoY3BfYm9vdH17YWRkcmVzc30sIDgwICk7CnByaW50ICI8YnI+PGJyPiIuJHRleHR7bWF4X2xlYXNlc30uJnVpX3RleHRib3goICJtYXhfbGVhc2VzIiwKCQkJJGNvbmZpZ3tkaGNwX2xlYXNlbWF4fXttYXh9LCAxMCApOwpwcmludCAiPGJyPjxicj4iLiR0ZXh0e2xlYXNlZmlsZX0uJnVpX3llc25vX3JhZGlvKCAidXNlbGVhc2VmaWxlIiwKCQkJKCRjb25maWd7ZGhjcF9sZWFzZWZpbGV9e3VzZWR9KT8xOjAgKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2xmaWxldG91c2V9LiZ1aV90ZXh0Ym94KCAibGVhc2VmaWxlIiwKCQkJJGNvbmZpZ3tkaGNwX2xlYXNlZmlsZX17ZmlsZX0sIDgwICk7CnByaW50ICI8YnI+PGJyPiIuJnVpX3N1Ym1pdCggJHRleHR7J3NhdmVfYnV0dG9uJ30gKTsKcHJpbnQgJnVpX2Zvcm1fZW5kKCApOwpwcmludCAiPGJyPjxocj48YnI+PGEgaHJlZj1cImluZGV4LmNnaVwiPiI7CnByaW50ICR0ZXh0eydETlNfc2V0dGluZ3MnfTsKcHJpbnQgIjwvYT48YnI+IjsKJmZvb3RlcigiLyIsICR0ZXh0eydpbmRleCd9KTsKIyB1c2VzIHRoZSBpbmRleCBlbnRyeSBpbiAvbGFuZy9lbgoKCgojIyBpZiBzdWJyb3V0aW5lcyBhcmUgbm90IGluIGFuIGV4dHJhIGZpbGUgcHV0IHRoZW0gaGVyZQoKCiMjIyBFTkQgb2YgZGhjcC5jZ2kgIyMjLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRuc21hc3EvcmVzdGFydC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMzAwNQAxMDUwNzEyMzA1NgAwMTMzNzIAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9wZXJsCiMKIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgLSByZXN0YXJ0LmNnaTsgcmVzdGFydCBETlNtYXNxCiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgomaGVhZGVyKCR0ZXh0eydpbmRleF90aXRsZSd9LCAiIiwgImludHJvIiwgMSwgMSwgdW5kZWYsCiAgICAgICAgIldyaXR0ZW4gYnkgTmVpbCBGaXNoZXI8QlI+PEEgSFJFRj1tYWlsdG86bmVpbFxAbWFnbmVjb3IuY29tLmF1PkF1dGhvcjwvQT48QlI+PEEgSFJFRj1odHRwOi8vd3d3LmF1dGhvcnBhZ2UuaW52YWxpZD5Ib21lOi8vcGFnZTwvQT4iKTsKIyB1c2VzIHRoZSBpbmRleF90aXRsZSBlbnRyeSBmcm9tIC4vbGFuZy9l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b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9eHgmdHlwZT0iLiR0ZXh0e2Vycl9jb25maWdiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGNoZWNrIGZvciBpbnB1dCBkYXRhIGVycm9ycwppZiggKCRpbntyZXNvbHZfc3RkfSkgJiYgKCRpbntyZXNvbHZfZmlsZX0gIX4gL14kRklMRSQvKSApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPSIuJHRleHR7cmVzb2x2X2ZpbGV9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX2ZpbGViYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGFkanVzdCBldmVyeXRoaW5nIHRvIHdoYXQgd2UgZ290CgojCiMgdXNlIHJlc29sdi5jb25mPwojCiZ1cGRhdGUoICRjb25maWd7bm9fcmVzb2x2fXtsaW5lfSwgIm5vLXJlc29sdiIsIAoJJGNvbmZpZ19maWxlLCAoICRpbntyZXNvbHZ9ID09IDAgKSApOwojCiMgc3RhbmRhcmQgbG9jYXRpb24gZm9yIHJlc29sdi5jb25mPwojIAomdXBkYXRlKCAkY29uZmlne3Jlc29sdl9maWxlfXtsaW5lfSwgInJlc29sdi1maWxlPSIuJGlue3Jlc29sdl9maWxlfSwgCgkkY29uZmlnX2ZpbGUsICggJGlue3Jlc29sdl9zdGR9ID09IDEgKSApOwoKIwojIHNlcnZlcnMgaW4gb3JkZXIgcHJvdmlkZWQ/CiMgCiZ1cGRhdGUoICRjb25maWd7c3RyaWN0X29yZGVyfXtsaW5lfSwgInN0cmljdC1vcmRlciIsIAoJJGNvbmZpZ19maWxlLCAoICRpbntzdHJpY3R9ID09IDEgKSApOwojCiMgcG9sbCByZXNvbHYuY29uZj8KIyAKJnVwZGF0ZSggJGNvbmZpZ3tub19wb2xsfXtsaW5lfSwgIm5vLXBvbGwiLCAKCSRjb25maWdfZmlsZSwgKCAkaW57cG9sbH0gPT0gMCApICk7CiMKIwojIHdyaXRlIGZpbGUhIQomZmx1c2hfZmlsZV9saW5lcygpOwojCiMgcmUtbG9hZCBiYXNpYyBwYWdlCiZyZWRpcmVjdCggInNlcnZlcnMuY2dpIiApOwoKIyAKIyBzdWItcm91dGluZXMKIwojIyMgRU5EIG9mIHNydl9hcHBseS5jZ2kgIyMjLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkbnNtYXNxL3Jlc3RhcnQuc2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDAzNDAAMTA1MDYwNjYzNTcAMDEzMjUyACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL2Jpbi9iYXNoCmVjaG8gImtpbGxpbmcgZXhpc3RpbmcgcHJvY2VzcyBQSUQgaXMgIgpjYXQgL3Zhci9ydW4vZG5zbWFzcS5waWQKa2lsbCAtOSBgY2F0IC92YXIvcnVuL2Ruc21hc3EucGlkYAplY2hvICJkb25lLiBTdGFydGluZyBuZXcgcHJvY2Vzcy4uLiIKL3Vzci9sb2NhbC9zYmluL2Ruc21hc3EKZWNobyAiRG9uZS4gTmV3IFBJRCBpcyAiCmNhdCAvdmFyL3J1bi9kbnNtYXNxLnBpZAoKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG5zbWFzcS9zcnZfbW92ZS5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0MDQ1ADEwNTA3MTAyNzIzADAxMzU1MQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL3BlcmwKIwojICAgIEROU01hc3EgV2VibWluIE1vZHVsZSAtIGRuc19tb3ZlLmNnaTsgbW92ZSBzZXJ2ZXIgICAgIAojICAgIENvcHlyaWdodCAoQykgMjAwNiBieSBOZWlsIEZpc2hlcgojICAgIAojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCSZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKCXByaW50ICI8aHI+PGgyPiI7CglwcmludCAkdGV4dHt3YXJuX2Vycm9yc307CglwcmludCAkY29uZmlne2Vycm9yc307CglwcmludCAkdGV4dHtkaWRudF9hcHBseX07CglwcmludCAiPC9oMz48aHI+XG4iOwoJJmZvb3RlciggIi8iLCAkdGV4dHsnaW5kZXgnfSk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwpteSAkc2VsZWN0ZWQ9JGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fV17bGluZX07CmlmKCAkaW57ZGlyfSBlcSAidXAiICkKewoJJGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fV17bGluZX09JGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fS0xXXtsaW5lfTsKCSRjb25maWd7c2VydmVyc31bJGlue2lkeH0tMV17bGluZX09JHNlbGVjdGVkOwp9CmVsc2UKewoJJGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fV17bGluZX09JGNvbmZpZ3tzZXJ2ZXJzfVskaW57aWR4fSsxXXtsaW5lfTsKCSRjb25maWd7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aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBjaGVjayBmb3IgaW5wdXQgZGF0YSBlcnJvcnMKaWYoICRpbnth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SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiMKJnVwZGF0ZSggJGNvbmZpZ3skaW57d2hhdH19WyRpbntpZHh9XXtsaW5lfSwgIiIsCgkkY29uZmlnX2ZpbGUsIDAgKTsKJmZsdXNoX2ZpbGVfbGluZXMoKTsKJnJlZGlyZWN0KCAkaW57d2hlcmV9ICk7CiMgCiMgc3ViLXJvdXRpbmVzCiMKIyMjIEVORCBvZiBkZWxldGUuY2dpICMjIy4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG5zbWFzcS94aWZhY2VfZWRpdC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0MTA0ADEwNTEyMzQzNzE1ADAxNDE1NQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL3BlcmwKIwojICAgIEROU01hc3EgV2VibWluIE1vZHVsZSAtIHhpZmFjZV9lZGl0LmNnaTsgIGVkaXQgZXhjZXB0IGludGVyZmFjZQojICAgIENvcHlyaWdodCAoQykgMjAwNiBieSBOZWlsIEZpc2hlcgojICAgIAojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCSZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKCXByaW50ICI8aHI+PGgyPiI7CglwcmludCAkdGV4dHt3YXJuX2Vycm9yc307CglwcmludCAkY29uZmlne2Vycm9yc307CglwcmludCAkdGV4dHtkaWRudF9hcHBseX07CglwcmludCAiPC9oMz48aHI+XG4iOwoJJmZvb3RlciggIi8iLCAkdGV4dHsnaW5kZXgnfSk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwomaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CnByaW50ICI8aDI+Ii4kdGV4dHtlZGl0X3hpZmFjZX0uIjwvaDI+IjsKcHJpbnQgJnVpX2Zvcm1fc3RhcnQoICJ4aWZhY2VfZWRpdF9hcHBseS5jZ2kiLCAicG9zdCIgKTsKcHJpbnQgJnVpX2hpZGRlbiggImlkeCIsICRpbntpZHh9ICk7CnByaW50ICI8YnI+Ii4kdGV4dHtpbl91c2V9LiZ1aV95ZXNub19yYWRpbyggInVzZWQiLAoJCQkJKCRjb25maWd7ZXhfaW50ZXJmYWNlfVskaW57aWR4fV17dXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJHRleHR7eGlmYWNlX25hbWV9OwpwcmludCAmdWlfdGV4dGJveCggImlmYWNlIiwgJGNvbmZpZ3tleF9pbnRlcmZhY2V9WyRpbntpZHh9XXtpZmFjZX0sIDUwICk7CnByaW50ICI8YnI+PGJyPiIgLiAmdWlfc3VibWl0KCAkdGV4dHsnc2F2ZV9idXR0b24nfSApLiI8YnI+IjsKcHJpbnQgJnVpX2Zvcm1fZW5kKCk7CnByaW50ICI8YSBocmVmPWRlbGV0ZS5jZ2k/aWR4PSIuJGlue2lkeH0uIiZ3aGF0PWV4X2ludGVyZmFjZSZ3aGVyZT1kaGNwLmNnaT4iLgoJCSR0ZXh0e2RlbGV0fS4iPC9hPiI7CnByaW50ICI8YnI+PCBhIGhyZWY9aWZhY2UuY2dpPiIuJHRleHR7aWZhY2VfY29uZmlnfS4iPC9hPiI7CiZmb290ZXIoICIvIiwgJHRleHR7J2luZGV4J30pOwojCgojIAojIHN1Yi1yb3V0aW5lcwojCiMjIyBFTkQgb2YgeGlmYWNlX2VkaXQuY2dpICMjIy4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG5zbWFzcS9saXN0ZW5fZWRpdC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDA0MDcwADEwNTEyMzI0NTUzADAxNDIxNQAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL3BlcmwKIwojICAgIEROU01hc3EgV2VibWluIE1vZHVsZSAtIGxpc3Rlbl9lZGl0LmNnaTsgIGVkaXQgbGlzdGVuIG9uCiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e2VkaXRfbGlzdGVufS4iPC9oMj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggImxpc3Rlbl9lZGl0X2FwcGx5LmNnaSIsICJwb3N0IiApOwpwcmludCAmdWlfaGlkZGVuKCAiaWR4IiwgJGlue2lkeH0gKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2luX3VzZX0uJnVpX3llc25vX3JhZGlvKCAidXNlZCIsCgkJCQkoJGNvbmZpZ3tsaXN0ZW5fb259WyRpbntpZHh9XXt1c2VkfSk/MTowICk7CnByaW50ICI8YnI+Ii4kdGV4dHtsaXN0ZW5fbmFtZX07CnByaW50ICZ1aV90ZXh0Ym94KCAi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ZSB1c2VmdWwsCiMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAgIFRoaXMgbW9kdWxlIGluaGVyaXRlZCBmcm9tIHRoZSBXZWJtaW4gTW9kdWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKJnBhcnNlX2NvbmZpZ19maWxlKCBcJWNvbmZpZywgXCRjb25maWdfZmlsZSApOwojIHJlYWQgcG9zdGVkIGRhdGEKJlJlYWRQYXJzZSgpOwojIGNoZWNrIGZvciBlcnJvcnMgaW4gcmVhZCBjb25maWcKaWYoICRjb25maWd7ZXJyb3JzfSA+IDAgKQp7CgkmaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CglwcmludCAiPGhyPjxoMj4iOwoJcHJpbnQgJHRleHR7d2Fybl9lcnJvcnN9OwoJcHJpbnQgJGNvbmZpZ3tlcnJvcnN9OwoJcHJpbnQgJHRleHR7ZGlkbnRfYXBwbHl9OwoJcHJpbnQgIjwvaDM+PGhyPlxuIjsKCSZmb290ZXIoICIvIiwgJHRleHR7J2luZGV4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Q29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCnB1c2ggQHskY29uZmlnX2ZpbGV9LCAiIyIuJGlue3doYXR9OwojCiMgd3JpdGUgZmlsZSEhCiZmbHVzaF9maWxlX2xpbmVzKCk7CiMKIyByZS1sb2FkIGJhc2ljIHBhZ2UKJnJlZGlyZWN0KCAkaW57d2hlcmV9ICk7CgojIAojIHN1Yi1yb3V0aW5lcwojCiMjIyBFTkQgb2YgYWRkLmNnaSAjIyMuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkbnNtYXNxL1JFQURNRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDY0NAAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDQyNTUAMTA1MTI2NDQwMjQAMDEyMTA2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApUaGlzIGlzIHRoZSBSRUFETUUgZm9yIHRoZSBETlNtYXNxIHdlYm1pbiBtb2R1bGUuCgpQcm9ibGVtczoKCjEpIFRoZXJlJ3Mgb25seSBiYXNpYyBlcnJvciBjaGVja2luZyAtIGlmIHlvdSBlbnRlciBzb21lIGJhZAphZGRyZXNzZXMgb3IgbmFtZXMsIHRoZXkgd2lsbCBnbyBzdHJhaWdodCBpbnRvIHRoZSBjb25maWcgZmlsZQphbHRob3VnaCB3ZSBkbyBjaGVjayBmb3IgdGhpbmdzIGxpa2UgSVAgYWRkcmVzc2VzIGJlaW5nIG9mCnRoZSBjb3JyZWN0IGZvcm0gKG5vIGxldHRlcnMsIDQgZ3JvdXBzIG9mIHVwIHRvIDMgZGlnaXRzCnNlcGFyYXRlZCBieSBkb3RzIGV0YykuIE9uZSB0aGluZyB0aGF0IElTTidUIENIRUNLRUQgRk9SIGlzCnRoYXQgSVAgZG90dGVkIHF1YWRzIGFyZSBhbGwgbnVtYmVycyA8IDI1Ni4gQW5vdGhlciBpcyB0aGF0Cm5ldG1hc2tzIGFyZSBsb2dpY2FsICh5b3UgY291bGQgZW50ZXIgYSBuZXRtYXNrIG9mIDI1NS4wLjI1NS4wIApmb3IgZXhhbXBsZSkuIEVzc2VudGlhbGx5LCBpZiBpdCdsbCBwYXNzIHRoZSBjb25maWcgZmlsZQpyZWdleCBzY2FubmVyIChhbmQgdGhlIGFib3ZlIGV4YW1wbGVzIHdpbGwpLCBpdCB3b24ndCBiZSAKZmxhZ2dlZCBhcyAiYmFkIiBldmVuIGlmIGl0IGlzIGEgYmlnIG5vLW5vIGZvciBkbnNtYXNxIGl0c2VsZi4gCgoyKSBDb2RlIGlzIHVnbHkgYW5kIGEga2x1ZGdlIC0gSSBhaW4ndCBhIHByb2dyYW1tZXIhIFRoZXJlIGFyZSBwcm9iYWJseSAKYSBsb3Qgb2YgdGhpbmdzIHRoYXQgY291bGQgYmUgZG9uZSB0byB0aWR5IHVwIHRoZSBjb2RlIC0gZWcsIAppdCBwcm9iYWJseSB3b3VsZG4ndCBodXJ0IHRvIG1vdmUgc29tZSBjb21tb24gc3R1ZmYgaW50byB0aGUgbGliIGZpbGUuCgozKSBJJ3ZlIHVzZWQgdGhlICV0ZXh0IGhhc2ggYW5kIHdyaXR0ZW4gYW4gZW5nbGlzaCBsYW5nIGZpbGUsIGJ1dApJIGFtIG1vbm8tbGluZ3VhbCBzbyBubyBvdGhlciBsYW5ndWFnZSBzdXBwb3J0IGFzIHlldC4KCjQpIGZvciByZWFzb25zIHVua25vd24gdG8gbWUsIHRoZSBpY29uIGRvZXMgbm90IGFwcGVhciBwcm9wZXJseQpvbiB0aGUgc2VydmVycyBwYWdlIG9mIHdlYm1pbiAoYXQgbGVhc3QgaXQgZG9lc24ndCBmb3IgbWUhKQoKNSkgaWNvbnMgaGF2ZSBiZWVuIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIHRoZSBpcGZpbHRlciBtb2R1bGUsCnNwZWNpZmljYWxseSB0aGUgdXAgYW5kIGRvd24gYXJyb3dzLgoKNikgaWYgeW91IGRlbGV0ZSBhbiBpdGVtLCB0aGUgY29uZmlnIGZpbGUgd2lsbCBjb250YWluCmFuIG90aGVyd2lzZSBlbXB0eSwgYnV0IGNvbW1lbnRlZCBsaW5lLiBUaGlzIG1lYW5zIHRoYXQgaWYKeW91IGFkZCBzb21lIG5ldyBzdHVmZiwgdGhlbiBkZWxldGUgaXQsIHRoZSBjb25maWcgZmlsZQp3aWxsIGhhdmUgYSBudW1iZXIgb2YgbGluZXMgYXQgdGhlIGVuZCB0aGF0IGFyZSBqdXN0IGNvbW1lbnRzLgpUaGVyZWZvcmUsIHRoZSBjb25maWcgZmlsZSBjb3VsZCBwb3NzaWJseSBncm93IHF1aXRlIGxhcmdlLgoKNykgTk8gSU5DTFVERSBGSUxFUyEKaWYgeW91IHVzZSBhbiBpbmNsdWRlIGZpbGUsIGl0J2xsIGJlIGZsYWdnZWQgYXMgYW4gZXJyb3IuIApPSyBpZiB0aGUgaW5jbHVkZSBmaWxlIGxpbmUgaXMg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ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAgIFRoaXMgbW9kdWxlIGluaGVyaXRlZCBmcm9tIHRoZSBXZWJtaW4gTW9kdWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKJnBhcnNlX2NvbmZpZ19maWxlKCBcJWNvbmZpZywgXCRjb25maWdfZmlsZSApOwojIHJlYWQgcG9zdGVkIGRhdGEKJlJlYWRQYXJzZSgpOwojIGNoZWNrIGZvciBlcnJvcnMgaW4gcmVhZCBjb25maWcKaWYoICRjb25maWd7ZXJyb3JzfSA+IDAgKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT14eCZ0eXBlPSIuJHRleHR7ZXJyX2NvbmZpZ2JhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7Cgll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IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCm15ICRsaW5lPSJleGNlcHQtaW50ZXJmYWNlPSIuJGlue2lmYWNlfTsKJnVwZGF0ZSggJGNvbmZpZ3tleF9pbnRlcmZhY2V9WyRpbntpZHh9XXtsaW5lfSwgJGxpbmUs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IG1vcmUgZGV0YWlscy4KIwojICAgIFRoaXMgbW9kdWxlIGluaGVyaXRlZCBmcm9tIHRoZSBXZWJtaW4gTW9kdWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKJnBhcnNlX2NvbmZpZ19maWxlKCBcJWNvbmZpZywgXCRjb25maWdfZmlsZSApOwojIHJlYWQgcG9zdGVkIGRhdGEKJlJlYWRQYXJzZSgpOwojIGNoZWNrIGZvciBlcnJvcnMgaW4gcmVhZCBjb25maWcKaWYoICRjb25maWd7ZXJyb3JzfSA+IDAgKQp7CglteSAkbGluZT0gImVycm9yLmNnaT9saW5lPXgmdHlwZT0iLiR0ZXh0e2xpc3Rlbl9hZGRyfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBjaGVjayBmb3IgaW5wdXQgZGF0YSBlcnJvcnMKaWYoICRpbnthZGRyfSAhfiAvXiRJUEFERFIkLyApCnsKCW15ICRsaW5lPSAiZXJyb3IuY2dpP2xpbmU9Ii4kdGV4dHtsaXN0ZW5fYWRkcn07CgkkbGluZSAuPSAiJnR5cGU9Ii4kdGV4dHtlcnJfbm90aXB9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGFkanVzdCBldmVyeXRoaW5nIHRvIHdoYXQgd2UgZ290CiMKbXkgJGxpbmU9Imxpc3Rlbi1hZGRyZXNzPSIuJGlue2FkZHJ9OwomdXBkYXRlKCAkY29uZmlne2xpc3Rl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bGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKJnBhcnNlX2NvbmZpZ19maWxlKCBcJWNvbmZpZywgXCRjb25maWdfZmlsZSApOwojIHJlYWQgcG9zdGVkIGRhdGEKJlJlYWRQYXJzZSgpOwojIGNoZWNrIGZvciBlcnJvcnMgaW4gcmVhZCBjb25maWcKaWYoICRjb25maWd7ZXJyb3JzfSA+IDAgKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT14eCZ0eXBlPSIuJHRleHR7ZXJyX2NvbmZpZ2JhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CiMgY2hlY2sgZm9yIGlucHV0IGRhdGEgZXJyb3JzCmlmKCAkaW57ZnJvbX0gIX4gL14kSVBBRERSJC8gKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2ZvcmNlZF9mcm9tfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9ub3RpcH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CmlmKCAkaW57dG99ICF+IC9eJElQQUREUiQvICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9Ii4kdGV4dHtmb3JjZWRfaXB9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX25vdGlwfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICgkaW57bWFza2VkfSkgJiYgKCRpbnttYXNrfSAhfiAvXiRJUEFERFIkLykgKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2ZvcmNlZF9tYXNrfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9ub3RtYXNrfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICgkaW57dGltZWR9KSAmJiAoJGlueyd0aW1lJ30gIX4gL14kVElNRSQvKSApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPSIuJHRleHR7bGVhc2V0aW1lfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9ub3R0aW1lfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCm15ICRsaW5lPSJkaGNwLXJhbmdlPSI7CiRsaW5lIC49ICRpbntpZH0uIiwiIGlmICRpbntpZGVkfTsKJGxpbmUgLj0gJGlue2Zyb219LiIsIi4kaW57dG99OwokbGluZSAuPSAkaW57bWFza30gaWYgJGlue21hc2tlZH07CiRsaW5lIC49ICRpbnsndGltZSd9IGlmICRpbnt0aW1lZH07CiZ1cGRhdGUoICRjb25maWd7ZGhjcF9yYW5nZX1bJGlue2lkeH1de2xpbmV9LCAkbGluZSwKCSRjb25maWdfZmlsZSwgKCAkaW57dXNlZH0gPT0gMSApICk7CiMKIyB3cml0ZSBmaWxlISEKJmZsdXNoX2ZpbGVfbGluZXMoKTsKIwojIHJlLWxvYWQgYmFzaWMgcGFnZQomcmVkaXJlY3QoICJkaGNwLmNnaSIgKTsKCiMgCiMgc3ViLXJvdXRpbmVzCiMKIyMjIEVORCBvZiByYW5nZV9lZGl0X2FwcGx5LmNnaSAjIyMuCiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwpteSAkbGluZT0iZGhjcC1yYW5nZT0iOwokbGluZSAuPSAkaW57aWR9LiIsIiBpZiAkaW57aWRlZH07CiRsaW5lIC49ICRpbntmcm9tfS4iLCIuJGlue3RvfTsKJGxpbmUgLj0gJGlue21hc2t9IGlmICRpbnttYXNrZWR9OwokbGluZSAuPSAkaW57J3RpbWUnfSBpZiAkaW57dGltZWR9OwomdXBkYXRlKCAkY29uZmlne2RoY3BfcmFuZ2V9WyRpbntpZHh9XXtsaW5lfSwgJGxpbmUsCgkkY29uZmlnX2ZpbGUsICggJGlue3VzZWR9ID09IDEgKSApOwojCiMgd3JpdGUgZmlsZSEhCiZmbHVzaF9maWxlX2xpbmVzKCk7CiMKIyByZS1sb2FkIGJhc2ljIHBhZ2UKJnJlZGlyZWN0KCAiZGhjcC5jZ2kiICk7CgojIAojIHN1Yi1yb3V0aW5lcwojCiMjIyBFTkQgb2YgcmFuZ2VfZWRpdF9hcHBseS5jZ2kgIyMjLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRuc21hc3EvaG9zdF9lZGl0LmNnaQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwNDA1NwAxMDUxMjM1MTUzNwAwMTM3MDMAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9wZXJsCiMKIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgLSBob3N0X2VkaXQuY2dpOyAgZWRpdCBESENQIGhvc3QKIyAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e2VkaXRfaG9zdH0uIjwvaDI+IjsKcHJpbnQgJnVpX2Zvcm1fc3RhcnQoICJob3N0X2VkaXRfYXBwbHkuY2dpIiwgInBvc3QiICk7CnByaW50ICZ1aV9oaWRkZW4oICJpZHgiLCAkaW57aWR4fSApOwpwcmludCAiPGJyPiIuJHRleHR7aW5fdXNlfS4mdWlfeWVzbm9fcmFkaW8oICJ1c2VkIiwKCQkJCSgkY29uZmlne2RoY3BfaG9zdH1bJGlue2lkeH1de3VzZWR9KT8xOjAgKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2hvc3Rfc3Bl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aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCSZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKCXByaW50ICI8aHI+PGgyPiI7CglwcmludCAkdGV4dHt3YXJuX2Vycm9yc307CglwcmludCAkY29uZmlne2Vycm9yc307CglwcmludCAkdGV4dHtkaWRudF9hcHBseX07CglwcmludCAiPC9oMz48aHI+XG4iOwoJJmZvb3RlciggIi8iLCAkdGV4dHsnaW5kZXgnfSk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwomaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CnByaW50ICI8aDI+Ii4kdGV4dHtyYW5nZV9lZGl0fS4iPC9oMj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggInJhbmdlX2VkaXRfYXBwbHkuY2dpIiwgInBvc3QiICk7CnByaW50ICZ1aV9oaWRkZW4oICJpZHgiLCAkaW57aWR4fSApOwpwcmludCAiPGJyPiIuJHRleHR7aW5fdXNlfS4mdWlfeWVzbm9fcmFkaW8oICJ1c2VkIiwKCQkJCSgkY29uZmlne2RoY3BfcmFuZ2V9WyRpbntpZHh9XXt1c2VkfSk/MTowICk7CnByaW50ICI8YnI+Ii4kdGV4dHtpZGVkfS4mdWlfeWVzbm9fcmFkaW8oICJpZGVkIiwgCgkJCQkoJGNvbmZpZ3tkaGNwX3JhbmdlfVskaW57aWR4fV17aWRfdXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJHRleHR7aWR9OwpwcmludCAmdWlfdGV4dGJveCggImlkIiwgJGNvbmZpZ3tkaGNwX3JhbmdlfVskaW57aWR4fV17aWR9LCA1MCApOwpwcmludCAiPGJyPiIuJHRleHR7Zm9yY2VkX2Zyb219OwpwcmludCAmdWlfdGV4dGJveCggImZyb20iLCAkY29uZmlne2RoY3BfcmFuZ2V9WyRpbntpZHh9XXtzdGFydH0sIDE4ICk7CnByaW50ICI8YnI+Ii4kdGV4dHtmb3JjZWRfaXB9OwpwcmludCAmdWlfdGV4dGJveCggInRvIiwgJGNvbmZpZ3tkaGNwX3JhbmdlfVskaW57aWR4fV17ZW5kfSwgMTggKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2ZvcmNlZF9tYXNrX3VzZWR9LiZ1aV95ZXNub19yYWRpbyggIm1hc2tlZCIsIAoJCQkJKCRjb25maWd7ZGhjcF9yYW5nZX1bJGlue2lkeH1de21hc2tfdXNlZH0pPzE6MCApOwpwcmludCAiPGJyPiIuJHRleHR7Zm9yY2VkX21hc2t9OwpwcmludCAm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ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAi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Z2k7IGRvIHRoZSB1cGRhdGUgICAgICAKIyAgICBDb3B5cmlnaHQgKEMpIDIwMDYgYnkgTmVpbCBGaXNoZXIKIyAgICAKIyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAgIFRoaXMgbW9kdWxlIGluaGVyaXRlZCBmcm9tIHRoZSBXZWJtaW4gTW9kdWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJl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ICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAgIFRoaXMgbW9kdWxlIGluaGVyaXRlZCBmcm9tIHRoZSBXZWJtaW4gTW9kdWxlIFRlbXBsYXRlIDAuNzkuMSBieSB0bgoKZG8gJy4uL3dlYi1saWIucGwnOwpkbyAnLi4vdWktbGliLnBsJzsKZG8gJ2Ruc21hc3EtbGliLnBsJzsKCiR8PTE7CiZpbml0X2NvbmZpZygiRE5TTWFzcSIpOwoKJWFjY2Vzcz0mZ2V0X21vZHVsZV9hY2w7CgojIyBwdXQgaW4gQUNMIGNoZWNrcyBoZXJlIGlmIG5lZWRlZAoKCiMjIHNhbml0eSBjaGVja3MKCgojIyBJbnNlcnQgT3V0cHV0IGNvZGUgaGVyZQojIHJlYWQgY29uZmlnIGZpbGUKJGNvbmZpZ19maWxlID0gJnJlYWRfZmlsZV9saW5lcyggJGNvbmZpZ3tjb25maWdfZmlsZX0gKTsKIyBwYXNzIGludG8gZGF0YSBzdHJ1Y3R1cmUKJnBhcnNlX2NvbmZpZ19maWxlKCBcJWNvbmZpZywgXCRjb25maWdfZmlsZSApOwojIHJlYWQgcG9zdGVkIGRhdGEKJlJlYWRQYXJzZSgp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IExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e2ZvcmNlZH0uIjwvaDI+IjsKcHJpbnQgJnVpX2Zvcm1fc3RhcnQoICJmb3JjZWRfZWRpdF9hcHBseS5jZ2kiLCAicG9zdCIgKTsKcHJpbnQgJnVpX2hpZGRlbiggImlkeCIsICRpbntpZHh9ICk7CnByaW50ICR0ZXh0e2ZvcmNlZF9kb21haW59LiAmdWlfdGV4dGJveCggImRvbWFpbiIsIAoJCQkJCSRjb25maWd7Zm9yY2VkfVskaW57aWR4fV17ZG9tYWlufSwgNTAgKTsKcHJpbnQgIjxicj4iOwpwcmludCAkdGV4dHtmb3JjZWRfaXB9LiAmdWlfdGV4dGJveCggInRvIiwgCgkJCQkJJGNvbmZpZ3tmb3JjZWR9WyRpbntpZHh9XXthZGRyfSwgMTUgKTsKcHJpbnQgIjxicj4iLiR0ZXh0e2luX3VzZX0uJnVpX3llc25vX3JhZGlvKCAidXNlZCIsCgkJCQkoJGNvbmZpZ3tmb3JjZWR9WyRpbntpZHh9XXt1c2VkfSk/MTowICk7CnByaW50ICI8YnI+PGJyPiIgLiAmdWlfc3VibWl0KCAkdGV4dHsnc2F2ZV9idXR0b24nfSApLiI8YnI+IjsKcHJpbnQgJnVpX2Zvcm1fZW5kKCk7CnByaW50ICI8YSBocmVmPWRlbGV0ZS5jZ2k/aWR4PSIuJGlue2lkeH0uIiZ3aGF0PWZvcmNlZCZ3aGVyZT1hbGlhcy5jZ2kiLgoJIj4iLiR0ZXh0e2RlbGV0fS4iPC9hPiI7CnByaW50ICI8YnI+PGEgaHJlZj1hbGlhcy5jZ2k+Ii4kdGV4dHthbGlhc19jb25maWd9LiI8L2E+IjsKJmZvb3RlciggIi8iLCAkdGV4dHsnaW5kZXgnfSk7CiMKCiMgCiMgc3ViLXJvdXRpbmVzCiMKIyMjIEVORCBvZiBmb3JjZWRfZWRpdC5jZ2kgIyMjLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkbnNtYXNxL2FsaWFzX2VkaXQuY2dpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDQzNTAAMTA1MTI2MjczNDUAMDE0MDE2ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vcGVybAojCiMgICAgRE5TTWFzcSBXZWJtaW4gTW9kdWxlIC0gYWxpYXNfZWRpdC5jZ2k7ICBJUCBhbGlhcyBlZGl0CiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e2FsaWFzfS4iPC9oMj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggImFsaWFzX2VkaXRfYXBwbHkuY2dpIiwgInBvc3QiICk7CnByaW50ICZ1aV9oaWRkZW4oICJpZHgiLCAkaW57aWR4fSApOwpwcmludCAkdGV4dHtmb3JjZWRfZnJvbX0uICZ1aV90ZXh0Ym94KCAiZnJvbSIsIAoJCQkJCSRjb25maWd7YWxpYXN9WyRpbntpZHh9XXtmcm9tfSwgMTUgKTsKcHJpbnQgIjxicj4iOwpwcmludCAkdGV4dHtmb3JjZWRfaXB9LiAmdWlfdGV4dGJveCggInRvIiwgCgkJCQkJJGNvbmZpZ3thbGlhc31bJGlue2lkeH1de3RvfSwgMTUgKTsKcHJpbnQgIjxicj4iOwpwcmludCAkdGV4dHtmb3JjZWRfbWFza191c2VkfS4gJnVpX3llc25vX3JhZGlvKCAibWFzayIsCgkJCQkoJGNvbmZpZ3thbGlhc31bJGlue2lkeH1de25ldG1hc2tfdXNlZH0pPzE6MCApOwpwcmludCAkdGV4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aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ICJlcnJvci5jZ2k/bGluZT14JnR5cGU9Ii4kdGV4dHtsaXN0ZW5fYWRkcn07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwpteSAkbGluZT0iZGhjcC1vcHRpb249Ii4kaW57aG9zdH07CiZ1cGRhdGUoICRjb25maWd7ZGhjcF9vcHRpb259WyRpbntpZHh9XXtsaW5lfSwgJGxpbmUsCgkkY29uZmlnX2ZpbGUs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IGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9eHgmdHlwZT0iLiR0ZXh0e2Vycl9jb25maWdiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGNoZWNrIHVzZXIgaW5wdXQgZm9yIG9idmlvdXMgZXJyb3JzCmlmKCAkaW57bG9jYWxfZG9tYWlufSAhfiAvXiRGSUxFJC8gKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2xvY2FsX2RvbWFpbn07CgkkbGluZSAuPSAiJnR5cGU9Ii4kdGV4dHtlcnJfZG9tYWluYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICgkaW57eGhvc3RzfSkgJiYgKCRpbnthZGRuX2hvc3RzfSAhfiAvXiRGSUxFJC8pICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9Ii4kdGV4dHt4aG9zdHNmaWxlfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9maWxlYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICgkaW57Y2FjaGVfc2l6ZX0pICYmICgkaW57Y3VzdF9jYWNoZV9zaXplfSAhfiAvXiROVU1CRVIvKSApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPSIuJHRleHR7Y3VzdF9jYWNoZV9zaXplfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9udW1iYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICgkaW57bG9jYWxfdHRsfSkgJiYgKCRpbnt0dGx9ICF+IC9eJE5VTUJFUi8pICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9Ii4kdGV4dHt0dGx9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX251bWJiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGFkanVzdCBldmVyeXRoaW5nIHRvIHdoYXQgd2UgZ290CgojCiNvdXIgbG9jYWwgZG9tYWluCiMKJnVwZGF0ZSggJGNvbmZpZ3tkb21haW59e2xpbmV9LCAiZG9tYWluPSIuJGlue2xvY2FsX2RvbWFpbn0sIAoJJGNvbmZpZ19maWxlLCAxICk7CiMKIyBuZWVkIGRvbWFpbnMgZm9yIGZvcndhcmRlZCBsb29rdXBzPwojIAomdXBkYXRlKCAkY29uZmlne2RvbWFpbl9uZWVkZWR9e2xpbmV9LCAiZG9tYWluLW5lZWRlZCIsIAoJJGNvbmZpZ19maWxlLCAoICRpbntkb21haW5fbmVlZGVkfSA9PSAxICkgKTsKCiMKIyBhZGQgbG9jYWwgZG9tYWluIHRvIGxvY2FsIGhvc3RzPwojIAomdXBkYXRlKCAkY29uZmlne2V4cGFuZF9ob3N0c317bGluZX0sICJleHBhbmQtaG9zdHMiLCAKCSRjb25maWdfZmlsZSwgKCAkaW57ZXhwYW5kX2hvc3RzfSA9PSAxICkgKTsKIwojIHJldmVyc2UgbG9va3VwcyBvZiBsb2NhbCBzdWJuZXRzIHByb3BvZ2F0aW5nPwojIAojIE5PVEU6IHJldmVyc2VkIGxvZ2ljIGluIHF1ZXN0aW9uIQomdXBkYXRlKCAkY29uZmlne2JvZ3VzX3ByaXZ9e2xpbmV9LCAiYm9ndXMtcHJpdiIsIAoJJGNvbmZpZ19maWxlLCAoICRpbntib2d1c19wcml2fSA9PSAwICkgKTsKIwojIHJldmVyc2UgbG9va3VwcyBvZiBsb2NhbCBzdWJuZXRzIHByb3BvZ2F0aW5nPwojIAomdXBkYXRlKCAkY29uZmlne2ZpbHRlcndpbjJrfXtsaW5lfSwgImZpbHRlcndpbjJrIiwgCgkkY29uZmlnX2ZpbGUsICggJGlue2ZpbHRlcndpbjJrfSA9PSAxICkgKTsKIwojIHJlYWQgL2V0Yy9ob3N0cz8KIyAKIyAgTk9URTogcmV2ZXJzZSBsb2dpYyBpbiBjb25maWcgZmlsZQomdXBkYXRlKCAkY29uZmlne25vX2hvc3RzfXtsaW5lfSwgIm5vLWhvc3RzIiwgCgkkY29uZmlnX2ZpbGUsICggJGlue2hvc3RzfSA9PSAwICkgKTsKIwojIHJlYWQgZXh0cmEgaG9zdHMgZmlsZT8KIyAKJnVwZGF0ZSggJGNvbmZpZ3thZGRuX2hvc3RzfXtsaW5lfSwgImFkZG4taG9zdHM9Ii4kaW57YWRkbl9ob3N0c30sIAoJJGNvbmZpZ19maWxlLCAoICRpbnt4aG9zdHN9ID09IDEgKSApOwojCiMgbmVnYXRpdmUgY2FjaGluZz8KIyAKIyBOT1RFOiByZXZlcnNlIGxvZ2ljIGluIGNvbmZpZyBmaWxlCiZ1cGRhdGUoICRjb25maWd7bmVnX2NhY2hlfXtsaW5lfSwgIm5vLW5lZ2NhY2hlIiwgCgkkY29uZmlnX2ZpbGUsICggJGlue25lZ19jYWNoZX0gPT0gMCApICk7CiMKIyBjdXN0b20gY2FjaGUgc2l6ZT8KIyAKJnVwZGF0ZSggJGNvbmZpZ3tjYWNoZV9zaXplfXtsaW5lfSwgImNhY2hlLXNpemU9Ii4kaW57Y3VzdF9jYWNoZV9zaXplfSwgCgkkY29uZmlnX2ZpbGUsICggJGlue2NhY2hlX3NpemV9ID09IDEgKSApOwojCiMgbG9nIGFs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CiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBjaGVjayB1c2VyIGlucHV0IGZvciBvYnZpb3VzIGVycm9ycwppZiggJGlue2Zyb219ICF+IC9eJElQQUREUiQvICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPSIuJHRleHR7Zm9yY2VkX2Zyb219OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX25vdGlwfTsKCSZyZWRpcmVjdCggJGxp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IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT14eCZ0eXBlPSIuJHRleHR7ZXJyX2NvbmZpZ2JhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CiMgY2hlY2sgZm9yIGlucHV0IGRhdGEgZXJyb3JzCmlmKCAkaW57ZG9tYWlufSAhfiAvXiROQU1FJC8gKQp7CglteSAkbGluZT0iZXJyb3IuY2dpP2xpbmU9Ii4kdGV4dHtmb3JjZWRfZG9tYWlufTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9kb21haW5iYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQppZiggJGlue3RvfSAhfiAvXiRJUEFERFIkLyApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2ZvcmNlZF9kb21haW59OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX2RvbWFpbmJhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwpteSAkbGluZT0iYWRkcmVzcz0vIi4kaW57ZG9tYWlufS4iLyIuJGlue3RvfTsKJnVwZGF0ZSggJGNvbmZpZ3tmb3JjZWR9WyRpbntpZHh9XXtsaW5lfSwgJGxpbmUsCgkkY29uZmlnX2ZpbGUsICggJGlue3VzZWR9ID09IDEgKSApOwojCiMgd3JpdGUgZmlsZSEhCiZmbHVzaF9maWxlX2xpbmVzKCk7CiMKIyByZS1sb2FkIGJhc2ljIHBhZ2UKJnJlZGlyZWN0KCAiYWxpYXMuY2dpIiApOwoKIyAKIyBzdWItcm91dGluZXMKIwojIyMgRU5EIG9mIGZvcmNlZF9lZGl0X2FwcGx5LmNnaSAjIyMuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRuc21hc3EvbnhfZWRpdF9hcHBseS5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDAwNzU1ADAwMDAwMDAAMDAwMDAwMAAwMDAwMDAwMzMxMQAxMDUxMjY0MjE3MAAwMTQ1NDQAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdXN0YXIgIAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyEvdXNyL2Jpbi9wZXJsCiMKIyAgICBETlNNYXNxIFdlYm1pbiBNb2R1bGUgLSBueF9lZGl0X2FwcGx5LmNnaTsgZG8gdGhlIHVwZGF0ZSAgICAgIAojICAgIENvcHlyaWdodCAoQykgMjAwNiBieSBOZWlsIEZpc2hlcgojICAgIAojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCW15ICRsaW5lPSAiZXJyb3IuY2dpP2xpbmU9eCZ0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aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCSZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKCXByaW50ICI8aHI+PGgyPiI7CglwcmludCAkdGV4dHt3YXJuX2Vycm9yc307CglwcmludCAkY29uZmlne2Vycm9yc307CglwcmludCAkdGV4dHtkaWRudF9hcHBseX07CglwcmludCAiPC9oMz48aHI+XG4iOwoJJmZvb3RlciggIi8iLCAkdGV4dHsnaW5kZXgnfSk7CglleGl0Owp9CiMgYWRqdXN0IGV2ZXJ5dGhpbmcgdG8gd2hhdCB3ZSBnb3QKIwomaGVhZGVyKCAiRE5TTWFzcSBzZXR0aW5ncyIsICIiICk7CnByaW50ICI8aDI+Ii4kdGV4dHt1c2VyX2NsYXNzZXN9LiI8L2gyPiI7CnByaW50ICZ1aV9mb3JtX3N0YXJ0KCAidXNlcl9lZGl0X2FwcGx5LmNnaSIsICJwb3N0IiApOwpwcmludCAmdWlfaGlkZGVuKCAiaWR4IiwgJGlue2lkeH0gKTsKcHJpbnQgJHRleHR7aW5fdXNlfS4mdWlfeWVzbm9fcmFkaW8oICJ1c2VkIiwKCQkJKCRjb25maWd7dXNlcl9jbGFzc31bJGlue2lkeH1de3VzZWR9KT8xOjAgKTsKcHJpbnQgJHRleHR7Y2xhc3N9LiAmdWlfdGV4dGJveCggImNsYXNzIiwgCgkJCSRjb25maWd7dXNlcl9jbGFzc31bJGlue2lkeH1de2NsYXNzfSwgNjAgKTsKcHJpbnQgIjxicj4iLiR0ZXh0e3VzZXJ9LiAmdWlfdGV4dGJveCggInVzZXIiLCAKCQkJJGNvbmZpZ3t1c2VyX2NsYXNzfVskaW57aWR4fV17dXNlcn0sIDYwICk7CnByaW50ICI8YnI+PGJyPiIgLiAmdWlfc3VibWl0KCAkdGV4dHsnc2F2ZV9idXR0b24nfSApLiI8YnI+IjsKcHJpbnQgJnVpX2Zvcm1fZW5kKCk7CnByaW50ICI8YSBocmVmPWRlbGV0ZS5jZ2k/aWR4PSIuJGlue2lkeH0uIiZ3aGF0PXVzZXJfY2xhc3Mmd2hlcmU9ZGhjcC5jZ2kiLgoJIj4iLiR0ZXh0e2RlbGV0fS4iPC9hPiI7CnByaW50ICI8YnI+PGEgaHJlZj1kaGNwLmNnaT4iLiR0ZXh0e0RIQ1BfY29uZmlnfS4iPC9hPiI7CiZmb290ZXIoICIvIiwgJHRleHR7J2luZGV4J30pOwojCgojIAojIHN1Yi1yb3V0aW5lcwojCiMjIyBFTkQgb2YgdXNlcl9lZGl0LmNnaSAjIyMuCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkbnNtYXNxL3ZlbmRfZWRpdC5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDc1NQAwMDAwMDAwADAwMDAwMDAAMDAwMDAwMDQyMTAAMTA1MTIzNDM1NjcAMDEzNjU1ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMhL3Vzci9iaW4vcGVybAojCiMgICAgRE5TTWFzcSBXZWJtaW4gTW9kdWxlIC0gdmVuZF9lZGl0LmNnaTsgIGVkaXQgdmVuZG9yIGNsYXNzCiMgICAgQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE5laWwgRmlzaGVyCiMgICAgCiMgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJJmhlYWRlciggIkROU01hc3Egc2V0dGluZ3MiLCAiIiApOwoJcHJpbnQgIjxocj48aDI+IjsKCXByaW50ICR0ZXh0e3dhcm5fZXJyb3JzfTsKCXByaW50ICRjb25maWd7ZXJyb3JzfTsKCXByaW50ICR0ZXh0e2RpZG50X2FwcGx5fTsKCXByaW50ICI8L2gzPjxocj5cbiI7CgkmZm9vdGVyKCAiLyIsICR0ZXh0eydpbmRleCd9KTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCiZoZWFkZXIoICJETlNNYXNxIHNldHRpbmdzIiwgIiIgKTsKcHJpbnQgIjxoMj4iLiR0ZXh0e3ZlbmRvcl9jbGFzc2VzfS4iPC9oMj4iOwpwcmludCAmdWlfZm9ybV9zdGFydCggInZlbmRfZWRpdF9hcHBseS5jZ2kiLCAicG9zdCIgKTsKcHJpbnQgJnVpX2hpZGRlbiggImlkeCIsICRpbntpZHh9ICk7CnByaW50ICR0ZXh0e2luX3VzZX0uJnVpX3llc25vX3JhZGlvKCAidXNlZCIsCgkJCSgkY29uZmlne3ZlbmRvcl9jbGFzc31bJGlue2lkeH1de3VzZWR9KT8xOjAgKTsKcHJpbnQgJHRleHR7Y2xhc3N9LiAmdWlfdGV4dGJveCggImNsYXNzIiwgCgkJCSRjb25maWd7dmVuZG9yX2NsYXNzfVskaW57aWR4fV17Y2xhc3N9LCA2MCApOwpwcmludCAiPGJyPiIuJHRleHR7dmVuZG9yfS4gJnVpX3RleHRib3goICJ2ZW5kb3IiLCAKCQkJJGNvbmZpZ3t2ZW5kb3JfY2xhc3N9WyRpbntpZHh9XXt2ZW5kb3J9LCA2MCApOwpwcmludCAiPGJy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IHRoZQojICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBjaGVjayBmb3IgaW5wdXQgZGF0YSBlcnJvcnMKaWYoICRpbntib290cF9hZGRyfSAhfiAvXiRJUEFERFIkLyApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2Jvb3RwX2FkZHJlc3N9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX25vdGlwfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0JCmlmKCAkaW57Ym9vdHBfZmlsZX0gIX4gL14kRklMRSQvICkKewoJbXkgJGxpbmU9ImVycm9yLmNnaT9saW5lPSIuJHRleHR7Ym9vdHBfZmlsZX07CgkkbGluZSAuPSAiJnR5cGU9Ii4kdGV4dHtlcnJfZmlsZWJhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CQppZiggJGlue2Jvb3RwX2hvc3R9ICF+IC9eJE5BTUUkLyApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2Jvb3RwX2hvc3R9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX2hvc3RiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQkKaWYoICRpbnttYXhfbGVhc2VzfSAhfiAvXiROVU1CRVIkLyApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e21heF9sZWFzZXN9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX251bWJiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQkKaWYoICRpbntsZWFzZWZpbGV9ICF+IC9eJEZJTEUkLyApCnsKCW15ICRsaW5lPSJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2xlYXNlZmlsZX07CgkkbGluZSAuPSAiJnR5cGU9Ii4kdGV4dHtlcnJfZmlsZWJhZH07CgkmcmVkaXJlY3QoICRsaW5lICk7CglleGl0Owp9CQojIGFkanVzdCBldmVyeXRoaW5nIHRvIHdoYXQgd2UgZ290CgojCiMgcmVhZCAvZXRjL2V0aGVycwojCiZ1cGRhdGUoICRjb25maWd7ZGhjcF9ldGhlcnN9e2xpbmV9LCAicmVhZC1ldGhlcnMiLCAKCSRjb25maWdfZmlsZSwgKCRpbntldGhlcnN9ID09IDEpICk7CgojCiMgYm9vdHAKIwpteSAkbGluZT0iZGhjcC1ib290PSIuJGlue2Jvb3RwX2ZpbGV9LiIsIi4kaW57Ym9vdHBfaG9zdH07CiRsaW5lIC49ICIsIi4kaW57Ym9vdHBfYWRkcn07CiZ1cGRhdGUoICRjb25maWd7ZGhjcF9ib290fXtsaW5lfSwgJGxpbmUsCgkkY29uZmlnX2ZpbGUsICgkaW57Ym9vdHB9ID09IDEpICk7CiMK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cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyAgICBUaGlzIG1vZHVsZSBpbmhlcml0ZWQgZnJvbSB0aGUgV2VibWluIE1vZHVsZSBUZW1wbGF0ZSAwLjc5LjEgYnkgdG4KCmRvICcuLi93ZWItbGliLnBsJzsKZG8gJy4uL3VpLWxpYi5wbCc7CmRvICdkbnNtYXNxLWxpYi5wbCc7CgokfD0xOwomaW5pdF9jb25maWcoIkROU01hc3EiKTsKCiVhY2Nlc3M9JmdldF9tb2R1bGVfYWNsOwoKIyMgcHV0IGluIEFDTCBjaGVja3MgaGVyZSBpZiBuZWVkZWQKCgojIyBzYW5pdHkgY2hlY2tzCgoKIyMgSW5zZXJ0IE91dHB1dCBjb2RlIGhlcmUKIyByZWFkIGNvbmZpZyBmaWxlCiRjb25maWdfZmlsZSA9ICZyZWFkX2ZpbGVfbGluZXMoICRjb25maWd7Y29uZmlnX2ZpbGV9ICk7CiMgcGFzcyBpbnRvIGRhdGEgc3RydWN0dXJlCiZwYXJzZV9jb25maWdfZmlsZSggXCVjb25maWcsIFwkY29uZmlnX2ZpbGUgKTsKIyByZWFkIHBvc3RlZCBkYXRhCiZSZWFkUGFyc2UoKTsKIyBjaGVjayBmb3IgZXJyb3JzIGluIHJlYWQgY29uZmlnCmlmKCAkY29uZmlne2Vycm9yc30gPiAwICkKewoJbXkgJGxpbmUgPSAiZXJyb3IuY2dpP2xpbmU9eHgmdHlwZT0iLiR0ZXh0e2Vycl9jb25maWdiYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQojIGNoZWNrIGZvciBpbnB1dCBkYXRhIGVycm9ycwppZiggJGlue2NsYXNzfSAhfiAvXiROQU1FJC8gKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e2NsYXNzfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9uYW1lYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KaWYoICRpbnt1c2VyfSAhfiAvXiROQU1FJC8gKQp7CglteSAkbGluZSA9ICJlcnJvci5jZ2k/bGluZT0iLiR0ZXh0e3VzZXJ9OwoJ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aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCiMgcmVhZCBjb25maWcgZmlsZQokY29uZmlnX2ZpbGUgPSAmcmVhZF9maWxlX2xpbmVzKCAkY29uZmlne2NvbmZpZ19maWxlfSApOwojIHBhc3MgaW50byBkYXRhIHN0cnVjdHVyZQomcGFyc2VfY29uZmlnX2ZpbGUoIFwlY29uZmlnLCBcJGNvbmZpZ19maWxlICk7CiMgcmVhZCBwb3N0ZWQgZGF0YQomUmVhZFBhcnNlKCk7CiMgY2hlY2sgZm9yIGVycm9ycyBpbiByZWFkIGNvbmZpZwppZiggJGNvbmZpZ3tlcnJvcnN9ID4gMCApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPXh4JnR5cGU9Ii4kdGV4dHtlcnJfY29uZmlnYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBjaGVjayBmb3IgaW5wdXQgZGF0YSBlcnJvcnMKaWYoICRpbntjbGFzc30gIX4gL14kTkFNRSQvICApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPSIuJHRleHR7Y2xhc3N9OwoJJGxpbmUgLj0gIiZ0eXBlPSIuJHRleHR7ZXJyX25hbWViYWR9OwoJJnJlZGlyZWN0KCAkbGluZSApOwoJZXhpdDsKfQppZiggJGlue3ZlbmRvcn0gIX4gL14kTkFNRSQvICApCnsKCW15ICRsaW5lID0gImVycm9yLmNnaT9saW5lPSIuJHRleHR7dmVuZG9yfTsKCSRsaW5lIC49ICImdHlwZT0iLiR0ZXh0e2Vycl9uYW1lYmFkfTsKCSZyZWRpcmVjdCggJGxpbmUgKTsKCWV4aXQ7Cn0KIyBhZGp1c3QgZXZlcnl0aGluZyB0byB3aGF0IHdlIGdvdAojCm15ICRsaW5lPSJkaGNwLXZlbmRvcmNsYXNzPSIuJGlue2NsYXNzfS4iLCIuJGlue3ZlbmRvcn07CiZ1cGRhdGUoICRjb25maWd7dmVuZG9yX2NsYXNzfVskaW57aWR4fV17bGluZX0sICRsaW5lLAoJJGNvbmZpZ19maWxlLCAoICRpbnt1c2VkfSA9PSAxICkgKTsKIwojIHdyaXRlIGZpbGUhIQomZmx1c2hfZmlsZV9saW5lcygpOwojCiMgcmUtbG9hZCBiYXNpYyBwYWdlCiZyZWRpcmVjdCggImRoY3AuY2dpIiApOwoKIyAKIyBzdWItcm91dGluZXMKIwojIyMgRU5EIG9mIHZlbmRfZWRpdF9hcHBseS5jZ2kgIyMjLgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZG5zbWFzcS9lcnJvci5jZ2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3NTUAMDAwMDAwMAAwMDAwMDAwADAwMDAwMDAzMDI2ADEwNTExMzUwNTQ3ADAxMzA0NAAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAHJvb3QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcm9vdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIS91c3IvYmluL3BlcmwKIwojICAgIEROU01hc3EgV2VibWluIE1vZHVsZSAtIGVycm9yLmNnaTsgcmVwb3J0IGVycm9ycwojICAgIENvcHlyaWdodCAoQykgMjAwNiBieSBOZWlsIEZpc2hlcgojICAgIAojICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyAgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojCiMgICAgVGhpcyBtb2R1bGUgaW5oZXJpdGVkIGZyb20gdGhlIFdlYm1pbiBNb2R1bGUgVGVtcGxhdGUgMC43OS4xIGJ5IHRuCgpkbyAnLi4vd2ViLWxpYi5wbCc7CmRvICcuLi91aS1saWIucGwnOwpkbyAnZG5zbWFzcS1saWIucGwnOwoKJHw9MTsKJmluaXRfY29uZmlnKCJETlNNYXNxIik7CgolYWNjZXNzPSZnZXRfbW9kdWxlX2FjbDsKCiMjIHB1dCBpbiBBQ0wgY2hlY2tzIGhlcmUgaWYgbmVlZGVkCgoKIyMgc2FuaXR5IGNoZWNrcwoKJmhlYWRlcigkdGV4dHsnaW5kZXhfdGl0bGUnfSwgIiIsICJpbnRybyIsIDEsIDEsIHVuZGVmLAogICAgICAgICJXcml0dGVuIGJ5IE5laWwgRmlzaGVyPEJSPjxBIEhSRUY9bWFpbHRvOm5laWxcQG1hZ25lY29yLmNvbS5hdT5BdXRob3I8L0E+PEJSPjxBIEhSRUY9aHR0cDovL3d3dy5hdXRob3JwYWdlLmludmFsaWQ+SG9tZTovL3BhZ2U8L0E+Iik7CiMgdXNlcyB0aGUgaW5kZXhfdGl0bGUgZW50cnkgZnJvbSAuL2xhbmcvZW4gb3IgYXBwcm9wcmlhdGUKCiMjIEluc2VydCBPdXRwdXQgY29kZSBoZXJlCgojIG91dHB1dCBhcyB3ZWIgcGFnZQomUmVhZFBhcnNlKCk7CnByaW50ICI8aDI+Ii4kdGV4dHtlcnJvcl9oZWFkaW5nfS4iPC9oMj4iOwpwcmludCAiPGJyPjxicj4iOwpwcmludCAkdGV4dHtlcnJfbGluZX07CnByaW50ICRpbntsaW5lfTsKcHJpbnQgIjxicj5cbiI7CnByaW50ICR0ZXh0e2Vycl90eXBlfTsKcHJpbnQgJGlue3R5cGV9OwpwcmludCAiPGJyPjxicj5cbiI7CnByaW50ICR0ZXh0e2Vycl9oZWxwfTsKJmZvb3RlcigiLyIsICR0ZXh0eydpbmRleCd9KTsKIyB1c2VzIHRoZSBpbmRleCBlbnRyeSBpbiAvbGFuZy9lbgoKCgojIyBpZiBzdWJyb3V0aW5lcyBhcmUgbm90IGluIGFuIGV4dHJhIGZpbGUgcHV0IHRoZW0gaGVyZQoKCiMjIyBFTkQgb2YgZXJyb3IuY2dpICMjIy4KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=