bw0NCgAAAACiNI1jfWAAAOMAAAAAAAAAAAAAAAAAAAAADgAAAEAAAABzegIAAGQAWgBkAVoBZAKgAmUDZQRlAYMCoQFaBWQDZARsBloGZANkBGwHWgdlBmoIZAMZAGQFawJaCWUJch9lBFoKZQZqC6AMZAahAXJEZANkBGwLWgtlC6ANoQBkBRkAZAMZAFoOZQ6gDGQHoQFyOWQIWg9uDmUOoAxkCaEBckFkCloPbgZkC1oPbgNlBmoLWg9kNGQNZA6EAVoQZDRkD2QQhAFaEWQ0ZBFkEoQBWhJkNGQTZBSEAVoTZDVkFmQXhAFaFGQ0ZBhkGYQBWhVkNWQaZBuEAVoWRwBkHGQdhABkHWUXgwNaGGQeZB+EAFoZZCBkIYQAWhpkImQjhABaG2QkZCWEAFocZQ9kCGsCcsB6CGQDZARsHVoeZRpaH1cAbjEEAGUgeb8BAAEAAQB6CmQDZCZsIW0iWiIBAGUbWh9XAG4dBABlIHm8AQABAAEAeghkA2QEbCNaJGUcWh9XAG4LBABlIHm5AQABAAEAZRlaH1kAbgF3AFkAbgF3AFkAbgF3AGUlZCdrApABcjlkKFomZClaJ2QqWihlKWQrZQUWAIMBAQBlKWQsgwEBAGUYZSZlJ2QtZC6NA1oqZShEAF0NWitlKWQvZStlLGUqZSuDAmYCFgCDAQEAcd5lKWQwgwEBAGUYZSZlJ4MCWiplKEQAXQ1aK2UpZC9lK2UsZSplK4MCZgIWAIMBAQBx92UpZDGDAQEAZRhlJoMBWiplKEQAXQ5aK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAXEPZSlkMoMBAQBlGGUmZAxkM40CWiplKEQAXRBaK2UpZC9lK2UsZSplK4MCZgIWAIMBAQCQAXEqZARTAGQEUwApNnp5VXRpbGl0aWVzIGZvciBkZXRlcm1pbmluZyBhcHBsaWNhdGlvbi1zcGVjaWZpYyBkaXJzLgoKU2VlIDxodHRwOi8vZ2l0aHViLmNvbS9BY3RpdmVTdGF0ZS9hcHBkaXJzPiBmb3IgZGV0YWlscyBhbmQgdXNhZ2UuCikD6QEAAADpBAAAAOkDAAAA2gEu6QAAAABOcgMAAADaBGphdmHaB1dpbmRvd3PaBXdpbjMy2gNNYWPaBmRhcndpbtoGbGludXgyRmMEAAAAAAAAAAAAAAAGAAAABgAAAEMAAABzxgAAAHQAZAFrAnIvfAFkAnUAcgp8AH0BfANyDmQDcA9kBH0EdAFqAqADdAR8BIMBoQF9BXwAci58AWQFdQFyJ3QBagKgBXwFfAF8AKEDfQVuL3QBagKgBXwFfAChAn0Fbid0AGQGawJyQ3QBagKgBmQHoQF9BXwAckJ0AWoCoAV8BXwAoQJ9BW4TdAGgB2QIdAFqAqAGZAmhAaECfQV8AHJWdAFqAqAFfAV8AKECfQV8AHJhfAJyYXQBagKgBXwFfAKhAn0FfAVTACkKYUoHAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGRhdGEgZGlyIGZvciB0aGlzIGFwcGxpY2F0aW9uLgoKICAgICAgICAiYXBwbmFtZSIgaXMgdGhlIG5hbWUgb2YgYXBwbGljYXRpb24uCiAgICAgICAgICAgIElmIE5vbmUsIGp1c3QgdGhlIHN5c3RlbSBkaXJlY3RvcnkgaXMgcmV0dXJuZWQuCiAgICAgICAgImFwcGF1dGhvciIgKG9ubHkgdXNlZCBvbiBXaW5kb3dzKSBpcyB0aGUgbmFtZSBvZiB0aGUKICAgICAgICAgICAgYXBwYXV0aG9yIG9yIGRpc3RyaWJ1dGluZyBib2R5IGZvciB0aGlzIGFwcGxpY2F0aW9uLiBUeXBpY2FsbHkKICAgICAgICAgICAgaXQgaXMgdGhlIG93bmluZyBjb21wYW55IG5hbWUuIFRoaXMgZmFsbHMgYmFjayB0byBhcHBuYW1lLiBZb3UgbWF5CiAgICAgICAgICAgIHBhc3MgRmFsc2UgdG8gZGlzYWJsZSBpdC4KICAgICAgICAidmVyc2lvbiIgaXMgYW4gb3B0aW9uYWwgdmVyc2lvbiBwYXRoIGVsZW1lbnQgdG8gYXBwZW5kIHRvIHRoZQogICAgICAgICAgICBwYXRoLiBZb3UgbWlnaHQgd2FudCB0byB1c2UgdGhpcyBpZiB5b3Ugd2FudCBtdWx0aXBsZSB2ZXJzaW9ucwogICAgICAgICAgICBvZiB5b3VyIGFwcCB0byBiZSBhYmxlIHRvIHJ1biBpbmRlcGVuZGVudGx5LiBJZiB1c2VkLCB0aGlzCiAgICAgICAgICAgIHdvdWxkIHR5cGljYWxseSBiZSAiPG1ham9yPi48bWlub3I+Ii4KICAgICAgICAgICAgT25seSBhcHBsaWVkIHdoZW4gYXBwbmFtZSBpcyBwcmVzZW50LgogICAgICAgICJyb2FtaW5nIiAoYm9vbGVhbiwgZGVmYXVsdCBGYWxzZSkgY2FuIGJlIHNldCBUcnVlIHRvIHVzZSB0aGUgV2luZG93cwogICAgICAgICAgICByb2FtaW5nIGFwcGRhdGEgZGlyZWN0b3J5LiBUaGF0IG1lYW5zIHRoYXQgZm9yIHVzZXJzIG9uIGEgV2luZG93cwogICAgICAgICAgICBuZXR3b3JrIHNldHVwIGZvciByb2FtaW5nIHByb2ZpbGVzLCB0aGlzIHVzZXIgZGF0YSB3aWxsIGJlCiAgICAgICAgICAgIHN5bmMnZCBvbiBsb2dpbi4gU2VlCiAgICAgICAgICAgIDxodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvY2M3NjY0ODkoV1MuMTApLmFzcHg+CiAgICAgICAgICAgIGZvciBhIGRpc2N1c3Npb24gb2YgaXNzdWVzLgoKICAgIFR5cGljYWwgdXNlciBkYXRhIGRpcmVjdG9yaWVzIGFyZToKICAgICAgICBNYWMgT1MgWDogICAgICAgICAgICAgICB+L0xpYnJhcnkvQXBwbGljYXRpb24gU3VwcG9ydC88QXBwTmFtZT4KICAgICAgICBVbml4OiAgICAgICAgICAgICAgICAgICB+Ly5sb2NhbC9zaGFyZS88QXBwTmFtZT4gICAgIyBvciBpbiAkWERHX0RBVEFfSE9NRSwgaWYgZGVmaW5lZAogICAgICAgIFdpbiBYUCAobm90IHJvYW1pbmcpOiAgIEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlxBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFdpbiBYUCAocm9hbWluZyk6ICAgICAgIEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlxMb2NhbCBTZXR0aW5nc1xBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFdpbiA3ICAobm90IHJvYW1pbmcpOiAgIEM6XFVzZXJzXDx1c2VybmFtZT5cQXBwRGF0YVxMb2NhbFw8QXBwQXV0aG9yPlw8QXBwTmFtZT4KICAgICAgICBXaW4gNyAgKHJvYW1pbmcpOiAgICAgICBDOlxVc2Vyc1w8dXNlcm5hbWU+XEFwcERhdGFcUm9hbWluZ1w8QXBwQXV0aG9yPlw8QXBwTmFtZT4KCiAgICBGb3IgVW5peCwgd2UgZm9sbG93IHRoZSBYREcgc3BlYyBhbmQgc3VwcG9ydCAkWERHX0RBVEFfSE9NRS4KICAgIFRoYXQgbWVhbnMsIGJ5IGRlZmF1bHQgIn4vLmxvY2FsL3NoYXJlLzxBcHBOYW1lPiIuCiAgICByCAAAAE7aDUNTSURMX0FQUERBVEHaE0NTSURMX0xPQ0FMX0FQUERBVEFGcgoAAAB6Hn4vTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L9oNWERHX0RBVEFfSE9NRXoOfi8ubG9jYWwvc2hhcmWpCNoGc3lzdGVt2gJvc9oEcGF0aNoIbm9ybXBhdGjaD19nZXRfd2luX2ZvbGRlctoEam9pbtoKZXhwYW5kdXNlctoGZ2V0ZW52KQbaB2FwcG5hbWXaCWFwcGF1dGhvctoHdmVyc2lvbtoHcm9hbWluZ9oFY29uc3RyEgAAAKkAch0AAAD6aC9yb290L2dmMTgwLWRlbW8vY2FyYXZlbF91c2VyX3Byb2plY3QvdmVudi9saWIvcHl0aG9uMy4xMC9zaXRlLXBhY2thZ2VzL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB52g11c2VyX2RhdGFfZGlyLQAAAHMqAAAACCAIAQQBDAEQAQQBCAESAQ4CAoAIAQwBBAEOAQKAFAIEAQ4BCAEOAQQBch8AAABjBAAAAAAAAAAAAAAABgAAAAcAAAADAAAAcwoBAAB0AGQBawJyKXwBZAJ1AHIKiAB9AXQBagKgA3QEZAODAaEBfQSIAHIofAFkBHUBciF0AWoCoAV8BHwBiAChA30Ebld0AWoCoAV8BIgAoQJ9BG5PdABkBWsCcj10AWoCoAZkBqEBfQSIAHI8dAFqAqAFfASIAKECfQRuO3QBoAdkB3QBagigBWQIZAlnAqEBoQJ9BGQKZAuEAHwEoAl0AWoIoQFEAIMBfQWIAHJofAJyX3QBagKgBYgAfAKhAokAhwBmAWQMZAuECHwFRACDAX0FfANycnQBagigBXwFoQF9BHwEUwB8BWQNGQB9BHwEUwCIAHKDfAJyg3QBagKgBXwEfAKhAn0EfARTACkOYWkGAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNoYXJlZCBkYXRhIGRpciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KCiAgICAgICAgImFwcG5hbWUiIGlzIHRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uLgogICAgICAgICAgICBJZiBOb25lLCBqdXN0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGlzIHJldHVybmVkLgogICAgICAgICJhcHBhdXRob3IiIChvbmx5IHVzZWQgb24gV2luZG93cykgaXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIGFwcGF1dGhvciBvciBkaXN0cmlidXRpbmcgYm9keSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5CiAgICAgICAgICAgIGl0IGlzIHRoZSBvd25pbmcgY29tcGFueSBuYW1lLiBUaGlzIGZhbGxzIGJhY2sgdG8gYXBwbmFtZS4gWW91IG1heQogICAgICAgICAgICBwYXNzIEZhbHNlIHRvIGRpc2FibGUgaXQuCiAgICAgICAgInZlcnNpb24iIGlzIGFuIG9wdGlvbmFsIHZlcnNpb24gcGF0aCBlbGVtZW50IHRvIGFwcGVuZCB0byB0aGUKICAgICAgICAgICAgcGF0aC4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgaWYgeW91IHdhbnQgbXVsdGlwbGUgdmVyc2lvbnMKICAgICAgICAgICAgb2YgeW91ciBhcHAgdG8gYmUgYWJsZSB0byBydW4gaW5kZXBlbmRlbnRseS4gSWYgdXNlZCwgdGhpcwogICAgICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgIjxtYWpvcj4uPG1pbm9yPiIuCiAgICAgICAgICAgIE9ubHkgYXBwbGllZCB3aGVuIGFwcG5hbWUgaXMgcHJlc2VudC4KICAgICAgICAibXVsdGlwYXRoIiBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgb25seSBhcHBsaWNhYmxlIHRvICpuaXgKICAgICAgICAgICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIGVudGlyZSBsaXN0IG9mIGRhdGEgZGlycyBzaG91bGQgYmUKICAgICAgICAgICAgcmV0dXJuZWQuIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBpdGVtIGZyb20gWERHX0RBVEFfRElSUyBpcwogICAgICAgICAgICByZXR1cm5lZCwgb3IgJy91c3IvbG9jYWwvc2hhcmUvPEFwcE5hbWU+JywKICAgICAgICAgICAgaWYgWERHX0RBVEFfRElSUyBpcyBub3Qgc2V0CgogICAgVHlwaWNhbCBzaXRlIGRhdGEgZGlyZWN0b3JpZXMgYXJlOgogICAgICAgIE1hYyBPUyBYOiAgIC9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQvPEFwcE5hbWU+CiAgICAgICAgVW5peDogICAgICAgL3Vzci9sb2NhbC9zaGFyZS88QXBwTmFtZT4gb3IgL3Vzci9zaGFyZS88QXBwTmFtZT4KICAgICAgICBXaW4gWFA6ICAgICBDOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXEFsbCBVc2Vyc1xBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPgogICAgICAgIFZpc3RhOiAgICAgIChGYWlsISAiQzpcUHJvZ3JhbURhdGEiIGlzIGEgaGlkZGVuICpzeXN0ZW0qIGRpcmVjdG9yeSBvbiBWaXN0YS4pCiAgICAgICAgV2luIDc6ICAgICAgQzpcUHJvZ3JhbURhdGFcPEFwcEF1dGhvcj5cPEFwcE5hbWU+ICAgIyBIaWRkZW4sIGJ1dCB3cml0ZWFibGUgb24gV2luIDcuCgogICAgRm9yIFVuaXgsIHRoaXMgaXMgdXNpbmcgdGhlICRYREdfREFUQV9ESVJTWzBdIGRlZmF1bHQuCgogICAgV0FSTklORzogRG8gbm90IHVzZSB0aGlzIG9uIFdpbmRvd3MuIFNlZSB0aGUgVmlzdGEtRmFpbCBub3RlIGFib3ZlIGZvciB3aHkuCiAgICByCAAAAE7aFENTSURMX0NPTU1PTl9BUFBEQVRBRnIKAAAAehwvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J02g1YREdfREFUQV9ESVJTehAvdXNyL2xvY2FsL3NoYXJlegovdXNyL3NoYXJlYwEAAAAAAAAAAAAAAAIAAAAHAAAAUwAAAPMgAAAAZwB8AF0MfQF0AGoBoAJ8AaADdABqBKEBoQGRAnECUwByHQAAAKkFchEAAAByEgAAAHIWAAAA2gZyc3RyaXDaA3NlcKkC2gIuMNoBeHIdAAAAch0AAAByHgAAANoKPGxpc3Rjb21wPpUAAADzAgAAACAAeiFzaXRlX2RhdGFfZGlyLjxsb2NhbHM+LjxsaXN0Y29tcD5jAQAAAAAAAAAAAAAAAgAAAAYAAAATAAAA8xwAAABnAHwAXQp9AXQAagGgAnwBiABnAqEBkQJxAlMAch0AAACpA3IRAAAAciUAAAByFQAAAHImAAAAqQFyGAAAAHIdAAAAch4AAAByKQAAAJkAAADzAgAAABwAcgUAAAApCnIQAAAAchEAAAByEgAAAHITAAAAchQAAAByFQAAAHIWAAAAchcAAADaB3BhdGhzZXDaBXNwbGl0qQZyGAAAAHIZAAAAchoAAADaCW11bHRpcGF0aHISAAAA2ghwYXRobGlzdHIdAAAAci0AAAByHgAAANoNc2l0ZV9kYXRhX2RpcmQAAABzPAAAAAgfCAEEARABBAEIARIBDgICgAgBDAEEAQ4BAoAGBA4BBP8WAgQBBAEOARIBBAIMAQQDCP8EAQgCDgEEAXI0AAAAYwQAAAAAAAAAAAAAAAUAAAAGAAAAQwAAAPNYAAAAdABkAXYAcgx0AXwAfAFkAnwDgwR9BG4TdAKgA2QDdAJqBKAFZAShAaECfQR8AHIfdAJqBKAGfAR8AKECfQR8AHIqfAJyKnQCagSgBnwEfAKhAn0EfARTACkFYdQFAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGNvbmZpZyBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgInJvYW1pbmciIChib29sZWFuLCBkZWZhdWx0IEZhbHNlKSBjYW4gYmUgc2V0IFRydWUgdG8gdXNlIHRoZSBXaW5kb3dzCiAgICAgICAgICAgIHJvYW1pbmcgYXBwZGF0YSBkaXJlY3RvcnkuIFRoYXQgbWVhbnMgdGhhdCBmb3IgdXNlcnMgb24gYSBXaW5kb3dzCiAgICAgICAgICAgIG5ldHdvcmsgc2V0dXAgZm9yIHJvYW1pbmcgcHJvZmlsZXMsIHRoaXMgdXNlciBkYXRhIHdpbGwgYmUKICAgICAgICAgICAgc3luYydkIG9uIGxvZ2luLiBTZWUKICAgICAgICAgICAgPGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc2NjQ4OShXUy4xMCkuYXNweD4KICAgICAgICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiBpc3N1ZXMuCgogICAgVHlwaWNhbCB1c2VyIGNvbmZpZyBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICAgICAgICAgICAgICAgc2FtZSBhcyB1c2VyX2RhdGFfZGlyCiAgICAgICAgVW5peDogICAgICAgICAgICAgICAgICAgfi8uY29uZmlnLzxBcHBOYW1lPiAgICAgIyBvciBpbiAkWERHX0NPTkZJR19IT01FLCBpZiBkZWZpbmVkCiAgICAgICAgV2luICo6ICAgICAgICAgICAgICAgICAgc2FtZSBhcyB1c2VyX2RhdGFfZGlyCgogICAgRm9yIFVuaXgsIHdlIGZvbGxvdyB0aGUgWERHIHNwZWMgYW5kIHN1cHBvcnQgJFhER19DT05GSUdfSE9NRS4KICAgIFRoYXQgbWVhbnMsIGJ5IGRlZmF1bHQgIn4vLmNvbmZpZy88QXBwTmFtZT4iLgogICAgqQJyCAAAAHIKAAAATtoPWERHX0NPTkZJR19IT01Fegl+Ly5jb25maWepB3IQAAAAch8AAAByEQAAAHIXAAAAchIAAAByFgAAAHIVAAAAqQVyGAAAAHIZAAAAchoAAAByGwAAAHISAAAAch0AAAByHQAAAHIeAAAA2g91c2VyX2NvbmZpZ19kaXKmAAAAcxAAAAAIHRABFAIEAQ4BCAEOAQQBcjoAAABjBAAAAAAAAAAAAAAABgAAAAQAAAADAAAAc5YAAAB0AGQBdgByFnQBiAB8AYMCfQSIAHIUfAJyFHQCagOgBHwEfAKhAn0EfARTAHQCoAVkAmQDoQJ9BGQEZAWEAHwEoAZ0AmoHoQFEAIMBfQWIAHI7fAJyMnQCagOgBIgAfAKhAokAhwBmAWQGZAWECHwFRACDAX0FfANyRXQCagegBHwFoQF9BHwEUwB8BWQHGQB9BHwEUwApCGEHBgAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zaGFyZWQgZGF0YSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgIm11bHRpcGF0aCIgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIG9ubHkgYXBwbGljYWJsZSB0byAqbml4CiAgICAgICAgICAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBlbnRpcmUgbGlzdCBvZiBjb25maWcgZGlycyBzaG91bGQgYmUKICAgICAgICAgICAgcmV0dXJuZWQuIEJ5IGRlZmF1bHQsIHRoZSBmaXJzdCBpdGVtIGZyb20gWERHX0NPTkZJR19ESVJTIGlzCiAgICAgICAgICAgIHJldHVybmVkLCBvciAnL2V0Yy94ZGcvPEFwcE5hbWU+JywgaWYgWERHX0NPTkZJR19ESVJTIGlzIG5vdCBzZXQKCiAgICBUeXBpY2FsIHNpdGUgY29uZmlnIGRpcmVjdG9yaWVzIGFyZToKICAgICAgICBNYWMgT1MgWDogICBzYW1lIGFzIHNpdGVfZGF0YV9kaXIKICAgICAgICBVbml4OiAgICAgICAvZXRjL3hkZy88QXBwTmFtZT4gb3IgJFhER19DT05GSUdfRElSU1tpXS88QXBwTmFtZT4gZm9yIGVhY2ggdmFsdWUgaW4KICAgICAgICAgICAgICAgICAgICAkWERHX0NPTkZJR19ESVJTCiAgICAgICAgV2luICo6ICAgICAgc2FtZSBhcyBzaXRlX2RhdGFfZGlyCiAgICAgICAgVmlzdGE6ICAgICAgKEZhaWwhICJDOlxQcm9ncmFtRGF0YSIgaXMgYSBoaWRkZW4gKnN5c3RlbSogZGlyZWN0b3J5IG9uIFZpc3RhLikKCiAgICBGb3IgVW5peCwgdGhpcyBpcyB1c2luZyB0aGUgJFhER19DT05GSUdfRElSU1swXSBkZWZhdWx0LCBpZiBtdWx0aXBhdGg9RmFsc2UKCiAgICBXQVJOSU5HOiBEbyBub3QgdXNlIHRoaXMgb24gV2luZG93cy4gU2VlIHRoZSBWaXN0YS1GYWlsIG5vdGUgYWJvdmUgZm9yIHdoeS4KICAgIHI2AAAA2g9YREdfQ09ORklHX0RJUlN6CC9ldGMveGRnYwEAAAAAAAAAAAAAAAIAAAAHAAAAUwAAAHIiAAAAch0AAAByIwAAAHImAAAAch0AAAByHQAAAHIeAAAAcikAAAD0AAAAcioAAAB6I3NpdGVfY29uZmlnX2Rpci48bG9jYWxzPi48bGlzdGNvbXA+YwEAAAAAAAAAAAAAAAIAAAAGAAAAEwAAAHIrAAAAch0AAAByLAAAAHImAAAAci0AAAByHQAAAHIeAAAAcikAAAD4AAAAci4AAAByBQAAACkIchAAAAByNAAAAHIRAAAAchIAAAByFQAAAHIXAAAAcjAAAAByLwAAAHIxAAAAch0AAAByLQAAAHIeAAAA2g9zaXRlX2NvbmZpZ19kaXLOAAAAcyAAAAAIHgoBCAEOAQQPDPUWAQQBBAEOARIBBAIMAQQDCP8EAXI8AAAAVGMEAAAAAAAAAAAAAAAFAAAABgAAAEMAAABzzAAAAHQAZAFrAnIyfAFkAnUAcgp8AH0BdAFqAqADdARkA4MBoQF9BHwAcjF8AWQEdQFyIXQBagKgBXwEfAF8AKEDfQRuB3QBagKgBXwEfAChAn0EfANyMXQBagKgBXwEZAWhAn0Ebid0AGQGawJyRnQBagKgBmQHoQF9BHwAckV0AWoCoAV8BHwAoQJ9BG4TdAGgB2QIdAFqAqAGZAmhAaECfQR8AHJZdAFqAqAFfAR8AKECfQR8AHJkfAJyZHQBagKgBXwEfAKhAn0EfARTACkKYQQHAABSZXR1cm4gZnVsbCBwYXRoIHRvIHRoZSB1c2VyLXNwZWNpZmljIGNhY2hlIGRpciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KCiAgICAgICAgImFwcG5hbWUiIGlzIHRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uLgogICAgICAgICAgICBJZiBOb25lLCBqdXN0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGlzIHJldHVybmVkLgogICAgICAgICJhcHBhdXRob3IiIChvbmx5IHVzZWQgb24gV2luZG93cykgaXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIGFwcGF1dGhvciBvciBkaXN0cmlidXRpbmcgYm9keSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5CiAgICAgICAgICAgIGl0IGlzIHRoZSBvd25pbmcgY29tcGFueSBuYW1lLiBUaGlzIGZhbGxzIGJhY2sgdG8gYXBwbmFtZS4gWW91IG1heQogICAgICAgICAgICBwYXNzIEZhbHNlIHRvIGRpc2FibGUgaXQuCiAgICAgICAgInZlcnNpb24iIGlzIGFuIG9wdGlvbmFsIHZlcnNpb24gcGF0aCBlbGVtZW50IHRvIGFwcGVuZCB0byB0aGUKICAgICAgICAgICAgcGF0aC4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgaWYgeW91IHdhbnQgbXVsdGlwbGUgdmVyc2lvbnMKICAgICAgICAgICAgb2YgeW91ciBhcHAgdG8gYmUgYWJsZSB0byBydW4gaW5kZXBlbmRlbnRseS4gSWYgdXNlZCwgdGhpcwogICAgICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgIjxtYWpvcj4uPG1pbm9yPiIuCiAgICAgICAgICAgIE9ubHkgYXBwbGllZCB3aGVuIGFwcG5hbWUgaXMgcHJlc2VudC4KICAgICAgICAib3BpbmlvbiIgKGJvb2xlYW4pIGNhbiBiZSBGYWxzZSB0byBkaXNhYmxlIHRoZSBhcHBlbmRpbmcgb2YKICAgICAgICAgICAgIkNhY2hlIiB0byB0aGUgYmFzZSBhcHAgZGF0YSBkaXIgZm9yIFdpbmRvd3MuIFNlZQogICAgICAgICAgICBkaXNjdXNzaW9uIGJlbG93LgoKICAgIFR5cGljYWwgdXNlciBjYWNoZSBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICAgfi9MaWJyYXJ5L0NhY2hlcy88QXBwTmFtZT4KICAgICAgICBVbml4OiAgICAgICB+Ly5jYWNoZS88QXBwTmFtZT4gKFhERyBkZWZhdWx0KQogICAgICAgIFdpbiBYUDogICAgIEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlxMb2NhbCBTZXR0aW5nc1xBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPlxDYWNoZQogICAgICAgIFZpc3RhOiAgICAgIEM6XFVzZXJzXDx1c2VybmFtZT5cQXBwRGF0YVxMb2NhbFw8QXBwQXV0aG9yPlw8QXBwTmFtZT5cQ2FjaGUKCiAgICBPbiBXaW5kb3dzIHRoZSBvbmx5IHN1Z2dlc3Rpb24gaW4gdGhlIE1TRE4gZG9jcyBpcyB0aGF0IGxvY2FsIHNldHRpbmdzIGdvIGluCiAgICB0aGUgYENTSURMX0xPQ0FMX0FQUERBVEFgIGRpcmVjdG9yeS4gVGhpcyBpcyBpZGVudGljYWwgdG8gdGhlIG5vbi1yb2FtaW5nCiAgICBhcHAgZGF0YSBkaXIgKHRoZSBkZWZhdWx0IHJldHVybmVkIGJ5IGB1c2VyX2RhdGFfZGlyYCBhYm92ZSkuIEFwcHMgdHlwaWNhbGx5CiAgICBwdXQgY2FjaGUgZGF0YSBzb21ld2hlcmUgKnVuZGVyKiB0aGUgZ2l2ZW4gZGlyIGhlcmUuIFNvbWUgZXhhbXBsZXM6CiAgICAgICAgLi4uXE1vemlsbGFcRmlyZWZveFxQcm9maWxlc1w8UHJvZmlsZU5hbWU+XENhY2hlCiAgICAgICAgLi4uXEFjbWVcU3VwZXJBcHBcQ2FjaGVcMS4wCiAgICBPUElOSU9OOiBUaGlzIGZ1bmN0aW9uIGFwcGVuZHMgIkNhY2hlIiB0byB0aGUgYENTSURMX0xPQ0FMX0FQUERBVEFgIHZhbHVlLgogICAgVGhpcyBjYW4gYmUgZGlzYWJsZWQgd2l0aCB0aGUgYG9waW5pb249RmFsc2VgIG9wdGlvbi4KICAgIHIIAAAATnINAAAARtoFQ2FjaGVyCgAAAHoQfi9MaWJyYXJ5L0NhY2hlc9oOWERHX0NBQ0hFX0hPTUV6CH4vLmNhY2hlcg8AAACpBXIYAAAAchkAAAByGgAAANoHb3BpbmlvbnISAAAAch0AAAByHQAAAHIeAAAA2g51c2VyX2NhY2hlX2RpcgEBAABzLAAAAAghCAEEARABBAEIARIBDgIEAQ4BAoAIAQwBBAEOAQKAFAIEAQ4BCAEOAQQBckEAAABjBAAAAAAAAAAAAAAABQAAAAYAAABDAAAAcjUAAAApBWETBgAAUmV0dXJuIGZ1bGwgcGF0aCB0byB0aGUgdXNlci1zcGVjaWZpYyBzdGF0ZSBkaXIgZm9yIHRoaXMgYXBwbGljYXRpb24uCgogICAgICAgICJhcHBuYW1lIiBpcyB0aGUgbmFtZSBvZiBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgSWYgTm9uZSwganVzdCB0aGUgc3lzdGVtIGRpcmVjdG9yeSBpcyByZXR1cm5lZC4KICAgICAgICAiYXBwYXV0aG9yIiAob25seSB1c2VkIG9uIFdpbmRvd3MpIGlzIHRoZSBuYW1lIG9mIHRoZQogICAgICAgICAgICBhcHBhdXRob3Igb3IgZGlzdHJpYnV0aW5nIGJvZHkgZm9yIHRoaXMgYXBwbGljYXRpb24uIFR5cGljYWxseQogICAgICAgICAgICBpdCBpcyB0aGUgb3duaW5nIGNvbXBhbnkgbmFtZS4gVGhpcyBmYWxscyBiYWNrIHRvIGFwcG5hbWUuIFlvdSBtYXkKICAgICAgICAgICAgcGFzcyBGYWxzZSB0byBkaXNhYmxlIGl0LgogICAgICAgICJ2ZXJzaW9uIiBpcyBhbiBvcHRpb25hbCB2ZXJzaW9uIHBhdGggZWxlbWVudCB0byBhcHBlbmQgdG8gdGhlCiAgICAgICAgICAgIHBhdGguIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGlzIGlmIHlvdSB3YW50IG11bHRpcGxlIHZlcnNpb25zCiAgICAgICAgICAgIG9mIHlvdXIgYXBwIHRvIGJlIGFibGUgdG8gcnVuIGluZGVwZW5kZW50bHkuIElmIHVzZWQsIHRoaXMKICAgICAgICAgICAgd291bGQgdHlwaWNhbGx5IGJlICI8bWFqb3I+LjxtaW5vcj4iLgogICAgICAgICAgICBPbmx5IGFwcGxpZWQgd2hlbiBhcHBuYW1lIGlzIHByZXNlbnQuCiAgICAgICAgInJvYW1pbmciIChib29sZWFuLCBkZWZhdWx0IEZhbHNlKSBjYW4gYmUgc2V0IFRydWUgdG8gdXNlIHRoZSBXaW5kb3dzCiAgICAgICAgICAgIHJvYW1pbmcgYXBwZGF0YSBkaXJlY3RvcnkuIFRoYXQgbWVhbnMgdGhhdCBmb3IgdXNlcnMgb24gYSBXaW5kb3dzCiAgICAgICAgICAgIG5ldHdvcmsgc2V0dXAgZm9yIHJvYW1pbmcgcHJvZmlsZXMsIHRoaXMgdXNlciBkYXRhIHdpbGwgYmUKICAgICAgICAgICAgc3luYydkIG9uIGxvZ2luLiBTZWUKICAgICAgICAgICAgPGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS9jYzc2NjQ4OShXUy4xMCkuYXNweD4KICAgICAgICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiBpc3N1ZXMuCgogICAgVHlwaWNhbCB1c2VyIHN0YXRlIGRpcmVjdG9yaWVzIGFyZToKICAgICAgICBNYWMgT1MgWDogIHNhbWUgYXMgdXNlcl9kYXRhX2RpcgogICAgICAgIFVuaXg6ICAgICAgfi8ubG9jYWwvc3RhdGUvPEFwcE5hbWU+ICAgIyBvciBpbiAkWERHX1NUQVRFX0hPTUUsIGlmIGRlZmluZWQKICAgICAgICBXaW4gKjogICAgIHNhbWUgYXMgdXNlcl9kYXRhX2RpcgoKICAgIEZvciBVbml4LCB3ZSBmb2xsb3cgdGhpcyBEZWJpYW4gcHJvcG9zYWwgPGh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL1hER0Jhc2VEaXJlY3RvcnlTcGVjaWZpY2F0aW9uI3N0YXRlPgogICAgdG8gZXh0ZW5kIHRoZSBYREcgc3BlYyBhbmQgc3VwcG9ydCAkWERHX1NUQVRFX0hPTUUuCgogICAgVGhhdCBtZWFucywgYnkgZGVmYXVsdCAifi8ubG9jYWwvc3RhdGUvPEFwcE5hbWU+Ii4KICAgIHI2AAAATtoOWERHX1NUQVRFX0hPTUV6Dn4vLmxvY2FsL3N0YXRlcjgAAAByOQAAAHIdAAAAch0AAAByHgAAANoOdXNlcl9zdGF0ZV9kaXI6AQAAcxAAAAAIHxABFAIEAQ4BCAEOAQQBckMAAABjBAAAAAAAAAAAAAAABQAAAAUAAABDAAAAc4gAAAB0AGQBawJyEHQBagKgA3QBagKgBGQCoQF8AKECfQRuJ3QAZANrAnImdAV8AHwBfAKDA30EZAR9AnwDciV0AWoCoAN8BGQFoQJ9BG4RdAZ8AHwBfAKDA30EZAR9AnwDcjd0AWoCoAN8BGQGoQJ9BHwAckJ8AnJCdAFqAqADfAR8AqECfQR8BFMAKQdhvQYAAFJldHVybiBmdWxsIHBhdGggdG8gdGhlIHVzZXItc3BlY2lmaWMgbG9nIGRpciBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KCiAgICAgICAgImFwcG5hbWUiIGlzIHRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uLgogICAgICAgICAgICBJZiBOb25lLCBqdXN0IHRoZSBzeXN0ZW0gZGlyZWN0b3J5IGlzIHJldHVybmVkLgogICAgICAgICJhcHBhdXRob3IiIChvbmx5IHVzZWQgb24gV2luZG93cykgaXMgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIGFwcGF1dGhvciBvciBkaXN0cmlidXRpbmcgYm9keSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gVHlwaWNhbGx5CiAgICAgICAgICAgIGl0IGlzIHRoZSBvd25pbmcgY29tcGFueSBuYW1lLiBUaGlzIGZhbGxzIGJhY2sgdG8gYXBwbmFtZS4gWW91IG1heQogICAgICAgICAgICBwYXNzIEZhbHNlIHRvIGRpc2FibGUgaXQuCiAgICAgICAgInZlcnNpb24iIGlzIGFuIG9wdGlvbmFsIHZlcnNpb24gcGF0aCBlbGVtZW50IHRvIGFwcGVuZCB0byB0aGUKICAgICAgICAgICAgcGF0aC4gWW91IG1pZ2h0IHdhbnQgdG8gdXNlIHRoaXMgaWYgeW91IHdhbnQgbXVsdGlwbGUgdmVyc2lvbnMKICAgICAgICAgICAgb2YgeW91ciBhcHAgdG8gYmUgYWJsZSB0byBydW4gaW5kZXBlbmRlbnRseS4gSWYgdXNlZCwgdGhpcwogICAgICAgICAgICB3b3VsZCB0eXBpY2FsbHkgYmUgIjxtYWpvcj4uPG1pbm9yPiIuCiAgICAgICAgICAgIE9ubHkgYXBwbGllZCB3aGVuIGFwcG5hbWUgaXMgcHJlc2VudC4KICAgICAgICAib3BpbmlvbiIgKGJvb2xlYW4pIGNhbiBiZSBGYWxzZSB0byBkaXNhYmxlIHRoZSBhcHBlbmRpbmcgb2YKICAgICAgICAgICAgIkxvZ3MiIHRvIHRoZSBiYXNlIGFwcCBkYXRhIGRpciBmb3IgV2luZG93cywgYW5kICJsb2ciIHRvIHRoZQogICAgICAgICAgICBiYXNlIGNhY2hlIGRpciBmb3IgVW5peC4gU2VlIGRpc2N1c3Npb24gYmVsb3cuCgogICAgVHlwaWNhbCB1c2VyIGxvZyBkaXJlY3RvcmllcyBhcmU6CiAgICAgICAgTWFjIE9TIFg6ICAgfi9MaWJyYXJ5L0xvZ3MvPEFwcE5hbWU+CiAgICAgICAgVW5peDogICAgICAgfi8uY2FjaGUvPEFwcE5hbWU+L2xvZyAgIyBvciB1bmRlciAkWERHX0NBQ0hFX0hPTUUgaWYgZGVmaW5lZAogICAgICAgIFdpbiBYUDogICAgIEM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcPHVzZXJuYW1lPlxMb2NhbCBTZXR0aW5nc1xBcHBsaWNhdGlvbiBEYXRhXDxBcHBBdXRob3I+XDxBcHBOYW1lPlxMb2dzCiAgICAgICAgVmlzdGE6ICAgICAgQzpcVXNlcnNcPHVzZXJuYW1lPlxBcHBEYXRhXExvY2FsXDxBcHBBdXRob3I+XDxBcHBOYW1lPlxMb2dzCgogICAgT24gV2luZG93cyB0aGUgb25seSBzdWdnZXN0aW9uIGluIHRoZSBNU0ROIGRvY3MgaXMgdGhhdCBs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