A/MNCi9c/FVjAAAAAAAAAAAJAAAAQAAAAHNgAgAAZAAAWgAAZAEAZAIAbAEAWgEAZQEAagIAZAMAawIAWgMAZAEAZAIAbAQAWgQAZAEAZAIAbAUAWgUAZAEAZAIAbAYAWgYAZAEAZAIAbAcAWgcAZAEAZAIAbAgAWggAZAEAZAIAbAkAWgkAZAQAZQoAZgEAZAUAhAAAgwAAWVoLAGUDAHLSAGQBAGQCAGwMAFoMAGQBAGQCAGwNAFoNAGQBAGQCAGwOAFoOAGQGAGYAAGQHAIQAAIMAAFlaDwBkCABmAABkCQCEAACDAABZWhAAbkUAZAEAZAIAbBEAWhEAZRIAZREAZAoAgwIAWhMAZAEAZAIAbBQAWhQAZAEAZAIAbBUAWhUAZRYAZREAZAsAZAwAgwMAWhcAZA0AZA4AZA8AZBAAZBEAZBIAZAQAZwcAWhgAZQMAcpoBZAEAZBMAbA4AbRkAWhkAbRoAWhoAbRsAWhsAbRwAWhwAbR0AWh0AbR4AWh4AbR8AWh8AbSAAWiAAAWUYAGohAGQUAGQVAGQWAGQXAGQYAGQZAGQaAGQbAGcIAIMBAAFuAAB5EwBlBABqIgBkHACDAQBaIwBXbg0AAQEBZB0AWiMAbgEAWGcAAFokAGQeAIQAAFolAGQBAFomAGQfAFonAGQgAIQAAFooAGQhAIQAAFopAGQiAIQAAFoqAGQjAIQAAForAGQkAIQAAFosAGQlAIQAAFotAGQNAGUuAGYBAGQmAIQAAIMAAFlaLwBkJwCEAABaMABkKACEAABaMQBlMgBkKQBrAgByXAJlAwByUgJlMQCDAAABbgcAZTAAgwAAAW4AAGQCAFMoKgAAAHOaMAAAc3VicHJvY2VzcyAtIFN1YnByb2Nlc3NlcyB3aXRoIGFjY2Vzc2libGUgSS9PIHN0cmVhbXMKClRoaXMgbW9kdWxlIGFsbG93cyB5b3UgdG8gc3Bhd24gcHJvY2Vzc2VzLCBjb25uZWN0IHRvIHRoZWlyCmlucHV0L291dHB1dC9lcnJvciBwaXBlcywgYW5kIG9idGFpbiB0aGVpciByZXR1cm4gY29kZXMuICBUaGlzIG1vZHVsZQppbnRlbmRzIHRvIHJlcGxhY2Ugc2V2ZXJhbCBvdGhlciwgb2xkZXIgbW9kdWxlcyBhbmQgZnVuY3Rpb25zLCBsaWtlOgoKb3Muc3lzdGVtCm9zLnNwYXduKgpvcy5wb3BlbioKcG9wZW4yLioKY29tbWFuZHMuKgoKSW5mb3JtYXRpb24gYWJvdXQgaG93IHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBjYW4gYmUgdXNlZCB0byByZXBsYWNlIHRoZXNlCm1vZHVsZXMgYW5kIGZ1bmN0aW9ucyBjYW4gYmUgZm91bmQgYmVsb3cuCgoKClVzaW5nIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhpcyBtb2R1bGUgZGVmaW5lcyBvbmUgY2xhc3MgY2FsbGVkIFBvcGVuOgoKY2xhc3MgUG9wZW4oYXJncywgYnVmc2l6ZT0wLCBleGVjdXRhYmxlPU5vbmUsCiAgICAgICAgICAgIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwKICAgICAgICAgICAgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9RmFsc2UsIHNoZWxsPUZhbHNlLAogICAgICAgICAgICBjd2Q9Tm9uZSwgZW52PU5vbmUsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSwKICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wKToKCgpBcmd1bWVudHMgYXJlOgoKYXJncyBzaG91bGQgYmUgYSBzdHJpbmcsIG9yIGEgc2VxdWVuY2Ugb2YgcHJvZ3JhbSBhcmd1bWVudHMuICBUaGUKcHJvZ3JhbSB0byBleGVjdXRlIGlzIG5vcm1hbGx5IHRoZSBmaXJzdCBpdGVtIGluIHRoZSBhcmdzIHNlcXVlbmNlIG9yCnN0cmluZywgYnV0IGNhbiBiZSBleHBsaWNpdGx5IHNldCBieSB1c2luZyB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudC4KCk9uIFVOSVgsIHdpdGggc2hlbGw9RmFsc2UgKGRlZmF1bHQpOiBJbiB0aGlzIGNhc2UsIHRoZSBQb3BlbiBjbGFzcwp1c2VzIG9zLmV4ZWN2cCgpIHRvIGV4ZWN1dGUgdGhlIGNoaWxkIHByb2dyYW0uICBhcmdzIHNob3VsZCBub3JtYWxseQpiZSBhIHNlcXVlbmNlLiAgQSBzdHJpbmcgd2lsbCBiZSB0cmVhdGVkIGFzIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc3RyaW5nCmFzIHRoZSBvbmx5IGl0ZW0gKHRoZSBwcm9ncmFtIHRvIGV4ZWN1dGUpLgoKT24gVU5JWCwgd2l0aCBzaGVsbD1UcnVlOiBJZiBhcmdzIGlzIGEgc3RyaW5nLCBpdCBzcGVjaWZpZXMgdGhlCmNvbW1hbmQgc3RyaW5nIHRvIGV4ZWN1dGUgdGhyb3VnaCB0aGUgc2hlbGwuICBJZiBhcmdzIGlzIGEgc2VxdWVuY2UsCnRoZSBmaXJzdCBpdGVtIHNwZWNpZmllcyB0aGUgY29tbWFuZCBzdHJpbmcsIGFuZCBhbnkgYWRkaXRpb25hbCBpdGVtcwp3aWxsIGJlIHRyZWF0ZWQgYXMgYWRkaXRpb25hbCBzaGVsbCBhcmd1bWVudHMuCgpPbiBXaW5kb3dzOiB0aGUgUG9wZW4gY2xhc3MgdXNlcyBDcmVhdGVQcm9jZXNzKCkgdG8gZXhlY3V0ZSB0aGUgY2hpbGQKcHJvZ3JhbSwgd2hpY2ggb3BlcmF0ZXMgb24gc3RyaW5ncy4gIElmIGFyZ3MgaXMgYSBzZXF1ZW5jZSwgaXQgd2lsbCBiZQpjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIGxpc3QyY21kbGluZSBtZXRob2QuICBQbGVhc2Ugbm90ZSB0aGF0Cm5vdCBhbGwgTVMgV2luZG93cyBhcHBsaWNhdGlvbnMgaW50ZXJwcmV0IHRoZSBjb21tYW5kIGxpbmUgdGhlIHNhbWUKd2F5OiBUaGUgbGlzdDJjbWRsaW5lIGlzIGRlc2lnbmVkIGZvciBhcHBsaWNhdGlvbnMgdXNpbmcgdGhlIHNhbWUKcnVsZXMgYXMgdGhlIE1TIEMgcnVudGltZS4KCmJ1ZnNpemUsIGlmIGdpdmVuLCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudAp0byB0aGUgYnVpbHQtaW4gb3BlbigpIGZ1bmN0aW9uOiAwIG1lYW5zIHVuYnVmZmVyZWQsIDEgbWVhbnMgbGluZQpidWZmZXJlZCwgYW55IG90aGVyIHBvc2l0aXZlIHZhbHVlIG1lYW5zIHVzZSBhIGJ1ZmZlciBvZgooYXBwcm94aW1hdGVseSkgdGhhdCBzaXplLiAgQSBuZWdhdGl2ZSBidWZzaXplIG1lYW5zIHRvIHVzZSB0aGUgc3lzdGVtCmRlZmF1bHQsIHdoaWNoIHVzdWFsbHkgbWVhbnMgZnVsbHkgYnVmZmVyZWQuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IKYnVmc2l6ZSBpcyAwICh1bmJ1ZmZlcmVkKS4KCnN0ZGluLCBzdGRvdXQgYW5kIHN0ZGVyciBzcGVjaWZ5IHRoZSBleGVjdXRlZCBwcm9ncmFtcycgc3RhbmRhcmQKaW5wdXQsIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZmlsZSBoYW5kbGVzLCByZXNwZWN0aXZlbHkuClZhbGlkIHZhbHVlcyBhcmUgUElQRSwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCmludGVnZXIpLCBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIE5vbmUuICBQSVBFIGluZGljYXRlcyB0aGF0IGEKbmV3IHBpcGUgdG8gdGhlIGNoaWxkIHNob3VsZCBiZSBjcmVhdGVkLiAgV2l0aCBOb25lLCBubyByZWRpcmVjdGlvbgp3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUKcGFyZW50LiAgQWRkaXRpb25hbGx5LCBzdGRlcnIgY2FuIGJlIFNURE9VVCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlCnN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUgY2FwdHVyZWQgaW50byB0aGUgc2FtZQpmaWxlIGhhbmRsZSBhcyBmb3Igc3Rkb3V0LgoKSWYgcHJlZXhlY19mbiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkCmluIHRoZSBjaGlsZCBwcm9jZXNzIGp1c3QgYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCklmIGNsb3NlX2ZkcyBpcyB0cnVlLCBhbGwgZmlsZSBkZXNjcmlwdG9ycyBleGNlcHQgMCwgMSBhbmQgMiB3aWxsIGJlCmNsb3NlZCBiZWZvcmUgdGhlIGNoaWxkIHByb2Nlc3MgaXMgZXhlY3V0ZWQuCgppZiBzaGVsbCBpcyB0cnVlLCB0aGUgc3BlY2lmaWVkIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZCB0aHJvdWdoIHRoZQpzaGVsbC4KCklmIGN3ZCBpcyBub3QgTm9uZSwgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IHdpbGwgYmUgY2hhbmdlZCB0byBjd2QKYmVmb3JlIHRoZSBjaGlsZCBpcyBleGVjdXRlZC4KCklmIGVudiBpcyBub3QgTm9uZSwgaXQgZGVmaW5lcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0aGUgbmV3CnByb2Nlc3MuCgpJZiB1bml2ZXJzYWxfbmV3bGluZXMgaXMgdHJ1ZSwgdGhlIGZpbGUgb2JqZWN0cyBzdGRvdXQgYW5kIHN0ZGVyciBhcmUKb3BlbmVkIGFzIGEgdGV4dCBmaWxlcywgYnV0IGxpbmVzIG1heSBiZSB0ZXJtaW5hdGVkIGJ5IGFueSBvZiAnXG4nLAp0aGUgVW5peCBlbmQtb2YtbGluZSBjb252ZW50aW9uLCAnXHInLCB0aGUgTWFjaW50b3NoIGNvbnZlbnRpb24gb3IKJ1xyXG4nLCB0aGUgV2luZG93cyBjb252ZW50aW9uLiAgQWxsIG9mIHRoZXNlIGV4dGVybmFsIHJlcHJlc2VudGF0aW9ucwphcmUgc2VlbiBhcyAnXG4nIGJ5IHRoZSBQeXRob24gcHJvZ3JhbS4gIE5vdGU6IFRoaXMgZmVhdHVyZSBpcyBvbmx5CmF2YWlsYWJsZSBpZiBQeXRob24gaXMgYnVpbHQgd2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0ICh0aGUKZGVmYXVsdCkuICBBbHNvLCB0aGUgbmV3bGluZXMgYXR0cmlidXRlIG9mIHRoZSBmaWxlIG9iamVjdHMgc3Rkb3V0LApzdGRpbiBhbmQgc3RkZXJyIGFyZSBub3QgdXBkYXRlZCBieSB0aGUgY29tbXVuaWNhdGUoKSBtZXRob2QuCgpUaGUgc3RhcnR1cGluZm8gYW5kIGNyZWF0aW9uZmxhZ3MsIGlmIGdpdmVuLCB3aWxsIGJlIHBhc3NlZCB0byB0aGUKdW5kZXJseWluZyBDcmVhdGVQcm9jZXNzKCkgZnVuY3Rpb24uICBUaGV5IGNhbiBzcGVjaWZ5IHRoaW5ncyBzdWNoIGFzCmFwcGVhcmFuY2Ugb2YgdGhlIG1haW4gd2luZG93IGFuZCBwcmlvcml0eSBmb3IgdGhlIG5ldyBwcm9jZXNzLgooV2luZG93cyBvbmx5KQoKClRoaXMgbW9kdWxlIGFsc28gZGVmaW5lcyBzb21lIHNob3J0Y3V0IGZ1bmN0aW9uczoKCmNhbGwoKnBvcGVuYXJncywgKiprd2FyZ3MpOgogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgoKICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgoKICAgIHJldGNvZGUgPSBjYWxsKFsibHMiLCAiLWwiXSkKCmNoZWNrX2NhbGwoKnBvcGVuYXJncywgKiprd2FyZ3MpOgogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLiAgSWYgdGhlCiAgICBleGl0IGNvZGUgd2FzIHplcm8gdGhlbiByZXR1cm4sIG90aGVyd2lzZSByYWlzZQogICAgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlIENhbGxlZFByb2Nlc3NFcnJvciBvYmplY3Qgd2lsbCBoYXZlIHRoZQogICAgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgoKICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgoKICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQoKY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKICAgIFJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgoKICAgIElmIHRoZSBleGl0IGNvZGUgd2FzIG5vbi16ZXJvIGl0IHJhaXNlcyBhIENhbGxlZFByb2Nlc3NFcnJvci4gIFRoZQogICAgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlIHJldHVybiBjb2RlIGluIHRoZSByZXR1cm5jb2RlCiAgICBhdHRyaWJ1dGUgYW5kIG91dHB1dCBpbiB0aGUgb3V0cHV0IGF0dHJpYnV0ZS4KCiAgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlIFBvcGVuIGNvbnN0cnVjdG9yLiAgRXhhbXBsZToKCiAgICBvdXRwdXQgPSBjaGVja19vdXRwdXQoWyJscyIsICItbCIsICIvZGV2L251bGwiXSkKCgpFeGNlcHRpb25zCi0tLS0tLS0tLS0KRXhjZXB0aW9ucyByYWlzZWQgaW4gdGhlIGNoaWxkIHByb2Nlc3MsIGJlZm9yZSB0aGUgbmV3IHByb2dyYW0gaGFzCnN0YXJ0ZWQgdG8gZXhlY3V0ZSwgd2lsbCBiZSByZS1yYWlzZWQgaW4gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwKdGhlIGV4Y2VwdGlvbiBvYmplY3Qgd2lsbCBoYXZlIG9uZSBleHRyYSBhdHRyaWJ1dGUgY2FsbGVkCidjaGlsZF90cmFjZWJhY2snLCB3aGljaCBpcyBhIHN0cmluZyBjb250YWluaW5nIHRyYWNlYmFjayBpbmZvcm1hdGlvbgpmcm9tIHRoZSBjaGlsZHMgcG9pbnQgb2Ygdmlldy4KClRoZSBtb3N0IGNvbW1vbiBleGNlcHRpb24gcmFpc2VkIGlzIE9TRXJyb3IuICBUaGlzIG9jY3VycywgZm9yCmV4YW1wbGUsIHdoZW4gdHJ5aW5nIHRvIGV4ZWN1dGUgYSBub24tZXhpc3RlbnQgZmlsZS4gIEFwcGxpY2F0aW9ucwpzaG91bGQgcHJlcGFyZSBmb3IgT1NFcnJvcnMuCgpBIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgUG9wZW4gaXMgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHMuCgpjaGVja19jYWxsKCkgYW5kIGNoZWNrX291dHB1dCgpIHdpbGwgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yLCBpZiB0aGUKY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLgoKClNlY3VyaXR5Ci0tLS0tLS0tClVubGlrZSBzb21lIG90aGVyIHBvcGVuIGZ1bmN0aW9ucywgdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIG5ldmVyIGNhbGwKL2Jpbi9zaCBpbXBsaWNpdGx5LiAgVGhpcyBtZWFucyB0aGF0IGFsbCBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgc2hlbGwKbWV0YWNoYXJhY3RlcnMsIGNhbiBzYWZlbHkgYmUgcGFzc2VkIHRvIGNoaWxkIHByb2Nlc3Nlcy4KCgpQb3BlbiBvYmplY3RzCj09PT09PT09PT09PT0KSW5zdGFuY2VzIG9mIHRoZSBQb3BlbiBjbGFzcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCnBvbGwoKQogICAgQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgYXR0cmlidXRlLgoKd2FpdCgpCiAgICBXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZSBhdHRyaWJ1dGUuCgpjb21tdW5pY2F0ZShpbnB1dD1Ob25lKQogICAgSW50ZXJhY3Qgd2l0aCBwcm9jZXNzOiBTZW5kIGRhdGEgdG8gc3RkaW4uICBSZWFkIGRhdGEgZnJvbSBzdGRvdXQKICAgIGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvCiAgICB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwgaW5wdXQgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nIHRvIGJlCiAgICBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvciBOb25lLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvCiAgICB0aGUgY2hpbGQuCgogICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4KCiAgICBOb3RlOiBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzCiAgICBtZXRob2QgaWYgdGhlIGRhdGEgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCgpUaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIGFsc28gYXZhaWxhYmxlOgoKc3RkaW4KICAgIElmIHRoZSBzdGRpbiBhcmd1bWVudCBpcyBQSVBFLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIGZpbGUgb2JqZWN0CiAgICB0aGF0IHByb3ZpZGVzIGlucHV0IHRvIHRoZSBjaGlsZCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBpdCBpcyBOb25lLgoKc3Rkb3V0CiAgICBJZiB0aGUgc3Rkb3V0IGFyZ3VtZW50IGlzIFBJUEUsIHRoaXMgYXR0cmlidXRlIGlzIGEgZmlsZSBvYmplY3QKICAgIHRoYXQgcHJvdmlkZXMgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuICBPdGhlcndpc2UsIGl0IGlzCiAgICBOb25lLgoKc3RkZXJyCiAgICBJZiB0aGUgc3RkZXJyIGFyZ3VtZW50IGlzIFBJUEUsIHRoaXMgYXR0cmlidXRlIGlzIGZpbGUgb2JqZWN0IHRoYXQKICAgIHByb3ZpZGVzIGVycm9yIG91dHB1dCBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiAgT3RoZXJ3aXNlLCBpdCBpcwogICAgTm9uZS4KCnBpZAogICAgVGhlIHByb2Nlc3MgSUQgb2YgdGhlIGNoaWxkIHByb2Nlc3MuCgpyZXR1cm5jb2RlCiAgICBUaGUgY2hpbGQgcmV0dXJuIGNvZGUuICBBIE5vbmUgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIHByb2Nlc3MKICAgIGhhc24ndCB0ZXJtaW5hdGVkIHlldC4gIEEgbmVnYXRpdmUgdmFsdWUgLU4gaW5kaWNhdGVzIHRoYXQgdGhlCiAgICBjaGlsZCB3YXMgdGVybWluYXRlZCBieSBzaWduYWwgTiAoVU5JWCBvbmx5KS4KCgpSZXBsYWNpbmcgb2xkZXIgZnVuY3Rpb25zIHdpdGggdGhlIHN1YnByb2Nlc3MgbW9kdWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW4gdGhpcyBzZWN0aW9uLCAiYSA9PT4gYiIgbWVhbnMgdGhhdCBiIGNhbiBiZSB1c2VkIGFzIGEgcmVwbGFjZW1lbnQKZm9yIGEuCgpOb3RlOiBBbGwgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiBmYWlsIChtb3JlIG9yIGxlc3MpIHNpbGVudGx5IGlmCnRoZSBleGVjdXRlZCBwcm9ncmFtIGNhbm5vdCBiZSBmb3VuZDsgdGhpcyBtb2R1bGUgcmFpc2VzIGFuIE9TRXJyb3IKZXhjZXB0aW9uLgoKSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlcywgd2UgYXNzdW1lIHRoYXQgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIGlzCmltcG9ydGVkIHdpdGggImZyb20gc3VicHJvY2VzcyBpbXBvcnQgKiIuCgoKUmVwbGFjaW5nIC9iaW4vc2ggc2hlbGwgYmFja3F1b3RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvdXRwdXQ9YG15Y21kIG15YXJnYAo9PT4Kb3V0cHV0ID0gUG9wZW4oWyJteWNtZCIsICJteWFyZyJdLCBzdGRvdXQ9UElQRSkuY29tbXVuaWNhdGUoKVswXQoKClJlcGxhY2luZyBzaGVsbCBwaXBlIGxpbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpvdXRwdXQ9YGRtZXNnIHwgZ3JlcCBoZGFgCj09PgpwMSA9IFBvcGVuKFsiZG1lc2ciXSwgc3Rkb3V0PVBJUEUpCnAyID0gUG9wZW4oWyJncmVwIiwgImhkYSJdLCBzdGRpbj1wMS5zdGRvdXQsIHN0ZG91dD1QSVBFKQpvdXRwdXQgPSBwMi5jb21tdW5pY2F0ZSgpWzBdCgoKUmVwbGFjaW5nIG9zLnN5c3RlbSgpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdHMgPSBvcy5zeXN0ZW0oIm15Y21kIiArICIgbXlhcmciKQo9PT4KcCA9IFBvcGVuKCJteWNtZCIgKyAiIG15YXJnIiwgc2hlbGw9VHJ1ZSkKcGlkLCBzdHMgPSBvcy53YWl0cGlkKHAucGlkLCAwKQoKTm90ZToKCiogQ2FsbGluZyB0aGUgcHJvZ3JhbSB0aHJvdWdoIHRoZSBzaGVsbCBpcyB1c3VhbGx5IG5vdCByZXF1aXJlZC4KCiogSXQncyBlYXNpZXIgdG8gbG9vayBhdCB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGUgdGhhbiB0aGUKICBleGl0c3RhdHVzLgoKQSBtb3JlIHJlYWwtd29ybGQgZXhhbXBsZSB3b3VsZCBsb29rIGxpa2UgdGhpczoKCnRyeToKICAgIHJldGNvZGUgPSBjYWxsKCJteWNtZCIgKyAiIG15YXJnIiwgc2hlbGw9VHJ1ZSkKICAgIGlmIHJldGNvZGUgPCAwOgogICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkNoaWxkIHdhcyB0ZXJtaW5hdGVkIGJ5IHNpZ25hbCIsIC1yZXRjb2RlCiAgICBlbHNlOgogICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkNoaWxkIHJldHVybmVkIiwgcmV0Y29kZQpleGNlcHQgT1NFcnJvciwgZToKICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkV4ZWN1dGlvbiBmYWlsZWQ6IiwgZQoKClJlcGxhY2luZyBvcy5zcGF3bioKLS0tLS0tLS0tLS0tLS0tLS0tLQpQX05PV0FJVCBleGFtcGxlOgoKcGlkID0gb3Muc3Bhd25scChvcy5QX05PV0FJVCwgIi9iaW4vbXljbWQiLCAibXljbWQiLCAibXlhcmciKQo9PT4KcGlkID0gUG9wZW4oWyIvYmluL215Y21kIiwgIm15YXJnIl0pLnBpZAoKClBfV0FJVCBleGFtcGxlOgoKcmV0Y29kZSA9IG9zLnNwYXdubHAob3MuUF9XQUlULCAiL2Jpbi9teWNtZCIsICJteWNtZCIsICJteWFyZyIpCj09PgpyZXRjb2RlID0gY2FsbChbIi9iaW4vbXljbWQiLCAibXlhcmciXSkKCgpWZWN0b3IgZXhhbXBsZToKCm9zLnNwYXdudnAob3MuUF9OT1dBSVQsIHBhdGgsIGFyZ3MpCj09PgpQb3BlbihbcGF0aF0gKyBhcmdzWzE6XSkKCgpFbnZpcm9ubWVudCBleGFtcGxlOgoKb3Muc3Bhd25scGUob3MuUF9OT1dBSVQsICIvYmluL215Y21kIiwgIm15Y21kIiwgIm15YXJnIiwgZW52KQo9PT4KUG9wZW4oWyIvYmluL215Y21kIiwgIm15YXJnIl0sIGVudj17IlBBVEgiOiAiL3Vzci9iaW4ifSkKCgpSZXBsYWNpbmcgb3MucG9wZW4qCi0tLS0tLS0tLS0tLS0tLS0tLS0KcGlwZSA9IG9zLnBvcGVuKCJjbWQiLCBtb2RlPSdyJywgYnVmc2l6ZSkKPT0+CnBpcGUgPSBQb3BlbigiY21kIiwgc2hlbGw9VHJ1ZSwgYnVmc2l6ZT1idWZzaXplLCBzdGRvdXQ9UElQRSkuc3Rkb3V0CgpwaXBlID0gb3MucG9wZW4oImNtZCIsIG1vZGU9J3cnLCBidWZzaXplKQo9PT4KcGlwZSA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsIHN0ZGluPVBJUEUpLnN0ZGluCgoKKGNoaWxkX3N0ZGluLCBjaGlsZF9zdGRvdXQpID0gb3MucG9wZW4yKCJjbWQiLCBtb2RlLCBidWZzaXplKQo9PT4KcCA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsCiAgICAgICAgICBzdGRpbj1QSVBFLCBzdGRvdXQ9UElQRSwgY2xvc2VfZmRzPVRydWUpCihjaGlsZF9zdGRpbiwgY2hpbGRfc3Rkb3V0KSA9IChwLnN0ZGluLCBwLnN0ZG91dCkKCgooY2hpbGRfc3RkaW4sCiBjaGlsZF9zdGRvdXQsCiBjaGlsZF9zdGRlcnIpID0gb3MucG9wZW4zKCJjbWQiLCBtb2RlLCBidWZzaXplKQo9PT4KcCA9IFBvcGVuKCJjbWQiLCBzaGVsbD1UcnVlLCBidWZzaXplPWJ1ZnNpemUsCiAgICAgICAgICBzdGRpbj1QSVBFLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3RkaW4sCiBjaGlsZF9zdGRvdXQsCiBjaGlsZF9zdGRlcnIpID0gKHAuc3RkaW4sIHAuc3Rkb3V0LCBwLnN0ZGVycikKCgooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dF9hbmRfc3RkZXJyKSA9IG9zLnBvcGVuNCgiY21kIiwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZSkKPT0+CnAgPSBQb3BlbigiY21kIiwgc2hlbGw9VHJ1ZSwgYnVmc2l6ZT1idWZzaXplLAogICAgICAgICAgc3RkaW49UElQRSwgc3Rkb3V0PVBJUEUsIHN0ZGVycj1TVERPVVQsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dF9hbmRfc3RkZXJyKSA9IChwLnN0ZGluLCBwLnN0ZG91dCkKCk9uIFVuaXgsIG9zLnBvcGVuMiwgb3MucG9wZW4zIGFuZCBvcy5wb3BlbjQgYWxzbyBhY2NlcHQgYSBzZXF1ZW5jZSBhcwp0aGUgY29tbWFuZCB0byBleGVjdXRlLCBpbiB3aGljaCBjYXNlIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZApkaXJlY3RseSB0byB0aGUgcHJvZ3JhbSB3aXRob3V0IHNoZWxsIGludGVydmVudGlvbi4gIFRoaXMgdXNhZ2UgY2FuIGJlCnJlcGxhY2VkIGFzIGZvbGxvd3M6CgooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dCkgPSBvcy5wb3BlbjIoWyIvYmluL2xzIiwgIi1sIl0sIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplKQo9PT4KcCA9IFBvcGVuKFsiL2Jpbi9scyIsICItbCJdLCBidWZzaXplPWJ1ZnNpemUsIHN0ZGluPVBJUEUsIHN0ZG91dD1QSVBFKQooY2hpbGRfc3RkaW4sIGNoaWxkX3N0ZG91dCkgPSAocC5zdGRpbiwgcC5zdGRvdXQpCgpSZXR1cm4gY29kZSBoYW5kbGluZyB0cmFuc2xhdGVzIGFzIGZvbGxvd3M6CgpwaXBlID0gb3MucG9wZW4oImNtZCIsICd3JykKLi4uCnJjID0gcGlwZS5jbG9zZSgpCmlmIHJjIGlzIG5vdCBOb25lIGFuZCByYyAlIDI1NjoKICAgIHByaW50ICJUaGVyZSB3ZXJlIHNvbWUgZXJyb3JzIgo9PT4KcHJvY2VzcyA9IFBvcGVuKCJjbWQiLCAndycsIHNoZWxsPVRydWUsIHN0ZGluPVBJUEUpCi4uLgpwcm9jZXNzLnN0ZGluLmNsb3NlKCkKaWYgcHJvY2Vzcy53YWl0KCkgIT0gMDoKICAgIHByaW50ICJUaGVyZSB3ZXJlIHNvbWUgZXJyb3JzIgoKClJlcGxhY2luZyBwb3BlbjIuKgotLS0tLS0tLS0tLS0tLS0tLS0KKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gcG9wZW4yLnBvcGVuMigic29tZXN0cmluZyIsIGJ1ZnNpemUsIG1vZGUpCj09PgpwID0gUG9wZW4oWyJzb21lc3RyaW5nIl0sIHNoZWxsPVRydWUsIGJ1ZnNpemU9YnVmc2l6ZQogICAgICAgICAgc3RkaW49UElQRSwgc3Rkb3V0PVBJUEUsIGNsb3NlX2Zkcz1UcnVlKQooY2hpbGRfc3Rkb3V0LCBjaGlsZF9zdGRpbikgPSAocC5zdGRvdXQsIHAuc3RkaW4pCgpPbiBVbml4LCBwb3BlbjIgYWxzbyBhY2NlcHRzIGEgc2VxdWVuY2UgYXMgdGhlIGNvbW1hbmQgdG8gZXhlY3V0ZSwgaW4Kd2hpY2ggY2FzZSBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIHByb2dyYW0gd2l0aG91dApzaGVsbCBpbnRlcnZlbnRpb24uICBUaGlzIHVzYWdlIGNhbiBiZSByZXBsYWNlZCBhcyBmb2xsb3dzOgoKKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gcG9wZW4yLnBvcGVuMihbIm15Y21kIiwgIm15YXJnIl0sIGJ1ZnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSkKPT0+CnAgPSBQb3BlbihbIm15Y21kIiwgIm15YXJnIl0sIGJ1ZnNpemU9YnVmc2l6ZSwKICAgICAgICAgIHN0ZGluPVBJUEUsIHN0ZG91dD1QSVBFLCBjbG9zZV9mZHM9VHJ1ZSkKKGNoaWxkX3N0ZG91dCwgY2hpbGRfc3RkaW4pID0gKHAuc3Rkb3V0LCBwLnN0ZGluKQoKVGhlIHBvcGVuMi5Qb3BlbjMgYW5kIHBvcGVuMi5Qb3BlbjQgYmFzaWNhbGx5IHdvcmtzIGFzIHN1YnByb2Nlc3MuUG9wZW4sCmV4Y2VwdCB0aGF0OgoKKiBzdWJwcm9jZXNzLlBvcGVuIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIGV4ZWN1dGlvbiBmYWlscwoqIHRoZSBjYXB0dXJlc3RkZXJyIGFyZ3VtZW50IGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0ZGVyciBhcmd1bWVudC4KKiBzdGRpbj1QSVBFIGFuZCBzdGRvdXQ9UElQRSBtdXN0IGJlIHNwZWNpZmllZC4KKiBwb3BlbjIgY2xvc2VzIGFsbCBmaWxlZGVzY3JpcHRvcnMgYnkgZGVmYXVsdCwgYnV0IHlvdSBoYXZlIHRvIHNwZWNpZnkKICBjbG9zZV9mZHM9VHJ1ZSB3aXRoIHN1YnByb2Nlc3MuUG9wZW4uCmn/////TnQFAAAAd2luMzJ0EgAAAENhbGxlZFByb2Nlc3NFcnJvcmMAAAAAAAAAAAIAAABCAAAAcyMAAABlAABaAQBkAABaAgBkAwBkAQCEAQBaBABkAgCEAABaBQBSUygEAAAAc/0AAABUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHByb2Nlc3MgcnVuIGJ5IGNoZWNrX2NhbGwoKSBvcgogICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogICAgVGhlIGV4aXQgc3RhdHVzIHdpbGwgYmUgc3RvcmVkIGluIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZTsKICAgIGNoZWNrX291dHB1dCgpIHdpbGwgYWxzbyBzdG9yZSB0aGUgb3V0cHV0IGluIHRoZSBvdXRwdXQgYXR0cmlidXRlLgogICAgYwQAAAAEAAAAAgAAAEMAAABzHwAAAHwBAHwAAF8AAHwCAHwAAF8BAHwDAHwAAF8CAGQAAFMoAQAAAE4oAwAAAHQKAAAAcmV0dXJuY29kZXQDAAAAY21kdAYAAABvdXRwdXQoBAAAAHQEAAAAc2VsZlICAAAAUgMAAABSBAAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQIAAAAX19pbml0X1+YAQAAcwYAAAAAAQkBCQFjAQAAAAEAAAADAAAAQwAAAHMUAAAAZAEAfAAAagAAfAAAagEAZgIAFlMoAgAAAE5zLQAAAENvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCgCAAAAUgMAAABSAgAAACgBAAAAUgUAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHl0BwAAAF9fc3RyX1+cAQAAcwIAAAAAAU4oBgAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX190BwAAAF9fZG9jX190BAAAAE5vbmVSBgAAAFIHAAAAKAAAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSAQAAAJIBAABzBgAAAAYFBgEMBHQLAAAAU1RBUlRVUElORk9jAAAAAAAAAAABAAAAQgAAAHMmAAAAZQAAWgEAZAAAWgIAZAEAWgQAZAEAWgUAZAEAWgYAZAAAWgcAUlMoAgAAAGkAAAAATigIAAAAUggAAABSCQAAAHQHAAAAZHdGbGFnc1ILAAAAdAkAAABoU3RkSW5wdXR0CgAAAGhTdGRPdXRwdXR0CQAAAGhTdGRFcnJvcnQLAAAAd1Nob3dXaW5kb3coAAAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIMAAAApAEAAHMKAAAABgEGAQYBBgEGAXQKAAAAcHl3aW50eXBlc2MAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBlAgBaAwBSUygAAAAAKAQAAABSCAAAAFIJAAAAdAcAAABJT0Vycm9ydAUAAABlcnJvcigAAAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5UhIAAACqAQAAcwIAAAAGAXQEAAAAcG9sbHQIAAAAUElQRV9CVUZpAAIAAHQFAAAAUG9wZW50BAAAAFBJUEV0BgAAAFNURE9VVHQEAAAAY2FsbHQKAAAAY2hlY2tfY2FsbHQMAAAAY2hlY2tfb3V0cHV0KAgAAAB0EgAAAENSRUFURV9ORVdfQ09OU09MRXQYAAAAQ1JFQVRFX05FV19QUk9DRVNTX0dST1VQdBAAAABTVERfSU5QVVRfSEFORExFdBEAAABTVERfT1VUUFVUX0hBTkRMRXQQAAAAU1REX0VSUk9SX0hBTkRMRXQHAAAAU1dfSElERXQUAAAAU1RBUlRGX1VTRVNUREhBTkRMRVN0FAAAAFNUQVJURl9VU0VTSE9XV0lORE9XUh0AAABSHgAAAFIfAAAAUiAAAABSIQAAAFIiAAAAUiMAAABSJAAAAHQLAAAAU0NfT1BFTl9NQVhpAAEAAGMAAAAAAgAAAAYAAABDAAAAc18AAAB4WAB0AAAeRF1PAH0AAHwAAGoBAGQBAHQCAGoDAIMAAX0BAHwBAGQAAGsJAHIIAHkRAHQAAGoFAHwAAIMBAAFXcVcABHQGAGsKAHJTAAEBAXFXAFhxCABxCABXZAAAUygCAAAATnQKAAAAX2RlYWRzdGF0ZSgHAAAAdAcAAABfYWN0aXZldA4AAABfaW50ZXJuYWxfcG9sbHQDAAAAc3lzdAYAAABtYXhpbnRSCwAAAHQGAAAAcmVtb3ZldAoAAABWYWx1ZUVycm9yKAIAAAB0BAAAAGluc3R0AwAAAHJlcygAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xp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c3NFcnJvciBvYmplY3Qgd2lsbCBoYXZlIHRoZSByZXR1cm4gY29kZSBpbiB0aGUgcmV0dXJuY29kZQogICAgYXR0cmlidXRlIGFuZCBvdXRwdXQgaW4gdGhlIG91dHB1dCBhdHRyaWJ1dGUuCgogICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CgogICAgPj4+IGNoZWNrX291dHB1dChbImxzIiwgIi1sIiwgIi9kZXYvbnVsbCJdKQogICAgJ2Nydy1ydy1ydy0gMSByb290IHJvb3QgMSwgMyBPY3QgMTggIDIwMDcgL2Rldi9udWxsXG4nCgogICAgVGhlIHN0ZG91dCBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCBhcyBpdCBpcyB1c2VkIGludGVybmFsbHkuCiAgICBUbyBjYXB0dXJlIHN0YW5kYXJkIGVycm9yIGluIHRoZSByZXN1bHQsIHVzZSBzdGRlcnI9U1RET1VULgoKICAgID4+PiBjaGVja19vdXRwdXQoWyIvYmluL3NoIiwgIi1jIiwKICAgIC4uLiAgICAgICAgICAgICAgICJscyAtbCBub25fZXhpc3RlbnRfZmlsZSA7IGV4aXQgMCJdLAogICAgLi4uICAgICAgICAgICAgICBzdGRlcnI9U1RET1VUKQogICAgJ2xzOiBub25fZXhpc3RlbnRfZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVxuJwogICAgdAYAAABzdGRvdXRzMwAAAHN0ZG91dCBhcmd1bWVudCBub3QgYWxsb3dlZCwgaXQgd2lsbCBiZSBvdmVycmlkZGVuLlI1AAAAaQAAAABSBAAAAE4oCAAAAFIsAAAAUhcAAABSGAAAAHQLAAAAY29tbXVuaWNhdGVSFQAAAFJZAAAAUgsAAABSAQAAACgHAAAAUlcAAABSWAAAAHQHAAAAcHJvY2Vzc1IEAAAAdAoAAAB1bnVzZWRfZXJyUloAAABSAwAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJv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AgCDAAB8AQB0AABqAgCDAABkAQBkAgB0AABqAwCDBgBTKAMAAABzMgAAAFJldHVybiBhIGR1cGxpY2F0ZSBvZiBoYW5kbGUsIHdoaWNoIGlzIGluaGVyaXRhYmxlaQAAAABpAQAAACgEAAAAUqUAAAB0DwAAAER1cGxpY2F0ZUhhbmRsZXQRAAAAR2V0Q3VycmVudFByb2Nlc3N0FQAAAERVUExJQ0FURV9TQU1FX0FDQ0VTUygCAAAAUgUAAAB0BgAAAGhhbmRsZSgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVKqAAAAagMAAHMGAAAAAAIPARIBYwEAAAACAAAABAAAAEMAAABziAAAAHQAAGoBAGoCAHQAAGoBAGoDAHQEAGoFAGQBAIMBAIMBAGQCAIMCAH0BAHQAAGoBAGoGAHwBAIMBAHOEAHQAAGoBAGoCAHQAAGoBAGoDAHQHAGoIAIMBAGQCAIMCAH0BAHQAAGoBAGoGAHwBAIMBAHOEAHQJAGQDAIMBAIIBAHGEAG4AAHwBAFMoBAAAAHMsAAAARmluZCBhbmQgcmV0dXJuIGFic29sdXQgcGF0aCB0byB3OXhwb3Blbi5leGVpAAAAAHMMAAAAdzl4cG9wZW4uZXhlc1oAAABDYW5ub3QgbG9jYXRlIHc5eHBvcGVuLmV4ZSwgd2hpY2ggaXMgbmVlZGVkIGZvciBQb3BlbiB0byB3b3JrIHdpdGggeW91ciBzaGVsbCBvciBwbGF0Zm9ybS4oCgAAAFJ+AAAAdAQAAABwYXRoUmUAAAB0BwAAAGRpcm5hbWVSpQAAAHQRAAAAR2V0TW9kdWxlRmlsZU5hbWV0BgAAAGV4aXN0c1IpAAAAdAsAAABleGVjX3ByZWZpeHQMAAAAUnVudGltZUVycm9yKAIAAABSBQAAAHQIAAAAdzl4cG9wZW4oAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHl0DgAAAF9maW5kX3c5eHBvcGVucQMAAHMSAAAAAAIJARgBCQESAxsBCQESARIDYxEAAAAYAAAACwAAAEMAAABzCgIAAHQAAHwBAHQBAGoCAIMCAHMhAHQDAHwBAIMBAH0BAG4AAHwIAGQHAGsIAHI5AHQFAIMAAH0IAG4AAGQHAHwLAHwOAHwQAGYDAGsHAHJ+AHwIAARqBgB0BwBqCABPAl8GAHwLAHwIAF8JAHwOAHwIAF8KAHwQAHwIAF8LAG4AAHwKAHIoAXwIAARqBgB0BwBqDABPAl8GAHQHAGoNAHwIAF8OAHQPAGoQAGoRAGQBAGQCAIMCAH0RAGQDAGoSAHwRAHwBAIMCAH0BAHQHAGoTAIMAAGQEAGsFAHP5AHQPAGoUAGoVAHwRAIMBAGoWAIMAAGQFAGsCAHIoAXwAAGoXAIMAAH0SAGQGAHwSAHwBAGYCABZ9AQB8CQB0BwBqGABPfQkAcSgBbgAAemoAeT4AdAcAahkAfAIAfAEAZAcAZAcAdBoAfAQADIMBAHwJAHwGAHwFAHwIAIMJAFwEAH0TAH0UAH0VAH0WAFduJQAEdBsAahwAawoAcpABAX0XAAF0HQB8FwBqHgCMAACCAQBuAQBYV2QHAHwLAGQHAGsJAHKuAXwLAGofAIMAAAFuAAB8DgBkBwBrCQByxwF8DgBqHwCDAAABbgAAfBAAZAcAawkAcuABfBAAah8AgwAAAW4AAFh0IAB8AABfIQB8EwB8AABfIgB8FQB8AABfIwB8FABqHwCDAAABZAcAUygIAAAAcyQAAABFeGVjdXRlIHByb2dyYW0gKE1TIFdpbmRvd3MgdmVyc2lvbil0BwAAAENPTVNQRUNzBwAAAGNtZC5leGVzCgAAAHt9IC9jICJ7fSJJAAAAgAAAAABzCwAAAGNvbW1hbmQuY29tcwcAAAAiJXMiICVzTigkAAAAUnEAAAB0BQAAAHR5cGVzdAsAAABTdHJpbmdUeXBlc1JsAAAAUgsAAABSDAAAAFINAAAAUqUAAABSIwAAAFIOAAAAUg8AAABSEAAAAFIkAAAAUiIAAABSEQAAAFJ+AAAAdAcAAABlbnZpcm9uUlkAAAB0BgAAAGZvcm1hdHQKAAAAR2V0VmVyc2lvblKwAAAAdAgAAABiYXNlbmFtZXQFAAAAbG93ZXJStwAAAFIdAAAAdA0AAABDcmVhdGVQcm9jZXNzUnIAAABSEgAAAFIUAAAAdAwAAABXaW5kb3dzRXJyb3JSNQAAAHQFAAAAQ2xvc2VSMAAAAFJwAAAAdAcAAABfaGFuZGxlUngAAAAoGAAAAFIFAAAAUjUAAABShgAAAFKHAAAAUogAAABSigAAAFKLAAAAUnkAAABSjAAAAFKNAAAAUokAAABSjgAAAFKPAAAAUpAAAABSkQAAAFKSAAAAUpMAAAB0BwAAAGNvbXNwZWNStgAAAHQCAAAAaHB0AgAAAGh0UngAAAB0AwAAAHRpZFI2AAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5UnsAAACCAwAAc1AAAAAACBIBDwMMAQwBFQESAQkBCQEMAgYBEgEMARUBEgESAR4FDAEQBxMDAwADAQwCBgEKAQMBAwEDARkBEgUXCAwBDQEMAQ0BDAEOAwkBCQEJAWMFAAAABQAAAAMAAABDAAAAc0YAAAB8AABqAABkAgBrCAByPwB8AgB8AABqAgBkAQCDAgB8AwBrAgByPwB8BAB8AABqAgCDAQB8AABfAABxPwBuAAB8AABqAABTKAMAAABzzgAAAENoZWNrIGlmIGNoaWxkIHByb2Nlc3MgaGFzIHRlcm1pbmF0ZWQuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgYXR0cmlidXRlLgoKICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IF9fZGVsX18sIHNvIGl0IGNhbiBvbmx5IHJlZmVyIHRvIG9iamVjdHMKICAgICAgICAgICAgaW4gaXRzIGxvY2FsIHNjb3BlLgoKICAgICAgICAgICAgaQAAAABOKAMAAABSAgAAAFILAAAAUsMAAAAoBQAAAFIFAAAAUiYAAAB0FAAAAF9XYWl0Rm9yU2luZ2xlT2JqZWN0dA4AAABfV0FJVF9PQkpFQ1RfMHQTAAAAX0dldEV4aXRDb2RlUHJvY2VzcygAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIoAAAAzwMAAHMIAAAAAAsPARgBGAFjAQAAAAEAAAADAAAAQwAAAHNEAAAAfAAAagAAZAEAawgAcj0AdAIAagMAfAAAagQAdAIAagUAgwIAAXQCAGoGAHwAAGoEAIMBAHwAAF8AAG4AAHwAAGoAAFMoAgAAAHNPAAAAV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgYXR0cmlidXRlLk4oBwAAAFICAAAAUgsAAABSpQAAAHQTAAAAV2FpdEZvclNpbmdsZU9iamVjdFLDAAAAdAgAAABJTkZJTklURXQSAAAAR2V0RXhpdENvZGVQcm9jZXNzKAEAAABSBQAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVJWAAAA4AMAAHMKAAAAAAMPAQwBCgEYAWMDAAAAAwAAAAIAAABDAAAAcxcAAAB8AgBqAAB8AQBqAQCDAACDAQABZAAAUygBAAAATigCAAAAUlAAAABSogAAACgDAAAAUgUAAAB0AgAAAGZodAYAAABidWZmZXIoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHl0DQAAAF9yZWFkZXJ0aHJlYWTqAwAAcwIAAAAAAWMCAAAABwAAAAYAAABDAAAAc80BAABkAAB9AgBkAAB9AwB8AABqAQByWQBnAAB9AgB0AgBqAwBkAQB8AABqBABkAgB8AABqAQB8AgBmAgCDAAJ9BAB8BABqBQB0BgCDAQABfAQAagcAgwAAAW4AAHwAAGoIAHKmAGcAAH0DAHQCAGoDAGQBAHwAAGoEAGQCAHwAAGoIAHwDAGYCAIMAAn0FAHwFAGoFAHQGAIMBAAF8BQBqBwCDAAABbgAAfAAAagkAchABfAEAZAAAawkAcgABeRQAfAAAagkAagoAfAEAgwEAAVdxAAEEdAsAawoAcvwAAX0GAAF8BgBqDAB0DABqDQBrAwBy/QCCAABx/QBxAAFYbgAAfAAAagkAag4AgwAAAW4AAHwAAGoBAHImAXwEAGoPAIMAAAFuAAB8AABqCAByPAF8BQBqDwCDAAABbgAAfAIAZAAAawkAclUBfAIAZAMAGX0CAG4AAHwDAGQAAGsJAHJuAXwDAGQDABl9AwBuAAB8AABqEAByuQF0EQB0EgBkBACDAgByuQF8AgByngF8AABqEwB8AgCDAQB9AgBuAAB8AwByuQF8AABqEwB8AwCDAQB9AwBxuQFuAAB8AABqFACDAAABfAIAfAMAZgIAUygFAAAATnQGAAAAdGFyZ2V0UjUAAABpAAAAAHQIAAAAbmV3bGluZXMoFQAAAFILAAAAUlsAAAB0CQAAAHRocmVhZGluZ3QGAAAAVGhyZWFkUtAAAAB0CQAAAHNldERhZW1vblIwAAAAdAUAAABzdGFydFJ3AAAAUnYAAABSnwAAAFITAAAAUjIAAABSoAAAAFJ/AAAAUmUAAABSeQAAAHQHAAAAaGFzYXR0cnQEAAAAZmlsZVKbAAAAUlYAAAAoBwAAAFIFAAAAUqQAAABSWwAAAFJ3AAAAdA0AAABzdGRvdXRfdGhyZWFkdA0AAABzdGRlcnJfdGhyZWFkUjYAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSowAAAO4DAABzSgAAAAABBgEGAgkBBgESARIBDQENAQkBBgESARIBDQENAgkBDAEDARQBDwESAQ0BEAIJAQ0BCQENAwwBDQEMAQ0GGAEGARIBBgEVAgoBYwIAAAACAAAAAwAAAEMAAABzhQAAAHwBAHQAAGoBAGsCAHIcAHwAAGoCAIMAAAFuZQB8AQB0AABqAwBrAgByRAB0BABqBQB8AABqBgB0AABqAwCDAgABbj0AfAEAdAAAagcAawIAcmwAdAQAagUAfAAAagYAdAAAagcAgwIAAW4VAHQIAGQBAGoJAHwBAIMBAIMBAIIBAGQCAFMoAwAAAHMpAAAAU2VuZCBhIHNpZ25hbCB0byB0aGUgcHJvY2VzcwogICAgICAgICAgICBzFgAAAFVuc3VwcG9ydGVkIHNpZ25hbDoge31OKAoAAAB0BgAAAHNpZ25hbHQHAAAAU0lHVEVSTXQJAAAAdGVybWluYXRldAwAAABDVFJMX0NfRVZFTlRSfgAAAHQEAAAAa2lsbFJ4AAAAdBAAAABDVFJMX0JSRUFLX0VWRU5UUiwAAABSvAAAACgCAAAAUgUAAAB0AwAAAHNpZygAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQLAAAAc2VuZF9zaWduYWwgBAAAcw4AAAAAAw8BDQEPARkBDwEZAmMBAAAAAwAAAAUAAABDAAAAc3YAAAB5FwB0AABqAQB8AABqAgBkAQCDAgABV25YAAR0AwBrCgBycQABfQEAAXwBAGoEAGQCAGsDAHI+AIIAAG4AAHQAAGoFAHwAAGoCAIMBAH0CAHwCAHQAAGoGAGsCAHJlAIIAAG4AAHwCAHwAAF8HAG4BAFhkAwBTKAQAAABzIwAAAFRlcm1pbmF0ZXMgdGhlIHByb2Nlc3MKICAgICAgICAgICAgaQEAAABpBQAAAE4oCAAAAFKlAAAAdBAAAABUZXJtaW5hdGVQcm9jZXNzUsMAAABSMQAAAHQIAAAAd2luZXJyb3JSzQAAAHQMAAAAU1RJTExfQUNUSVZFUgIAAAAoAwAAAFIFAAAAUjYAAAB0AgAAAHJjKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5Ut0AAAAsBAAAcxIAAAAAAwMBFwEPAw8BBgESAQ8BBgFjBAAAAAoAAAAGAAAAQwAAAHNLAQAAZAIAXAIAfQQAfQUAZAMAXAIAfQYAfQcAZAQAXAIAfQgAfQkAfAEAZAEAawgAcjMAbkUAfAEAdAEAawIAclQAfAAAagIAgwAAXAIAfQQAfQUAbiQAdAMAfAEAdAQAgwIAcmwAfAEAfQQAbgwAfAEAagUAgwAAfQQAfAIAZAEAawgAcocAbkUAfAIAdAEAawIAcqgAfAAAagIAgwAAXAIAfQYAfQcAbiQAdAMAfAIAdAQAgwIAcsAAfAIAfQcAbgwAfAIAagUAgwAAfQcAfAMAZAEAawgActsAbloAfAMAdAEAawIAcvwAfAAAagIAgwAAXAIAfQgAfQkAbjkAfAMAdAYAawIAchEBfAcAfQkAbiQAdAMAfAMAdAQAgwIAcikBfAMAfQkAbgwAfAMAagUAgwAAfQkAfAQAfAUAfAYAfAcAfAgAfAkAZgYAUygFAAAAc3wAAABDb25zdHJ1Y3QgYW5kIHJldHVybiB0dXBsZSB3aXRoIElPIG9iamVjdHM6CiAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwgZXJycmVhZCwgZXJyd3JpdGUKICAgICAgICAgICAgTigCAAAATk4oAgAAAE5OKAIAAABOTigHAAAAUgsAAABSGAAAAHQMAAAAcGlwZV9jbG9leGVjUnEAAABScgAAAFKpAAAAUhkAAAAoCgAAAFIFAAAAUnYAAABSWwAAAFJ3AAAAUo4AAABSjwAAAFKQAAAAUpEAAABSkgAAAFKTAAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5UnoAAABBBAAAczoAAAAABAwBDAEMAgwBAwEMARUBDwEJAwwCDAEDAQwBFQEPAQkDDAIMAQMBDAEVAQwBCQEPAQkDDAIGAQYBYwMAAAAFAAAABQAAAEMAAABzfgAAAHkNAHQAAGoBAH0DAFduFwAEdAIAawoAciYAAQEBZAEAfQMAbgEAWHQAAGoAAHwBAHQAAGoDAIMCAH0EAHwCAHJfAHQAAGoAAHwBAHQAAGoEAHwEAHwDAEKDAwABbhsAdAAAagAAfAEAdAAAagQAfAQAfAMAD0CDAwABZAAAUygCAAAATmkBAAAAKAUAAAB0BQAAAGZjbnRsdAoAAABGRF9DTE9FWEVDdA4AAABBdHRyaWJ1dGVFcnJvcnQHAAAARl9HRVRGRHQHAAAARl9TRVRGRCgFAAAAUgUAAABSmAAAAHQHAAAAY2xvZXhlY3QMAAAAY2xvZXhlY19mbGFndAMAAABvbGQoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHl0EQAAAF9zZXRfY2xvZXhlY19mbGFnbgQAAHMQAAAAAAEDAQ0BDQEKAhUBBgEdAmMBAAAAAwAAAAIAAABDAAAAczYAAAB0AABqAQCDAABcAgB9AQB9AgB8AABqAgB8AQCDAQABfAAAagIAfAIAgwEAAXwBAHwCAGYCAFMoAQAAAHMjAAAAQ3JlYXRlIGEgcGlwZSB3aXRoIEZEcyBzZXQgQ0xPRVhFQy4oAwAAAFJ+AAAAdAQAAABwaXBlUvAAAAAoAwAAAFIFAAAAdAEAAABydAEAAAB3KAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5UucAAAB7BAAAcwgAAAAABhIBDQENAWMCAAAAAwAAAAQAAABDAAAAc4EAAAB0AAB0AQBkAQCDAgByNgB0AQBqAgBkAgB8AQCDAgABdAEAagIAfAEAZAMAF3QDAIMCAAFuRwB4RAB0BABkAgB0AwCDAgBEXTMAfQIAfAIAfAEAawIAcl4AcUYAbgAAeREAdAEAagUAfAIAgwEAAVdxRgABAQFxRgBYcUYAV2QAAFMoBAAAAE50CgAAAGNsb3NlcmFuZ2VpAwAAAGkBAAAAKAYAAABS1wAAAFJ+AAAAUvQAAAB0BQAAAE1BWEZEdAYAAAB4cmFuZ2VSfwAAACgDAAAAUgUAAAB0AwAAAGJ1dHQBAAAAaSgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQKAAAAX2Nsb3NlX2Zkc4cEAABzFAAAAAABDwEQARcCFgEMAQYBAwERAQMBYxEAAAAeAAAABwAAAAMAAABzPQQAAHQAAHwBAHQBAGoCAIMCAHIeAHwBAGcBAH0BAG4MAHQDAHwBAIMBAH0BAHwKAHJWAGQBAGQCAGcCAHwBABd9AQB8AgByVgB8AgB8AQBkAwA8cVYAbgAAfAIAZAoAawgAcm8AfAEAZAMAGX0CAG4AAIgAAGoFAIMAAFwCAH0RAH0SAHo7A3qZAnQGAGoHAIMAAH0TAHQGAGoIAIMAAAF5EwB0CQBqCgCDAACIAABfCwBXbh0AAQEBfBMAcskAdAYAagwAgwAAAW4AAIIAAG4BAFh0DQCIAABfDgCIAABqCwBkAwBrAgByCQN5sgF8DABkCgBrCQByBwF0CQBqDwB8DACDAQABbgAAfA0AZAoAawkAciMBdAkAag8AfA0AgwEAAW4AAHwPAGQKAGsJAHI/AXQJAGoPAHwPAIMBAAFuAAB0CQBqDwB8EQCDAQABfA4AZAMAawIAcmoBdAkAahAAfA4AgwEAfQ4AbgAAfBAAZAMAawIAc4IBfBAAZAQAawIAcpQBdAkAahAAfBAAgwEAfRAAbgAAhwAAZgEAZAUAhgAAfRQAfBQAfAsAZAMAgwIAAXwUAHwOAGQEAIMCAAF8FAB8EABkBgCDAgABZAoAaAEAfRUAeEwAfAsAfA4AfBAAZwMARF07AH0WAHwWAHwVAGsHAHLjAXwWAGQGAGsEAHLjAXQJAGoPAHwWAIMBAAF8FQBqEQB8FgCDAQABceMBceMBV3wEAHI7AogAAGoSAGQHAHwSAIMAAQFuAAB8BQBkCgBrCQByVwJ0CQBqEwB8BQCDAQABbgAAfAMAcmcCfAMAgwAAAW4AAHwGAGQKAGsIAHKGAnQJAGoUAHwCAHwBAIMCAAFuEwB0CQBqFQB8AgB8AQB8BgCDAwABV25cAAEBAXQWAGoXAIMAAFwDAH0XAH0YAH0ZAHQYAGoZAHwXAHwYAHwZAIMDAH0aAGQIAGoaAHwaAIMBAHwYAF8bAHQJAGocAHwSAHQdAGoeAHwYAIMBAIMCAAFuAQBYdAkAah8AZAkAgwEAAW4AAHwTAHIcA3QGAGoMAIMAAAFuAABXZAoAdAkAag8AfBIAgwEAAVh8CwBkCgBrCQByVgN8DABkCgBrCQByVgN0CQBqDwB8CwCDAQABbgAAfA4AZAoAawkAcn4DfA0AZAoAawkAcn4DdAkAag8AfA4AgwEAAW4AAHwQAGQKAGsJAHKmA3wPAGQKAGsJAHKmA3QJAGoPAHwQAIMBAAFuAAB0IAB0CQBqIQB8EQBkCwCDAwB9GwBXZAoAdAkAag8AfBEAgwEAAVh8GwBkCABrAwByOQR5GgB0IAB0CQBqIgCIAABqCwBkAwCDAwABV24rAAR0IwBrCgByIAQBfRwAAXwcAGokAHQkAGolAGsDAHIhBIIAAHEhBG4BAFh0HQBqJgB8GwCDAQB9HQB8HQCCAQBuAABkCgBTKAwAAABzHwAAAEV4ZWN1dGUgcHJvZ3JhbSAoUE9TSVggdmVyc2lvbilzBwAAAC9iaW4vc2hzAgAAAC1jaQAAAABpAQAAAGMCAAAAAgAAAAMAAAATAAAAc0IAAAB8AAB8AQBrAgByHwCIAABqAAB8AAB0AQCDAgABbh8AfAAAZAAAawkAcj4AdAMAagQAfAAAfAEAgwIAAW4AAGQAAFMoAQAAAE4oBQAAAFLwAAAAUmIAAABSCwAAAFJ+AAAAdAQAAABkdXAyKAIAAAB0AQAAAGFSRgAAACgBAAAAUgUAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dAUAAABfZHVwMtAEAABzCAAAAAAEDAETAQwBaQIAAABS9wAAAFJhAAAAaf8AAABOaQAAEAAoJwAAAFJxAAAAUrkAAABSugAAAHQEAAAAbGlzdFILAAAAUucAAAB0AgAAAGdjdAkAAABpc2VuYWJsZWR0BwAAAGRpc2FibGVSfgAAAHQEAAAAZm9ya1J4AAAAdAYAAABlbmFibGVSMAAAAFJwAAAAUn8AAAB0AwAAAGR1cHQDAAAAYWRkUvkAAAB0BQAAAGNoZGlydAYAAABleGVjdnB0BwAAAGV4ZWN2cGVSKQAAAFJ9AAAAdAkAAAB0cmFjZWJhY2t0EAAAAGZvcm1hdF9leGNlcHRpb25SZQAAAHQPAAAAY2hpbGRfdHJhY2ViYWNrUp8AAAB0BgAAAHBpY2tsZXQFAAAAZHVtcHN0BQAAAF9leGl0UjcAAABSogAAAHQHAAAAd2FpdHBpZFIxAAAAUjIAAAB0BgAAAEVDSElMRHQFAAAAbG9hZHMoHgAAAFIFAAAAUjUAAABShgAAAFKHAAAAUogAAABSigAAAFKLAAAAUnkAAABSjAAAAFKNAAAAUokAAABSjgAAAFKPAAAAUpAAAABSkQAAAFKSAAAAUpMAAAB0DAAAAGVycnBpcGVfcmVhZHQNAAAAZXJycGlwZV93cml0ZXQOAAAAZ2Nfd2FzX2VuYWJsZWRS/AAAAHQGAAAAY2xvc2VkUpgAAABSlAAAAFKVAAAAdAIAAAB0YnQJAAAAZXhjX2xpbmVzUpoAAABSNgAAAHQPAAAAY2hpbGRfZXhjZXB0aW9uKAAAAAAoAQAAAFIFAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSewAAAJUEAABzngAAAAAIEgEMAgwCBgEQAQYBEAIMAQ0FEgEDAQMBDAMKAQMBEwEDAQYBDQEHAQkBDwIDAgwBEAEMARABDAEQAQ0FDAESARgBEgMPCA0BDQENBAkBFgEYAQ0BFAMGARMCDAEQAgYBCgIMARMCFwIDARUCCQEDAQkBEgEdBBADBgERAw4CGAEQARgBEAEYARAEGQMOAgwBAwEaAQ8BEgEKAQ8BYwYAAAAGAAAAAgAAAEMAAABzTQAAAHwCAHwBAIMBAHIfAHwDAHwBAIMBAAt8AABfAABuKgB8BAB8AQCDAQByPQB8BQB8AQCDAQB8AABfAABuDAB0AQBkAQCDAQCCAQBkAABTKAIAAABOcxoAAABVbmtub3duIGNoaWxkIGV4aXQgc3RhdHVzISgCAAAAUgIAAABStQAAACgGAAAAUgUAAAB0AwAAAHN0c3QMAAAAX1dJRlNJR05BTEVEdAkAAABfV1RFUk1TSUd0CgAAAF9XSUZFWElURUR0DAAAAF9XRVhJVFNUQVRVUygAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQSAAAAX2hhbmRsZV9leGl0c3RhdHVzHwUAAHMKAAAAAAUMARMBDAESA2MGAAAACQAAAAUAAABDAAAAc50AAAB8AABqAABkAgBrCABylgB5OwB8AgB8AABqAgB8AwCDAgBcAgB9BgB9BwB8BgB8AABqAgBrAgBySQB8AABqAwB8BwCDAQABbgAAV3GWAAR8BABrCgBykgABfQgAAXwBAGQCAGsJAHJ0AHwBAHwAAF8AAG4AAHwIAGoEAHwFAGsCAHKTAGQBAHwAAF8AAHGTAHGWAFhuAAB8AABqAABTKAMAAABz9QAAAENoZWNrIGlmIGNoaWxkIHByb2Nlc3MgaGFzIHRlcm1pbmF0ZWQuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgYXR0cmlidXRlLgoKICAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IF9fZGVsX18sIHNvIGl0IGNhbm5vdCByZWZlcmVuY2UgYW55dGhpbmcKICAgICAgICAgICAgb3V0c2lkZSBvZiB0aGUgbG9jYWwgc2NvcGUgKG5vciBjYW4gYW55IG1ldGhvZHMgaXQgY2FsbHMpLgoKICAgICAgICAgICAgaQAAAABOKAUAAABSAgAAAFILAAAAUngAAABSHQEAAFIyAAAAKAkAAABSBQAAAFImAAAAdAgAAABfd2FpdHBpZHQIAAAAX1dOT0hBTkd0CQAAAF9vc19lcnJvcnQHAAAAX0VDSElMRFJ4AAAAUhgBAABSNgAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIoAAAALQUAAHMWAAAAAAkPAQMBGAEPARQBDwEMAQwBDwYTAWMBAAAABAAAAAUAAABDAAAAc5sAAAB4kQB8AABqAABkAgBrCABykwB5IgB0AgB0AwBqBAB8AABqBQBkAQCDAwBcAgB9AQB9AgBXbjoABHQGAGsKAHJwAAF9AwABfAMAagcAdAcAaggAawMAcl4AggAAbgAAfAAAagUAfQEAZAEAfQIAbgEAWHwBAHwAAGoFAGsCAHIDAHwAAGoJAHwCAIMBAAFxAwBxAwBXfAAAagAAUygDAAAAc08AAABXYWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICBhdHRyaWJ1dGUuaQAAAABOKAoAAABSAgAAAFILAAAAUjcAAABSfgAAAFIOAQAAUngAAABSMQAAAFIyAAAAUg8BAABSHQEAACgEAAAAUgUAAABSeAAAAFIYAQAAUjYAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSVgAAAEgFAABzFgAAAAADEgEDASIBDwESAQYECQEKAw8BFAFjAgAAAAQAAAAEAAAAQwAAAHP9AAAAfAAAagAAci8AfAAAagAAagEAgwAAAXwBAHMvAHwAAGoAAGoCAIMAAAFxLwBuAAB0AwByTQB8AABqBAB8AQCDAQBcAgB9AgB9AwBuFQB8AABqBQB8AQCDAQBcAgB9AgB9AwB8AgBkAABrCQBygABkAQBqBwB8AgCDAQB9AgBuAAB8AwBkAABrCQByngBkAQBqBwB8AwCDAQB9AwBuAAB8AABqCABy6QB0CQB0CgBkAgCDAgBy6QB8AgByzgB8AABqCwB8AgCDAQB9AgBuAAB8AwBy6QB8AABqCwB8AwCDAQB9AwBx6QBuAAB8AABqDACDAAABfAIAfAMAZgIAUygDAAAATlJhAAAAUtIAAAAoDQAAAFJ2AAAAdAUAAABmbHVzaFJ/AAAAdAkAAABfaGFzX3BvbGx0FgAAAF9jb21tdW5pY2F0ZV93aXRoX3BvbGx0GAAAAF9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdFILAAAAUmUAAABSeQAAAFLXAAAAUtgAAABSmwAAAFJWAAAAKAQAAABSBQAAAFKkAAAAUlsAAABSdwAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVKjAAAAXQUAAHMkAAAAAAEJAw0BBgETAgYBGAIVAwwBEgEMARIGGAEGARIBBgEVAgoBYwIAAAAPAAAABwAAAAMAAABzPgIAAGQAAH0CAGQAAH0DAGkAAIkAAGkAAH0EAHQBAGoCAIMAAIkBAIcAAIcBAGYCAGQBAIYAAH0FAIcAAIcBAGYCAGQCAIYAAH0GAHwAAGoDAHJtAHwBAHJtAHwFAHwAAGoDAHQBAGoEAIMCAAFuAAB0AQBqBQB0AQBqBgBCfQcAfAAAagcAcrAAfAUAfAAAagcAfAcAgwIAAWcAAAR8BAB8AABqBwBqCACDAAA8fQIAbgAAfAAAagkAcuMAfAUAfAAAagkAfAcAgwIAAWcAAAR8BAB8AABqCQBqCACDAAA8fQMAbgAAZAMAfQgAeEgBiAAAcjMCeRAAiAEAagIAgwAAfQkAV241AAR0AQBqCgBrCgByOQEBfQoAAXwKAGoLAGQDABl0DABqDQBrAgByMwFx7ABuAACCAABuAQBYePMAfAkARF3rAFwCAH0LAH0MAHwMAHQBAGoEAEBy3wF8AQB8CAB8CAB0DgAXIX0NAHkaAHwIAHQPAGoQAHwLAHwNAIMCADd9CABXbjUABHQRAGsKAHK8AQF9CgABfAoAagwAdAwAahIAawIAcrYBfAYAfAsAgwEAAXHcAYIAAHEsAlh8CAB0EwB8AQCDAQBrBQByLAJ8BgB8CwCDAQABcSwCcUEBfAwAfAcAQHIiAnQPAGoUAHwLAGQEAIMCAH0OAHwOAHMOAnwGAHwLAIMBAAFuAAB8BAB8CwAZahUAfA4AgwEAAXFBAXwGAHwLAIMBAAFxQQFXcewAV3wCAHwDAGYCAFMoBQAAAE5jAgAAAAIAAAADAAAAEwAAAHMqAAAAiAEAagAAfAAAagEAgwAAfAEAgwIAAXwAAIgAAHwAAGoBAIMAADxkAABTKAEAAABOKAIAAAB0CAAAAHJlZ2lzdGVyUqkAAAAoAgAAAHQIAAAAZmlsZV9vYmp0CQAAAGV2ZW50bWFzaygCAAAAdAcAAABmZDJmaWxldAYAAABwb2xsZXIoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dBMAAAByZWdpc3Rlcl9hbmRfYXBwZW5khQUAAHMEAAAAAAEWAWMBAAAAAQAAAAIAAAATAAAAcywAAACIAQBqAAB8AACDAQABiAAAfAAAGWoBAIMAAAGIAABqAgB8AACDAQABZAAAUygBAAAATigDAAAAdAoAAAB1bnJlZ2lzdGVyUn8AAAB0AwAAAHBvcCgBAAAAUpgAAAAoAgAAAFIpAQAAUioBAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dBsAAABjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmWJBQAAcwYAAAAAAQ0BDgFpAAAAAGkAEAAAKBYAAABSCwAAAHQGAAAAc2VsZWN0UhUAAABSdgAAAHQHAAAAUE9MTE9VVHQGAAAAUE9MTElOdAcAAABQT0xMUFJJUlsAAABSqQAAAFJ3AAAAUhQAAABSNQAAAFIyAAAAUjMAAAB0CQAAAF9QSVBFX0JVRlJ+AAAAUp8AAABSMQAAAFKgAAAAUmMAAABSogAAAFJQAAAAKA8AAABSBQAAAFKkAAAAUlsAAABSdwAAAHQJAAAAZmQyb3V0cHV0UisBAABSLgEAAHQVAAAAc2VsZWN0X1BPTExJTl9QT0xMUFJJdAwAAABpbnB1dF9vZmZzZXR0BQAAAHJlYWR5UjYAAABSmAAAAHQEAAAAbW9kZXQFAAAAY2h1bmtSmgAAACgAAAAAKAIAAABSKQEAAFIqAQAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlSJAEAAH4FAABzVAAAAAABBgEGAQYBBgIMARIEEgUPARYCEAEJARABGgEJARABGgIGAQkBAwEQARIBFgEGAQcCEwENAREBAwEaAQ8BEgENAgcCEgEQAQoBEgEGAQ0BFAMSAmMCAAAADgAAAAcAAABDAAAAc5ACAABnAAB9AgBnAAB9AwBkAAB9BABkAAB9BQB8AABqAQByOgB8AQByOgB8AwBqAgB8AABqAQCDAQABbgAAfAAAagMAclwAfAIAagIAfAAAagMAgwEAAWcAAH0EAG4AAHwAAGoEAHJ+AHwCAGoCAHwAAGoEAIMBAAFnAAB9BQBuAABkAQB9BgB4/wF8AgBzkwB8AwByhQJ5IgB0BQBqBQB8AgB8AwBnAACDAwBcAwB9BwB9CAB9CQBXbjUABHQFAGoGAGsKAHLsAAF9CgABfAoAagcAZAEAGXQIAGoJAGsCAHLmAHGHAG4AAIIAAG4BAFh8AABqAQB8CABrBgBytgF8AQB8BgB8BgB0CgAXIX0LAHkfAHQLAGoMAHwAAGoBAGoNAIMAAHwLAIMCAH0MAFduSAAEdA4AawoAcnYBAX0KAAF8CgBqCAB0CABqDwBrAgBycAF8AABqAQBqEACDAAABfAMAahEAfAAAagEAgwEAAXGzAYIAAHG2AVh8BgB8DAA3fQYAfAYAdBIAfAEAgwEAawUAcrYBfAAAagEAahAAgwAAAXwDAGoRAHwAAGoBAIMBAAFxtgFuAAB8AABqAwB8BwBrBgByHAJ0CwBqEwB8AABqAwBqDQCDAABkAgCDAgB9DQB8DQBkAwBrAgByDAJ8AABqAwBqEACDAAABfAIAahEAfAAAagMAgwEAAW4AAHwEAGoCAHwNAIMBAAFuAAB8AABqBAB8BwBrBgByhwB0CwBqEwB8AABqBABqDQCDAABkAgCDAgB9DQB8DQBkAwBrAgBycgJ8AABqBABqEACDAAABfAIAahEAfAAAagQAgwEAAW4AAHwFAGoCAHwNAIMBAAFxhwBxhwBXfAQAfAUAZgIAUygEAAAATmkAAAAAaQAEAABSYQAAACgUAAAAUgsAAABSdgAAAFJQAAAAUlsAAABSdwAAAFIvAQAAUhQAAABSNQAAAFIyAAAAUjMAAABSMwEAAFJ+AAAAUp8AAABSqQAAAFIxAAAAUqAAAABSfwAAAFIrAAAAUmMAAABSogAAACgOAAAAUgUAAABSpAAAAHQIAAAAcmVhZF9zZXR0CQAAAHdyaXRlX3NldFJbAAAAUncAAABSNgEAAHQFAAAAcmxpc3R0BQAAAHdsaXN0dAUAAAB4bGlzdFI2AAAAUjkBAAB0DQAAAGJ5dGVzX3dyaXR0ZW5SmgAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIlAQAAuwUAAHNcAAAAAAEGAQYBBgEGAg8BEwEJARABCQEJARABCQIGAQ8BAwEiARIBFgEGAQcCDwERAQMBHwEPARIBDQETAgcCCgESAQ0BFgIPARsBDAENARMBEAIPARsBDAENARMBFAJjAgAAAAIAAAADAAAAQwAAAHMXAAAAdAAAagEAfAAAagIAfAEAgwIAAWQBAFMoAgAAAHMpAAAAU2VuZCBhIHNpZ25hbCB0byB0aGUgcHJvY2VzcwogICAgICAgICAgICBOKAMAAABSfgAAAFLfAAAAUngAAAAoAgAAAFIFAAAAUuEAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlS4gAAAPQFAABzAgAAAAADYwEAAAABAAAAAgAAAEMAAABzFAAAAHwAAGoAAHQBAGoCAIMBAAFkAQBTKAIAAABzLwAAAFRlcm1pbmF0ZSB0aGUgcHJvY2VzcyB3aXRoIFNJR1RFUk0KICAgICAgICAgICAgTigDAAAAUuIAAABS2wAAAFLcAAAAKAEAAABSBQAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVLdAAAA+QUAAHMCAAAAAANjAQAAAAEAAAACAAAAQwAAAHMUAAAAfAAAagAAdAEAagIAgwEAAWQBAFMoAgAAAHMqAAAAS2lsbCB0aGUgcHJvY2VzcyB3aXRoIFNJR0tJTEwKICAgICAgICAgICAgTigDAAAAUuIAAABS2wAAAHQHAAAAU0lHS0lMTCgBAAAAUgUAAAAoAAAAACgAAAAAc1EAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3N1YnByb2Nlc3MucHlS3wAAAP4FAABzAgAAAAADTigtAAAAUggAAABSCQAAAFILAAAAUmIAAABSBgAAAFKbAAAAUikAAABSKgAAAFInAAAAUp0AAABSXAAAAFIVAAAAUnUAAABSegAAAFKqAAAAUrcAAABSewAAAFKlAAAAUssAAAB0DQAAAFdBSVRfT0JKRUNUXzBSzQAAAFIoAAAAUlYAAABS0AAAAFKjAAAAUuIAAABS3QAAAFLfAAAAUjAAAABS8AAAAFLnAAAAUvkAAABSfgAAAHQLAAAAV0lGU0lHTkFMRUR0CAAAAFdURVJNU0lHdAkAAABXSUZFWElURUR0CwAAAFdFWElUU1RBVFVTUh0BAABSDgEAAHQHAAAAV05PSEFOR1IUAAAAUjIAAABSDwEAAFIkAQAAUiUBAAAoAAAAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weVIXAAAAiQIAAHNSAAAABgEGAQkBCQEJAQ9lCQYSDgwiCQQGBAk5CQcJEQlNAwEGAQYBDw4JCgkECTIJDAkPCQYJLQwNCQwJDgmKBgEMAQ8MCQEbGgkVCSEJPQk5CQUJBWMAAAAABQAAAAYAAABDAAAAcygBAAB0AABkAQBnAQBkAgB0AQCDAQFqAgCDAABkAwAZfQAAZAQAR0h8AABHSHQDAGoEAIMAAGQDAGsCAHJgAHQAAGQFAGcBAGQGAGQHAIQAAIMBAX0BAHwBAGoFAIMAAAFuAABkCABHSHQAAGQJAGcBAGQCAHQBAIMBAX0CAHQAAGQKAGQLAGcCAGQMAHwCAGoGAGQCAHQBAIMBAn0DAHQHAHwDAGoCAIMAAGQDABmDAQBHSEhkDQBHSHkYAHQAAGQOAGcBAIMBAGoCAIMAAEdIV25GAAR0CABrCgByFgEBfQQAAXwEAGoJAHQJAGoKAGsCAHIHAWQPAEdIZBAAR0h8BABqCwBHSHEkAWQRAEd8BABqCQBHSG4OAFh0DABqDQAEZBIAAklKZAAAUygTAAAATnQCAAAAcHNSWwAAAGkAAAAAcw0AAABQcm9jZXNzIGxpc3Q6dAIAAABpZFKHAAAAYwAAAAAAAAAAAgAAAFMAAABzDQAAAHQAAGoBAGQBAIMBAFMoAgAAAE5pZAAAACgCAAAAUn4AAAB0BgAAAHNldHVpZCgAAAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dAgAAAA8bGFtYmRhPhAGAABzAAAAAHMUAAAATG9va2luZyBmb3IgJ2hkYScuLi50BQAAAGRtZXNndAQAAABncmVwdAMAAABoZGFSdgAAAHMWAAAAVHJ5aW5nIGEgd2VpcmQgZmlsZS4uLnMZAAAAL3RoaXMvcGF0aC9kb2VzL25vdC9leGlzdHMnAAAAVGhlIGZpbGUgZGlkbid0IGV4aXN0LiAgSSB0aG91Z2h0IHNvLi4ucxAAAABDaGlsZCB0cmFjZWJhY2s6dAUAAABFcnJvcnMQAAAAR29zaC4gIE5vIGVycm9yLigOAAAAUhcAAABSGAAAAFJcAAAAUn4AAAB0BgAAAGdldHVpZFJWAAAAUlsAAAB0BAAAAHJlcHJSMQAAAFIyAAAAdAYAAABFTk9FTlRSCgEAAFIpAAAAUncAAAAoBQAAAHQFAAAAcGxpc3R0AQAAAHB0AgAAAHAxdAIAAABwMlI2AAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dAsAAABfZGVtb19wb3NpeAQGAABzKgAAAAAEHwEFAQUFEgEYAQ0FBQEVASEBFQUBAQUBAwEYAQ8BEgEFAQUBCwIQAmMAAAAAAwAAAAYAAABDAAAAc2wAAABkAQBHSHQAAGQCAGQDAHQBAGQEAHQCAIMBAn0AAHQAAGQFAGQGAHwAAGoDAGQDAHQBAIMBAn0BAHQEAHwBAGoFAIMAAGQHABmDAQBHSGQIAEdIdAAAZAkAgwEAfQIAfAIAagYAgwAAAWQAAFMoCgAAAE5zJQAAAExvb2tpbmcgZm9yICdQUk9NUFQnIGluIHNldCBvdXRwdXQuLi50AwAAAHNldFJbAAAAUokAAABzDQAAAGZpbmQgIlBST01QVCJSdgAAAGkAAAAAcxEAAABFeGVjdXRpbmcgY2FsYy4uLnQEAAAAY2FsYygHAAAAUhcAAABSGAAAAFIwAAAAUlsAAABSUAEAAFJcAAAAUlYAAAAoAwAAAFJUAQAAUlUBAABSUwEAACgAAAAAKAAAAABzUQAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvc3VicHJvY2Vzcy5weXQNAAAAX2RlbW9fd2luZG93cy0GAABzDgAAAAAEBQEYARsBFQUFAQwBdAgAAABfX21haW5fXygzAAAAUgoAAABSKQAAAHQIAAAAcGxhdGZvcm1SdQAAAFJ+AAAAUrkAAABSCAEAAFL+AAAAUtsAAABSMgAAAFJ8AAAAUgEAAABS0wAAAFKBAAAAUqUAAABSDAAAAFISAAAAUi8BAABS1wAAAFIjAQAAUugAAABSCwEAAFJOAAAAUjMBAAB0BwAAAF9fYWxsX19SHQAAAFIeAAAAUh8AAABSIAAAAFIhAAAAUiIAAABSIwAAAFIkAAAAUmQAAAB0BwAAAHN5c2NvbmZS9QAAAFInAAAAUi8AAABSGAAAAFIZAAAAUjcAAABSVQAAAFIaAAAAUhsAAABSHAAAAFJsAAAAdAYAAABvYmplY3RSFwAAAFJWAQAAUlkBAABSCAAAACgAAAAAKAAAAAAoAAAAAHNRAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9zdWJwcm9jZXNzLnB5dAgAAAA8bW9kdWxlPoUBAABzaAAAAAYCDAEPAgwBDAEMAQwBDAEMAxYOBgEMAQwBDAETBhYDDAEPAQwBDAUSAw8BDAIGAToFDAEGAQYBEAEDARMBAwEKAgYCCQsGAQYDCQ4JGwkLCRMJIQlGFv8A/wD/AH4JKQkRDAEGAQoC