LmRlICBDVwouc3AKLm5mCi5mdCBDVwouLgouXCIgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aAouXCIgZ3JvZmYgLW1hbiAtVGFzY2lpIGZvby4xCi5cIgouXCIgInZlcmJhdGltIiBlbnZpcm9ubWVudCAoZnJvbSBzdHJhY2UuMSkKLmRlICBDRQouZnQKLmZpCi5zcAouLgouXCIKLlwiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgouXCIKLlwiIFRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIHdpdGggcG80YS4gVHJhbnNsYXRlIHRoZSBzb3VyY2UgZmlsZS4KLlwiCi5cIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLlRIIGZha2Vyb290IDEgIjUgT2N0b2JlciAyMDE0IiAiRGViaWFuIFByb2plY3QiICJEZWJpYW4gbWFudWFsIgouXCIgTWFucGFnZSBieSBKLkguTS4gRGFzc2VuIDxqZGFzc2VuQGRlYmlhbi5vcmc+Ci5cIiBhbmQgQ2xpbnQgQWRhbXMgPGNsaW50QGRlYmlhbi5vcmc+Ci5TSCBOQU1OCmZha2Vyb290IFwtIHV0ZvZyIGV0dCBrb21tYW5kbyBpIGVuIG1pbGr2IHNvbSBmZWprYXIgcm9vdFwtcHJpdmlsZWdpZXIgZvZyCmZpbG1hbmlwdWxhdGlvbgouU0ggU1lOT1BTSVMKXGZCZmFrZXJvb3RcZlAgXGZCW1wtbHxcLVwtbGliXGZQIFxmSWxpYnJhcnldXGZQIFxmQltcLVwtZmFrZWRcZlAgXGZJZmFrZWRcLWJpbmFyeVxmUFxmQl1cZlAgXGZCW1wtaVxmUApcZklsb2FkXC1maWxlXGZQXGZCXVxmUCBcZkJbXC1zXGZQIFxmSXNhdmVcLWZpbGVcZlBcZkJdXGZQIFxmQltcLXV8XC1cLXVua25vd25cLWlzXC1yZWFsIF1cZlAKXGZCW1wtYnxcLVwtZmRcLWJhc2UgXVxmUCBcZkJbXC1ofFwtXC1oZWxwIF1cZlAgXGZCW1wtdnxcLVwtdmVyc2lvbiBdXGZQIFxmQltcLVwtXVxmUCBcZkJbY29tbWFuZF1cZlAKLlNIIEJFU0tSSVZOSU5HClxmQmZha2Vyb290XGZQIHJ1bnMgYSBjb21tYW5kIGluIGFuIGVudmlyb25tZW50IHdoZXJlaW4gaXQgYXBwZWFycyB0byBoYXZlIHJvb3QKcHJpdmlsZWdlcyBmb3IgZmlsZSBtYW5pcHVsYXRpb24uICBUaGlzIGlzIHVzZWZ1bCBmb3IgYWxsb3dpbmcgdXNlcnMgdG8KY3JlYXRlIGFyY2hpdmVzICh0YXIsIGFyLCAuZGViIGV0Yy4pIHdpdGggZmlsZXMgaW4gdGhlbSB3aXRoIHJvb3QKcGVybWlzc2lvbnMvb3duZXJzaGlwLiAgV2l0aG91dCBcZkJmYWtlcm9vdFxmUCBvbmUgd291bGQgbmVlZCB0byBoYXZlIHJvb3QKcHJpdmlsZWdlcyB0byBjcmVhdGUgdGhlIGNvbnN0aXR1ZW50IGZpbGVzIG9mIHRoZSBhcmNoaXZlcyB3aXRoIHRoZSBjb3JyZWN0CnBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAsIGFuZCB0aGVuIHBhY2sgdGhlbSB1cCwgb3Igb25lIHdvdWxkIGhhdmUgdG8KY29uc3RydWN0IHRoZSBhcmNoaXZlcyBkaXJlY3RseSwgd2l0aG91dCB1c2luZyB0aGUgYXJjaGl2ZXIuCgpcZkJmYWtlcm9vdFxmUCB3b3JrcyBieSByZXBsYWNpbmcgdGhlIGZpbGUgbWFuaXB1bGF0aW9uIGxpYnJhcnkgZnVuY3Rpb25zCihjaG1vZCgyKSwgc3RhdCgyKSBldGMuKSBieSBvbmVzIHRoYXQgc2ltdWxhdGUgdGhlIGVmZmVjdCB0aGUgcmVhbCBsaWJyYXJ5CmZ1bmN0aW9ucyB3b3VsZCBoYXZlIGhhZCwgaGFkIHRoZSB1c2VyIHJlYWxseSBiZWVuIHJvb3QuIFRoZXNlIHdyYXBwZXIKZnVuY3Rpb25zIGFyZSBpbiBhIHNoYXJlZCBsaWJyYXJ5IFxmQi91c3IvbGliLyovbGliZmFrZXJvb3RcLSouc29cZlAgb3Igc2ltaWxhcgpsb2NhdGlvbiBvbiB5b3VyIHBsYXRmb3JtLiAgVGhlIHNoYXJlZCBvYmplY3QgaXMgbG9hZGVkIHRocm91Z2ggdGhlClxmQkxEX1BSRUxPQURcZlAgbWVjaGFuaXNtIG9mIHRoZSBkeW5hbWljIGxvYWRlci4gKFNlZSBcZkJsZC5zb1xmUCg4KSkKCk9tIGR1IHBsYW5lcmFyIGF0dCBieWdnYSBwYWtldCBtZWQgaGrkbHAgYXYgXGZCZmFrZXJvb3RcZlAsIGb2cnP2ayBm9nJzdCBhdHQKYnlnZ2EgZmFrZXJvb3RcLXBha2V0ZXQ6ICJkZWJpYW4vcnVsZXMgYnVpbGQiXC1zdGFkaWV0IGhhciBldHQgcGFyIHRlc3RlciAoc29tCm1lc3RhZGVscyB0ZXN0YXIgZWZ0ZXIgYnVnZ2FyIGkgZ2FtbGEgdmVyc2lvbmVyIGF2IGZha2Vyb290KS4gIE9tIGRlc3NhCnRlc3RlciBtaXNzbHlja2FzICh0aWxsIGV4ZW1wZWwgcOUgZ3J1bmQgYXYgYXR0IGR1IGhhciB2aXNzYSBsaWJjNVwtcHJvZ3JhbQpw5SBkaXR0IHN5c3RlbSkgc+Ug5HIgZGV0IHRyb2xpZ3QgYXR0IGR1IG9ja3PlIGtvbW1lciBhdHQgbWlzc2x5Y2thcyBieWdnYQphbmRyYSBwYWtldCwgb2NoIGRldCDkciBt9mpsaWd0IGF0dCBkZXNzYSBmZWwgYmxpciBiZXR5ZGxpZ3Qgc3blcmFyZSBhdHQKaGl0dGEuCgpBbHNvLCBub3RlIHRoYXQgaXQncyBiZXN0IG5vdCB0byBkbyB0aGUgYnVpbGRpbmcgb2YgdGhlIGJpbmFyaWVzIHRoZW1zZWx2ZXMKdW5kZXIgZmFrZXJvb3QuIEVzcGVjaWFsbHkgY29uZmlndXJlIGFuZCBmcmllbmRzIGRvbid0IGxpa2UgaXQgd2hlbiB0aGUKc3lzdGVtIHN1ZGRlbmx5IGJlaGF2ZXMgZGlmZmVyZW50bHkgZnJvbSB3aGF0IHRoZXkgZXhwZWN0LiAob3IsIHRoZXkKcmFuZG9tbHkgdW5zZXQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIHNvbWUgb2Ygd2hpY2ggZmFrZXJvb3QgbmVlZHMpLgoKLlNIIEZMQUdHT1IKLlRQIApcZkJcLWxcZlAgXGZJbGlicmFyeVxmUCwgXGZCXC1cLWxpYlxmUCBcZklsaWJyYXJ5XGZQCkFuZ2UgZXR0IGFsdGVybmF0aXZ0IGJpYmxpb3RlayBtZWQgZXJz5HR0bmluZ3NmdW5rdGlvbmVyLgouVFAgClxmQlwtXC1mYWtlZFxmUFxmSVwgYmlu5HJcZlAKQW5nZSBlbiBhbHRlcm5hdGl2IGJpbuRyIGF0dCBhbnbkbmRhIGlzdORsbGV0IGb2ciBmYWtlZCgxKS4KLlRQIApcZkJbXC1cLV1cZlBcZklcIGtvbW1hbmRvXGZQCkFueSBjb21tYW5kIHlvdSB3YW50IHRvIGJlIHJhbiBhcyBmYWtlcm9vdC4gVXNlIFwob3FcLVwtXChjcSBpZiBpbiB0aGUgY29tbWFuZAp5b3UgaGF2ZSBvdGhlciBvcHRpb25zIHRoYXQgbWF5IGNvbmZ1c2UgZmFrZXJvb3QncyBvcHRpb24gcGFyc2luZy4KLlRQIApcZkJcLXNcZlBcZklcIHNhdmVcLWZpbGVcZlAKU2F2ZSB0aGUgZmFrZXJvb3QgZW52aXJvbm1lbnQgdG8gc2F2ZVwtZmlsZSBvbiBleGl0LiBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgdG8KcmVzdG9yZSB0aGUgZW52aXJvbm1lbnQgbGF0ZXIgdXNpbmcgXC1pLiBIb3dldmVyLCB0aGlzIGZpbGUgd2lsbCBsZWFrIGFuZApmYWtlcm9vdCB3aWxsIGJlaGF2ZSBpbiBvZGQgd2F5cyB1bmxlc3MgeW91IGxlYXZlIHRoZSBmaWxlcyB0b3VjaGVkIGluc2lkZQp0aGUgZmFrZXJvb3QgYWxvbmUgd2hlbiBvdXRzaWRlIHRoZSBlbnZpcm9ubWVudC4gU3RpbGwsIHRoaXMgY2FuIGJlCnVzZWZ1bC4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZSB1c2VkIHdpdGggcnN5bmMoMSkgdG8gYmFjayB1cCBhbmQgcmVzdG9yZQp3aG9sZSBkaXJlY3RvcnkgdHJlZXMgY29tcGxldGUgd2l0aCB1c2VyLCBncm91cCBhbmQgZGV2aWNlIGluZm9ybWF0aW9uCndpdGhvdXQgbmVlZGluZyB0byBiZSByb290LiBTZWUgXGZJL3Vzci9zaGFyZS9kb2MvZmFrZXJvb3QvUkVBRE1FLnNhdmluZ1xmUCBmb3IKbW9yZSBkZXRhaWxzLgouVFAgClxmQlwtaVxmUFxmSVwgbG9hZFwtZmlsZVxmUApMb2FkIGEgZmFrZXJvb3QgZW52aXJvbm1lbnQgcHJldmlvdXNseSBzYXZlZCB1c2luZyBcLXMgZnJvbSBsb2FkXC1maWxlLiAgTm90ZQp0aGF0IHRoaXMgZG9lcyBub3QgaW1wbGljaXRseSBzYXZlIHRoZSBmaWxlLCB1c2UgXC1zIGFzIHdlbGwgZm9yIHRoYXQKYmVoYXZpb3VyLiBVc2luZyB0aGUgc2FtZSBmaWxlIGZvciBib3RoIFwtaSBhbmQgXC1zIGluIGEgc2luZ2xlIFxmQmZha2Vyb290XGZQCmludm9jYXRpb24gaXMgc2FmZS4KLlRQIApcZkJcLXVcZlAsIFxmQlwtXC11bmtub3duXC1pc1wtcmVhbFxmUApVc2UgdGhlIHJlYWwgb3duZXJzaGlwIG9mIGZpbGVzIHByZXZpb3VzbHkgdW5rbm93biB0byBmYWtlcm9vdCBpbnN0ZWFkIG9mCnByZXRlbmRpbmcgdGhleSBhcmUgb3duZWQgYnkgcm9vdDpyb290LgouVFAgClxmQlwtYlxmUFxmSVwgZmRcZlAKU3BlY2lmeSBmZCBiYXNlIChUQ1AgbW9kZSBvbmx5KS4gZmQgaXMgdGhlIG1pbmltdW0gZmlsZSBkZXNjcmlwdG9yIG51bWJlciB0bwp1c2UgZm9yIFRDUCBjb25uZWN0aW9uczsgdGhpcyBtYXkgYmUgaW1wb3J0YW50IHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZQpmaWxlIGRlc2NyaXB0b3JzIHVzZWQgYnkgdGhlIHByb2dyYW1zIGJlaW5nIHJ1biB1bmRlciBmYWtlcm9vdC4KLlRQIApcZkJcLWhcZlAKRGlzcGxheSBoZWxwLgouVFAgClxmQlwtdlxmUApEaXNwbGF5IHZlcnNpb24uCgouU0ggRVhFTVBFTApI5HIg5HIgZXR0IGV4ZW1wZWwgcOUgaHVyIFxmQmZha2Vyb290XGZQIGthbiBhbnbkbmRhcy4gIE5vdGVyYSBhdHQgaSBkZW4KZmVqa2FkZSByb290XC1taWxq9m4gc+UgbHlja2FzIGZpbG1hbmlwdWxlcmluZyBzb20ga3LkdmVyIHJvb3RcLXByaXZpbGVnaWVyLAp0cm90cyBhdHQgZGVuIGVnZW50bGlnZW4gaW50ZSB1dGb2cnMuCi5DVwokICB3aG9hbWkKam9vc3QKJCBmYWtlcm9vdCAvYmluL2Jhc2gKIyAgd2hvYW1pCnJvb3QKIyBta25vZCBoZGEzIGIgMyAxCiMgbHMgXC1sZCBoZGEzCmJyd1wtclwtXC1yXC1cLSAgIDEgcm9vdCAgICAgcm9vdCAgICAgICAzLCAgIDEgSnVsICAyIDIyOjU4IGhkYTMKIyBjaG93biBqb29zdDpyb290IGhkYTMKIyBscyBcLWxkIGhkYTMKYnJ3XC1yXC1cLXJcLVwtICAgMSBqb29zdCAgICByb290ICAgICAgIDMsICAgMSBKdWwgIDIgMjI6NTggaGRhMwojIGxzIFwtbGQgLwpkcnd4clwteHJcLXggIDIwIHJvb3QgICAgIHJvb3QgICAgICAgICAxMDI0IEp1biAxNyAyMTo1MCAvCiMgY2hvd24gam9vc3Q6dXNlcnMgLwojIGNobW9kIGErdyAvCiMgbHMgXC1sZCAvCmRyd3hyd3hyd3ggIDIwIGpvb3N0ICAgIHVzZXJzICAgICAgICAxMDI0IEp1biAxNyAyMTo1MCAvCiMgZXhpdAokIGxzIFwtbGQgLwpkcnd4clwteHJcLXggIDIwIHJvb3QgICAgIHJvb3QgICAgICAgICAxMDI0IEp1biAxNyAyMTo1MCAvLwokIGxzIFwtbGQgaGRhMwpcLXJ3XC1yXC1cLXJcLVwtICAgMSBqb29zdCAgICB1c2VycyAgICAgICAgICAgMCBKdWwgIDIgMjI6NTggaGRhMwouQ0UKRW5iYXJ0IGRlIG9wZXJhdGlvbmVyIHNvbSBhbnbkbmRhcmVuIFxmQmpvb3N0XGZQIHNrdWxsZSBrdW5uYSBoYSBnZW5vbWb2cnQgc29tCnNpZyBzauRsdiB1dGb2cnMgcOUgcmlrdGlndC4KClxmQmZha2Vyb290XGZQIHNrcmV2cyBzcGVjaWVsbHQgaSBzeWZ0ZSBhdHQgZ2UgYW525G5kYXJlIG32amxpZ2hldCBhdHQgc2thcGEKRGViaWFuIEdOVS9MaW51eFwtcGFrZXQgKGkgXGZCZGViKDUpXGZQIGZvcm1hdCkgdXRhbiBhdHQgYmVo9nZhCnJvb3RcLXByaXZpbGVnaWVyLiAgRGV0dGEga2FuIHV0ZvZyYXMgZ2Vub20ga29tbWFuZG9uIHPlc29tClxmQmRwa2dcLWJ1aWxkcGFja2FnZSBcLXJmYWtlcm9vdFxmUCBlbGxlciBcZkJkZWJ1aWxkIFwtcmZha2Vyb290XGZQIChcLXJmYWtlcm9vdCDkcgpudW1lcmEgc3RhbmRhcmQgaSBkZWJ1aWxkLCBz5SBkdSBiZWj2dmVyIGludGUgZW5zIGFuduRuZGEgZGVuIHBhcmFtZXRlcm4pLgouU0ggU8RLRVJIRVRTQVNQRUtURVIKXGZCZmFrZXJvb3RcZlAg5HIgZXR0IHZhbmxpZ3QgcHJvZ3JhbSB1dGFuIHNldHVpZC4gRGV0IGdlciBpbnRlIGFuduRuZGFyZW4KbuVncmEgZXh0cmEgcHJpdmlsZWdpZXIsIG9jaCBtaW5za2FyIGludGUgc3lzdGVtZXRzIHPka2VyaGV0LgouU0ggRklMRVIKXGZJL3Vzci9saWIvKi9saWJmYWtlcm9vdFwtKi5zb1xmUCBUaGUgc2hhcmVkIGxpYnJhcnkgY29udGFpbmluZyB0aGUgd3JhcHBlcgpmdW5jdGlvbnMuCi5TSCBNSUxK1gouSVAgXGZCRkFLRVJPT1RLRVlcZlAKVGhlIGtleSB1c2VkIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIGZha2Vyb290IGRhZW1vbi4gQW55IHByb2dyYW0gc3RhcnRlZAp3aXRoIHRoZSByaWdodCBcZkJMRF9QUkVMT0FEXGZQIGFuZCBhIFxmQkZBS0VST09US0VZXGZQIG9mIGEgcnVubmluZyBkYWVtb24gd2lsbAphdXRvbWF0aWNhbGx5IGNvbm5lY3QgdG8gdGhhdCBkYWVtb24sIGFuZCBoYXZlIHRoZSBzYW1lICJmYWtlIiB2aWV3IG9mIHRoZQpmaWxlIHN5c3RlbSdzIHBlcm1pc3Npb25zL293bmVyc2hpcHMuICAoYXNzdW1pbmcgdGhlIGRhZW1vbiBhbmQgY29ubmVjdGluZwpwcm9ncmFtIHdlcmUgc3RhcnRlZCBieSB0aGUgc2FtZSB1c2VyKS4KLklQIFxmQkxEX0xJQlJBUllfUEFUSFxmUAouSVAgXGZCTERfUFJFTE9BRFxmUApGYWtlcm9vdCBpcyBpbXBsZW1lbnRlZCBieSB3cmFwcGluZyBzeXN0ZW0gY2FsbHMuICBUaGlzIGlzIGFjY29tcGxpc2hlZCBieQpzZXR0aW5nIExEX0xJQlJBUllfUEFUSD0vdXNyL2xpYi9mYWtlcm9vdCBhbmQgTERfUFJFTE9BRD1saWJmYWtlcm9vdC5zby4wLgpUaGF0IGxpYnJhcnkgaXMgbG9hZGVkIGJlZm9yZSB0aGUgc3lzdGVtJ3MgQyBsaWJyYXJ5LCBhbmQgc28gbW9zdCBvZiB0aGUKbGlicmFyeSBmdW5jdGlvbnMgYXJlIGludGVyY2VwdGVkIGJ5IGl0LiAgSWYgeW91IG5lZWQgdG8gc2V0IGVpdGhlcgpcZkJMRF9MSUJSQVJZX1BBVEhcZlAgb3IgXGZCTERfUFJFTE9BRFxmUCBmcm9tIHdpdGhpbiBhIGZha2Vyb290IGVudmlyb25tZW50LCBpdApzaG91bGQgYmUgc2V0IHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBwYXRocywgYXMgaW4KXGZCTERfTElCUkFSWV9QQVRIPSRMRF9MSUJSQVJZX1BBVEg6L2Zvby9iYXIvXGZQCgouU0ggQkVHUsROU05JTkdBUgouSVAgXGZCQmlibGlvdGVrc3ZlcnNpb25lclxmUApFdmVyeSBjb21tYW5kIGV4ZWN1dGVkIHdpdGhpbiBcZkJmYWtlcm9vdFxmUCBuZWVkcyB0byBiZSBsaW5rZWQgdG8gdGhlIHNhbWUKdmVyc2lvbiBvZiB0aGUgQyBsaWJyYXJ5IGFzIFxmQmZha2Vyb290XGZQIGl0c2VsZi4KLklQIFxmQm9wZW4oKS9jcmVhdGUoKVxmUApmYWtlcm9vdCBkb2Vzbid0IHdyYXAgb3BlbigpLCBjcmVhdGUoKSwgZXRjLiBTbywgaWYgdXNlciBcZkJqb29zdFxmUCBkb2VzCmVpdGhlcgouQ1cKdG91Y2ggZm9vCmZha2Vyb290CmxzIFwtYWwgZm9vCi5DRQplbGxlciBvbXbkbnQsCi5DVwpmYWtlcm9vdAp0b3VjaCBmb28KbHMgXC1hbCBmb28KLkNFCmZha2Vyb290IGhhcyBubyB3YXkgb2Yga25vd2luZyB0aGF0IGluIHRoZSBmaXJzdCBjYXNlLCB0aGUgb3duZXIgb2YgZm9vCnJlYWxseSBzaG91bGQgYmUgXGZCam9vc3RcZlAgd2hpbGUgdGhlIHNlY29uZCBjYXNlIGl0IHNob3VsZCBoYXZlIGJlZW4KXGZCcm9vdFxmUC4gIEZvciB0aGUgRGViaWFuIHBhY2thZ2luZywgZGVmYXVsdGluZyB0byBnaXZpbmcgYWxsICJ1bmtub3duIiBmaWxlcwp1aWQ9Z2lkPTAsIGlzIGFsd2F5cyBPSy4gVGhlIHJlYWwgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHdyYXAgXGZCb3BlbigpXGZQIGFuZApcZkJjcmVhdGUoKVxmUCwgYnV0IHRoYXQgY3JlYXRlcyBvdGhlciBwcm9ibGVtcywgYXMgZGVtb25zdHJhdGVkIGJ5IHRoZQpsaWJ0cmlja3MgcGFja2FnZS4gVGhpcyBwYWNrYWdlIHdyYXBwZWQgbWFueSBtb3JlIGZ1bmN0aW9ucywgYW5kIHRyaWVkIHRvIGRvCmEgbG90IG1vcmUgdGhhbiBcZkJmYWtlcm9vdCAuXGZQIEl0IHR1cm5lZCBvdXQgdGhhdCBhIG1pbm9yIHVwZ3JhZGUgb2YgbGliYwooZnJvbSBvbmUgd2hlcmUgdGhlIFxmQnN0YXQoKVxmUCBmdW5jdGlvbiBkaWRuJ3QgdXNlIFxmQm9wZW4oKVxmUCB0byBvbmUgd2l0aCBhClxmQnN0YXQoKVxmUCBmdW5jdGlvbiB0aGF0IGRpZCAoaW4gc29tZSBjYXNlcykgdXNlIFxmQm9wZW4oKVxmUCksIHdvdWxkIGNhdXNlCnVuZXhwbGFpbmFibGUgc2VnZmF1bHRzICh0aGF0IGlzLCB0aGUgbGliYzYgXGZCc3RhdCgpXGZQIGNhbGxlZCB0aGUgd3JhcHBlZApcZkJvcGVuKClcZlAsIHdoaWNoIHdvdWxkIHRoZW4gY2FsbCB0aGUgbGliYzYgXGZCc3RhdCgpXGZQLCBldGMpLiAgRml4aW5nIHRoZW0Kd2Fzbid0IGFsbCB0aGF0IGVhc3ksIGJ1dCBvbmNlIGZpeGVkLCBpdCB3YXMganVzdCBhIG1hdHRlciBvZiB0aW1lIGJlZm9yZQphbm90aGVyIGZ1bmN0aW9uIHN0YXJ0ZWQgdG8gdXNlIG9wZW4oKSwgbmV2ZXIgbWluZCB0cnlpbmcgdG8gcG9ydCBpdCB0byBhCmRpZmZlcmVudCBvcGVyYXRpbmcgc3lzdGVtLiBUaHVzIEkgZGVjaWRlZCB0byBrZWVwIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zCndyYXBwZWQgYnkgZmFrZXJvb3QgYXMgc21hbGwgYXMgcG9zc2libGUsIHRvIGxpbWl0IHRoZSBsaWtlbGlob29kIG9mClwob3Fjb2xsaXNpb25zXChjcS4KLklQICJcZkJHTlUgY29uZmlndXJlIChvY2ggbGlrbmFuZGUgcHJvZ3JhbSlcZlAiCmZha2Vyb290LCBpbiBlZmZlY3QsIGlzIGNoYW5naW5nIHRoZSB3YXkgdGhlIHN5c3RlbSBiZWhhdmVzLiBQcm9ncmFtcyB0aGF0CnByb2JlIHRoZSBzeXN0ZW0gbGlrZSBHTlUgY29uZmlndXJlIG1heSBnZXQgY29uZnVzZWQgYnkgdGhpcyAob3IgaWYgdGhleQpkb24ndCwgdGhleSBtYXkgc3RyZXNzIGZha2Vyb290IHNvIG11Y2ggdGhhdCBmYWtlcm9vdCBpdHNlbGYgYmVjb21lcwpjb25mdXNlZCkuIFNvLCBpdCdzIGFkdmlzYWJsZSBub3QgdG8gcnVuICJjb25maWd1cmUiIGZyb20gd2l0aGluCmZha2Vyb290LiBBcyBjb25maWd1cmUgc2hvdWxkIGJlIGNhbGxlZCBpbiB0aGUgImRlYmlhbi9ydWxlcyBidWlsZCIgdGFyZ2V0LApydW5uaW5nICJkcGtnXC1idWlsZHBhY2thZ2UgXC1yZmFrZXJvb3QiIGNvcnJlY3RseSB0YWtlcyBjYXJlIG9mIHRoaXMuCi5TSCBCVUdHQVIKSXQgZG9lc24ndCB3cmFwIG9wZW4oKS4gVGhpcyBpc24ndCBiYWQgYnkgaXRzZWxmLCBidXQgaWYgYSBwcm9ncmFtIGRvZXMKb3BlbigiZmlsZSIsIE9fV1JPTkxZLCAwMDApLCB3cml0ZXMgdG8gZmlsZSAiZmlsZSIsIGNsb3NlcyBpdCwgYW5kIHRoZW4KYWdhaW4gdHJpZXMgdG8gb3BlbiB0byByZWFkIHRoZSBmaWxlLCB0aGVuIHRoYXQgb3BlbiBmYWlscywgYXMgdGhlIG1vZGUgb2YKdGhlIGZpbGUgd2lsbCBiZSAwMDAuIFRoZSBidWcgaXMgdGhhdCBpZiByb290IGRvZXMgdGhlIHNhbWUsIG9wZW4oKSB3aWxsCnN1Y2NlZWQsIGFzIHRoZSBmaWxlIHBlcm1pc3Npb25zIGFyZW4ndCBjaGVja2VkIGF0IGFsbCBmb3Igcm9vdC4gSSBjaG9vc2UKbm90IHRvIHdyYXAgb3BlbigpLCBhcyBvcGVuKCkgaXMgdXNlZCBieSBtYW55IG90aGVyIGZ1bmN0aW9ucyBpbiBsaWJjIChhbHNvCnRob3NlIHRoYXQgYXJlIGFscmVhZHkgd3JhcHBlZCksIHRodXMgY3JlYXRpbmcgbG9vcHMgKG9yIHBvc3NpYmxlIGZ1dHVyZQpsb29wcywgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdmFyaW91cyBsaWJjIGZ1bmN0aW9ucyBzbGlnaHRseSBjaGFuZ2UpLgouU0ggTElDRU5TClxmQmZha2Vyb290XGZQIGRpc3RyaWJ1ZXJhcyB1bmRlciBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIChHUEwgMi4wIGVsbGVyCnNlbmFyZSkuCi5TSCBG1lJGQVRUQVJFCi5UUCAKam9vc3Qgd2l0dGV2ZWVuCjxcZklqb29zdGplQGRlYmlhbi5vcmdcZlA+Ci5UUCAKQ2xpbnQgQWRhbXMKPFxmSWNsaW50QGRlYmlhbi5vcmdcZlA+Ci5UUCAKVGltbyBTYXZvbGEKLlNIINZWRVJTxFRUTklORwpEYXZpZCBXZWluZWhhbGwKLlJJIDwgdGFvQGtlcm5lbC5vcmcgPgouU0ggTUFOVUFMU0lEQQptb3N0bHkgYnkgSi5ILk0uIERhc3NlbiA8amRhc3NlbkBkZWJpYW4ub3JnPiBSYXRoZXIgYSBsb3QKbW9kcy9hZGRpdGlvbnMgYnkgam9vc3QgYW5kIENsaW50LgouU0ggIlNFIMRWRU4iClxmQmZha2VkXGZQKDEpICBcZkJkcGtnXC1idWlsZHBhY2thZ2VcZlAoMSksIFxmQmRlYnVpbGRcZlAoMSkKXGZCL3Vzci9zaGFyZS9kb2MvZmFrZXJvb3QvREVCVUdcZlAKCg==