-- Obfuscated Lua script for Delta X local function mozbZs(data) local t = 'ABCDEFGHIJ' .. 'KLMNOPQRSTUVWXYZ' .. 'abcdefghijklmnopqrstuvwxyz' .. '0123456789+/' return string.gsub(data, '[^'..t..'=]', '') end local function lwMcOq(x) local t = 'ABCDEFGHIJ' .. 'KLMNOPQRSTUVWXYZ' .. 'abcdefghijklmnopqrstuvwxyz' .. '0123456789+/' if x == '=' then return '' end local r, f = '', (t:find(x)-1) for i=6, 1, -1 do r = r .. (f%2^i-f%2^(i-1)>0 and '1' or '0') end return r end local function PtxBiw(input) local s1 = mozbZs(input) local s2 = s1:gsub('.', function(x) return lwMcOq(x) end) return s2:gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) if #x ~= 8 then return '' end local c = 0 for i=1, 8 do c = c + (x:sub(i,i)=='1' and 2^(8-i) or 0) end return string.char(c) end) end local WqWnXv = "LS0gS2V5IFN5c3RlbSBHVUkgU2NyaXB0IGZvciBEZWx0YSBYIEluamVjdG9yCi0tIFVwZGF0ZWQgdmVyc2lvbiB3aXRoIGltcHJvdmVkIEdVSSwgZGVidWcgcHJpbnRzLCBhbmQgZW5zdXJlZCBrZXkgbG9hZGluZwotLSBOZXc6IExvYWQgYm90TGluayBmcm9tIGtleXMubHVhIGZvciBHZXQgS2V5IGJ1dHRvbgotLSBOZXc6IERlZmF1bHQgbGFuZ3VhZ2UgaXMgUnVzc2lhbiwgZmxhZyBzdGFydHMgYXMgQnJpdGlzaCAo8J+HrPCfh6cpLCB0b2dnbGVzIHRvIFJ1c3NpYW4gKPCfh7fwn4e6KSBhbmQgYmFjawoKbG9jYWwgSHR0cFNlcnZpY2UgPSBnYW1lOkdldFNlcnZpY2UoIkh0dHBTZXJ2aWNlIikKbG9jYWwgUGxheWVycyA9IGdhbWU6R2V0U2VydmljZSgiUGxheWVycyIpCmxvY2FsIFR3ZWVuU2VydmljZSA9IGdhbWU6R2V0U2VydmljZSgiVHdlZW5TZXJ2aWNlIikKbG9jYWwgVXNlcklucHV0U2VydmljZSA9IGdhbWU6R2V0U2VydmljZSgiVXNlcklucHV0U2VydmljZSIpCmxvY2FsIHBsYXllciA9IFBsYXllcnMuTG9jYWxQbGF5ZXIKbG9jYWwgcGxheWVyR3VpID0gcGxheWVyOldhaXRGb3JDaGlsZCgiUGxheWVyR3VpIikKCi0tIFNjYWxpbmcgZmFjdG9yIGZvciBHVUkgKHJlZHVjZWQgYnkgMS4yNSB0aW1lczogb3JpZ2luYWwgMi8zIOKJiDAuNjY2LCBuZXcg4omIMC41MzMpCmxvY2FsIHNjYWxlID0gMi8zLjc1ICAtLSAyLzMgLyAxLjI1ID0gMi8zLjc1IOKJiDAuNTMzCgotLSBMYW5ndWFnZSB0b2dnbGU6IGZhbHNlIGZvciBSdXNzaWFuIChkZWZhdWx0KSwgdHJ1ZSBmb3IgRW5nbGlzaApsb2NhbCBpc0VuZ2xpc2ggPSBmYWxzZQoKLS0gQ3JlYXRlIFNjcmVlbkd1aQpsb2NhbCBzY3JlZW5HdWkgPSBJbnN0YW5jZS5uZXcoIlNjcmVlbkd1aSIpCnNjcmVlbkd1aS5OYW1lID0gIktleVN5c3RlbUdVSSIKc2NyZWVuR3VpLlBhcmVudCA9IHBsYXllckd1aQpzY3JlZW5HdWkuUmVzZXRPblNwYXduID0gZmFsc2UKCi0tIE1haW4gRnJhbWUgd2l0aCBpbXByb3ZlZCBzdHlsaW5nIChkYXJrZXIgdGhlbWUsIGJvcmRlcnMpCmxvY2FsIG1haW5GcmFtZSA9IEluc3RhbmNlLm5ldygiRnJhbWUiKQptYWluRnJhbWUuTmFtZSA9ICJNYWluRnJhbWUiCm1haW5GcmFtZS5TaXplID0gVURpbTIubmV3KDAsIDQ1MCAqIHNjYWxlLCAwLCA0MDAgKiBzY2FsZSkgIC0tIEluY3JlYXNlZCBoZWlnaHQgZm9yIG5ldyBidXR0b24KbWFpbkZyYW1lLlBvc2l0aW9uID0gVURpbTIubmV3KDAuNSwgLTIyNSAqIHNjYWxlLCAwLjUsIC0yMDAgKiBzY2FsZSkKbWFpbkZyYW1lLkJhY2tncm91bmRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigyMCwgMjAsIDIwKSAgLS0gRGFya2VyIGJhY2tncm91bmQKbWFpbkZyYW1lLkJvcmRlclNpemVQaXhlbCA9IDAKbWFpbkZyYW1lLkFjdGl2ZSA9IHRydWUKbWFpbkZyYW1lLkRyYWdnYWJsZSA9IHRydWUKbWFpbkZyYW1lLlBhcmVudCA9IHNjcmVlbkd1aQoKbG9jYWwgY29ybmVyID0gSW5zdGFuY2UubmV3KCJVSUNvcm5lciIpCmNvcm5lci5Db3JuZXJSYWRpdXMgPSBVRGltLm5ldygwLCAxMiAqIHNjYWxlKSAgLS0gU29mdGVyIGNvcm5lcnMKY29ybmVyLlBhcmVudCA9IG1haW5GcmFtZQoKLS0gQWRkIGEgc3VidGxlIHN0cm9rZSBmb3IgYm9yZGVyIGVmZmVjdApsb2NhbCBzdHJva2UgPSBJbnN0YW5jZS5uZXcoIlVJU3Ryb2tlIikKc3Ryb2tlLkNvbG9yID0gQ29sb3IzLmZyb21SR0IoNTAsIDUwLCA1MCkKc3Ryb2tlLlRoaWNrbmVzcyA9IDEKc3Ryb2tlLlRyYW5zcGFyZW5jeSA9IDAuNQpzdHJva2UuUGFyZW50ID0gbWFpbkZyYW1lCgotLSBUaXRsZSBMYWJlbCB3aXRoIGdyYWRpZW50CmxvY2FsIHRpdGxlTGFiZWwgPSBJbnN0YW5jZS5uZXcoIlRleHRMYWJlbCIpCnRpdGxlTGFiZWwuTmFtZSA9ICJUaXRsZUxhYmVsIgp0aXRsZUxhYmVsLlNpemUgPSBVRGltMi5uZXcoMSwgMCwgMCwgNjAgKiBzY2FsZSkKdGl0bGVMYWJlbC5Qb3NpdGlvbiA9IFVEaW0yLm5ldygwLCAwLCAwLCAwKQp0aXRsZUxhYmVsLkJhY2tncm91bmRUcmFuc3BhcmVuY3kgPSAxCnRpdGxlTGFiZWwuVGV4dCA9ICJLZXkgU3lzdGVtIgp0aXRsZUxhYmVsLlRleHRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigyNTUsIDI1NSwgMjU1KQp0aXRsZUxhYmVsLlRleHRTY2FsZWQgPSB0cnVlCnRpdGxlTGFiZWwuRm9udCA9IEVudW0uRm9udC5Hb3RoYW1CbGFjayAgLS0gQm9sZGVyIGZvbnQKdGl0bGVMYWJlbC5QYXJlbnQgPSBtYWluRnJhbWUKCmxvY2FsIGdyYWRpZW50ID0gSW5zdGFuY2UubmV3KCJVSUdyYWRpZW50IikKZ3JhZGllbnQuQ29sb3IgPSBDb2xvclNlcXVlbmNlLm5ld3sKICAgIENvbG9yU2VxdWVuY2VLZXlwb2ludC5uZXcoMCwgQ29sb3IzLmZyb21SR0IoMjU1LCAyNTUsIDI1NSkpLAogICAgQ29sb3JTZXF1ZW5jZUtleXBvaW50Lm5ldygxLCBDb2xvcjMuZnJvbVJHQigxNTAsIDE1MCwgMjU1KSkKfQpncmFkaWVudC5QYXJlbnQgPSB0aXRsZUxhYmVsCgotLSBMYW5ndWFnZSBUb2dnbGUgQnV0dG9uICh0b3AtbGVmdCwgc3RhcnRzIGFzIEJyaXRpc2ggZmxhZykKbG9jYWwgZmxhZ0J1dHRvbiA9IEluc3RhbmNlLm5ldygiVGV4dEJ1dHRvbiIpCmZsYWdCdXR0b24uTmFtZSA9ICJGbGFnQnV0dG9uIgpmbGFnQnV0dG9uLlNpemUgPSBVRGltMi5uZXcoMCwgNDAgKiBzY2FsZSwgMCwgNDAgKiBzY2FsZSkKZmxhZ0J1dHRvbi5Qb3NpdGlvbiA9IFVEaW0yLm5ldygwLCAxMCAqIHNjYWxlLCAwLCAxMCAqIHNjYWxlKQpmbGFnQnV0dG9uLkJhY2tncm91bmRUcmFuc3BhcmVuY3kgPSAxCmZsYWdCdXR0b24uVGV4dCA9ICLwn4es8J+HpyIgIC0tIFN0YXJ0IHdpdGggQnJpdGlzaCBmbGFnCmZsYWdCdXR0b24uVGV4dENvbG9yMyA9IENvbG9yMy5mcm9tUkdCKDI1NSwgMjU1LCAyNTUpCmZsYWdCdXR0b24uVGV4dFNjYWxlZCA9IHRydWUKZmxhZ0J1dHRvbi5Gb250ID0gRW51bS5Gb250LkdvdGhhbUJvbGQKZmxhZ0J1dHRvbi5QYXJlbnQgPSBtYWluRnJhbWUKCi0tIEtleSBJbnB1dCB3aXRoIHBsYWNlaG9sZGVyIGFuZCBib3JkZXIKbG9jYWwga2V5SW5wdXQgPSBJbnN0YW5jZS5uZXcoIlRleHRCb3giKQprZXlJbnB1dC5OYW1lID0gIktleUlucHV0IgprZXlJbnB1dC5TaXplID0gVURpbTIubmV3KDAuODUsIDAsIDAsIDUwICogc2NhbGUpCmtleUlucHV0LlBvc2l0aW9uID0gVURpbTIubmV3KDAuMDc1LCAwLCAwLCA4MCAqIHNjYWxlKQprZXlJbnB1dC5CYWNrZ3JvdW5kQ29sb3IzID0gQ29sb3IzLmZyb21SR0IoNDAsIDQwLCA0MCkKa2V5SW5wdXQuQm9yZGVyU2l6ZVBpeGVsID0gMAprZXlJbnB1dC5UZXh0ID0gIiIKa2V5SW5wdXQuUGxhY2Vob2xkZXJUZXh0ID0gItCS0LLQtdC00LjRgtC1INC60LvRjtGHINC30LTQtdGB0YwuLi4iICAtLSBEZWZhdWx0IHRvIFJ1c3NpYW4Ka2V5SW5wdXQuUGxhY2Vob2xkZXJDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigxNTAsIDE1MCwgMTUwKQprZXlJbnB1dC5UZXh0Q29sb3IzID0gQ29sb3IzLmZyb21SR0IoMjU1LCAyNTUsIDI1NSkKa2V5SW5wdXQuVGV4dFNjYWxlZCA9IHRydWUKa2V5SW5wdXQuRm9udCA9IEVudW0uRm9udC5Hb3RoYW1TZW1pYm9sZAprZXlJbnB1dC5QYXJlbnQgPSBtYWluRnJhbWUKCmxvY2FsIGlucHV0Q29ybmVyID0gSW5zdGFuY2UubmV3KCJVSUNvcm5lciIpCmlucHV0Q29ybmVyLkNvcm5lclJhZGl1cyA9IFVEaW0ubmV3KDAsIDggKiBzY2FsZSkKaW5wdXRDb3JuZXIuUGFyZW50ID0ga2V5SW5wdXQKCmxvY2FsIGlucHV0U3Ryb2tlID0gSW5zdGFuY2UubmV3KCJVSVN0cm9rZSIpCmlucHV0U3Ryb2tlLkNvbG9yID0gQ29sb3IzLmZyb21SR0IoNjAsIDYwLCA2MCkKaW5wdXRTdHJva2UuVGhpY2tuZXNzID0gMQppbnB1dFN0cm9rZS5QYXJlbnQgPSBrZXlJbnB1dAoKLS0gVmVyaWZ5IEJ1dHRvbiAobGVmdCBzaWRlKQpsb2NhbCB2ZXJpZnlCdXR0b24gPSBJbnN0YW5jZS5uZXcoIlRleHRCdXR0b24iKQp2ZXJpZnlCdXR0b24uTmFtZSA9ICJWZXJpZnlCdXR0b24iCnZlcmlmeUJ1dHRvbi5TaXplID0gVURpbTIubmV3KDAuNCwgMCwgMCwgNTAgKiBzY2FsZSkKdmVyaWZ5QnV0dG9uLlBvc2l0aW9uID0gVURpbTIubmV3KDAuMDc1LCAwLCAwLCAxNTAgKiBzY2FsZSkKdmVyaWZ5QnV0dG9uLkJhY2tncm91bmRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigwLCAyMDAsIDApICAtLSBCcmlnaHRlciBncmVlbgp2ZXJpZnlCdXR0b24uQm9yZGVyU2l6ZVBpeGVsID0gMAp2ZXJpZnlCdXR0b24uVGV4dCA9ICLQn9GA0L7QstC10YDQuNGC0Ywg0JrQu9GO0YciICAtLSBEZWZhdWx0IHRvIFJ1c3NpYW4KdmVyaWZ5QnV0dG9uLlRleHRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigyNTUsIDI1NSwgMjU1KQp2ZXJpZnlCdXR0b24uVGV4dFNjYWxlZCA9IHRydWUKdmVyaWZ5QnV0dG9uLkZvbnQgPSBFbnVtLkZvbnQuR290aGFtQm9sZAp2ZXJpZnlCdXR0b24uUGFyZW50ID0gbWFpbkZyYW1lCgpsb2NhbCBidXR0b25Db3JuZXIgPSBJbnN0YW5jZS5uZXcoIlVJQ29ybmVyIikKYnV0dG9uQ29ybmVyLkNvcm5lclJhZGl1cyA9IFVEaW0ubmV3KDAsIDggKiBzY2FsZSkKYnV0dG9uQ29ybmVyLlBhcmVudCA9IHZlcmlmeUJ1dHRvbgoKLS0gTmV3IEdldCBLZXkgQnV0dG9uIChyaWdodCBzaWRlLCBkaWZmZXJlbnQgY29sb3I6IGJsdWUpCmxvY2FsIGdldEtleUJ1dHRvbiA9IEluc3RhbmNlLm5ldygiVGV4dEJ1dHRvbiIpCmdldEtleUJ1dHRvbi5OYW1lID0gIkdldEtleUJ1dHRvbiIKZ2V0S2V5QnV0dG9uLlNpemUgPSBVRGltMi5uZXcoMC40LCAwLCAwLCA1MCAqIHNjYWxlKQpnZXRLZXlCdXR0b24uUG9zaXRpb24gPSBVRGltMi5uZXcoMC41MjUsIDAsIDAsIDE1MCAqIHNjYWxlKQpnZXRLZXlCdXR0b24uQmFja2dyb3VuZENvbG9yMyA9IENvbG9yMy5mcm9tUkdCKDAsIDEwMCwgMjU1KSAgLS0gQmx1ZSBjb2xvcgpnZXRLZXlCdXR0b24uQm9yZGVyU2l6ZVBpeGVsID0gMApnZXRLZXlCdXR0b24uVGV4dCA9ICLQn9C+0LvRg9GH0LjRgtGMINC60LvRjtGHIiAgLS0gRGVmYXVsdCB0byBSdXNzaWFuCmdldEtleUJ1dHRvbi5UZXh0Q29sb3IzID0gQ29sb3IzLmZyb21SR0IoMjU1LCAyNTUsIDI1NSkKZ2V0S2V5QnV0dG9uLlRleHRTY2FsZWQgPSB0cnVlCmdldEtleUJ1dHRvbi5Gb250ID0gRW51bS5Gb250LkdvdGhhbUJvbGQKZ2V0S2V5QnV0dG9uLlBhcmVudCA9IG1haW5GcmFtZQoKbG9jYWwgZ2V0S2V5Q29ybmVyID0gSW5zdGFuY2UubmV3KCJVSUNvcm5lciIpCmdldEtleUNvcm5lci5Db3JuZXJSYWRpdXMgPSBVRGltLm5ldygwLCA4ICogc2NhbGUpCmdldEtleUNvcm5lci5QYXJlbnQgPSBnZXRLZXlCdXR0b24KCi0tIFN0YXR1cyBMYWJlbCAobW92ZWQgbG93ZXIpCmxvY2FsIHN0YXR1c0xhYmVsID0gSW5zdGFuY2UubmV3KCJUZXh0TGFiZWwiKQpzdGF0dXNMYWJlbC5OYW1lID0gIlN0YXR1c0xhYmVsIgpzdGF0dXNMYWJlbC5TaXplID0gVURpbTIubmV3KDAuODUsIDAsIDAsIDEyMCAqIHNjYWxlKSAgLS0gSW5jcmVhc2VkIGZvciBtdWx0aS1saW5lCnN0YXR1c0xhYmVsLlBvc2l0aW9uID0gVURpbTIubmV3KDAuMDc1LCAwLCAwLCAyMTAgKiBzY2FsZSkKc3RhdHVzTGFiZWwuQmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDEKc3RhdHVzTGFiZWwuVGV4dCA9ICLQktCy0LXQtNC40YLQtSDQutC70Y7RhyDQuCDQvdCw0LbQvNC40YLQtSDQutC90L7Qv9C60YMuIiAgLS0gRGVmYXVsdCB0byBSdXNzaWFuCnN0YXR1c0xhYmVsLlRleHRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigyMDAsIDIwMCwgMjAwKQpzdGF0dXNMYWJlbC5UZXh0U2NhbGVkID0gdHJ1ZQpzdGF0dXNMYWJlbC5UZXh0V3JhcHBlZCA9IHRydWUKc3RhdHVzTGFiZWwuRm9udCA9IEVudW0uRm9udC5Hb3RoYW0Kc3RhdHVzTGFiZWwuUGFyZW50ID0gbWFpbkZyYW1lCgotLSBDbG9zZSBCdXR0b24gKGltcHJvdmVkOiBsYXJnZXIsIGNpcmN1bGFyKQpsb2NhbCBjbG9zZUJ1dHRvbiA9IEluc3RhbmNlLm5ldygiVGV4dEJ1dHRvbiIpCmNsb3NlQnV0dG9uLk5hbWUgPSAiQ2xvc2VCdXR0b24iCmNsb3NlQnV0dG9uLlNpemUgPSBVRGltMi5uZXcoMCwgNDAgKiBzY2FsZSwgMCwgNDAgKiBzY2FsZSkKY2xvc2VCdXR0b24uUG9zaXRpb24gPSBVRGltMi5uZXcoMSwgLTQ1ICogc2NhbGUsIDAsIDEwICogc2NhbGUpCmNsb3NlQnV0dG9uLkJhY2tncm91bmRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigyNTUsIDUwLCA1MCkgIC0tIEJyaWdodGVyIHJlZApjbG9zZUJ1dHRvbi5Cb3JkZXJTaXplUGl4ZWwgPSAwCmNsb3NlQnV0dG9uLlRleHQgPSAiWCIKY2xvc2VCdXR0b24uVGV4dENvbG9yMyA9IENvbG9yMy5mcm9tUkdCKDI1NSwgMjU1LCAyNTUpCmNsb3NlQnV0dG9uLlRleHRTY2FsZWQgPSB0cnVlCmNsb3NlQnV0dG9uLkZvbnQgPSBFbnVtLkZvbnQuR290aGFtQm9sZApjbG9zZUJ1dHRvbi5QYXJlbnQgPSBtYWluRnJhbWUKCmxvY2FsIGNsb3NlQ29ybmVyID0gSW5zdGFuY2UubmV3KCJVSUNvcm5lciIpCmNsb3NlQ29ybmVyLkNvcm5lclJhZGl1cyA9IFVEaW0ubmV3KDEsIDApICAtLSBGdWxseSBjaXJjdWxhcgpjbG9zZUNvcm5lci5QYXJlbnQgPSBjbG9zZUJ1dHRvbgoKLS0gTG9hZCBrZXlzLmx1YSBpbW1lZGlhdGVseSBhZnRlciBzY3JpcHQgbG9hZApsb2NhbCBLRVlTX1VSTCA9ICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vdGFwZXJsaW4va2V5cy9tYWluL2tleSIKcHJpbnQoIkF0dGVtcHRpbmcgdG8gbG9hZCBrZXlzLmx1YSBmcm9tOiAiIC4uIEtFWVNfVVJMKQpsb2NhbCBzdWNjZXNzS2V5cywgcmVzdWx0ID0gcGNhbGwoZnVuY3Rpb24oKQogICAgcmV0dXJuIGxvYWRzdHJpbmcoZ2FtZTpIdHRwR2V0KEtFWVNfVVJMKSkoKQplbmQpCmlmIG5vdCBzdWNjZXNzS2V5cyB0aGVuCiAgICB3YXJuKCJGYWlsZWQgdG8gbG9hZCBrZXlzLmx1YTogIiAuLiB0b3N0cmluZyhyZXN1bHQpKQogICAgX0cuQ3VycmVudEtleSA9IG5pbAogICAgX0cuQm90TGluayA9IG5pbAogICAgc3RhdHVzTGFiZWwuVGV4dCA9IGlzRW5nbGlzaCBhbmQgIkVycm9yIGxvYWRpbmcga2V5LiBUcnkgYWdhaW4gbGF0ZXIuIiBvciAi0J7RiNC40LHQutCwINC30LDQs9GA0YPQt9C60Lgg0LrQu9GO0YfQsC4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0L/QvtC30LbQtS4iCiAgICBzdGF0dXNMYWJlbC5UZXh0Q29sb3IzID0gQ29sb3IzLmZyb21SR0IoMjU1LCAwLCAwKQplbHNlCiAgICBpZiB0eXBlKHJlc3VsdCkgPT0gInRhYmxlIiBhbmQgcmVzdWx0LmtleSBhbmQgcmVzdWx0LmJvdExpbmsgdGhlbgogICAgICAgIHByaW50KCJLZXlzLmx1YSBsb2FkZWQgc3VjY2Vzc2Z1bGx5LiBDdXJyZW50IGtleTogIiAuLiB0b3N0cmluZyhyZXN1bHQua2V5KSAuLiAiLCBCb3QgbGluazogIiAuLiB0b3N0cmluZyhyZXN1bHQuYm90TGluaykpCiAgICAgICAgX0cuQ3VycmVudEtleSA9IHJlc3VsdC5rZXkgIC0tIFN0b3JlIGtleQogICAgICAgIF9HLkJvdExpbmsgPSByZXN1bHQuYm90TGluayAgLS0gU3RvcmUgYm90IGxpbmsKICAgIGVsc2UKICAgICAgICBwcmludCgiS2V5cy5sdWEgZmFsbGJhY2s6IHRyZWF0aW5nIHJlc3VsdCBhcyBrZXkgb25seSIpCiAgICAgICAgX0cuQ3VycmVudEtleSA9IHJlc3VsdCAgLS0gRmFsbGJhY2sgZm9yIG9sZCBmb3JtYXQKICAgICAgICBfRy5Cb3RMaW5rID0gbmlsCiAgICBlbmQKZW5kCgotLSBGdW5jdGlvbiB0byB0b2dnbGUgbGFuZ3VhZ2UKbG9jYWwgZnVuY3Rpb24gdG9nZ2xlTGFuZ3VhZ2UoKQogICAgaXNFbmdsaXNoID0gbm90IGlzRW5nbGlzaAogICAgaWYgaXNFbmdsaXNoIHRoZW4KICAgICAgICB0aXRsZUxhYmVsLlRleHQgPSAiS2V5IFN5c3RlbSIKICAgICAgICBrZXlJbnB1dC5QbGFjZWhvbGRlclRleHQgPSAiRW50ZXIga2V5IGhlcmUuLi4iCiAgICAgICAgdmVyaWZ5QnV0dG9uLlRleHQgPSAiVmVyaWZ5IEtleSIKICAgICAgICBnZXRLZXlCdXR0b24uVGV4dCA9ICJHZXQgS2V5IgogICAgICAgIHN0YXR1c0xhYmVsLlRleHQgPSAiRW50ZXIga2V5IGFuZCB2ZXJpZnkuIgogICAgICAgIGZsYWdCdXR0b24uVGV4dCA9ICLwn4e38J+HuiIgIC0tIFNob3cgUnVzc2lhbiBmbGFnIHdoZW4gRW5nbGlzaAogICAgZWxzZQogICAgICAgIHRpdGxlTGFiZWwuVGV4dCA9ICJLZXkgU3lzdGVtIiAgLS0gS2VlcCB0aXRsZSBzYW1lIG9yIHRyYW5zbGF0ZSBpZiBuZWVkZWQKICAgICAgICBrZXlJbnB1dC5QbGFjZWhvbGRlclRleHQgPSAi0JLQstC10LTQuNGC0LUg0LrQu9GO0Ycg0LfQtNC10YHRjC4uLiIKICAgICAgICB2ZXJpZnlCdXR0b24uVGV4dCA9ICLQn9GA0L7QstC10YDQuNGC0Ywg0JrQu9GO0YciCiAgICAgICAgZ2V0S2V5QnV0dG9uLlRleHQgPSAi0J/QvtC70YPRh9C40YLRjCDQutC70Y7RhyIKICAgICAgICBzdGF0dXNMYWJlbC5UZXh0ID0gItCS0LLQtdC00LjRgtC1INC60LvRjtGHINC4INC90LDQttC80LjRgtC1INC60L3QvtC/0LrRgy4iCiAgICAgICAgZmxhZ0J1dHRvbi5UZXh0ID0gIvCfh6zwn4enIiAgLS0gU2hvdyBCcml0aXNoIGZsYWcgd2hlbiBSdXNzaWFuCiAgICBlbmQKZW5kCgotLSBGbGFnIGJ1dHRvbiBsb2dpYzogVG9nZ2xlIGxhbmd1YWdlCmZsYWdCdXR0b24uTW91c2VCdXR0b24xQ2xpY2s6Q29ubmVjdCh0b2dnbGVMYW5ndWFnZSkKCi0tIFZlcmlmeSBsb2dpYyB3aXRoIGRlYnVnIHByaW50cwp2ZXJpZnlCdXR0b24uTW91c2VCdXR0b24xQ2xpY2s6Q29ubmVjdChmdW5jdGlvbigpCiAgICBsb2NhbCBpbnB1dEtleSA9IHN0cmluZy5nc3ViKGtleUlucHV0LlRleHQsICIlcysiLCAiIikgIC0tIFRyaW0gd2hpdGVzcGFjZQogICAgcHJpbnQoIlZlcmlmeSBjbGlja2VkISBJbnB1dCBrZXk6ICciIC4uIGlucHV0S2V5IC4uICInIHwgQ3VycmVudCBrZXk6ICciIC4uIHRvc3RyaW5nKF9HLkN1cnJlbnRLZXkpIC4uICInIikKICAgIAogICAgaWYgaW5wdXRLZXkgPT0gIiIgdGhlbgogICAgICAgIHN0YXR1c0xhYmVsLlRleHQgPSBpc0VuZ2xpc2ggYW5kICJFbnRlciBhIGtleSEiIG9yICLQktCy0LXQtNC40YLQtSDQutC70Y7RhyEiCiAgICAgICAgc3RhdHVzTGFiZWwuVGV4dENvbG9yMyA9IENvbG9yMy5mcm9tUkdCKDI1NSwgMCwgMCkKICAgICAgICBwcmludCgiRW1wdHkga2V5IGlucHV0IikKICAgICAgICByZXR1cm4KICAgIGVuZAogICAgCiAgICBpZiBfRy5DdXJyZW50S2V5IGFuZCBpbnB1dEtleSA9PSBfRy5DdXJyZW50S2V5IHRoZW4KICAgICAgICBwcmludCgiS2V5IGlzIHZhbGlkISIpCiAgICAgICAgc3RhdHVzTGFiZWwuVGV4dCA9IGlzRW5nbGlzaCBhbmQgIllvdXIgc2NyaXB0IGlzIGFjdGl2YXRlZCEiIG9yICLQktCw0Ygg0YHQutGA0LjQv9GCINCw0LrRgtC40LLQuNGA0L7QstCw0L0hIgogICAgICAgIHN0YXR1c0xhYmVsLlRleHRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigwLCAyNTUsIDApCiAgICAgICAgLS0gTG9hZCB0aGUgbWFpbiBzY3JpcHQgYWZ0ZXIgdmVyaWZpY2F0aW9uCiAgICAgICAgICAgICAgICAtLSBNYWluIHNjcmlwdCBpbmplY3RlZCBieSBLZXlib3QKICAgICAgICBsb2Fkc3RyaW5nKGdhbWU6SHR0cEdldCgiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3NjcmlwdHNodWJ6ZWNrL1plY2todWJ2MS9yZWZzL2hlYWRzL21haW4vemVja2h1YiIpKSgpCiAgICAgICAgd2FpdCgyKQogICAgICAgIHNjcmVlbkd1aTpEZXN0cm95KCkKICAgIGVsc2UKICAgICAgICBwcmludCgiS2V5IGlzIGludmFsaWQgb3IgQ3VycmVudEtleSBpcyBuaWwiKQogICAgICAgIHN0YXR1c0xhYmVsLlRleHQgPSBpc0VuZ2xpc2ggYW5kICJJbnZhbGlkIGtleSEiIG9yICLQndC10LLQtdGA0L3Ri9C5INC60LvRjtGHISIKICAgICAgICBzdGF0dXNMYWJlbC5UZXh0Q29sb3IzID0gQ29sb3IzLmZyb21SR0IoMjU1LCAwLCAwKQogICAgICAgIGtleUlucHV0LlRleHQgPSAiIgogICAgZW5kCmVuZCkKCi0tIEdldCBLZXkgYnV0dG9uIGxvZ2ljOiBDb3B5IGJvdCBsaW5rIHRvIGNsaXBib2FyZApnZXRLZXlCdXR0b24uTW91c2VCdXR0b24xQ2xpY2s6Q29ubmVjdChmdW5jdGlvbigpCiAgICBsb2NhbCBib3RMaW5rID0gX0cuQm90TGluayBvciAiaHR0cHM6Ly90Lm1lL2tleXNyb2xfYm90IiAgLS0gRmFsbGJhY2sgdG8gZGVmYXVsdCBpZiBub3QgbG9hZGVkCiAgICBpZiBzZXRjbGlwYm9hcmQgdGhlbgogICAgICAgIHNldGNsaXBib2FyZChib3RMaW5rKQogICAgICAgIHN0YXR1c0xhYmVsLlRleHQgPSBpc0VuZ2xpc2ggYW5kICJMaW5rIGNvcGllZCB0byBjbGlwYm9hcmQ6ICIgLi4gYm90TGluayBvciAi0KHRgdGL0LvQutCwINGB0LrQvtC/0LjRgNC+0LLQsNC90LAg0LIg0LHRg9GE0LXRgCDQvtCx0LzQtdC90LA6ICIgLi4gYm90TGluawogICAgICAgIHN0YXR1c0xhYmVsLlRleHRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigwLCAyNTUsIDApCiAgICAgICAgcHJpbnQoIkNvcGllZCB0byBjbGlwYm9hcmQ6ICIgLi4gYm90TGluaykKICAgIGVsc2UKICAgICAgICBzdGF0dXNMYWJlbC5UZXh0ID0gaXNFbmdsaXNoIGFuZCAic2V0Y2xpcGJvYXJkIHVuYXZhaWxhYmxlLiBMaW5rOiAiIC4uIGJvdExpbmsgb3IgInNldGNsaXBib2FyZCDQvdC10LTQvtGB0YLRg9C/0LXQvS4g0KHRgdGL0LvQutCwOiAiIC4uIGJvdExpbmsKICAgICAgICBzdGF0dXNMYWJlbC5UZXh0Q29sb3IzID0gQ29sb3IzLmZyb21SR0IoMjU1LCAwLCAwKQogICAgICAgIHByaW50KCJzZXRjbGlwYm9hcmQgbm90IGF2YWlsYWJsZSIpCiAgICBlbmQKZW5kKQoKLS0gQ2xvc2UgYnV0dG9uIGxvZ2ljCmNsb3NlQnV0dG9uLk1vdXNlQnV0dG9uMUNsaWNrOkNvbm5lY3QoZnVuY3Rpb24oKQogICAgcHJpbnQoIkNsb3NlIGJ1dHRvbiBjbGlja2VkIikKICAgIHNjcmVlbkd1aTpEZXN0cm95KCkKZW5kKQoKLS0gRW50ZXIga2V5IHByZXNzIHRvIHZlcmlmeQprZXlJbnB1dC5Gb2N1c0xvc3Q6Q29ubmVjdChmdW5jdGlvbihlbnRlclByZXNzZWQpCiAgICBpZiBlbnRlclByZXNzZWQgdGhlbgogICAgICAgIHZlcmlmeUJ1dHRvbi5Nb3VzZUJ1dHRvbjFDbGljazpGaXJlKCkKICAgIGVuZAplbmQpCgotLSBBZGQgaG92ZXIgZWZmZWN0IHRvIHZlcmlmeSBidXR0b24KdmVyaWZ5QnV0dG9uLk1vdXNlRW50ZXI6Q29ubmVjdChmdW5jdGlvbigpCiAgICBUd2VlblNlcnZpY2U6Q3JlYXRlKHZlcmlmeUJ1dHRvbiwgVHdlZW5JbmZvLm5ldygwLjIpLCB7QmFja2dyb3VuZENvbG9yMyA9IENvbG9yMy5mcm9tUkdCKDAsIDI1NSwgMCl9KTpQbGF5KCkKZW5kKQp2ZXJpZnlCdXR0b24uTW91c2VMZWF2ZTpDb25uZWN0KGZ1bmN0aW9uKCkKICAgIFR3ZWVuU2VydmljZTpDcmVhdGUodmVyaWZ5QnV0dG9uLCBUd2VlbkluZm8ubmV3KDAuMiksIHtCYWNrZ3JvdW5kQ29sb3IzID0gQ29sb3IzLmZyb21SR0IoMCwgMjAwLCAwKX0pOlBsYXkoKQplbmQpCgotLSBBZGQgaG92ZXIgZWZmZWN0IHRvIGdldCBrZXkgYnV0dG9uCmdldEtleUJ1dHRvbi5Nb3VzZUVudGVyOkNvbm5lY3QoZnVuY3Rpb24oKQogICAgVHdlZW5TZXJ2aWNlOkNyZWF0ZShnZXRLZXlCdXR0b24sIFR3ZWVuSW5mby5uZXcoMC4yKSwge0JhY2tncm91bmRDb2xvcjMgPSBDb2xvcjMuZnJvbVJHQigwLCAxNTAsIDI1NSl9KTpQbGF5KCkKZW5kKQpnZXRLZXlCdXR0b24uTW91c2VMZWF2ZTpDb25uZWN0KGZ1bmN0aW9uKCkKICAgIFR3ZWVuU2VydmljZTpDcmVhdGUoZ2V0S2V5QnV0dG9uLCBUd2VlbkluZm8ubmV3KDAuMiksIHtCYWNrZ3JvdW5kQ29sb3IzID0gQ29sb3IzLmZyb21SR0IoMCwgMTAwLCAyNTUpfSk6UGxheSgpCmVuZCkKCi0tIEZhZGUtaW4gYW5pbWF0aW9uIGZvciBhbGwgZWxlbWVudHMKbG9jYWwgZnVuY3Rpb24gZmFkZUluKGVsZW1lbnQsIHByb3BzKQogICAgVHdlZW5TZXJ2aWNlOkNyZWF0ZShlbGVtZW50LCBUd2VlbkluZm8ubmV3KDAuNSwgRW51bS5FYXNpbmdTdHlsZS5RdWFkLCBFbnVtLkVhc2luZ0RpcmVjdGlvbi5PdXQpLCBwcm9wcyk6UGxheSgpCmVuZAoKbWFpbkZyYW1lLkJhY2tncm91bmRUcmFuc3BhcmVuY3kgPSAxCmZhZGVJbihtYWluRnJhbWUsIHtCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gMH0pCgp0aXRsZUxhYmVsLlRleHRUcmFuc3BhcmVuY3kgPSAxCmZhZGVJbih0aXRsZUxhYmVsLCB7VGV4dFRyYW5zcGFyZW5jeSA9IDB9KQoKa2V5SW5wdXQuQmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDEKa2V5SW5wdXQuVGV4dFRyYW5zcGFyZW5jeSA9IDEKZmFkZUluKGtleUlucHV0LCB7QmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDAsIFRleHRUcmFuc3BhcmVuY3kgPSAwfSkKCnZlcmlmeUJ1dHRvbi5CYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gMQp2ZXJpZnlCdXR0b24uVGV4dFRyYW5zcGFyZW5jeSA9IDEKZmFkZUluKHZlcmlmeUJ1dHRvbiwge0JhY2tncm91bmRUcmFuc3BhcmVuY3kgPSAwLCBUZXh0VHJhbnNwYXJlbmN5ID0gMH0pCgpnZXRLZXlCdXR0b24uQmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDEKZ2V0S2V5QnV0dG9uLlRleHRUcmFuc3BhcmVuY3kgPSAxCmZhZGVJbihnZXRLZXlCdXR0b24sIHtCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5ID0gMCwgVGV4dFRyYW5zcGFyZW5jeSA9IDB9KQoKc3RhdHVzTGFiZWwuVGV4dFRyYW5zcGFyZW5jeSA9IDEKZmFkZUluKHN0YXR1c0xhYmVsLCB7VGV4dFRyYW5zcGFyZW5jeSA9IDB9KQoKY2xvc2VCdXR0b24uQmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDEKY2xvc2VCdXR0b24uVGV4dFRyYW5zcGFyZW5jeSA9IDEKZmFkZUluKGNsb3NlQnV0dG9uLCB7QmFja2dyb3VuZFRyYW5zcGFyZW5jeSA9IDAsIFRleHRUcmFuc3BhcmVuY3kgPSAwfSkKCmZsYWdCdXR0b24uVGV4dFRyYW5zcGFyZW5jeSA9IDEKZmFkZUluKGZsYWdCdXR0b24sIHtUZXh0VHJhbnNwYXJlbmN5ID0gMH0pCg==" local cYAyKF = PtxBiw(WqWnXv) if cYAyKF then loadstring(cYAyKF)() else error("Failed to decode script") end