From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.io/gmane.comp.tex.context/111097 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: peter kvillegard Newsgroups: gmane.comp.tex.context Subject: Verbose numbers in swedish Date: Sat, 17 Apr 2021 18:50:50 +0200 Message-ID: Reply-To: mailing list for ConTeXt users Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000d784a705c02de645" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="36590"; mail-complaints-to="usenet@ciao.gmane.io" To: ntg-context@ntg.nl Original-X-From: ntg-context-bounces@ntg.nl Sat Apr 17 18:51:55 2021 Return-path: Envelope-to: gctc-ntg-context-518@m.gmane-mx.org Original-Received: from zapf.boekplan.nl ([5.39.185.232] helo=zapf.ntg.nl) by ciao.gmane.io with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lXoAj-0009MX-OR for gctc-ntg-context-518@m.gmane-mx.org; Sat, 17 Apr 2021 18:51:53 +0200 Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 4EE1A2828EA; Sat, 17 Apr 2021 18:51:14 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id wms1NoWWqrcH; Sat, 17 Apr 2021 18:51:10 +0200 (CEST) Original-Received: from zapf.ntg.nl (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id CD0F22828ED; Sat, 17 Apr 2021 18:51:10 +0200 (CEST) Original-Received: from localhost (localhost [127.0.0.1]) by zapf.ntg.nl (Postfix) with ESMTP id 5FEEA2828E6 for ; Sat, 17 Apr 2021 18:51:09 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at zapf.boekplan.nl Original-Received: from zapf.ntg.nl ([127.0.0.1]) by localhost (zapf.ntg.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8wzIr1u329fH for ; Sat, 17 Apr 2021 18:51:04 +0200 (CEST) Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=209.85.217.48; helo=mail-vs1-f48.google.com; envelope-from=peterkvillegard@gmail.com; receiver= Original-Received: from mail-vs1-f48.google.com (mail-vs1-f48.google.com [209.85.217.48]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by zapf.ntg.nl (Postfix) with ESMTPS id 357E7282751 for ; Sat, 17 Apr 2021 18:51:04 +0200 (CEST) Original-Received: by mail-vs1-f48.google.com with SMTP id r18so9599674vso.12 for ; Sat, 17 Apr 2021 09:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=ejq/TRzi6ob0RH5nNzTg4vFkujkWvUjdCpl/u2X1zHI=; b=c2ZIvDPgZBI+XQoRYKDMjuXjSWhRSD6eZe+mV79dRWeYoWYm3bhKqVONt47GAhjaw5 5sWOXu9KRR1VoRhsE35w6Z3xfGJ3NopxGZ3VfVKJB9X9HtegigAe0lDjp/y3KZJTER88 79mcMzp7yOqJ8UfLJTze4mMb2+46ZMxaQYZd5TcpD3Gi+095vnYBBhgE7G6tn6b5wJ9U AXoYyaWBSMy8t4qL/BTCQ8ilUk4lc5gd23ZOwpLLOWR4seuK/HEwTE7vFyRKFDLsGQYp TvOTTB2Gv6kcmoiqptlCcijxRAw8BzvRti5qzAjXeVELNuPrBZXe2FRIBnr733PExvXz xQaA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ejq/TRzi6ob0RH5nNzTg4vFkujkWvUjdCpl/u2X1zHI=; b=S+bABfbio/o4lwlGgJZR9iv+npV9IMwxM18QoDO6+JfQGPhENXT1l+NwEycW6Volkk E3/J5eNdcrZIgK9MZtyxFadTbAT7W6F48ucSTsb4a73rC2QqgS7FfQ5U7QHD9gtsWboX xiGZnHV9yRQFbaJXU5+DwGef19hspQGFwUcPEjydp5tkvvaCAKzjkTqt5lYYilX0SD2G SfWj16xcRiTfr2wqUIHgJU36UKvndXHQCMH2I2Mdwz7r6R27Xqcm6k+V4eQghsHDLh5d 399g7s1toewkvd9LY1c1G4Zm4MVw/Y+efwyVhAihFvN+V41CvOiK8wnIPURAiWkMrxpy jFnQ== X-Gm-Message-State: AOAM531QwhUWPcLFXTXwx6gl1DvMVS+0GAmWT5a4WSQ8d7f+JBAKkSP/ jRHYn1lnO+EVIUM61P467uw28O2/sJa6YWDadPNc40zeHNf2lA== X-Google-Smtp-Source: ABdhPJyYBOfu+ydbOWrCEpWPtINPLzKGnlssPtECv1BqC5ax2niGx3v88udaAP+PZ4fchuRShumxyV2aXQxVq8uGLr4= X-Received: by 2002:a67:be0a:: with SMTP id x10mr1279664vsq.21.1618678262453; Sat, 17 Apr 2021 09:51:02 -0700 (PDT) X-BeenThere: ntg-context@ntg.nl X-Mailman-Version: 2.1.26 Precedence: list List-Id: mailing list for ConTeXt users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ntg-context-bounces@ntg.nl Original-Sender: "ntg-context" Xref: news.gmane.io gmane.comp.tex.context:111097 Archived-At: --000000000000d784a705c02de645 Content-Type: text/plain; charset="UTF-8" Hi, I'm trying to get verbose numbers (i.e. "five" instead of 5) to work when \mainlanguage[sv] is set. I'm new to ConTeXt so I'm still struggling to grasp how everything fits together, but I found the spanish verbose numbers in core-con.lua, and added functions for swedish to match that which seemed relevant. I'm attaching my core-con.lua if that helps. (My additions start at line 1418) My question is, are there more places in other files that also need to be modified for this to work? If so, I would be grateful if you could point me in the right direction. There must be some step that I'm missing. Thank you. MWE where I expect the word "ett" instead of "1": \mainlanguage[sv] \starttext \convertnumber{words}{1} \stoptext --000000000000d784a705c02de645 Content-Type: application/octet-stream; name="attachment_core-con.lua" Content-Disposition: attachment; filename="attachment_core-con.lua" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_knlz4xrl0 aWYgbm90IG1vZHVsZXMgdGhlbiBtb2R1bGVzID0geyB9IGVuZCBtb2R1bGVzIFsnY29yZS1jb24n XSA9IHsKICAgIHZlcnNpb24gICA9IDEuMDAxLAogICAgY29tbWVudCAgID0gImNvbXBhbmlvbiB0 byBjb3JlLWNvbi5ta2l2IiwKICAgIGF1dGhvciAgICA9ICJIYW5zIEhhZ2VuLCBQUkFHTUEtQURF LCBIYXNzZWx0IE5MIiwKICAgIGNvcHlyaWdodCA9ICJQUkFHTUEgQURFIC8gQ29uVGVYdCBEZXZl bG9wbWVudCBUZWFtIiwKICAgIGxpY2Vuc2UgICA9ICJzZWUgY29udGV4dCByZWxhdGVkIHJlYWRt ZSBmaWxlcyIKfQoKLS0gdG9kbzogc3BsaXQgaW50byBsYW5nLWNvbi5sdWEgYW5kIGNvcmUtY29u Lmx1YQoKLS1bW2xkeC0tCjxwPlRoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBidW5jaCBvZiBjb252 ZXJzaW9ucy4gU29tZSBhcmUgbW9yZQplZmZpY2llbnQgdGhhbiB0aGVpciA8bCBuPSd0ZXgnLz4g Y291bnRlcnBhcnQsIHNvbWUgYXJlIGV2ZW4Kc2xvd2VyIGJ1dCBsb29rIG5pY2VyIHRoaXMgd2F5 LjwvcD4KCjxwPlNvbWUgY29kZSBtYXkgbW92ZSB0byBhIG1vZHVsZSBpbiB0aGUgbGFuZ3VhZ2Ug bmFtZXNwYWNlLjwvcD4KLS1sZHhdXS0tCgpsb2NhbCBmbG9vciA9IG1hdGguZmxvb3IKbG9jYWwg b3NkYXRlLCBvc3RpbWUgPSBvcy5kYXRlLCBvcy50aW1lCmxvY2FsIGNvbmNhdCwgaW5zZXJ0LCBy ZXZlcnNlID0gdGFibGUuY29uY2F0LCB0YWJsZS5pbnNlcnQsIHRhYmxlLnJldmVyc2UKbG9jYWwg bG93ZXIsIHVwcGVyLCByZXAsIG1hdGNoLCBnc3ViID0gc3RyaW5nLmxvd2VyLCBzdHJpbmcudXBw ZXIsIHN0cmluZy5yZXAsIHN0cmluZy5tYXRjaCwgc3RyaW5nLmdzdWIKbG9jYWwgdXRmY2hhciwg dXRmYnl0ZSA9IHV0Zi5jaGFyLCB1dGYuYnl0ZQpsb2NhbCB0b251bWJlciwgdG9zdHJpbmcsIHR5 cGUsIHJhd3NldCA9IHRvbnVtYmVyLCB0b3N0cmluZywgdHlwZSwgcmF3c2V0CmxvY2FsIFAsIFMs IFIsIENjLCBDZiwgQ2csIEN0LCBDcywgQywgViwgQ2FyZyA9IGxwZWcuUCwgbHBlZy5TLCBscGVn LlIsIGxwZWcuQ2MsIGxwZWcuQ2YsIGxwZWcuQ2csIGxwZWcuQ3QsIGxwZWcuQ3MsIGxwZWcuQywg bHBlZy5WLCBscGVnLkNhcmcKbG9jYWwgbHBlZ21hdGNoLCBscGVncGF0dGVybnMgPSBscGVnLm1h dGNoLCBscGVnLnBhdHRlcm5zCmxvY2FsIGRpdiwgbW9kID0gbWF0aC5kaXYsIG1hdGgubW9kCgps b2NhbCBjb250ZXh0ICAgICAgICAgICAgPSBjb250ZXh0CmxvY2FsIGNvbW1hbmRzICAgICAgICAg ICA9IGNvbW1hbmRzCmxvY2FsIGltcGxlbWVudCAgICAgICAgICA9IGludGVyZmFjZXMuaW1wbGVt ZW50Cgpsb2NhbCBzZXR0aW5nc190b19hcnJheSAgPSB1dGlsaXRpZXMucGFyc2Vycy5zZXR0aW5n c190b19hcnJheQpsb2NhbCBhbGxvY2F0ZSAgICAgICAgICAgPSB1dGlsaXRpZXMuc3RvcmFnZS5h bGxvY2F0ZQpsb2NhbCBzZXRtZXRhdGFibGVpbmRleCAgPSB0YWJsZS5zZXRtZXRhdGFibGVpbmRl eApsb2NhbCBmb3JtYXR0ZXJzICAgICAgICAgPSBzdHJpbmcuZm9ybWF0dGVycwpsb2NhbCB2YXJp YWJsZXMgICAgICAgICAgPSBpbnRlcmZhY2VzLnZhcmlhYmxlcwpsb2NhbCBjb25zdGFudHMgICAg ICAgICAgPSBpbnRlcmZhY2VzLmNvbnN0YW50cwpsb2NhbCBhZGRmb3JtYXR0ZXIgICAgICAgPSB1 dGlsaXRpZXMuc3RyaW5ncy5mb3JtYXR0ZXJzLmFkZAoKbG9jYWwgdGV4c2V0ICAgICAgICAgICAg ID0gdGV4LnNldAoKY29udmVydGVycyAgICAgICAgICAgICAgID0gY29udmVydGVycyBvciB7IH0K bG9jYWwgY29udmVydGVycyAgICAgICAgID0gY29udmVydGVycwoKbGFuZ3VhZ2VzICAgICAgICAg ICAgICAgID0gbGFuZ3VhZ2VzICBvciB7IH0KbG9jYWwgbGFuZ3VhZ2VzICAgICAgICAgID0gbGFu Z3VhZ2VzCgpsb2NhbCBoZWxwZXJzICAgICAgICAgICAgPSBjb252ZXJ0ZXJzLmhlbHBlcnMgb3Ig eyB9CmNvbnZlcnRlcnMuaGVscGVycyAgICAgICA9IGhlbHBlcnMKCmxvY2FsIGN0eF9sYWJlbHRl eHQgICAgICA9IGNvbnRleHQubGFiZWx0ZXh0CmxvY2FsIGN0eF9MQUJFTFRFWFQgICAgICA9IGNv bnRleHQuTEFCRUxURVhUCmxvY2FsIGN0eF9zcGFjZSAgICAgICAgICA9IGNvbnRleHQuc3BhY2UK bG9jYWwgY3R4X2NvbnZlcnRudW1iZXIgID0gY29udGV4dC5jb252ZXJ0bnVtYmVyCmxvY2FsIGN0 eF9oaWdob3JkaW5hbHN0ciA9IGNvbnRleHQuaGlnaG9yZGluYWxzdHIKCmNvbnZlcnRlcnMubnVt YmVyICA9IHRvbnVtYmVyCmNvbnZlcnRlcnMubnVtYmVycyA9IHRvbnVtYmVyCgppbXBsZW1lbnQg eyBuYW1lID0gIm51bWJlciIsICBhY3Rpb25zID0gY29udGV4dCB9CmltcGxlbWVudCB7IG5hbWUg PSAibnVtYmVycyIsIGFjdGlvbnMgPSBjb250ZXh0IH0KCi0tIHRvIGJlIHJlY29uc2lkZXJlZCAu Li4gbGFuZ3VhZ2VzIG5hbWVzcGFjZSBoZXJlLCBtaWdodCBiZWNvbWUgbG9jYWwgcGx1cyBhIHJl Z2lzdGVyIGNvbW1hbmQKCmxvY2FsIGNvdW50ZXJzID0gYWxsb2NhdGUgewogICAgWydkZWZhdWx0 J10gPSB7IC0tIG5vIG1ldGF0YWJsZSBhcyB3ZSBkbyBhIHRlc3Qgb24ga2V5cwogICAgICAgIDB4 MDA2MSwgMHgwMDYyLCAweDAwNjMsIDB4MDA2NCwgMHgwMDY1LAogICAgICAgIDB4MDA2NiwgMHgw MDY3LCAweDAwNjgsIDB4MDA2OSwgMHgwMDZBLAogICAgICAgIDB4MDA2QiwgMHgwMDZDLCAweDAw NkQsIDB4MDA2RSwgMHgwMDZGLAogICAgICAgIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3 MywgMHgwMDc0LAogICAgICAgIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwgMHgwMDc5 LAogICAgICAgIDB4MDA3QQogICAgfSwKICAgIFsnc2xvdmVuaWFuJ10gPSB7CiAgICAgICAgMHgw MDYxLCAweDAwNjIsIDB4MDA2MywgMHgwMTBELCAweDAwNjQsCiAgICAgICAgMHgwMDY1LCAweDAw NjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjksCiAgICAgICAgMHgwMDZBLCAweDAwNkIsIDB4MDA2 QywgMHgwMDZELCAweDAwNkUsCiAgICAgICAgMHgwMDZGLCAweDAwNzAsIDB4MDA3MiwgMHgwMDcz LCAweDAxNjEsCiAgICAgICAgMHgwMDc0LCAweDAwNzUsIDB4MDA3NiwgMHgwMDdBLCAweDAxN0UK ICAgIH0sCiAgICBbJ3NwYW5pc2gnXSA9IHsKICAgICAgICAweDAwNjEsIDB4MDA2MiwgMHgwMDYz LCAweDAwNjQsIDB4MDA2NSwKICAgICAgICAweDAwNjYsIDB4MDA2NywgMHgwMDY4LCAweDAwNjks IDB4MDA2QSwKICAgICAgICAweDAwNkIsIDB4MDA2QywgMHgwMDZELCAweDAwNkUsIDB4MDBGMSwK ICAgICAgICAweDAwNkYsIDB4MDA3MCwgMHgwMDcxLCAweDAwNzIsIDB4MDA3MywKICAgICAgICAw eDAwNzQsIDB4MDA3NSwgMHgwMDc2LCAweDAwNzcsIDB4MDA3OCwKICAgICAgICAweDAwNzksIDB4 MDA3QQogICAgfSwKICAgIFsncnVzc2lhbiddID0gewogICAgICAgIDB4MDQzMCwgMHgwNDMxLCAw eDA0MzIsIDB4MDQzMywgMHgwNDM0LAogICAgICAgIDB4MDQzNSwgMHgwNDM2LCAweDA0MzcsIDB4 MDQzOCwgMHgwNDNhLAogICAgICAgIDB4MDQzYiwgMHgwNDNjLCAweDA0M2QsIDB4MDQzZSwgMHgw NDNmLAogICAgICAgIDB4MDQ0MCwgMHgwNDQxLCAweDA0NDIsIDB4MDQ0MywgMHgwNDQ0LAogICAg ICAgIDB4MDQ0NSwgMHgwNDQ2LCAweDA0NDcsIDB4MDQ0OCwgMHgwNDQ5LAogICAgICAgIDB4MDQ0 ZCwgMHgwNDRlLCAweDA0NGYKICAgIH0sCiAgICBbJ2dyZWVrJ10gPSB7IC0tIHRoaXMgc2hvdWxk IGJlIHRoZSBsb3dlcmNhc2UgdGFibGUKICAgICAtLSAweDAzOTEsIDB4MDM5MiwgMHgwMzkzLCAw eDAzOTQsIDB4MDM5NSwKICAgICAtLSAweDAzOTYsIDB4MDM5NywgMHgwMzk4LCAweDAzOTksIDB4 MDM5QSwKICAgICAtLSAweDAzOUIsIDB4MDM5QywgMHgwMzlELCAweDAzOUUsIDB4MDM5RiwKICAg ICAtLSAweDAzQTAsIDB4MDNBMSwgMHgwM0EzLCAweDAzQTQsIDB4MDNBNSwKICAgICAtLSAweDAz QTYsIDB4MDNBNywgMHgwM0E4LCAweDAzQTkKICAgICAgICAweDAzQjEsIDB4MDNCMiwgMHgwM0Iz LCAweDAzQjQsIDB4MDNCNSwKICAgICAgICAweDAzQjYsIDB4MDNCNywgMHgwM0I4LCAweDAzQjks IDB4MDNCQSwKICAgICAgICAweDAzQkIsIDB4MDNCQywgMHgwM0JELCAweDAzQkUsIDB4MDNCRiwK ICAgICAgICAweDAzQzAsIDB4MDNDMSwgMHgwM0MzLCAweDAzQzQsIDB4MDNDNSwKICAgICAgICAw eDAzQzYsIDB4MDNDNywgMHgwM0M4LCAweDAzQzksCiAgICB9LAogICAgWydhcmFiaWMnXSA9IHsK ICAgICAgICAweDA2MjcsIDB4MDYyOCwgMHgwNjJDLCAweDA2MkYsIDB4MDY0NywKICAgICAgICAw eDA2NDgsIDB4MDYzMiwgMHgwNjJELCAweDA2MzcsIDB4MDY0OSwKICAgICAgICAweDA2NDMsIDB4 MDY0NCwgMHgwNjQ1LCAweDA2NDYsIDB4MDYzMywKICAgICAgICAweDA2MzksIDB4MDY0MSwgMHgw NjM1LCAweDA2NDIsIDB4MDYzMSwKICAgICAgICAweDA2MzQsIDB4MDYyQSwgMHgwNjJCLCAweDA2 MkUsIDB4MDYzMCwKICAgICAgICAweDA2MzYsIDB4MDYzOCwgMHgwNjNBLAogICAgfSwKICAgIFsn cGVyc2lhbiddID0gewogICAgICAgIDB4MDYyNywgMHgwNjI4LCAweDA2MkMsIDB4MDYyRiwgMHgw NjQ3LAogICAgICAgIDB4MDY0OCwgMHgwNjMyLCAweDA2MkQsIDB4MDYzNywgMHgwNjQ5LAogICAg ICAgIDB4MDZBOSwgMHgwNjQ0LCAweDA2NDUsIDB4MDY0NiwgMHgwNjMzLAogICAgICAgIDB4MDYz OSwgMHgwNjQxLCAweDA2MzUsIDB4MDY0MiwgMHgwNjMxLAogICAgICAgIDB4MDYzNCwgMHgwNjJB LCAweDA2MkIsIDB4MDYyRSwgMHgwNjMwLAogICAgICAgIDB4MDYzNiwgMHgwNjM4LCAweDA2M0Es CiAgICB9LAogICAgWyd0aGFpJ10gPSB7CiAgICAgICAgMHhFMDUwLCAweEUwNTEsIDB4RTA1Miwg MHhFMDUzLCAweEUwNTQsCiAgICAgICAgMHhFMDU1LCAweEUwNTYsIDB4RTA1NywgMHhFMDU4LCAw eEUwNTkKICAgIH0sCiAgICBbJ2RldmFuZ2FyaSddID0gewogICAgICAgIDB4MDk2NiwgMHgwOTY3 LCAweDA5NjgsIDB4MDk2OSwgMHgwOTZBLAogICAgICAgIDB4MDk2QiwgMHgwOTZDLCAweDA5NkQs IDB4MDk2RSwgMHgwOTZGCiAgICB9LAogICAgWydndXJtdXJraGknXSA9IHsKICAgICAgICAweDBB NjYsIDB4MEE2NywgMHgwQTY4LCAweDBBNjksIDB4MEE2QSwKICAgICAgICAweDBBNkIsIDB4MEE2 QywgMHgwQTZELCAweDBBNkUsIDB4MEE2RgogICAgfSwKICAgIFsnZ3VqYXJhdGknXSA9IHsKICAg ICAgICAweDBBRTYsIDB4MEFFNywgMHgwQUU4LCAweDBBRTksIDB4MEFFQSwKICAgICAgICAweDBB RUIsIDB4MEFFQywgMHgwQUVELCAweDBBRUUsIDB4MEFFRgogICAgfSwKICAgIFsndGliZXRhbidd ID0gewogICAgICAgIDB4MEYyMCwgMHgwRjIxLCAweDBGMjIsIDB4MEYyMywgMHgwRjI0LAogICAg ICAgIDB4MEYyNSwgMHgwRjI2LCAweDBGMjcsIDB4MEYyOCwgMHgwRjI5CiAgICB9LAogICAgWydr b3JlYW4nXSA9IHsKICAgICAgICAweDMxMzEsIDB4MzEzNCwgMHgzMTM3LCAweDMxMzksIDB4MzE0 MSwKICAgICAgICAweDMxNDIsIDB4MzE0NSwgMHgzMTQ3LCAweDMxNDgsIDB4MzE0QSwKICAgICAg ICAweDMxNEIsIDB4MzE0QywgMHgzMTRELCAweDMxNEUKICAgIH0sCiAgICBbJ2tvcmVhbi1wYXJl bnRoZXNpcyddID0geyAtLQogICAgICAgIDB4MzIwMCwgMHgzMjAxLCAweDMyMDIsIDB4MzIwMywg MHgzMjA0LAogICAgICAgIDB4MzIwNSwgMHgzMjA2LCAweDMyMDcsIDB4MzIwOCwgMHgzMjA5LAog ICAgICAgIDB4MzIwQSwgMHgzMjBCLCAweDMyMEMsIDB4MzIwRAogICAgfSwKICAgIFsna29yZWFu LWNpcmNsZSddID0geyAtLSBjaXJjbGVkCiAgICAgICAgMHgzMjYwLCAweDMyNjEsIDB4MzI2Miwg MHgzMjYzLCAweDMyNjQsCiAgICAgICAgMHgzMjY1LCAweDMyNjYsIDB4MzI2NywgMHgzMjY4LCAw eDMyNjksCiAgICAgICAgMHgzMjZBLCAweDMyNkIsIDB4MzI2QywgMHgzMjZECiAgICB9LAp9Cgps YW5ndWFnZXMuY291bnRlcnMgPSBjb3VudGVycwoKY291bnRlcnNbJ2FyJ10gICAgICAgICAgICAg ICAgICAgICAgICA9IGNvdW50ZXJzWydhcmFiaWMnXQpjb3VudGVyc1snZ3InXSAgICAgICAgICAg ICAgICAgICAgICAgID0gY291bnRlcnNbJ2dyZWVrJ10KY291bnRlcnNbJ2cnXSAgICAgICAgICAg ICAgICAgICAgICAgICA9IGNvdW50ZXJzWydncmVlayddCmNvdW50ZXJzWydzbCddICAgICAgICAg ICAgICAgICAgICAgICAgPSBjb3VudGVyc1snc2xvdmVuaWFuJ10KY291bnRlcnNbJ2VzJ10gICAg ICAgICAgICAgICAgICAgICAgICA9IGNvdW50ZXJzWydzcGFuaXNoJ10KY291bnRlcnNbJ3J1J10g ICAgICAgICAgICAgICAgICAgICAgICA9IGNvdW50ZXJzWydydXNzaWFuJ10KY291bnRlcnNbJ2ty J10gICAgICAgICAgICAgICAgICAgICAgICA9IGNvdW50ZXJzWydrb3JlYW4nXQpjb3VudGVyc1sn a3ItcCddICAgICAgICAgICAgICAgICAgICAgID0gY291bnRlcnNbJ2tvcmVhbi1wYXJlbnRoZXNp cyddCmNvdW50ZXJzWydrci1jJ10gICAgICAgICAgICAgICAgICAgICAgPSBjb3VudGVyc1sna29y ZWFuLWNpcmNsZSddCgpjb3VudGVyc1sndGhhaW51bWVyYWxzJ10gICAgICAgICAgICAgID0gY291 bnRlcnNbJ3RoYWknXQpjb3VudGVyc1snZGV2YW5hZ2FyaW51bWVyYWxzJ10gICAgICAgID0gY291 bnRlcnNbJ2RldmFuYWdhcmknXQpjb3VudGVyc1snZ3VybXVya2hpbnVtZXJhbHMnXSAgICAgICAg ID0gY291bnRlcnNbJ2d1cm11cmtoaSddCmNvdW50ZXJzWydndWphcmF0aW51bWVyYWxzJ10gICAg ICAgICAgPSBjb3VudGVyc1snZ3VqYXJhdGknXQpjb3VudGVyc1sndGliZXRhbm51bWVyYWxzJ10g ICAgICAgICAgID0gY291bnRlcnNbJ3RpYmV0YW4nXQpjb3VudGVyc1snZ3JlZWtudW1lcmFscydd ICAgICAgICAgICAgID0gY291bnRlcnNbJ2dyZWVrJ10KY291bnRlcnNbJ2FyYWJpY251bWVyYWxz J10gICAgICAgICAgICA9IGNvdW50ZXJzWydhcmFiaWMnXQpjb3VudGVyc1sncGVyc2lhbm51bWVy YWxzJ10gICAgICAgICAgID0gY291bnRlcnNbJ3BlcnNpYW4nXQpjb3VudGVyc1snYXJhYmljZXhu dW1lcmFscyddICAgICAgICAgID0gY291bnRlcnNbJ3BlcnNpYW4nXQpjb3VudGVyc1sna29yZWFu bnVtZXJhbHMnXSAgICAgICAgICAgID0gY291bnRlcnNbJ2tvcmVhbiddCmNvdW50ZXJzWydrb3Jl YW5wYXJlbnRoZXNpc251bWVyYWxzJ10gPSBjb3VudGVyc1sna29yZWFuLXBhcmVudGhlc2lzJ10K Y291bnRlcnNbJ2tvcmVhbmNpcmNsZW51bWVyYWxzJ10gICAgICA9IGNvdW50ZXJzWydrb3JlYW4t Y2lyY2xlJ10KCmNvdW50ZXJzWydzbG92ZW5pYW5udW1lcmFscyddICAgICAgICAgPSBjb3VudGVy c1snc2xvdmVuaWFuJ10KY291bnRlcnNbJ3NwYW5pc2hudW1lcmFscyddICAgICAgICAgICA9IGNv dW50ZXJzWydzcGFuaXNoJ10KY291bnRlcnNbJ3J1c3NpYW5udW1lcmFscyddICAgICAgICAgICA9 IGNvdW50ZXJzWydydXNzaWFuJ10KCmxvY2FsIGRlY2ltYWxzID0gYWxsb2NhdGUgewogICAgWydh cmFiaWMnXSA9IHsKICAgICAgICBbIjAiXSA9ICLZoCIsIFsiMSJdID0gItmhIiwgWyIyIl0gPSAi 2aIiLCBbIjMiXSA9ICLZoyIsIFsiNCJdID0gItmkIiwKICAgICAgICBbIjUiXSA9ICLZpSIsIFsi NiJdID0gItmmIiwgWyI3Il0gPSAi2aciLCBbIjgiXSA9ICLZqCIsIFsiOSJdID0gItmpIiwKICAg IH0sCiAgICBbJ3BlcnNpYW4nXSA9IHsKICAgICAgICBbIjAiXSA9ICLbsCIsIFsiMSJdID0gItux IiwgWyIyIl0gPSAi27IiLCBbIjMiXSA9ICLbsyIsIFsiNCJdID0gItu0IiwKICAgICAgICBbIjUi XSA9ICLbtSIsIFsiNiJdID0gItu2IiwgWyI3Il0gPSAi27ciLCBbIjgiXSA9ICLbuCIsIFsiOSJd ID0gItu5IiwKICAgIH0KfQoKbGFuZ3VhZ2VzLmRlY2ltYWxzID0gZGVjaW1hbHMKCmxvY2FsIGZh bGxiYWNrID0gdXRmYnl0ZSgnMCcpCgpsb2NhbCBmdW5jdGlvbiBjaHIobixtKQogICAgcmV0dXJu IChuID4gMCBhbmQgbiA8IDI3IGFuZCB1dGZjaGFyKG4rbSkpIG9yICIiCmVuZAoKbG9jYWwgZnVu Y3Rpb24gY2hycyhuLG0sdCkKICAgIGlmIG5vdCB0IHRoZW4KICAgICAgICB0ID0geyB9CiAgICBl bmQKICAgIGlmIG4gPiAyNiB0aGVuCiAgICAgICAgY2hycyhmbG9vcigobi0xKS8yNiksbSx0KQog ICAgICAgIG4gPSAobi0xKSUyNiArIDEKICAgIGVuZAogICAgaWYgbiB+PSAwIHRoZW4KICAgICAg ICB0WyN0KzFdID0gdXRmY2hhcihuK20pCiAgICBlbmQKICAgIGlmIG4gPD0gMjYgdGhlbgogICAg ICAgIHJldHVybiBjb25jYXQodCkKICAgIGVuZAplbmQKCmxvY2FsIGZ1bmN0aW9uIG1heGNocnMo bixtLGNtZCx0KQogICAgaWYgbm90IHQgdGhlbgogICAgICAgIHQgPSB7IH0KICAgIGVuZAogICAg aWYgbiA+IG0gdGhlbgogICAgICAgIG1heGNocnMoZmxvb3IoKG4tMSkvbSksbSxjbWQpCiAgICAg ICAgbiA9IChuLTEpJW0gKyAxCiAgICBlbmQKICAgIHRbI3QrMV0gPSBmb3JtYXR0ZXJzWyIlc3sl c30iXShjbWQsbikKICAgIGlmIG4gPD0gbSB0aGVuCiAgICAgICAgcmV0dXJuIGNvbmNhdCh0KQog ICAgZW5kCmVuZAoKY29udmVydGVycy5jaHIgICAgID0gY2hyCmNvbnZlcnRlcnMuY2hycyAgICA9 IGNocnMKY29udmVydGVycy5tYXhjaHJzID0gbWF4Y2hycwoKbG9jYWwgbG93ZXJjaGFyYWN0ZXIg PSBjaGFyYWN0ZXJzLmxjY2hhcnMKbG9jYWwgdXBwZXJjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzLnVj Y2hhcnMKCmxvY2FsIGRlZmF1bHRjb3VudGVyID0gY291bnRlcnMuZGVmYXVsdAoKbG9jYWwgZnVu Y3Rpb24gZG9fYWxwaGFiZXRpYyhuLG1hcHBpbmcsbWFwcGVyLHQpIC0tIHRvZG86IG1ha2UgemVy byBiYXNlZCB2YXJpYW50IChpbml0aWFsIG4gKyAxKQogICAgaWYgbm90IHQgdGhlbgogICAgICAg IHQgPSB7IH0KICAgIGVuZAogICAgbG9jYWwgbWF4ID0gI21hcHBpbmcKICAgIGlmIG4gPiBtYXgg dGhlbgogICAgICAgIGRvX2FscGhhYmV0aWMoZmxvb3IoKG4tMSkvbWF4KSxtYXBwaW5nLG1hcHBl cix0KQogICAgICAgIG4gPSAobi0xKSAlIG1heCArIDEKICAgIGVuZAogICAgbG9jYWwgY2hyID0g bWFwcGluZ1tuXSBvciBmYWxsYmFjawogICAgdFsjdCsxXSA9IG1hcHBlciBhbmQgbWFwcGVyW2No cl0gb3IgY2hyCiAgICBpZiBuIDw9IG1heCB0aGVuCiAgICAgICAgcmV0dXJuIGNvbmNhdCh0KQog ICAgZW5kCmVuZAoKbG9jYWwgZnVuY3Rpb24gYWxwaGFiZXRpYyhuLGNvZGUpCiAgICByZXR1cm4g ZG9fYWxwaGFiZXRpYyhuLGNvZGUgYW5kIGNvZGUgfj0gIiIgYW5kIGNvdW50ZXJzW2NvZGVdIG9y IGRlZmF1bHRjb3VudGVyLGxvd2VyY2hhcmFjdGVyKQplbmQKCmxvY2FsIGZ1bmN0aW9uIEFscGhh YmV0aWMobixjb2RlKQogICAgcmV0dXJuIGRvX2FscGhhYmV0aWMobixjb2RlIGFuZCBjb2RlIH49 ICIiIGFuZCBjb3VudGVyc1tjb2RlXSBvciBkZWZhdWx0Y291bnRlcix1cHBlcmNoYXJhY3RlcikK ZW5kCgpjb252ZXJ0ZXJzLmFscGhhYmV0aWMgPSBhbHBoYWJldGljCmNvbnZlcnRlcnMuQWxwaGFi ZXRpYyA9IEFscGhhYmV0aWMKCi0tIHdlIGNvdWxkIG1ha2UgYSByZXBsYWNlcgoKbG9jYWwgZnVu Y3Rpb24gdG9kZWNpbWFscyhuLG5hbWUpCiAgICBsb2NhbCBzdHJlYW0gID0gdG9zdHJpbmcobikK ICAgIGxvY2FsIG1hcHBpbmcgPSBkZWNpbWFsc1tuYW1lXQogICAgcmV0dXJuIG1hcHBpbmcgYW5k IGdzdWIoc3RyZWFtLCIuIixtYXBwaW5nKSBvciBzdHJlYW0KZW5kCgpjb252ZXJ0ZXJzLmRlY2lt YWxzID0gdG9kZWNpbWFscwoKbG9jYWwgbG93ZXJfb2Zmc2V0ID0gOTYKbG9jYWwgdXBwZXJfb2Zm c2V0ID0gNjQKCmZ1bmN0aW9uIGNvbnZlcnRlcnMuY2hhcmFjdGVyIChuKSByZXR1cm4gY2hyIChu LGxvd2VyX29mZnNldCkgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuQ2hhcmFjdGVyIChuKSByZXR1 cm4gY2hyIChuLHVwcGVyX29mZnNldCkgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuY2hhcmFjdGVy cyhuKSByZXR1cm4gY2hycyhuLGxvd2VyX29mZnNldCkgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMu Q2hhcmFjdGVycyhuKSByZXR1cm4gY2hycyhuLHVwcGVyX29mZnNldCkgZW5kCgppbXBsZW1lbnQg eyBuYW1lID0gImFscGhhYmV0aWMiLCBhY3Rpb25zID0geyBhbHBoYWJldGljLCBjb250ZXh0IH0s IGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCAic3RyaW5nIiB9IH0KaW1wbGVtZW50IHsgbmFtZSA9 ICJBbHBoYWJldGljIiwgYWN0aW9ucyA9IHsgQWxwaGFiZXRpYywgY29udGV4dCB9LCBhcmd1bWVu dHMgPSB7ICJpbnRlZ2VyIiwgInN0cmluZyIgfSB9CgppbXBsZW1lbnQgeyBuYW1lID0gImNoYXJh Y3RlciIsICBhY3Rpb25zID0geyBjaHIsICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9IHsgImludGVn ZXIiLCBsb3dlcl9vZmZzZXQgfSB9CmltcGxlbWVudCB7IG5hbWUgPSAiQ2hhcmFjdGVyIiwgIGFj dGlvbnMgPSB7IGNociwgIGNvbnRleHQgfSwgYXJndW1lbnRzID0geyAiaW50ZWdlciIsIHVwcGVy X29mZnNldCB9IH0KaW1wbGVtZW50IHsgbmFtZSA9ICJjaGFyYWN0ZXJzIiwgYWN0aW9ucyA9IHsg Y2hycywgY29udGV4dCB9LCBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwgbG93ZXJfb2Zmc2V0IH0g fQppbXBsZW1lbnQgeyBuYW1lID0gIkNoYXJhY3RlcnMiLCBhY3Rpb25zID0geyBjaHJzLCBjb250 ZXh0IH0sIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCB1cHBlcl9vZmZzZXQgfSB9CgppbXBsZW1l bnQgeyBuYW1lID0gImRlY2ltYWxzIiwgICBhY3Rpb25zID0geyB0b2RlY2ltYWxzLCBjb250ZXh0 IH0sIGFyZ3VtZW50cyA9IHsgImludGVnZXIiLCAic3RyaW5nIiB9IH0KCmxvY2FsIHdlZWtkYXkg ICAgPSBvcy53ZWVrZGF5ICAgIC0tIG1vdmVkIHRvIGwtb3MKbG9jYWwgaXNsZWFweWVhciA9IG9z LmlzbGVhcHllYXIgLS0gbW92ZWQgdG8gbC1vcwpsb2NhbCBub2ZkYXlzICAgID0gb3Mubm9mZGF5 cyAgICAtLSBtb3ZlZCB0byBsLW9zCgpsb2NhbCBmdW5jdGlvbiBsZWFweWVhcih5ZWFyKQogICAg cmV0dXJuIGlzbGVhcHllYXIoeWVhcikgYW5kIDEgb3IgMAplbmQKCmxvY2FsIGZ1bmN0aW9uIHRl eHRpbWUoKQogICAgcmV0dXJuIHRvbnVtYmVyKG9zZGF0ZSgiJUgiKSkgKiA2MCArIHRvbnVtYmVy KG9zZGF0ZSgiJU0iKSkKZW5kCgotLSBGb3IgY29uc2lzdGVudHkgd2UgbmVlZCB0byBhZGQgZGF5 IGhlcmUgYnV0IHRoYXQgY29uZmxpY3RzIHdpdGggdGhlIGN1cnJlbnQKLS0gc2VyaWFsaXplciBz byB0aGVuIGJlc3QgaXMgdG8gaGF2ZSBub25lIGZyb20gbm93IG9uOgoKLS0gZnVuY3Rpb24gY29u dmVydGVycy55ZWFyICAoKSByZXR1cm4gb3NkYXRlKCIlWSIpIGVuZAotLSBmdW5jdGlvbiBjb252 ZXJ0ZXJzLm1vbnRoICgpIHJldHVybiBvc2RhdGUoIiVtIikgZW5kIC0tIGFsd2F5cyB0d28gZGln aXRzCi0tIGZ1bmN0aW9uIGNvbnZlcnRlcnMuZGF5ICAgKCkgcmV0dXJuIG9zZGF0ZSgiJWQiKSBl bmQgLS0gY29uZmxpY3RzCi0tIGZ1bmN0aW9uIGNvbnZlcnRlcnMuaG91ciAgKCkgcmV0dXJuIG9z ZGF0ZSgiJUgiKSBlbmQKLS0gZnVuY3Rpb24gY29udmVydGVycy5taW51dGUoKSByZXR1cm4gb3Nk YXRlKCIlTSIpIGVuZAotLSBmdW5jdGlvbiBjb252ZXJ0ZXJzLnNlY29uZCgpIHJldHVybiBvc2Rh dGUoIiVTIikgZW5kCgpjb252ZXJ0ZXJzLndlZWtkYXkgICAgPSB3ZWVrZGF5CmNvbnZlcnRlcnMu aXNsZWFweWVhciA9IGlzbGVhcHllYXIKY29udmVydGVycy5sZWFweWVhciAgID0gbGVhcHllYXIK Y29udmVydGVycy5ub2ZkYXlzICAgID0gbm9mZGF5cwpjb252ZXJ0ZXJzLnRleHRpbWUgICAgPSB0 ZXh0aW1lCgppbXBsZW1lbnQgeyBuYW1lID0gIndlZWtkYXkiLCAgYWN0aW9ucyA9IHsgd2Vla2Rh eSwgIGNvbnRleHQgfSwgYXJndW1lbnRzID0geyAiaW50ZWdlciIsICJpbnRlZ2VyIiwgImludGVn ZXIiIH0gfQppbXBsZW1lbnQgeyBuYW1lID0gImxlYXB5ZWFyIiwgYWN0aW9ucyA9IHsgbGVhcHll YXIsIGNvbnRleHQgfSwgYXJndW1lbnRzID0gImludGVnZXIiIH0KaW1wbGVtZW50IHsgbmFtZSA9 ICJub2ZkYXlzIiwgIGFjdGlvbnMgPSB7IG5vZmRheXMsICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9 IHsgImludGVnZXIiLCAiaW50ZWdlciIgfSB9CgppbXBsZW1lbnQgeyBuYW1lID0gInllYXIiLCAg ICAgYWN0aW9ucyA9IHsgb3NkYXRlLCAgIGNvbnRleHQgfSwgYXJndW1lbnRzID0gIiclWSciIH0K aW1wbGVtZW50IHsgbmFtZSA9ICJtb250aCIsICAgIGFjdGlvbnMgPSB7IG9zZGF0ZSwgICBjb250 ZXh0IH0sIGFyZ3VtZW50cyA9ICInJW0nIiB9CmltcGxlbWVudCB7IG5hbWUgPSAiZGF5IiwgICAg ICBhY3Rpb25zID0geyBvc2RhdGUsICAgY29udGV4dCB9LCBhcmd1bWVudHMgPSAiJyVkJyIgfQpp bXBsZW1lbnQgeyBuYW1lID0gImhvdXIiLCAgICAgYWN0aW9ucyA9IHsgb3NkYXRlLCAgIGNvbnRl eHQgfSwgYXJndW1lbnRzID0gIiclSCciIH0KaW1wbGVtZW50IHsgbmFtZSA9ICJtaW51dGUiLCAg IGFjdGlvbnMgPSB7IG9zZGF0ZSwgICBjb250ZXh0IH0sIGFyZ3VtZW50cyA9ICInJU0nIiB9Cmlt cGxlbWVudCB7IG5hbWUgPSAic2Vjb25kIiwgICBhY3Rpb25zID0geyBvc2RhdGUsICAgY29udGV4 dCB9LCBhcmd1bWVudHMgPSAiJyVTJyIgfQppbXBsZW1lbnQgeyBuYW1lID0gInRleHRpbWUiLCAg YWN0aW9ucyA9IHsgdGV4dGltZSwgIGNvbnRleHQgfSB9CgppbXBsZW1lbnQgewogICAgbmFtZSAg ICAgID0gImRvaWZlbHNlbGVhcHllYXIiLAogICAgYWN0aW9ucyAgID0geyBpc2xlYXB5ZWFyLCBj b21tYW5kcy5kb2lmZWxzZSB9LAogICAgYXJndW1lbnRzID0gImludGVnZXIiCn0KCmxvY2FsIHJv bWFuID0gewogICAgeyBbMF0gPSAnJywgJ0knLCAnSUknLCAnSUlJJywgJ0lWJywgJ1YnLCAnVkkn LCAnVklJJywgJ1ZJSUknLCAnSVgnIH0sCiAgICB7IFswXSA9ICcnLCAnWCcsICdYWCcsICdYWFgn LCAnWEwnLCAnTCcsICdMWCcsICdMWFgnLCAnTFhYWCcsICdYQycgfSwKICAgIHsgWzBdID0gJycs ICdDJywgJ0NDJywgJ0NDQycsICdDRCcsICdEJywgJ0RDJywgJ0RDQycsICdEQ0NDJywgJ0NNJyB9 LAp9Cgpsb2NhbCBmdW5jdGlvbiB0b3JvbWFuKG4pCiAgICBpZiBuID49IDQwMDAgdGhlbgogICAg ICAgIHJldHVybiB0b3JvbWFuKGZsb29yKG4vMTAwMCkpIC4uICIgIiAuLiB0b3JvbWFuKG4lMTAw MCkKICAgIGVsc2UKICAgICAgICByZXR1cm4gcmVwKCJNIixmbG9vcihuLzEwMDApKSAuLiByb21h blszXVtmbG9vcigobiUxMDAwKS8xMDApXSAuLiByb21hblsyXVtmbG9vcigobiUxMDApLzEwKV0g Li4gcm9tYW5bMV1bZmxvb3IoKG4lMTApLzEpXQogICAgZW5kCmVuZAoKY29udmVydGVycy50b3Jv bWFuICAgICAgID0gdG9yb21hbgpjb252ZXJ0ZXJzLlJvbWFubnVtZXJhbHMgPSB0b3JvbWFuCmNv bnZlcnRlcnMucm9tYW5udW1lcmFscyA9IGZ1bmN0aW9uKG4pIHJldHVybiBsb3dlcih0b3JvbWFu KG4pKSBlbmQKCmNvbnZlcnRlcnNbJ2knXSAgPSBjb252ZXJ0ZXJzLnJvbWFubnVtZXJhbHMKY29u dmVydGVyc1snSSddICA9IGNvbnZlcnRlcnMuUm9tYW5udW1lcmFscwpjb252ZXJ0ZXJzWydyJ10g ID0gY29udmVydGVycy5yb21hbm51bWVyYWxzCmNvbnZlcnRlcnNbJ1InXSAgPSBjb252ZXJ0ZXJz LlJvbWFubnVtZXJhbHMKY29udmVydGVyc1snS1InXSA9IGNvbnZlcnRlcnMuUm9tYW5udW1lcmFs cwpjb252ZXJ0ZXJzWydSSyddID0gY29udmVydGVycy5Sb21hbm51bWVyYWxzCgppbXBsZW1lbnQg ewogICAgbmFtZSAgICAgID0gInJvbWFubnVtZXJhbHMiLAogICAgYWN0aW9ucyAgID0geyB0b3Jv bWFuLCBsb3dlciwgY29udGV4dCB9LAogICAgYXJndW1lbnRzID0gImludGVnZXIiLAp9CgppbXBs ZW1lbnQgewogICAgbmFtZSAgICAgID0gIlJvbWFubnVtZXJhbHMiLAogICAgYWN0aW9ucyAgID0g eyB0b3JvbWFuLCBjb250ZXh0IH0sCiAgICBhcmd1bWVudHMgPSAiaW50ZWdlciIsCn0KCi0tfiBs b2NhbCBzbWFsbCA9IHsKLS1+ICAgICAweDA2MjcsIDB4MDY2RSwgMHgwNjJELCAweDA2MkYsIDB4 MDY0NywgMHgwNjQ4LCAweDA2MzEKLS1+IH0KCi0tfiBsb2NhbCBsYXJnZSA9IHsKLS1+ICAgICB7 IDB4MDYyNywgMHgwNjI4LCAweDA2MkMsIDB4MDYyRiwgMHgwNjQ3LCAweDA2NDgsIDB4MDYzMiwg MHgwNjJELCAweDA2MzcsIH0sCi0tfiAgICAgeyAweDA2NEEsIDB4MDY0MywgMHgwNjQ0LCAweDA2 NDUsIDB4MDY0NiwgMHgwNjMzLCAweDA2MzksIDB4MDY0MSwgMHgwNjM1LCB9LAotLX4gICAgIHsg MHgwNjQyLCAweDA2MzEsIDB4MDYzNCwgMHgwNjJBLCAweDA2MkIsIDB4MDYyRSwgMHgwNjMwLCAw eDA2MzYsIDB4MDYzOCwgfSwKLS1+ICAgICB7IDB4MDYzQSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0tfiB9Cgpsb2Nh bCBzbWFsbCA9IHsKICAgICLYpyIsICLZriIsICLYrSIsICLYryIsICLZhyIsICLZiCIsICLYsSIs Cn0KCmxvY2FsIG1lZGl1bSA9IHsKICAgICAi2KciLCAi2KgiLCAi2KwiLCAi2K8iLCAi2YciLCAi 2YgiLCLYsiIsICLYrSIsICLYtyIgLAogICAgICLZiiIsICLZgyIsICLZhCIsICLZhSIsICLZhiIs ICLYsyIsICLYuSIsICLZgSIsICLYtSIgLAogICAgICLZgiIsICLYsSIsICLYtCIsICLYqiIsICLY qyIsICLYriIsICLYsCIsICLYtiIsICLYuCIgLAogICAgICLYuiIgLAp9Cgpsb2NhbCBsYXJnZSA9 IHsKICAgIHsgItinIiwgItioIiwgItisIiwgItivIiwgItmHIiwgItmIIiwi2LIiLCAi2K0iLCAi 2LciIH0sCiAgICB7ICLZiiIsICLZgyIsICLZhCIsICLZhSIsICLZhiIsICLYsyIsICLYuSIsICLZ gSIsICLYtSIgfSwKICAgIHsgItmCIiwgItixIiwgIti0IiwgItiqIiwgItirIiwgItiuIiwgItiw IiwgIti2IiwgIti4IiB9LAogICAgeyAi2LoiIH0sCn0KCmxvY2FsIGZ1bmN0aW9uIHRvYWJqYWQo bix3aGF0KQogICAgaWYgbiA8PSAwIG9yIG4gPj0gMjAwMCB0aGVuCiAgICAgICAgcmV0dXJuIHRv c3RyaW5nKG4pCiAgICBlbHNlaWYgd2hhdCA9PSAyIGFuZCBuIDw9IDcgdGhlbgogICAgICAgIHJl dHVybiBzbWFsbFtuXQogICAgZWxzZWlmIHdoYXQgPT0gMyBhbmQgbiA8PSAyOCB0aGVuCiAgICAg ICAgcmV0dXJuIG1lZGl1bVtuXQogICAgZWxzZQogICAgICAgIGxvY2FsIGEsIGIsIGMsIGQKICAg ICAgICBhLCBuID0gZmxvb3Iobi8xMDAwKSwgbiAlIDEwMDAgLS0gbW9kKG4sMTAwMCkKICAgICAg ICBiLCBuID0gZmxvb3Iobi8gMTAwKSwgbiAlICAxMDAgLS0gbW9kKG4sIDEwMCkKICAgICAgICBj LCBuID0gZmxvb3Iobi8gIDEwKSwgbiAlICAgMTAgLS0gbW9kKG4sICAxMCkKICAgICAgICBkLCBu ID0gZmxvb3Iobi8gICAxKSwgbiAlICAgIDEgLS0gbW9kKG4sICAgMSkKICAgICAgICByZXR1cm4g KGxhcmdlWzRdW2FdIG9yICIiKSAuLiAobGFyZ2VbM11bYl0gb3IgIiIpIC4uIChsYXJnZVsyXVtj XSBvciAiIikgLi4gKGxhcmdlWzFdW2RdIG9yICIiKQogICAgZW5kCmVuZAoKY29udmVydGVycy50 b2FiamFkID0gdG9hYmphZAoKZnVuY3Rpb24gY29udmVydGVycy5hYmphZG51bWVyYWxzICAgICAo bikgcmV0dXJuIHRvYWJqYWQobixmYWxzZSkgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuYWJqYWRu b2RvdG51bWVyYWxzKG4pIHJldHVybiB0b2FiamFkKG4sdHJ1ZSApIGVuZAoKaW1wbGVtZW50IHsK ICAgIG5hbWUgICAgICA9ICJhYmphZG51bWVyYWxzIiwKICAgIGFjdGlvbnMgICA9IHsgdG9hYmph ZCwgY29udGV4dCB9LAogICAgYXJndW1lbnRzID0geyAiaW50ZWdlciIsIGZhbHNlIH0KfQoKaW1w bGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJhYmphZG5vZG90bnVtZXJhbHMiLAogICAgYWN0aW9u cyAgID0geyB0b2FiamFkLCBjb250ZXh0IH0sCiAgICBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwg dHJ1ZSB9Cn0KCi0tIC0tIC0gaGVicmV3IGFuZCBqaWRkaXNoIC0tIC0tIC0tCgpsb2NhbCB0cmFj ZV9oZWJyZXcgIHRyYWNrZXJzLnJlZ2lzdGVyKCJjb252ZXJ0ZXJzLmhlYnJldyIsIGZ1bmN0aW9u KHYpCiAgICB0cmFjZV9oZWJyZXcgPSB2CmVuZCkKCmxvY2FsIGxpc3QgPSB7CiAgICB7IDQwMCwg IteqIiB9LCB7IDMwMCwgItepIiB9LCB7IDIwMCwgIteoIiB9LCB7IDEwMCwgItenIiB9LAogICAg eyAgOTAsICLXpiIgfSwgeyA4MCwgItekIiB9LCB7IDcwLCAi16IiIH0sIHsgNjAsICLXoSAifSwg eyA1MCwgItegIiB9LCB7IDQwLCAi154iIH0sIHsgMzAsICLXnCIgfSwgeyAyMCwgItebIiB9LCB7 IDEwLCAi15kiIH0sCiAgICB7ICAgOSwgIteYIiB9LCB7IDgsICLXlyIgfSwgeyA3LCAi15YiLCB9 LCB7IDYsICLXlSIsIH0sIHsgNSwgIteUIiB9LCB7IDQsICLXkyIgfSwgeyAzLCAi15IiIH0sIHsg MiwgIteRIiB9LCB7IDEsICLXkCIgfSwKfQoKbG9jYWwgc3BlY2lhbCA9IHsKICAgIFsxNV0gPSAi 15jXtNeVIiwgLS0gZXhjZXB0aW9uOiBhdm9pZCBtaXh1cCB3aXRoIEdvZCDXmdeUCiAgICBbMTZd ID0gIteY17TXliIsIC0tIGV4Y2VwdGlvbjogYXZvaWQgbWl4dXAgd2l0aCBHb2Qg15nXlQp9Cgps b2NhbCBmdW5jdGlvbiB0b2hlYnJldyhuLGdlcnNoYXlpbSxnZXJlc2gpCiAgICBsb2NhbCBzcGxp dCA9IHsgfQogICAgbG9jYWwgc2l6ZSAgPSAwCiAgICB3aGlsZSBuID4gMTAwMCBkbwogICAgICAg IHNpemUgPSBzaXplICsgMQogICAgICAgIHNwbGl0W3NpemVdID0gbiAlIDEwMDAKICAgICAgICBu ID0gZmxvb3Iobi8xMDAwKQogICAgZW5kCiAgICBzaXplID0gc2l6ZSArIDEKICAgIHNwbGl0W3Np emVdID0gbgogICAgZm9yIGk9MSxzaXplIGRvCiAgICAgICAgbG9jYWwgdCA9IHsgfQogICAgICAg IGxvY2FsIG4gPSAwCiAgICAgICAgbG9jYWwgcyA9IHNwbGl0W2ldCiAgICAgICAgd2hpbGUgcyA+ IDAgZG8KICAgICAgICAgICAgZm9yIGk9MSwjbGlzdCBkbwogICAgICAgICAgICAgIDo6YWdhaW46 OgogICAgICAgICAgICAgICAgbG9jYWwgbGkgPSBsaXN0W2ldCiAgICAgICAgICAgICAgICBsb2Nh bCBsMSA9IGxpWzFdCiAgICAgICAgICAgICAgICBsb2NhbCBzMSA9IHNwZWNpYWxbbDFdCiAgICAg ICAgICAgICAgICBpZiBzMSB0aGVuCiAgICAgICAgICAgICAgICAgICAgcyA9IHMgLSBsMQogICAg ICAgICAgICAgICAgICAgIG4gPSBuICsgMQogICAgICAgICAgICAgICAgICAgIHRbbl0gPSBzMQog ICAgICAgICAgICAgICAgICAgIGdvdG8gYWdhaW4KICAgICAgICAgICAgICAgIGVsc2VpZiBzID49 IGwxIHRoZW4KICAgICAgICAgICAgICAgICAgICBzID0gcyAtIGwxCiAgICAgICAgICAgICAgICAg ICAgbiA9IG4gKyAxCiAgICAgICAgICAgICAgICAgICAgdFtuXSA9IGxpWzJdCiAgICAgICAgICAg ICAgICAgICAgZ290byBhZ2FpbgogICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAog ICAgICAgIGVuZAogICAgICAgIDo6ZG9uZTo6CiAgICAgICAgc3BsaXRbaV0gPSB0CiAgICBlbmQK ICAgIGlmIGdlcnNoYXlpbSB0aGVuCiAgICAgICAgZm9yIGk9MSxzaXplIGRvCiAgICAgICAgICAg IGxvY2FsIHNpID0gc3BsaXRbaV0KICAgICAgICAgICAgbG9jYWwgbmkgPSAjc2kKICAgICAgICAg ICAgaWYgbmkgPj0gMiB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbCBzID0gIte0IgogICAgICAg ICAgICAgICAgaW5zZXJ0KHNwbGl0W2ldLG5pLHRyYWNlX2hlYnJldyBhbmQgKCJ7XFxyZWQgIi4u cy4uIn0iKSBvciBzKQogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgIGVuZAogICAgaWYg Z2VyZXNoIHRoZW4KICAgICAgICBmb3IgaT0yLCNzcGxpdCBkbwogICAgICAgICAgICBsb2NhbCBz ID0gcmVwKCLXsyIsaS0xKQogICAgICAgICAgICBpbnNlcnQoc3BsaXRbaV0sdHJhY2VfaGVicmV3 IGFuZCAoIntcXGJsdWUgIi4ucy4uIn0iKSBvciBzKQogICAgICAgIGVuZAogICAgZW5kCiAgICBm b3IgaT0xLHNpemUgZG8KICAgICAgICBzcGxpdFtpXSA9IGNvbmNhdChzcGxpdFtpXSkKICAgIGVu ZAogICAgcmV0dXJuIGNvbmNhdChyZXZlcnNlKHNwbGl0KSkKZW5kCgpjb252ZXJ0ZXJzLnRvaGVi cmV3ICAgICAgID0gdG9oZWJyZXcKY29udmVydGVycy5oZWJyZXdudW1lcmFscyA9IGNvbnZlcnRl cnMudG9oZWJyZXcKCi0tIGNvbnZlcnRlcnNbJ2FscGhhYmV0aWM6aGInXSA9IGNvbnZlcnRlcnMu aGVicmV3bnVtZXJhbHMKCmludGVyZmFjZXMuaW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJo ZWJyZXdudW1lcmFscyIsCiAgICBhY3Rpb25zICAgPSB7IHRvaGVicmV3LCBjb250ZXh0IH0sCiAg ICBhcmd1bWVudHMgPSB7ICJpbnRlZ2VyIiwgdHJ1ZSwgdHJ1ZSB9Cn0KCi0tIC0tIC0tCgpsb2Nh bCB2ZWN0b3IgPSB7CiAgICBub3JtYWwgPSB7CiAgICAgICAgICAgICAgICBbMF0gPSAi44CHIiwK ICAgICAgICAgICAgICAgIFsxXSA9ICLkuIAiLAogICAgICAgICAgICAgICAgWzJdID0gIuS6jCIs CiAgICAgICAgICAgICAgICBbM10gPSAi5LiJIiwKICAgICAgICAgICAgICAgIFs0XSA9ICLlm5si LAogICAgICAgICAgICAgICAgWzVdID0gIuS6lCIsCiAgICAgICAgICAgICAgICBbNl0gPSAi5YWt IiwKICAgICAgICAgICAgICAgIFs3XSA9ICLkuIMiLAogICAgICAgICAgICAgICAgWzhdID0gIuWF qyIsCiAgICAgICAgICAgICAgICBbOV0gPSAi5LmdIiwKICAgICAgICAgICAgICAgWzEwXSA9ICLl jYEiLAogICAgICAgICAgICAgIFsxMDBdID0gIueZviIsCiAgICAgICAgICAgICBbMTAwMF0gPSAi 5Y2DIiwKICAgICAgICAgICAgWzEwMDAwXSA9ICLkuIciLAogICAgICAgIFsxMDAwMDAwMDBdID0g IuS6vyIsCiAgICB9LAogICAgY2FwID0gewogICAgICAgICAgICAgICAgWzBdID0gIumbtiIsCiAg ICAgICAgICAgICAgICBbMV0gPSAi5aO5IiwKICAgICAgICAgICAgICAgIFsyXSA9ICLotLAiLAog ICAgICAgICAgICAgICAgWzNdID0gIuWPgSIsCiAgICAgICAgICAgICAgICBbNF0gPSAi6IKGIiwK ICAgICAgICAgICAgICAgIFs1XSA9ICLkvI0iLAogICAgICAgICAgICAgICAgWzZdID0gIumZhiIs CiAgICAgICAgICAgICAgICBbN10gPSAi5p+SIiwKICAgICAgICAgICAgICAgIFs4XSA9ICLmjYwi LAogICAgICAgICAgICAgICAgWzldID0gIueOliIsCiAgICAgICAgICAgICAgIFsxMF0gPSAi5ou+ IiwKICAgICAgICAgICAgICBbMTAwXSA9ICLkvbAiLAogICAgICAgICAgICAgWzEwMDBdID0gIuS7 nyIsCiAgICAgICAgICAgIFsxMDAwMF0gPSAi6JCsIiwKICAgICAgICBbMTAwMDAwMDAwXSA9ICLk ur8iLAogICAgfSwKICAgIGFsbCA9IHsKICAgICAgICAgICAgICAgIFswXSA9ICLjgIciLAogICAg ICAgICAgICAgICAgWzFdID0gIuS4gCIsCiAgICAgICAgICAgICAgICBbMl0gPSAi5LqMIiwKICAg ICAgICAgICAgICAgIFszXSA9ICLkuIkiLAogICAgICAgICAgICAgICAgWzRdID0gIuWbmyIsCiAg ICAgICAgICAgICAgICBbNV0gPSAi5LqUIiwKICAgICAgICAgICAgICAgIFs2XSA9ICLlha0iLAog ICAgICAgICAgICAgICAgWzddID0gIuS4gyIsCiAgICAgICAgICAgICAgICBbOF0gPSAi5YWrIiwK ICAgICAgICAgICAgICAgIFs5XSA9ICLkuZ0iLAogICAgICAgICAgICAgICBbMTBdID0gIuWNgSIs CiAgICAgICAgICAgICAgIFsyMF0gPSAi5bu/IiwKICAgICAgICAgICAgICAgWzMwXSA9ICLljYUi LAogICAgICAgICAgICAgIFsxMDBdID0gIueZviIsCiAgICAgICAgICAgICBbMTAwMF0gPSAi5Y2D IiwKICAgICAgICAgICAgWzEwMDAwXSA9ICLkuIciLAogICAgICAgIFsxMDAwMDAwMDBdID0gIuS6 vyIsCiAgICB9Cn0KCmxvY2FsIGZ1bmN0aW9uIHRvY2hpbmVzZShuLG5hbWUpIC0tIG5vcm1hbCwg Y2FwcywgYWxsCiAtLSBpbXByb3ZlZCB2ZXJzaW9uIGJ5IExpIFlhbnJ1aQogICAgbG9jYWwgcmVz dWx0LCByID0geyB9LCAwCiAgICBsb2NhbCB2ZWN0b3IgPSB2ZWN0b3JbbmFtZV0gb3IgdmVjdG9y Lm5vcm1hbAogICAgd2hpbGUgdHJ1ZSBkbwogICAgICAgIGlmIG4gPT0gMCB0aGVuCiAgICAgICAg ICAgIGJyZWFrCiAgICAgICAgZWxzZWlmIG4gPj0gMTAwMDAwMDAwIHRoZW4KICAgICAgICAgICAg bG9jYWwgbSA9IGZsb29yKG4vMTAwMDAwMDAwKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1 bHRbcl0gPSB0b2NoaW5lc2UobSxuYW1lKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRb cl0gPSB2ZWN0b3JbMTAwMDAwMDAwXQogICAgICAgICAgICBsb2NhbCB6ID0gbiAtIG0gKiAxMDAw MDAwMDAKICAgICAgICAgICAgaWYgeiA+IDAgYW5kIHogPCAxMDAwMDAwMCB0aGVuIHIgPSByICsg MSA7IHJlc3VsdFtyXSA9IHZlY3RvclswXSBlbmQKICAgICAgICAgICAgbiA9IG4gJSAxMDAwMDAw MDAKICAgICAgICBlbHNlaWYgbiA+PSAxMDAwMDAwMCB0aGVuCiAgICAgICAgICAgIGxvY2FsIG0g PSBmbG9vcihuLzEwMDAwKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB0b2No aW5lc2UobSxuYW1lKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3Jb MTAwMDBdCiAgICAgICAgICAgIGxvY2FsIHogPSBuIC0gbSAqIDEwMDAwCiAgICAgICAgICAgIGlm IHogPiAwIGFuZCB6IDwgMTAwMCB0aGVuIHIgPSByICsgMSA7IHJlc3VsdFtyXSA9IHZlY3Rvclsw XSBlbmQKICAgICAgICAgICAgbiA9IG4gJSAxMDAwMAogICAgICAgIGVsc2VpZiBuID49IDEwMDAw MDAgdGhlbgogICAgICAgICAgICBsb2NhbCBtID0gZmxvb3Iobi8xMDAwMCkKICAgICAgICAgICAg ciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdG9jaGluZXNlKG0sbmFtZSkKICAgICAgICAgICAgciA9 IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEwMDAwXQogICAgICAgICAgICBsb2NhbCB6ID0g biAtIG0gKiAxMDAwMAogICAgICAgICAgICBpZiB6ID4gMCBhbmQgeiA8IDEwMDAgdGhlbiByID0g ciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbMF0gZW5kCiAgICAgICAgICAgIG4gPSBuICUgMTAw MDAKICAgICAgICBlbHNlaWYgbiA+PSAxMDAwMDAgdGhlbgogICAgICAgICAgICBsb2NhbCBtID0g Zmxvb3Iobi8xMDAwMCkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdG9jaGlu ZXNlKG0sbmFtZSkKICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEw MDAwXQogICAgICAgICAgICBsb2NhbCB6ID0gbiAtIG0gKiAxMDAwMAogICAgICAgICAgICBpZiB6 ID4gMCBhbmQgeiA8IDEwMDAgdGhlbiByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbMF0g ZW5kCiAgICAgICAgICAgIG4gPSBuICUgMTAwMDAKICAgICAgICAgZWxzZWlmIG4gPj0gMTAwMDAg dGhlbgogICAgICAgICAgICBsb2NhbCBtID0gZmxvb3Iobi8xMDAwMCkKICAgICAgICAgICAgciA9 IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yW21dCiAgICAgICAgICAgIHIgPSByICsgMSA7IHJl c3VsdFtyXSA9IHZlY3RvclsxMDAwMF0KICAgICAgICAgICAgbG9jYWwgeiA9IG4gLSBtICogMTAw MDAKICAgICAgICAgICAgaWYgeiA+IDAgYW5kIHogPCAxMDAwIHRoZW4gciA9IHIgKyAxIDsgcmVz dWx0W3JdID0gdmVjdG9yWzBdIGVuZAogICAgICAgICAgICBuID0gbiAlIDEwMDAwCiAgICAgICAg IGVsc2VpZiBuID49IDEwMDAgdGhlbgogICAgICAgICAgICBsb2NhbCBtID0gZmxvb3Iobi8xMDAw KQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbbV0KICAgICAgICAg ICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEwMDBdCiAgICAgICAgICAgIGxvY2Fs IHogPSAgbiAtIG0gKiAxMDAwCiAgICAgICAgICAgIGlmIHogPiAwIGFuZCB6IDwgMTAwIHRoZW4g ciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzBdIGVuZAogICAgICAgICAgICBuID0gbiAl IDEwMDAKICAgICAgICAgZWxzZWlmIG4gPj0gMTAwIHRoZW4KICAgICAgICAgICAgbG9jYWwgbSA9 IGZsb29yKG4vMTAwKQogICAgICAgICAgICByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3Jb bV0KICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yWzEwMF0KICAgICAg ICAgICAgbG9jYWwgeiA9IG4gLSBtICogMTAwCiAgICAgICAgICAgIGlmIHogPiAwIGFuZCB6IDwg MTAgdGhlbiByID0gciArIDEgOyByZXN1bHRbcl0gPSB2ZWN0b3JbMF0gZW5kCiAgICAgICAgICAg IG4gPSBuICUgMTAwCiAgICAgICAgIGVsc2VpZiBuID49IDEwIHRoZW4KICAgICAgICAgICAgbG9j YWwgbSA9IGZsb29yKG4vMTApCiAgICAgICAgICAgIGlmIG0gPiAxIGFuZCB2ZWN0b3JbbSoxMF0g dGhlbgogICAgICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yW20qMTBd CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHIgPSByICsgMSA7IHJlc3VsdFtyXSA9 IHZlY3RvclttXQogICAgICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9y WzEwXQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbiA9IG4gJSAxMAogICAgICAgIGVsc2UK ICAgICAgICAgICAgciA9IHIgKyAxIDsgcmVzdWx0W3JdID0gdmVjdG9yW25dCiAgICAgICAgICAg IGJyZWFrCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGlmIChyZXN1bHRbMV0gPT0gdmVjdG9yWzFd IGFuZCByZXN1bHRbMl0gPT0gdmVjdG9yWzEwXSkgdGhlbgogICAgICAgIHJlc3VsdFsxXSA9ICIi CiAgICBlbmQKICAgIHJldHVybiBjb25jYXQocmVzdWx0KQplbmQKCi0tIGxvY2FsIHQgPSB7IDEs MTAsMTUsMjUsMzUsNDUsMTEsMTAwLDExMSwxMTExLDEwMDAwLDExMTExLDEwMDAwMCwxMTExMTEs MTExMTExMSwxMTExMTExMSwxMTExMTExMTEsMTAwMDAwMDAwLDExMTExMTExMTEsMTExMTExMTEx MTEsMTExMTExMTExMTExLDExMTExMTExMTExMTEgfQotLSBmb3Igaz0xLCN0IGRvCi0tIGxvY2Fs IHYgPSB0W2tdCi0tICAgICBwcmludCh2LHRvY2hpbmVzZSh2KSx0b2NoaW5lc2UodiwiYWxsIiks dG9jaGluZXNlKHYsImNhcCIpKQotLSBlbmQKCmNvbnZlcnRlcnMudG9jaGluZXNlID0gdG9jaGlu ZXNlCgpmdW5jdGlvbiBjb252ZXJ0ZXJzLmNoaW5lc2VudW1lcmFscyAgIChuLGhvdykgcmV0dXJu IHRvY2hpbmVzZShuLGhvdyBvciAibm9ybWFsIikgZW5kCmZ1bmN0aW9uIGNvbnZlcnRlcnMuY2hp bmVzZWNhcG51bWVyYWxzKG4pICAgICByZXR1cm4gdG9jaGluZXNlKG4sImNhcCIpIGVuZApmdW5j dGlvbiBjb252ZXJ0ZXJzLmNoaW5lc2VhbGxudW1lcmFscyhuKSAgICAgcmV0dXJuIHRvY2hpbmVz ZShuLCJhbGwiKSBlbmQKCmNvbnZlcnRlcnNbJ2NuJ10gICA9IGNvbnZlcnRlcnMuY2hpbmVzZW51 bWVyYWxzCmNvbnZlcnRlcnNbJ2NuLWMnXSA9IGNvbnZlcnRlcnMuY2hpbmVzZWNhcG51bWVyYWxz CmNvbnZlcnRlcnNbJ2NuLWEnXSA9IGNvbnZlcnRlcnMuY2hpbmVzZWFsbG51bWVyYWxzCgppbXBs ZW1lbnQgewogICAgbmFtZSAgICAgID0gImNoaW5lc2VudW1lcmFscyIsCiAgICBhY3Rpb25zICAg PSB7IHRvY2hpbmVzZSwgY29udGV4dCB9LAogICAgYXJndW1lbnRzID0geyAiaW50ZWdlciIsICJz dHJpbmciIH0KfQoKLS0gdGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbjogd2UgbmVlZCBhIGJl dHRlciBzb2x1dGlvbiB3aGVuIHdlIGhhdmUKLS0gbW9yZSBsYW5ndWFnZXMKCmNvbnZlcnRlcnNb J2EnXSAgPSBjb252ZXJ0ZXJzLmNoYXJhY3RlcnMKY29udmVydGVyc1snQSddICA9IGNvbnZlcnRl cnMuQ2hhcmFjdGVycwpjb252ZXJ0ZXJzWydBSyddID0gY29udmVydGVycy5DaGFyYWN0ZXJzIC0t IG9ic29sZXRlCmNvbnZlcnRlcnNbJ0tBJ10gPSBjb252ZXJ0ZXJzLkNoYXJhY3RlcnMgLS0gb2Jz b2xldGUKCmZ1bmN0aW9uIGNvbnZlcnRlcnMuc3BhbmlzaG51bWVyYWxzICAobikgcmV0dXJuIGFs cGhhYmV0aWMobiwiZXMiKSBlbmQKZnVuY3Rpb24gY29udmVydGVycy5TcGFuaXNobnVtZXJhbHMg IChuKSByZXR1cm4gQWxwaGFiZXRpYyhuLCJlcyIpIGVuZApmdW5jdGlvbiBjb252ZXJ0ZXJzLnNs b3Zlbmlhbm51bWVyYWxzKG4pIHJldHVybiBhbHBoYWJldGljKG4sInNsIikgZW5kCmZ1bmN0aW9u IGNvbnZlcnRlcnMuU2xvdmVuaWFubnVtZXJhbHMobikgcmV0dXJuIEFscGhhYmV0aWMobiwic2wi KSBlbmQKZnVuY3Rpb24gY29udmVydGVycy5ydXNzaWFubnVtZXJhbHMgIChuKSByZXR1cm4gYWxw aGFiZXRpYyhuLCJydSIpIGVuZApmdW5jdGlvbiBjb252ZXJ0ZXJzLlJ1c3NpYW5udW1lcmFscyAg KG4pIHJldHVybiBBbHBoYWJldGljKG4sInJ1IikgZW5kCgpjb252ZXJ0ZXJzWydhbHBoYWJldGlj OmVzJ10gPSBjb252ZXJ0ZXJzLnNwYW5pc2hudW1lcmFscwpjb252ZXJ0ZXJzWydhbHBoYWJldGlj OnNsJ10gPSBjb252ZXJ0ZXJzLnNsb3Zlbmlhbm51bWVyYWxzCmNvbnZlcnRlcnNbJ2FscGhhYmV0 aWM6cnUnXSA9IGNvbnZlcnRlcnMucnVzc2lhbm51bWVyYWxzCgpjb252ZXJ0ZXJzWydBbHBoYWJl dGljOmVzJ10gPSBjb252ZXJ0ZXJzLlNwYW5pc2hudW1lcmFscwpjb252ZXJ0ZXJzWydBbHBoYWJl dGljOnNsJ10gPSBjb252ZXJ0ZXJzLlNsb3Zlbmlhbm51bWVyYWxzCmNvbnZlcnRlcnNbJ0FscGhh YmV0aWM6cnUnXSA9IGNvbnZlcnRlcnMuUnVzc2lhbm51bWVyYWxzCgotLSBib251cwoKY29udmVy dGVyc1snYTplcyddICA9IGNvbnZlcnRlcnMuc3BhbmlzaG51bWVyYWxzCmNvbnZlcnRlcnNbJ2E6 c2wnXSAgPSBjb252ZXJ0ZXJzLnNsb3Zlbmlhbm51bWVyYWxzCmNvbnZlcnRlcnNbJ2E6cnUnXSAg PSBjb252ZXJ0ZXJzLnJ1c3NpYW5udW1lcmFscwpjb252ZXJ0ZXJzWydBOmVzJ10gID0gY29udmVy dGVycy5TcGFuaXNobnVtZXJhbHMKY29udmVydGVyc1snQTpzbCddICA9IGNvbnZlcnRlcnMuU2xv dmVuaWFubnVtZXJhbHMKY29udmVydGVyc1snQTpydSddICA9IGNvbnZlcnRlcnMuUnVzc2lhbm51 bWVyYWxzCgotLSBlbmQgb2YgYm9udXMKCmNvbnZlcnRlcnMuc2VxdWVuY2VzID0gY29udmVydGVy cy5zZXF1ZW5jZXMgb3IgeyB9CmxvY2FsIHNlcXVlbmNlcyAgICAgID0gY29udmVydGVycy5zZXF1 ZW5jZXMKCnN0b3JhZ2UucmVnaXN0ZXIoImNvbnZlcnRlcnMvc2VxdWVuY2VzIiwgc2VxdWVuY2Vz LCAiY29udmVydGVycy5zZXF1ZW5jZXMiKQoKZnVuY3Rpb24gY29udmVydGVycy5kZWZpbmUobmFt ZSxzZXQpIC0tICxsYW5ndWFnZSkKIC0tIGlmIGxhbmd1YWdlIHRoZW4KIC0tICAgICBuYW1lID0g bmFtZSAuLiAiOiIgLi4gbGFuZ3VhZ2UKIC0tIGVuZAogICAgc2VxdWVuY2VzW25hbWVdID0gc2V0 dGluZ3NfdG9fYXJyYXkoc2V0KQplbmQKCmZ1bmN0aW9uIGNvbnZlcnRlcnMubWF4KG5hbWUpCiAg ICBsb2NhbCBzID0gc2VxdWVuY2VzW25hbWVdCiAgICByZXR1cm4gcyBhbmQgI3Mgb3IgMAplbmQK CmltcGxlbWVudCB7CiAgICBuYW1lICAgICAgPSAiZGVmaW5lY29udmVyc2lvbiIsCiAgICBhY3Rp b25zICAgPSBjb252ZXJ0ZXJzLmRlZmluZSwKICAgIGFyZ3VtZW50cyA9ICIyIHN0cmluZ3MiLAp9 CgppbXBsZW1lbnQgewogICAgbmFtZSAgICAgID0gIm5vZmNvbnZlcnNpb25zIiwKICAgIGFjdGlv bnMgICA9IHsgY29udmVydGVycy5tYXgsIGNvbnRleHQgfSwKICAgIGFyZ3VtZW50cyA9ICJzdHJp bmciLAp9Cgpsb2NhbCBmdW5jdGlvbiBjb252ZXJ0KG1ldGhvZCxuLGxhbmd1YWdlKQogICAgbG9j YWwgY29udmVydGVyID0gbGFuZ3VhZ2UgYW5kIGNvbnZlcnRlcnNbbWV0aG9kLi4iOiIuLmxhbmd1 YWdlXSBvciBjb252ZXJ0ZXJzW21ldGhvZF0KICAgIGlmIGNvbnZlcnRlciB0aGVuCiAgICAgICAg cmV0dXJuIGNvbnZlcnRlcihuKQogICAgZWxzZQogICAgICAgIGxvY2FsIGxvd2VybWV0aG9kID0g bG93ZXIobWV0aG9kKQogICAgICAgIGxvY2FsIGxpbmd1aXN0aWMgID0gY291bnRlcnNbbG93ZXJt ZXRob2RdCiAgICAgICAgaWYgbGluZ3Vpc3RpYyB0aGVuCiAgICAgICAgICAgIHJldHVybiBkb19h bHBoYWJldGljKG4sbGluZ3Vpc3RpYyxsb3dlcm1ldGhvZCA9PSBtZXRob2QgYW5kIGxvd2VyY2hh cmFjdGVyIG9yIHVwcGVyY2hhcmFjdGVyKQogICAgICAgIGVuZAogICAgICAgIGxvY2FsIHNlcXVl bmNlID0gc2VxdWVuY2VzW21ldGhvZF0KICAgICAgICBpZiBzZXF1ZW5jZSB0aGVuCiAgICAgICAg ICAgIGxvY2FsIG1heCA9ICNzZXF1ZW5jZQogICAgICAgICAgICBpZiBuID4gbWF4IHRoZW4KICAg ICAgICAgICAgICAgIHJldHVybiBzZXF1ZW5jZVsobi0xKSAlIG1heCArIDFdCiAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgIHJldHVybiBzZXF1ZW5jZVtuXQogICAgICAgICAgICBlbmQK ICAgICAgICBlbmQKICAgICAgICByZXR1cm4gbgogICAgZW5kCmVuZAoKY29udmVydGVycy5jb252 ZXJ0ID0gY29udmVydAoKbG9jYWwgZnVuY3Rpb24gdmFsaWQobWV0aG9kLGxhbmd1YWdlKQogICAg cmV0dXJuIGNvbnZlcnRlcnNbbWV0aG9kLi4iOiIuLmxhbmd1YWdlXSBvciBjb252ZXJ0ZXJzW21l dGhvZF0gb3Igc2VxdWVuY2VzW21ldGhvZF0KZW5kCgppbXBsZW1lbnQgewogICAgbmFtZSAgICAg ID0gImRvaWZlbHNlY29udmVydGVyIiwKICAgIGFjdGlvbnMgICA9IHsgdmFsaWQsIGNvbW1hbmRz LmRvaWZlbHNlIH0sCiAgICBhcmd1bWVudHMgPSAiMiBzdHJpbmdzIiwKfQoKaW1wbGVtZW50IHsK ICAgIG5hbWUgICAgICA9ICJjaGVja2VkY29udmVyc2lvbiIsCiAgICBhY3Rpb25zICAgPSB7IGNv bnZlcnQsIGNvbnRleHQgfSwKICAgIGFyZ3VtZW50cyA9IHsgInN0cmluZyIsICJpbnRlZ2VyIiB9 Cn0KCi0tIGhlYnJldyBkYXRhIGNvbnZlcnNpb24KCmxvY2FsIGdyZWdvcmlhbl90b19oZWJyZXcg IGRvCgogICAgLS0gVGhlIG5leHQgY29kZSBpcyBiYXNlZCBvbiB0aGUgYyBjb2RlIGF0IGh0dHBz Oi8vZ2l0aHViLmNvbS9oZWJjYWwvaGViY2FsCiAgICAtLQogICAgLS0gSGViY2FsICAgICA6IEEg SmV3aXNoIENhbGVuZGFyIEdlbmVyYXRvcgogICAgLS0gQ29weXJpZ2h0ICA6IDE5OTQgLSAyMDA0 IERhbm55IFNhZGlub2ZmLCAyMDAyIE1pY2hhZWwgSi4gUmFkd2luCiAgICAtLSBMaWNlbnNlICAg IDogR1BMCiAgICAtLQogICAgLS0gQmVjYXVzZSB3ZSBvbmx5IG5lZWQgc2ltcGxlIGRhdGVzLCB3 ZSB1c2UgcGFydCBvZiB0aGUgY29kZS4gVGhlcmUgaXMgbW9yZQogICAgLS0gYXQgdGhhdCBnaXRo dWIgcGxhY2UuCiAgICAtLQogICAgLS0gVGhlIG51bWJlciBvZiBkYXlzIGVsYXBzZWQgYmV0d2Vl biB0aGUgR3JlZ29yaWFuIGRhdGUgMTIvMzEvMSBCQyBhbmQgREFURS4KICAgIC0tIFRoZSBHcmVn b3JpYW4gZGF0ZSBTdW5kYXksIERlY2VtYmVyIDMxLCAxIEJDIGlzIGltYWdpbmFyeS4KICAgIC0t CiAgICAtLSBUaGUgY29kZSBpcyBsdWFmaWVkIGFuZCBhIGxpdHRsZSBkaWZmZXJlbnQgYmVjYXVz ZSB3ZSBoYXZlIG5vIGFzc2lnbm1lbnRzCiAgICAtLSBpbiBsb29wcyBhbmQgc3VjaC4gV2UgY291 bGQgc3BlZWQgdXAgdGhlIGNvZGUgYnV0IHRoZW4gd2UgZGl2ZXJ0IGZyb20gdGhlCiAgICAtLSBv cmlnaW5hbC4gVGhpcyBpcyBub3QgdGhhdCBjcml0aWNhbCBhbnl3YXkuCgogICAgbG9jYWwgTklT QU4gICAgPSAgMQogICAgbG9jYWwgSVlZQVIgICAgPSAgMgogICAgbG9jYWwgU0lWQU4gICAgPSAg MwogICAgbG9jYWwgVEFNVVogICAgPSAgNAogICAgbG9jYWwgQVYgICAgICAgPSAgNQogICAgbG9j YWwgRUxVTCAgICAgPSAgNgogICAgbG9jYWwgVElTSFJFSSAgPSAgNwogICAgbG9jYWwgQ0hFU0hW QU4gPSAgOAogICAgbG9jYWwgS0lTTEVWICAgPSAgOQogICAgbG9jYWwgVEVWRVQgICAgPSAxMAog ICAgbG9jYWwgU0hWQVQgICAgPSAxMQogICAgbG9jYWwgQURBUl9JICAgPSAxMgogICAgbG9jYWwg QURBUl9JSSAgPSAxMwoKICAgIGxvY2FsIG1tYXAgPSB7CiAgICAgICAgS0lTTEVWLAogICAgICAg IFRFVkVULAogICAgICAgIFNIVkFULAogICAgICAgIEFEQVJfSSwKICAgICAgICBOSVNBTiwKICAg ICAgICBJWVlBUiwKICAgICAgICBTSVZBTiwKICAgICAgICBUQU1VWiwKICAgICAgICBUSVNIUkVJ LAogICAgICAgIFRJU0hSRUksCiAgICAgICAgVElTSFJFSSwKICAgICAgICBDSEVTSFZBTgogICAg fQoKICAgIGxvY2FsIGZ1bmN0aW9uIGdyZWcyYWJzKHllYXIsbW9udGgsZGF5KQogICAgICAgIGxv Y2FsIHkgPSB5ZWFyIC0gMQogICAgICAgIHJldHVybiB5ICogMzY1ICsgZGl2KHksNCktIGRpdih5 LDEwMCkgKyBkaXYoeSw0MDApICsgb3Mubm9mZGF5cyh5ZWFyLG1vbnRoLGRheSkKICAgIGVuZAoK ICAgIGxvY2FsIGZ1bmN0aW9uIGFiczJncmVnKGFicykKCiAgICAgICAgbG9jYWwgZDAgICA9IGFi cyAtIDEKCiAgICAgICAgbG9jYWwgbjQwMCA9IGRpdihkMCwgMTQ2MDk3KQogICAgICAgIGxvY2Fs IGQxICAgPSBtb2QoZDAsIDE0NjA5NykKICAgICAgICBsb2NhbCBuMTAwID0gZGl2KGQxLCAgMzY1 MjQpCiAgICAgICAgbG9jYWwgZDIgICA9IG1vZChkMSwgIDM2NTI0KQogICAgICAgIGxvY2FsIG40 ICAgPSBkaXYoZDIsICAgMTQ2MSkKICAgICAgICBsb2NhbCBkMyAgID0gbW9kKGQyLCAgIDE0NjEp CiAgICAgICAgbG9jYWwgbjEgICA9IGRpdihkMywgICAgMzY1KQoKICAgICAgICBsb2NhbCBkYXkg ID0gbW9kKGQzLCAzNjUpICsgMQogICAgICAgIGxvY2FsIHllYXIgPSA0MDAgKiBuNDAwICsgMTAw ICogbjEwMCArIDQgKiBuNCArIG4xCgogICAgICAgIGlmIG4xMDAgPT0gNCBvciBuMSA9PSA0IHRo ZW4KICAgICAgICAgICAgcmV0dXJuIHllYXIsIDEyLCAzMQogICAgICAgIGVsc2UKICAgICAgICAg ICAgeWVhciA9IHllYXIgKyAxCiAgICAgICAgICAgIG1vbnRoID0gMQogICAgICAgICAgICB3aGls ZSB0cnVlIGRvCiAgICAgICAgICAgICAgICBsb2NhbCBtbGVuID0gb3Mubm9mZGF5cyh5ZWFyLG1v bnRoKQogICAgICAgICAgICAgICAgaWYgbWxlbiA8IGRheSB0aGVuCiAgICAgICAgICAgICAgICAg ICAgZGF5ICAgPSBkYXkgLSBtbGVuCiAgICAgICAgICAgICAgICAgICAgbW9udGggPSBtb250aCAr IDEKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAg ICAgICAgICAgZW5kCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICByZXR1cm4geWVhciwgbW9u dGgsIGRheQogICAgICAgIGVuZAogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gaGVicmV3X2xl YXB5ZWFyKHllYXIpCiAgICAgICAgcmV0dXJuIG1vZCgxICsgeWVhciAqIDcsIDE5KSA8IDcKICAg IGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGhlYnJld19tb250aHNfaW5feWVhcih5ZWFyKQogICAg ICAgIHJldHVybiBoZWJyZXdfbGVhcHllYXIoeWVhcikgYW5kIDEzIG9yIDEyCiAgICBlbmQKCiAg ICBsb2NhbCBmdW5jdGlvbiBoZWJyZXdfZWxhcHNlZF9kYXlzKHllYXIpCiAgICAgICAgbG9jYWwg eSAgICAgICAgID0geWVhciAtIDEKICAgICAgICBsb2NhbCBtX2VsYXBzZWQgPSAyMzUgKiBkaXYo eSwxOSkgKyAxMiAqIG1vZCh5LDE5KSArIGRpdigoKG1vZCh5LDE5KSAqIDcpICsgMSksMTkpCiAg ICAgICAgbG9jYWwgcF9lbGFwc2VkID0gMjA0ICsgNzkzICogbW9kKG1fZWxhcHNlZCwxMDgwKQog ICAgICAgIGxvY2FsIGhfZWxhcHNlZCA9IDUgKyAxMiAqIG1fZWxhcHNlZCArIDc5MyAqIGRpdiht X2VsYXBzZWQsMTA4MCkgKyBkaXYocF9lbGFwc2VkLDEwODApCiAgICAgICAgbG9jYWwgcGFydHMg ICAgID0gbW9kKHBfZWxhcHNlZCwxMDgwKSArIDEwODAgKiBtb2QoaF9lbGFwc2VkLDI0KQogICAg ICAgIGxvY2FsIGRheSAgICAgICA9IDEgKyAyOSAqIG1fZWxhcHNlZCArIGRpdihoX2VsYXBzZWQs MjQpCiAgICAgICAgbG9jYWwgZCAgICAgICAgID0gbW9kKGRheSw3KQogICAgICAgIGxvY2FsIGFs dF9kYXkgICA9IGRheQogICAgICAgIGlmICAgICAgIHBhcnRzID49IDE5NDQwCiAgICAgICAgICAg ICBvciAocGFydHMgPj0gIDk5MjQgYW5kIGQgPT0gMiBhbmQgbm90IChoZWJyZXdfbGVhcHllYXIo eWVhcikpKQogICAgICAgICAgICAgb3IgKHBhcnRzID49IDE2Nzg5IGFuZCBkID09IDEgYW5kICAg ICAgaGVicmV3X2xlYXB5ZWFyKHkgICApKSB0aGVuCiAgICAgICAgICAgIGFsdF9kYXkgPSBhbHRf ZGF5ICsgMQogICAgICAgIGVuZAogICAgICAgIGQgPSBtb2QoYWx0X2RheSw3KQogICAgICAgIGlm IGQgPT0gMCBvciBkID09IDMgb3IgZCA9PSA1IHRoZW4KICAgICAgICAgICAgYWx0X2RheSA9IGFs dF9kYXkgKyAxCiAgICAgICAgZW5kCiAgICAgICAgcmV0dXJuIGFsdF9kYXkKICAgIGVuZAoKICAg IGxvY2FsIGZ1bmN0aW9uIGRheXNfaW5faGVicmV3X3llYXIoeWVhcikKICAgICAgICByZXR1cm4g aGVicmV3X2VsYXBzZWRfZGF5cyh5ZWFyICsgMSkgLSBoZWJyZXdfZWxhcHNlZF9kYXlzKHllYXIp CiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBsb25nX2NoZXNodmFuKHllYXIpCiAgICAgICAg cmV0dXJuIG1vZChkYXlzX2luX2hlYnJld195ZWFyKHllYXIpLDEwKSA9PSA1CiAgICBlbmQKCiAg ICBsb2NhbCBmdW5jdGlvbiBzaG9ydF9raXNsZXYoeWVhcikKICAgICAgICByZXR1cm4gbW9kKGRh eXNfaW5faGVicmV3X3llYXIoeWVhciksMTApID09IDMKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0 aW9uIG1heF9kYXlzX2luX2hlYl9tb250aChtb250aCx5ZWFyKQogICAgICAgIGlmIG1vbnRoID09 IElZWUFSIG9yIG1vbnRoID09IFRBTVVaIG9yIG1vbnRoID09IEVMVUwgb3IgbW9udGggPT0gVEVW RVQgb3IgbW9udGggPT0gQURBUl9JSSBvcgogICAgICAgICAgIChtb250aCA9PSBBREFSX0kgICBh bmQgbm90IGhlYnJld19sZWFweWVhcih5ZWFyKSkgb3IKICAgICAgICAgICAobW9udGggPT0gQ0hF U0hWQU4gYW5kIG5vdCBsb25nX2NoZXNodmFuKHllYXIpKSAgIG9yCiAgICAgICAgICAgKG1vbnRo ID09IEtJU0xFViAgIGFuZCAgICAgc2hvcnRfa2lzbGV2ICh5ZWFyKSkgICB0aGVuCiAgICAgICAg ICAgIHJldHVybiAyOQogICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0dXJuIDMwCiAgICAgICAg ZW5kCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiBoZWJyZXcyYWJzKHllYXIsbW9udGgsZGF5 KQogICAgICAgIGlmIG1vbnRoIDwgVElTSFJFSSB0aGVuCiAgICAgICAgICAgIGZvciBtPVRJU0hS RUksIGhlYnJld19tb250aHNfaW5feWVhcih5ZWFyKSwgMSBkbwogICAgICAgICAgICAgICAgZGF5 ID0gZGF5ICsgbWF4X2RheXNfaW5faGViX21vbnRoKG0seWVhcikKICAgICAgICAgICAgZW5kCiAg ICAgICAgICAgIGZvciBtPU5JU0FOLCBtb250aCAtIDEsIDEgZG8KICAgICAgICAgICAgICAgIGRh eSA9IGRheSArIG1heF9kYXlzX2luX2hlYl9tb250aChtLHllYXIpCiAgICAgICAgICAgIGVuZAog ICAgICAgIGVsc2UKICAgICAgICAgICAgZm9yIG09VElTSFJFSSwgbW9udGggLSAxLCAxIGRvCiAg ICAgICAgICAgICAgICBkYXkgPSBkYXkgKyBtYXhfZGF5c19pbl9oZWJfbW9udGgobSx5ZWFyKQog ICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICByZXR1cm4gaGVicmV3X2VsYXBzZWRf ZGF5cyh5ZWFyKSAtIDEzNzM0MjkgKyBkYXkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIGFi czJoZWJyZXcoYWJzKQogICAgICAgIGxvY2FsIHl5LCBtbSwgZGQgPSBhYnMyZ3JlZyhhYnMpCiAg ICAgICAgbG9jYWwgZGF5ICAgPSAxCiAgICAgICAgbG9jYWwgbW9udGggPSBUSVNIUkVJCiAgICAg ICAgbG9jYWwgeWVhciAgPSAzNzYwICsgeXkKICAgICAgICB3aGlsZSBhYnMgPj0gaGVicmV3MmFi cyh5ZWFyKzEsbW9udGgsZGF5KSBkbwogICAgICAgICAgICB5ZWFyID0geWVhciArIDEKICAgICAg ICBlbmQKICAgICAgICBpZiB5ZWFyID49IDQ2MzUgYW5kIHllYXIgPCAxMDY2NiB0aGVuCiAgICAg ICAgICAgIG1vbnRoID0gbW1hcFttbV0KICAgICAgICBlbmQKICAgICAgICB3aGlsZSBhYnMgPiBo ZWJyZXcyYWJzKHllYXIsbW9udGgsbWF4X2RheXNfaW5faGViX21vbnRoKG1vbnRoLHllYXIpKSBk bwogICAgICAgICAgICBtb250aCA9IG1vZChtb250aCxoZWJyZXdfbW9udGhzX2luX3llYXIoeWVh cikpICsgMQogICAgICAgIGVuZAogICAgICAgIGRheSA9IGFicyAtIGhlYnJldzJhYnMoeWVhcixt b250aCwxKSArIDEKICAgICAgICByZXR1cm4geWVhciwgbW9udGgsIGRheQogICAgZW5kCgogICAg LS0gbW9udGhzID0geyAi16DXmdeh158iICLXkNeZ15nXqCIgIteh15nXldefIiAi16rXnteV15Yi ICLXkNeRIiAi15DXnNeV15wiICLXqtep16jXmSIgIteX16nXldefIiAi15vXodec15UiICLXmNeR 16oiICLXqdeR15giIH0KCiAgICBncmVnb3JpYW5fdG9faGVicmV3ID0gZnVuY3Rpb24oeSxtLGQp CiAgICAgICAgcmV0dXJuIGFiczJoZWJyZXcoZ3JlZzJhYnMoeSxtLGQpKQogICAgZW5kCgogICAg Y29udmVydGVycy5ncmVnb3JpYW5fdG9faGVicmV3ID0gZ3JlZ29yaWFuX3RvX2hlYnJldwoKZW5k Cgpsb2NhbCBncmVnb3JpYW5fdG9famFsYWxpLCBqYWxhbGlfdG9fZ3JlZ29yaWFuIGRvCgogICAg LS0gV2VsbCwgc2luY2UgdGhlIG9uZSBhc2tpbmcgZm9yIHRoaXMgZGlkbid0IHRlc3QgaXQgdGhl IGZvbGxvd2luZyBjb2RlIGlzIG5vdAogICAgLS0gZW5hYmxlZC4KICAgIC0tCiAgICAtLSAtLSBU aGlzIEx1YSB2ZXJzaW9uIGlzIGJhc2VkIG9uIGEgSmF2YXNjcmlwdCBieSBCZWhkYWQgRXNmYWhi b2Qgd2hpY2ggaW4gdHVybgogICAgLS0gLS0gaXMgYmFzZWQgb24gR1BMJ2QgY29kZSBieSBSb296 YmVoIFBvdXJuYWRlciBvZiB0aGUgVGhlIEZhcnNpV2ViIFByb2plY3QKICAgIC0tIC0tIEdyb3Vw OiBodHRwOi8vd3d3LmZhcnNpd2ViLmluZm8vamFsYWxpL2phbGFsaS5qcy4KICAgIC0tIC0tCiAg ICAtLSAtLSBXZSBzdGFydCB0YWJsZXMgYXQgb25lLCBJIGtlcHQgaXQgemVybyBiYXNlZCBpbiBv cmRlciB0byBzdGF5IGNsb3NlIHRvCiAgICAtLSAtLSB0aGUgb3JpZ2luYWwuCiAgICAtLSAtLQog ICAgLS0gLS0gQ29udmVyc2lvbiBieSBIYW5zIEhhZ2VuCgogICAgbG9jYWwgZ19kYXlzX2luX21v bnRoID0geyBbMF0gPSAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAs IDMxIH0KICAgIGxvY2FsIGpfZGF5c19pbl9tb250aCA9IHsgWzBdID0gMzEsIDMxLCAzMSwgMzEs IDMxLCAzMSwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyOSB9CgoKICAgIGdyZWdvcmlhbl90b19qYWxh bGkgPSBmdW5jdGlvbihneSxnbSxnZCkKICAgICAgICBsb2NhbCBqeSwgam0sIGpkLCBnX2RheV9u bywgal9kYXlfbm8sIGpfbnAsIGkKICAgICAgICBneSwgZ20sIGdkID0gZ3kgLSAxNjAwLCBnbSAt IDEsIGdkIC0gMQogICAgICAgIGdfZGF5X25vID0gMzY1Kmd5ICsgZGl2KChneSszKSw0KSAtIGRp digoZ3krOTkpLDEwMCkgKyBkaXYoKGd5KzM5OSksNDAwKQogICAgICAgIGkgPSAwCiAgICAgICAg d2hpbGUgaSA8IGdtIGRvCiAgICAgICAgICAgIGdfZGF5X25vID0gZ19kYXlfbm8gKyBnX2RheXNf aW5fbW9udGhbaV0KICAgICAgICAgICAgaSA9IGkgKyAxCiAgICAgICAgZW5kCiAgICAgICAgaWYg KGdtPjEgYW5kICgoZ3klND09MCBhbmQgZ3klMTAwfj0wKSBvciAoZ3klNDAwPT0wKSkpIHRoZW4K ICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9ubyArIDEKICAgICAgICBlbmQKICAgICAgICBn X2RheV9ubyA9IGdfZGF5X25vICsgZ2QKICAgICAgICBqX2RheV9ubyA9IGdfZGF5X25vIC0gNzkK ICAgICAgICBqX25wID0gZGl2KGpfZGF5X25vLDEyMDUzKQogICAgICAgIGpfZGF5X25vID0gbW9k KGpfZGF5X25vLDEyMDUzKQogICAgICAgIGp5ID0gOTc5ICsgMzMqal9ucCArIDQqZGl2KGpfZGF5 X25vLDE0NjEpCiAgICAgICAgal9kYXlfbm8gPSBtb2Qoal9kYXlfbm8sMTQ2MSkKICAgICAgICBp ZiBqX2RheV9ubyA+PSAzNjYgdGhlbgogICAgICAgICAgICBqeSA9IGp5ICsgZGl2KChqX2RheV9u by0xKSwzNjUpCiAgICAgICAgICAgIGpfZGF5X25vID0gbW9kKChqX2RheV9uby0xKSwzNjUpCiAg ICAgICAgZW5kCiAgICAgICAgaSA9IDAKICAgICAgICB3aGlsZSBpIDwgMTEgYW5kIGpfZGF5X25v ID49IGpfZGF5c19pbl9tb250aFtpXSBkbwogICAgICAgICAgICBqX2RheV9ubyA9IGpfZGF5X25v IC0gal9kYXlzX2luX21vbnRoW2ldCiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIGVuZAog ICAgICAgIGptID0gaSArIDEKICAgICAgICBqZCA9IGpfZGF5X25vICsgMQogICAgICAgIHJldHVy biBqeSwgam0sIGpkCiAgICBlbmQKCiAgICBqYWxhbGlfdG9fZ3JlZ29yaWFuID0gZnVuY3Rpb24o anksam0samQpCiAgICAgICAgbG9jYWwgZ3ksIGdtLCBnZCwgZ19kYXlfbm8sIGpfZGF5X25vLCBs ZWFwLCBpCiAgICAgICAganksIGptLCBqZCA9IGp5IC0gOTc5LCBqbSAtIDEsIGpkIC0gMQogICAg ICAgIGpfZGF5X25vID0gMzY1Kmp5ICsgZGl2KGp5LDMzKSo4ICsgZGl2KChtb2QoanksMzMpKzMp LDQpCiAgICAgICAgZm9yIGk9MCxqbS0xLDEgZG8KICAgICAgICAgICAgal9kYXlfbm8gPSBqX2Rh eV9ubyArIGpfZGF5c19pbl9tb250aFtpXQogICAgICAgIGVuZAogICAgICAgIGpfZGF5X25vID0g al9kYXlfbm8gKyBqZAogICAgICAgIGdfZGF5X25vID0gal9kYXlfbm8gKyA3OQogICAgICAgIGd5 ID0gMTYwMCArIDQwMCpkaXYoZ19kYXlfbm8sMTQ2MDk3KQogICAgICAgIGdfZGF5X25vID0gbW9k KGdfZGF5X25vLCAxNDYwOTcpCiAgICAgICAgbGVhcCA9IDEKICAgICAgICBpZiBnX2RheV9ubyA+ PSAzNjUyNSB0aGVuCiAgICAgICAgICAgIGdfZGF5X25vID0gZ19kYXlfbm8gLSAxCiAgICAgICAg ICAgIGd5ID0gZ3kgKyAxMDAqZGl2KGdfZGF5X25vLDM2NTI0KQogICAgICAgICAgICBnX2RheV9u byA9IG1vZChnX2RheV9ubywgMzY1MjQpCiAgICAgICAgICAgIGlmIGdfZGF5X25vID49IDM2NSB0 aGVuCiAgICAgICAgICAgICAgICBnX2RheV9ubyA9IGdfZGF5X25vICsgMQogICAgICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICBsZWFwID0gMAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQK ICAgICAgICBneSA9IGd5ICArIDQqZGl2KGdfZGF5X25vLDE0NjEpCiAgICAgICAgZ19kYXlfbm8g PSBtb2QoZ19kYXlfbm8sIDE0NjEpCiAgICAgICAgaWYgZ19kYXlfbm8gPj0gMzY2IHRoZW4KICAg ICAgICAgICAgbGVhcCA9IDAKICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9ubyAtIDEKICAg ICAgICAgICAgZ3kgPSBneSArIGRpdihnX2RheV9ubywgMzY1KQogICAgICAgICAgICBnX2RheV9u byA9IG1vZChnX2RheV9ubywgMzY1KQogICAgICAgIGVuZAogICAgICAgIGkgPSAwCiAgICAgICAg d2hpbGUgdHJ1ZSBkbwogICAgICAgICAgICBsb2NhbCBkID0gZ19kYXlzX2luX21vbnRoW2ldICsg KChpID09IDEgYW5kIGxlYXApIG9yIDApCiAgICAgICAgICAgIGlmIGdfZGF5X25vID49IGQgdGhl bgogICAgICAgICAgICAgICAgZ19kYXlfbm8gPSBnX2RheV9ubyAtIGQKICAgICAgICAgICAgICAg IGkgPSBpICsgMQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBicmVhawogICAgICAg ICAgICBlbmQKICAgICAgICBlbmQKICAgICAgICBnbSA9IGkgKyAxCiAgICAgICAgZ2QgPSBnX2Rh eV9ubyArIDEKICAgICAgICByZXR1cm4gZ3ksIGdtLCBnZAogICAgZW5kCgogICAgLS0gbG9jYWwg ZnVuY3Rpb24gdGVzdCh5ZyxtZyxkZyx5aixtaixkaikKICAgIC0tICAgICBsb2NhbCB5MSwgbTEs IGQxID0gamFsYWxpX3RvX2dyZWdvcmlhbih5aixtaixkaikKICAgIC0tICAgICBsb2NhbCB5Miwg bTIsIGQyID0gZ3JlZ29yaWFuX3RvX2phbGFsaSh5ZyxtZyxkZykKICAgIC0tICAgICBwcmludCh5 MSA9PSB5ZyBhbmQgbTEgPT0gbWcgYW5kIGQxID09IGRnLCB5ZyxtZyxkZywgeTEsbTEsZDEpCiAg ICAtLSAgICAgcHJpbnQoeTIgPT0geWogYW5kIG0yID09IG1qIGFuZCBkMiA9PSBkaiwgeWosbWos ZGosIHkyLG0yLGQyKQogICAgLS0gZW5kCgogICAgLS0gdGVzdCgxOTUzLDA4LDE5LCAxMzMyLDA1 LDI4KQogICAgLS0gdGVzdCgxOTc5LDAyLDExLCAxMzU3LDExLDIyKQogICAgLS0gdGVzdCgyMDAw LDAyLDI4LCAxMzc4LDEyLDA5KQogICAgLS0gdGVzdCgyMDAwLDAzLDAxLCAxMzc4LDEyLDExKQog ICAgLS0gdGVzdCgyMDA5LDAyLDI0LCAxMzg3LDEyLDA2KQogICAgLS0gdGVzdCgyMDE1LDAzLDIx LCAxMzk0LDAxLDAxKQogICAgLS0gdGVzdCgyMDE2LDAzLDIwLCAxMzk1LDAxLDAxKQoKICAgIGNv bnZlcnRlcnMuZ3JlZ29yaWFuX3RvX2phbGFsaSA9IGdyZWdvcmlhbl90b19qYWxhbGkKICAgIGNv bnZlcnRlcnMuamFsYWxpX3RvX2dyZWdvcmlhbiA9IGphbGFsaV90b19ncmVnb3JpYW4KCmVuZAoK LS0gLS0gbW9yZSBlZmZpY2llbnQgYnV0IG5lZWRzIHRlc3RpbmcKCi0tIGxvY2FsIGVzY2FwZXMg PSBjaGFyYWN0ZXJzLmZpbHRlcnMudXRmLnByaXZhdGUuZXNjYXBlcwoKLS0gbG9jYWwgZnVuY3Rp b24gZG9fYWxwaGFiZXRpYyhuLG1hcHBpbmcsY2hyKQotLSAgICAgbG9jYWwgbWF4ID0gI21hcHBp bmcKLS0gICAgIGlmIG4gPiBtYXggdGhlbgotLSAgICAgICAgIGRvX2FscGhhYmV0aWMoZmxvb3Io KG4tMSkvbWF4KSxtYXBwaW5nLGNocikKLS0gICAgICAgICBuID0gKG4tMSklbWF4KzEKLS0gICAg IGVuZAotLSAgICAgbiA9IGNocihuLG1hcHBpbmcpCi0tICAgICBjb250ZXh0KGVzY2FwZXNbbl0g b3IgdXRmY2hhcihuKSkKLS0gZW5kCgotLSBsb2NhbCBsY2NvZGVzLCB1Y2NvZGVzLCBzYWZlY2hh ciA9IGNoYXJhY3RlcnMubGNjb2RlLCBjaGFyYWN0ZXJzLnVjY29kZSwgY29tbWFuZHMuc2FmZWNo YXIKCi0tIGxvY2FsIGZ1bmN0aW9uIGRvX2FscGhhYmV0aWMobixtYXBwaW5nLGNocikKLS0gICAg IGxvY2FsIG1heCA9ICNtYXBwaW5nCi0tICAgICBpZiBuID4gbWF4IHRoZW4KLS0gICAgICAgICBk b19hbHBoYWJldGljKGZsb29yKChuLTEpL21heCksbWFwcGluZyxjaHIpCi0tICAgICAgICAgbiA9 IChuLTEpJW1heCsxCi0tICAgICBlbmQKLS0gICAgIHNhZmVjaGFyKGNocihuLG1hcHBpbmcpKQot LSBlbmQKCi0tIGxvY2FsIGZ1bmN0aW9uIGxvd2VyY2FzZWQobixtYXBwaW5nKSByZXR1cm4gY2hh cmFjdGVycy5sY2NvZGUobWFwcGluZ1tuXSBvciBmYWxsYmFjaykgZW5kCi0tIGxvY2FsIGZ1bmN0 aW9uIHVwcGVyY2FzZWQobixtYXBwaW5nKSByZXR1cm4gY2hhcmFjdGVycy51Y2NvZGUobWFwcGlu Z1tuXSBvciBmYWxsYmFjaykgZW5kCgotLSBmdW5jdGlvbiBjb252ZXJ0ZXJzLmFscGhhYmV0aWMo bixjb2RlKQotLSAgICAgZG9fYWxwaGFiZXRpYyhuLGNvdW50ZXJzW2NvZGVdIG9yIGNvdW50ZXJz LmRlZmF1bHQsbG93ZXJjYXNlZCkgLS0gbGNjb2RlIGNhdGNoZXMgd3JvbmcgdGFibGVzCi0tIGVu ZAoKLS0gZnVuY3Rpb24gY29udmVydGVycy5BbHBoYWJldGljKG4sY29kZSkKLS0gICAgIGRvX2Fs cGhhYmV0aWMobixjb3VudGVyc1tjb2RlXSBvciBjb3VudGVycy5kZWZhdWx0LHVwcGVyY2FzZWQp Ci0tIGVuZAoKbG9jYWwgb3JkaW5hbHMgPSB7CiAgICBlbmdsaXNoID0gZnVuY3Rpb24obikKICAg ICAgICBsb2NhbCB0d28gPSBuICUgMTAwCiAgICAgICAgaWYgdHdvID09IDExIG9yIHR3byA9PSAx MiBvciB0d28gPT0gMTMgdGhlbgogICAgICAgICAgICByZXR1cm4gInRoIgogICAgICAgIGVsc2UK ICAgICAgICAgICAgbG9jYWwgb25lID0gbiAlIDEwCiAgICAgICAgICAgIGlmIG9uZSA9PSAxIHRo ZW4KICAgICAgICAgICAgICAgIHJldHVybiAic3QiCiAgICAgICAgICAgIGVsc2VpZiBvbmUgPT0g MiB0aGVuCiAgICAgICAgICAgICAgICByZXR1cm4gIm5kIgogICAgICAgICAgICBlbHNlaWYgb25l ID09IDMgdGhlbgogICAgICAgICAgICAgICAgcmV0dXJuICJyZCIKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgcmV0dXJuICJ0aCIKICAgICAgICAgICAgZW5kCiAgICAgICAgZW5kCiAg ICBlbmQsCiAgICBkdXRjaCA9IGZ1bmN0aW9uKG4pCiAgICAgICAgcmV0dXJuICJlIgogICAgZW5k LAogICAgZnJlbmNoID0gZnVuY3Rpb24obikKICAgICAgICBpZiBuID09IDEgdGhlbgogICAgICAg ICAgICByZXR1cm4gImVyIgogICAgICAgIGVuZAogICAgZW5kLAp9CgpvcmRpbmFscy5lbiA9IG9y ZGluYWxzLmVuZ2xpc2gKb3JkaW5hbHMubmwgPSBvcmRpbmFscy5kdXRjaApvcmRpbmFscy5mciA9 IG9yZGluYWxzLmZyZW5jaAoKZnVuY3Rpb24gY29udmVydGVycy5vcmRpbmFsKG4sbGFuZ3VhZ2Up CiAgICBsb2NhbCB0ID0gbGFuZ3VhZ2UgYW5kIG9yZGluYWxzW2xhbmd1YWdlXQogICAgcmV0dXJu IHQgYW5kIHQobikKZW5kCgpsb2NhbCBmdW5jdGlvbiBjdHhvcmRpbmFsKG4sbGFuZ3VhZ2UpCiAg ICBsb2NhbCB0ID0gbGFuZ3VhZ2UgYW5kIG9yZGluYWxzW2xhbmd1YWdlXQogICAgbG9jYWwgbyA9 IHQgYW5kIHQobikKICAgIGNvbnRleHQobikKICAgIGlmIG8gdGhlbgogICAgICAgIGN0eF9oaWdo b3JkaW5hbHN0cihvKQogICAgZW5kCmVuZAoKaW1wbGVtZW50IHsKICAgIG5hbWUgICAgICA9ICJv cmRpbmFsIiwKICAgIGFjdGlvbnMgICA9IGN0eG9yZGluYWwsCiAgICBhcmd1bWVudHMgPSB7ICJp bnRlZ2VyIiwgInN0cmluZyIgfQp9CgotLSB2ZXJib3NlIG51bWJlcnMKCmxvY2FsIGRhdGEgICAg ICAgICA9IGFsbG9jYXRlKCkKbG9jYWwgdmVyYm9zZSAgICAgID0geyBkYXRhID0gZGF0YSB9CmNv bnZlcnRlcnMudmVyYm9zZSA9IHZlcmJvc2UKCi0tIHZlcmJvc2UgZW5nbGlzaAoKbG9jYWwgd29y ZHMgPSB7CiAgICAgICAgICAgICAgIFswXSA9ICJ6ZXJvIiwKICAgICAgICAgICAgICAgWzFdID0g Im9uZSIsCiAgICAgICAgICAgICAgIFsyXSA9ICJ0d28iLAogICAgICAgICAgICAgICBbM10gPSAi dGhyZWUiLAogICAgICAgICAgICAgICBbNF0gPSAiZm91ciIsCiAgICAgICAgICAgICAgIFs1XSA9 ICJmaXZlIiwKICAgICAgICAgICAgICAgWzZdID0gInNpeCIsCiAgICAgICAgICAgICAgIFs3XSA9 ICJzZXZlbiIsCiAgICAgICAgICAgICAgIFs4XSA9ICJlaWdodCIsCiAgICAgICAgICAgICAgIFs5 XSA9ICJuaW5lIiwKICAgICAgICAgICAgICBbMTBdID0gInRlbiIsCiAgICAgICAgICAgICAgWzEx XSA9ICJlbGV2ZW4iLAogICAgICAgICAgICAgIFsxMl0gPSAidHdlbHZlIiwKICAgICAgICAgICAg ICBbMTNdID0gInRoaXJ0ZWVuIiwKICAgICAgICAgICAgICBbMTRdID0gImZvdXJ0ZWVuIiwKICAg ICAgICAgICAgICBbMTVdID0gImZpZnRlZW4iLAogICAgICAgICAgICAgIFsxNl0gPSAic2l4dGVl biIsCiAgICAgICAgICAgICAgWzE3XSA9ICJzZXZlbnRlZW4iLAogICAgICAgICAgICAgIFsxOF0g PSAiZWlnaHRlZW4iLAogICAgICAgICAgICAgIFsxOV0gPSAibmluZXRlZW4iLAogICAgICAgICAg ICAgIFsyMF0gPSAidHdlbnR5IiwKICAgICAgICAgICAgICBbMzBdID0gInRoaXJ0eSIsCiAgICAg ICAgICAgICAgWzQwXSA9ICJmb3J0eSIsCiAgICAgICAgICAgICAgWzUwXSA9ICJmaWZ0eSIsCiAg ICAgICAgICAgICAgWzYwXSA9ICJzaXh0eSIsCiAgICAgICAgICAgICAgWzcwXSA9ICJzZXZlbnR5 IiwKICAgICAgICAgICAgICBbODBdID0gImVpZ2h0eSIsCiAgICAgICAgICAgICAgWzkwXSA9ICJu aW5ldHkiLAogICAgICAgICAgICAgWzEwMF0gPSAiaHVuZHJlZCIsCiAgICAgICAgICAgIFsxMDAw XSA9ICJ0aG91c2FuZCIsCiAgICAgICAgIFsxMDAwMDAwXSA9ICJtaWxsaW9uIiwKICAgICAgWzEw MDAwMDAwMDBdID0gImJpbGxpb24iLAogICBbMTAwMDAwMDAwMDAwMF0gPSAidHJpbGxpb24iLAp9 Cgpsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUobixjb25uZWN0b3IpCiAgICBsb2NhbCB3ID0gd29y ZHNbbl0KICAgIGlmIHcgdGhlbgogICAgICAgIHJldHVybiB3CiAgICBlbmQKICAgIGxvY2FsIHQg PSB7IH0KICAgIGxvY2FsIGZ1bmN0aW9uIGNvbXBvc2Vfb25lKG4pCiAgICAgICAgbG9jYWwgdyA9 IHdvcmRzW25dCiAgICAgICAgaWYgdyB0aGVuCiAgICAgICAgICAgIHRbI3QrMV0gPSB3CiAgICAg ICAgICAgIHJldHVybgogICAgICAgIGVuZAogICAgICAgIGxvY2FsIGEsIGIgPSBmbG9vcihuLzEw MCksIG4gJSAxMDAKICAgICAgICBpZiBhID09IDEwIHRoZW4KICAgICAgICAgICAgdFsjdCsxXSA9 IHdvcmRzWzFdCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1sxMDAwXQogICAgICAgIGVsc2Vp ZiBhID4gMCB0aGVuCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1thXQogICAgICAgICAgICB0 WyN0KzFdID0gd29yZHNbMTAwXQogICAgICAgICAgICAtLSBkb24ndCBzYXkgJ25pbmUgaHVuZHJl ZCB6ZXJvJwogICAgICAgICAgICBpZiBiID09IDAgdGhlbgogICAgICAgICAgICAgICAgcmV0dXJu CiAgICAgICAgICAgIGVuZAogICAgICAgIGVuZAogICAgICAgIGlmIHdvcmRzW2JdIHRoZW4KICAg ICAgICAgICAgdFsjdCsxXSA9IHdvcmRzW2JdCiAgICAgICAgZWxzZQogICAgICAgICAgICBhLCBi ID0gZmxvb3IoYi8xMCksIG4gJSAxMAogICAgICAgICAgICB0WyN0KzFdID0gd29yZHNbYSoxMF0K ICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzW2JdCiAgICAgICAgZW5kCiAgICBlbmQKICAgIGxv Y2FsIGZ1bmN0aW9uIGNvbXBvc2VfdHdvKG4sbSkKICAgICAgICBpZiBuID4gKG0tMSkgdGhlbgog ICAgICAgICAgICBsb2NhbCBhLCBiID0gZmxvb3Iobi9tKSwgbiAlIG0KICAgICAgICAgICAgaWYg YSA+IDAgdGhlbgogICAgICAgICAgICAgICAgY29tcG9zZV9vbmUoYSkKICAgICAgICAgICAgZW5k CiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1ttXQogICAgICAgICAgICBuID0gYgogICAgICAg IGVuZAogICAgICAgIHJldHVybiBuCiAgICBlbmQKICAgIG4gPSBjb21wb3NlX3R3byhuLDEwMDAw MDAwMDAwMDApCiAgICBuID0gY29tcG9zZV90d28obiwxMDAwMDAwMDAwKQogICAgbiA9IGNvbXBv c2VfdHdvKG4sMTAwMDAwMCkKICAgIG4gPSBjb21wb3NlX3R3byhuLDEwMDApCiAgICBpZiBuID4g MCB0aGVuCiAgICAgICAgY29tcG9zZV9vbmUobikKICAgIGVuZAogICAgcmV0dXJuICN0ID4gMCBh bmQgY29uY2F0KHQsY29ubmVjdG9yIG9yICIgIikgb3IgdG9zdHJpbmcobikKZW5kCgpkYXRhLmVu Z2xpc2ggPSB7CiAgICB3b3JkcyAgICAgPSB3b3JkcywKICAgIHRyYW5zbGF0ZSA9IHRyYW5zbGF0 ZSwKfQoKZGF0YS5lbiA9IGRhdGEuZW5nbGlzaAoKLS0gcHJpbnQodHJhbnNsYXRlKDExMTExMTEx KSkKLS0gcHJpbnQodHJhbnNsYXRlKDIyMjExMDEpKQotLSBwcmludCh0cmFuc2xhdGUoMTExMSkp Ci0tIHByaW50KHRyYW5zbGF0ZSgxMjE4KSkKLS0gcHJpbnQodHJhbnNsYXRlKDEyMzQpKQotLSBw cmludCh0cmFuc2xhdGUoMTIzNDUpKQotLSBwcmludCh0cmFuc2xhdGUoMTIzNDU2Nzg5MDAwMDAp KQoKLS0gdmVyYm9zZSBzcGFuaXNoICh1bmNoZWNrZWQpCgpsb2NhbCB3b3JkcyA9IHsKICAgICAg ICAgICAgICAgWzFdID0gInVubyIsCiAgICAgICAgICAgICAgIFsyXSA9ICJkb3MiLAogICAgICAg ICAgICAgICBbM10gPSAidHJlcyIsCiAgICAgICAgICAgICAgIFs0XSA9ICJjdWF0cm8iLAogICAg ICAgICAgICAgICBbNV0gPSAiY2luY28iLAogICAgICAgICAgICAgICBbNl0gPSAic2VpcyIsCiAg ICAgICAgICAgICAgIFs3XSA9ICJzaWV0ZSIsCiAgICAgICAgICAgICAgIFs4XSA9ICJvY2hvIiwK ICAgICAgICAgICAgICAgWzldID0gIm51ZXZlIiwKICAgICAgICAgICAgICBbMTBdID0gImRpZXoi LAogICAgICAgICAgICAgIFsxMV0gPSAib25jZSIsCiAgICAgICAgICAgICAgWzEyXSA9ICJkb2Nl IiwKICAgICAgICAgICAgICBbMTNdID0gInRyZWNlIiwKICAgICAgICAgICAgICBbMTRdID0gImNh dG9yY2UiLAogICAgICAgICAgICAgIFsxNV0gPSAicXVpbmNlIiwKICAgICAgICAgICAgICBbMTZd ID0gImRpZWNpc8OpaXMiLAogICAgICAgICAgICAgIFsxN10gPSAiZGllY2lzaWV0ZSIsCiAgICAg ICAgICAgICAgWzE4XSA9ICJkaWVjaW9jaG8iLAogICAgICAgICAgICAgIFsxOV0gPSAiZGllY2lu dWV2ZSIsCiAgICAgICAgICAgICAgWzIwXSA9ICJ2ZWludGUiLAogICAgICAgICAgICAgIFsyMV0g PSAidmVpbnRpdW5vIiwKICAgICAgICAgICAgICBbMjJdID0gInZlaW50aWTDs3MiLAogICAgICAg ICAgICAgIFsyM10gPSAidmVpbnRpdHLDqXMiLAogICAgICAgICAgICAgIFsyNF0gPSAidmVpbnRp Y3VhdHJvIiwKICAgICAgICAgICAgICBbMjVdID0gInZlaW50aWNpbmNvIiwKICAgICAgICAgICAg ICBbMjZdID0gInZlaW50aXPDqWlzIiwKICAgICAgICAgICAgICBbMjddID0gInZlaW50aXNpZXRl IiwKICAgICAgICAgICAgICBbMjhdID0gInZlaW50aW9jaG8iLAogICAgICAgICAgICAgIFsyOV0g PSAidmVpbnRpbnVldmUiLAogICAgICAgICAgICAgIFszMF0gPSAidHJlaW50YSIsCiAgICAgICAg ICAgICAgWzQwXSA9ICJjdWFyZW50YSIsCiAgICAgICAgICAgICAgWzUwXSA9ICJjaW5jdWVudGEi LAogICAgICAgICAgICAgIFs2MF0gPSAic2VzZW50YSIsCiAgICAgICAgICAgICAgWzcwXSA9ICJz ZXRlbnRhIiwKICAgICAgICAgICAgICBbODBdID0gIm9jaGVudGEiLAogICAgICAgICAgICAgIFs5 MF0gPSAibm92ZW50YSIsCiAgICAgICAgICAgICBbMTAwXSA9ICJjaWVudG8iLAogICAgICAgICAg ICAgWzIwMF0gPSAiZG9zY2llbnRvcyIsCiAgICAgICAgICAgICBbMzAwXSA9ICJ0cmVzY2llbnRv cyIsCiAgICAgICAgICAgICBbNDAwXSA9ICJjdWF0cm9jaWVudG9zIiwKICAgICAgICAgICAgIFs1 MDBdID0gInF1aW5pZW50b3MiLAogICAgICAgICAgICAgWzYwMF0gPSAic2Vpc2NpZW50b3MiLAog ICAgICAgICAgICAgWzcwMF0gPSAic2V0ZWNpZW50b3MiLAogICAgICAgICAgICAgWzgwMF0gPSAi b2Nob2NpZW50b3MiLAogICAgICAgICAgICAgWzkwMF0gPSAibm92ZWNpZW50b3MiLAogICAgICAg ICAgICBbMTAwMF0gPSAibWlsIiwKICAgICAgICAgWzEwMDAwMDBdID0gIm1pbGzDs24iLAogICAg ICBbMTAwMDAwMDAwMF0gPSAibWlsIG1pbGxvbmVzIiwKICAgWzEwMDAwMDAwMDAwMDBdID0gImJp bGzDs24iLAp9Cgpsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUobixjb25uZWN0b3IpCiAgICBsb2Nh bCB3ID0gd29yZHNbbl0KICAgIGlmIHcgdGhlbgogICAgICAgIHJldHVybiB3CiAgICBlbmQKICAg IGxvY2FsIHQgPSB7IH0KICAgIGxvY2FsIGZ1bmN0aW9uIGNvbXBvc2Vfb25lKG4pCiAgICAgICAg bG9jYWwgdyA9IHdvcmRzW25dCiAgICAgICAgaWYgdyB0aGVuCiAgICAgICAgICAgIHRbI3QrMV0g PSB3CiAgICAgICAgICAgIHJldHVybgogICAgICAgIGVuZAogICAgICAgIC0tIGEsIGIgPSBodW5k cmVkcywgcmVtYWluZGVyCiAgICAgICAgbG9jYWwgYSwgYiA9IGZsb29yKG4vMTAwKSwgbiAlIDEw MAogICAgICAgIC0tIG9uZSB0aG91c2FuZAogICAgICAgIGlmIGEgPT0gMTAgdGhlbgogICAgICAg ICAgICB0WyN0KzFdID0gd29yZHNbMV0KICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzWzEwMDBd CiAgICAgICAgLS0geCBodW5kcmVkIChuLmIuIHRoaXMgd2lsbCBub3QgZ2l2ZSB0aGlydGVlbiBo dW5kcmVkIGJlY2F1c2UKICAgICAgICAtLSBjb21wb3NlX29uZShuKSBpcyBvbmx5IGNhbGxlZCBh ZnRlcgogICAgICAgIC0tIG4gPSBjb21wb3NlKHR3byhuLCAxMDAwKSkKICAgICAgICBlbHNlaWYg YSA+IDAgdGhlbgogICAgICAgICAgICB0WyN0KzFdID0gd29yZHNbYSoxMDBdCiAgICAgICAgZW5k CiAgICAgICAgLS0gdGhlIHJlbWFpbmRlcgogICAgICAgIGlmIHdvcmRzW2JdIHRoZW4KICAgICAg ICAgICAgdFsjdCsxXSA9IHdvcmRzW2JdCiAgICAgICAgZWxzZQogICAgICAgICAgICAtLSBhLCBi ID0gdGVucywgcmVtYWluZGVyCiAgICAgICAgICAgIGEsIGIgPSBmbG9vcihiLzEwKSwgbiAlIDEw CiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1thKjEwXQogICAgICAgICAgICB0WyN0KzFdID0g InkiCiAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1tiXQogICAgICAgIGVuZAogICAgZW5kCiAg ICAtLSBjb21wb3NlX3R3byBoYW5kbGVzIHggYmlsbGlvbiwgLi4uIHggdGhvdXNhbmQuIFdoZW4g MTAwMCBvciBsZXNzIGlzCiAgICAtLSBsZWZ0LCBjb21wb3NlX29uZSB0YWtlcyBvdmVyLgogICAg bG9jYWwgZnVuY3Rpb24gY29tcG9zZV90d28obixtKQogICAgICAgIGlmIG4gPiAobS0xKSB0aGVu CiAgICAgICAgICAgIGxvY2FsIGEsIGIgPSBmbG9vcihuL20pLCBuICUgbQogICAgICAgICAgICBp ZiBhID4gMCB0aGVuCiAgICAgICAgICAgICAgICBjb21wb3NlX29uZShhKQogICAgICAgICAgICBl bmQKICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzW21dCiAgICAgICAgICAgIG4gPSBiCiAgICAg ICAgZW5kCiAgICAgICAgcmV0dXJuIG4KICAgIGVuZAogICAgbiA9IGNvbXBvc2VfdHdvKG4sMTAw MDAwMDAwMDAwMCkKICAgIG4gPSBjb21wb3NlX3R3byhuLDEwMDAwMDAwMDApCiAgICBuID0gY29t cG9zZV90d28obiwxMDAwMDAwKQogICAgbiA9IGNvbXBvc2VfdHdvKG4sMTAwMCkKICAgIGlmIG4g PiAwIHRoZW4KICAgICAgICBjb21wb3NlX29uZShuKQogICAgZW5kCiAgICByZXR1cm4gI3QgPiAw IGFuZCBjb25jYXQodCxjb25uZWN0b3Igb3IgIiAiKSBvciB0b3N0cmluZyhuKQplbmQKCmRhdGEu c3BhbmlzaCA9IHsKICAgIHdvcmRzICAgICA9IHdvcmRzLAogICAgdHJhbnNsYXRlID0gdHJhbnNs YXRlLAp9CgpkYXRhLmVzID0gZGF0YS5zcGFuaXNoCgotLSBwcmludCh0cmFuc2xhdGUoMzEpKQot LSBwcmludCh0cmFuc2xhdGUoMTAxKSkKLS0gcHJpbnQodHJhbnNsYXRlKDE5OSkpCgotLSB2ZXJi b3NlIHN3ZWRpc2gKCmxvY2FsIHdvcmRzID0gewogICAgICAgICAgICAgICBbMF0gPSAibm9sbCIs CiAgICAgICAgICAgICAgIFsxXSA9ICJldHQiLAogICAgICAgICAgICAgICBbMl0gPSAidHbDpSIs CiAgICAgICAgICAgICAgIFszXSA9ICJ0cmUiLAogICAgICAgICAgICAgICBbNF0gPSAiZnlyYSIs CiAgICAgICAgICAgICAgIFs1XSA9ICJmZW0iLAogICAgICAgICAgICAgICBbNl0gPSAic2V4IiwK ICAgICAgICAgICAgICAgWzddID0gInNqdSIsCiAgICAgICAgICAgICAgIFs4XSA9ICLDpXR0YSIs CiAgICAgICAgICAgICAgIFs5XSA9ICJuaW8iLAogICAgICAgICAgICAgIFsxMF0gPSAidGlvIiwK ICAgICAgICAgICAgICBbMTFdID0gImVsdmEiLAogICAgICAgICAgICAgIFsxMl0gPSAidG9sdiIs CiAgICAgICAgICAgICAgWzEzXSA9ICJ0cmV0dG9uIiwKICAgICAgICAgICAgICBbMTRdID0gImZq b3J0b24iLAogICAgICAgICAgICAgIFsxNV0gPSAiZmVtdG9uIiwKICAgICAgICAgICAgICBbMTZd ID0gInNleHRvbiIsCiAgICAgICAgICAgICAgWzE3XSA9ICJzanV0dG9uIiwKICAgICAgICAgICAg ICBbMThdID0gImFydG9uIiwKICAgICAgICAgICAgICBbMTldID0gIm5pdHRvbiIsCiAgICAgICAg ICAgICAgWzIwXSA9ICJ0anVnbyIsCiAgICAgICAgICAgICAgWzMwXSA9ICJ0cmV0dGlvIiwKICAg ICAgICAgICAgICBbNDBdID0gImZ5cnRpbyIsCiAgICAgICAgICAgICAgWzUwXSA9ICJmZW10aW8i LAogICAgICAgICAgICAgIFs2MF0gPSAic2V4dGlvIiwKICAgICAgICAgICAgICBbNzBdID0gInNq dXR0aW8iLAogICAgICAgICAgICAgIFs4MF0gPSAiw6V0dGlvIiwKICAgICAgICAgICAgICBbOTBd ID0gIm5pdHRpbyIsCiAgICAgICAgICAgICBbMTAwXSA9ICJodW5kcmEiLAogICAgICAgICAgICBb MTBeM10gPSAidHVzZW4iLAogICAgICAgICAgICBbMTBeNl0gPSAibWlsam9uIiwKICAgICAgICAg ICAgWzEwXjldID0gIm1pbGphcmQiLAogICAgICAgICAgIFsxMF4xMl0gPSAiYmlsam9uIiwKICAg ICAgICAgICBbMTBeMTVdID0gImJpbGphcmQiLAp9Cgpsb2NhbCBmdW5jdGlvbiB0cmFuc2xhdGUo bixjb25uZWN0b3IpCiAgICBsb2NhbCB0ID0ge30KCiAgICBpZiBuID09IDAgdGhlbgogICAgICAg IHJldHVybiB3b3Jkc1swXQogICAgZW5kCgogICAgLS0gZ3JvdXAgb2YgdGhyZWUgZGlnaXRzIHRv IHdvcmRzLCBlLmcuIDEyMyAtPiBldHRodW5kcmF0anVnb3RyZQogICAgbG9jYWwgZnVuY3Rpb24g dHJpcGxldFdvcmRzKG4pCiAgICAgICAgbG9jYWwgcyA9ICIiCiAgICAgICAgaWYgZmxvb3Iobi8x MDApID4gMCB0aGVuCiAgICAgICAgICAgIHMgPSBzLi53b3Jkc1tmbG9vcihuLzEwMCldLi53b3Jk c1sxMDBdCiAgICAgICAgZW5kCiAgICAgICAgaWYgbiUxMDAgPiAyMCB0aGVuCiAgICAgICAgICAg IHMgPSBzLi53b3Jkc1tuJTEwMC1uJTEwXQogICAgICAgICAgICBpZiBuJTEwID4gMCB0aGVuCiAg ICAgICAgICAgICAgICBzID0gcy4ud29yZHNbbiUxMF0KICAgICAgICAgICAgZW5kCiAgICAgICAg ZWxzZWlmIG4lMTAwID4gMCB0aGVuCiAgICAgICAgICAgIHMgPSBzLi53b3Jkc1tuJTEwMF0KICAg ICAgICBlbmQKICAgICAgICByZXR1cm4gcwogICAgZW5kCiAgICAKICAgIC0tIGxvb3BzIHRocm91 Z2ggMTBeMTUsMTBeMTIsLi4uMTBeMywgZXh0cmFjdGluZyBncm91cHMgb2YgdGhyZWUgZGlnaXRz CiAgICAtLSB0byBtYWtlIHdvcmRzIGZyb20sIHRoZW4gYWRkaW5nIG5hbWVzIGZvciBvcmRlciBv ZiBtYWduaXR1ZGUKICAgIGZvciBpPTE1LDMsLTMgZG8KICAgICAgICBsb2NhbCB0cmlwbGV0ID0g Zmxvb3Iobi8xMF5pKSUxMF4zCiAgICAgICAgaWYgdHJpcGxldCA+IDAgdGhlbgogICAgICAgICAg ICAtLSBncmFtbWFyOiAiZW4iIGluc3RlYWQgb2YgImV0dCIKICAgICAgICAgICAgaWYgaSA+IDMg YW5kIHRyaXBsZXQgPT0gMSB0aGVuCiAgICAgICAgICAgICAgICB0WyN0KzFdID0gImVuIgogICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB0WyN0KzFdID0gdHJpcGxldFdvcmRzKHRyaXBs ZXQpCiAgICAgICAgICAgIGVuZAogICAgICAgICAgICAtLSBncmFtbWFyOiBwbHVyYWwgZm9ybSBv ZiAibWlsbGlvbnMiIGV0YwogICAgICAgICAgICBpZiBpID4gMyBhbmQgdHJpcGxldCA+IDEgdGhl bgogICAgICAgICAgICAgICAgdFsjdCsxXSA9IHdvcmRzWzEwXmldLi4iZXIiCiAgICAgICAgICAg IGVsc2UKICAgICAgICAgICAgICAgIHRbI3QrMV0gPSB3b3Jkc1sxMF5pXQogICAgICAgICAgICBl bmQKICAgICAgICBlbmQKICAgIGVuZAogICAgCiAgICAtLSBhZGQgbGFzdCBncm91cCBvZiB0aHJl ZSBudW1iZXJzIChubyB3b3JkIGZvciBtYWduaXR1ZGUpCiAgICBpZiBuJTEwMDAgPiAwIHRoZW4K ICAgICAgICB0WyN0KzFdID0gdHJpcGxldFdvcmRzKG4lMTAwMCkKICAgIGVuZAogICAgCiAgICBs b2NhbCBzID0gY29uY2F0KHQsIiAiKQogICAgLS0gZ3JhbW1hcjogc3BhY2luZyBmb3IgbnVtYmVy cyA8IDEwXjYgYW5kIHJlcGVhdGVkIGxldHRlcnMKICAgIGlmIG4gPCAxMF42IHRoZW4KICAgICAg ICBzID0gczpnc3ViKCIlc3R1c2VuJXMiLCJ0dXNlbiIpCiAgICAgICAgcyA9IHM6Z3N1YigiZXR0 dHVzZW4iLCJldHR1c2VuIikKICAgIGVuZAogICAgCiAgICByZXR1cm4gcwplbmQKCmRhdGEuc3dl ZGlzaCA9IHsKICAgIHdvcmRzICAgICA9IHdvcmRzLAogICAgdHJhbnNsYXRlID0gdHJhbnNsYXRl LAp9CgpkYXRhLnN2ID0gZGF0YS5zd2VkaXNoCgoKLS0gdmVyYm9zZSBoYW5kbGVyOgoKZnVuY3Rp b24gY29udmVydGVycy52ZXJib3NlLnRyYW5zbGF0ZShuLGxhbmd1YWdlLGNvbm5lY3RvcikKICAg IGxvY2FsIHQgPSBsYW5ndWFnZSBhbmQgZGF0YVtsYW5ndWFnZV0KICAgIHJldHVybiB0IGFuZCB0 LnRyYW5zbGF0ZShuLGNvbm5lY3Rvcikgb3IgbgplbmQKCmxvY2FsIGZ1bmN0aW9uIHZlcmJvc2Uo bixsYW5ndWFnZSxjb25uZWN0b3IpCiAgICBsb2NhbCB0ID0gbGFuZ3VhZ2UgYW5kIGRhdGFbbGFu Z3VhZ2VdCiAgICBjb250ZXh0KHQgYW5kIHQudHJhbnNsYXRlKG4sY29ubmVjdG9yKSBvciBuKQpl bmQKCmltcGxlbWVudCB7CiAgICBuYW1lICAgICAgPSAidmVyYm9zZSIsCiAgICBhY3Rpb25zICAg PSB2ZXJib3NlLAogICAgYXJndW1lbnRzID0geyAiaW50ZWdlciIsICJzdHJpbmciLCAic3RyaW5n IiB9Cn0KCi0tIFRoZXNlIGFyZSBqdXN0IGhlbHBlcnMgYnV0IG5vdCByZWFsbHkgZm9yIHRoZSB0 ZXggZW5kLiBEbyB3ZSBoYXZlIHRvCi0tIHVzZSB0cmFuc2xhdGUgaGVyZT8KCmxvY2FsIHdoaXRl c3BhY2UgID0gbHBlZ3BhdHRlcm5zLndoaXRlc3BhY2UKbG9jYWwgd29yZCAgICAgICAgPSBscGVn cGF0dGVybnMudXRmOHVwcGVyY2hhcmFjdGVyXi0xICogKDEtd2hpdGVzcGFjZSleMQpsb2NhbCBw YXR0ZXJuX29uZSA9IENzKCB3aGl0ZXNwYWNlXjAgKiB3b3JkXi0xICogUCgxKV4wKQpsb2NhbCBw YXR0ZXJuX2FsbCA9IENzKCh3aGl0ZXNwYWNlXjEgKyB3b3JkKV4xKQoKZnVuY3Rpb24gY29udmVy dGVycy53b3JkIChzKSByZXR1cm4gcyBlbmQgLS0gZHVtbWllcyBmb3IgdHlwb3MKZnVuY3Rpb24g Y29udmVydGVycy53b3JkcyhzKSByZXR1cm4gcyBlbmQgLS0gZHVtbWllcyBmb3IgdHlwb3MKCmxv Y2FsIGZ1bmN0aW9uIFdvcmQgKHMpIHJldHVybiBscGVnbWF0Y2gocGF0dGVybl9vbmUscykgb3Ig cyBlbmQKbG9jYWwgZnVuY3Rpb24gV29yZHMocykgcmV0dXJuIGxwZWdtYXRjaChwYXR0ZXJuX2Fs bCxzKSBvciBzIGVuZAoKY29udmVydGVycy5Xb3JkICA9IFdvcmQKY29udmVydGVycy5Xb3JkcyA9 IFdvcmRzCgpjb252ZXJ0ZXJzLnVwcGVyID0gY2hhcmFjdGVycy51cHBlcgpjb252ZXJ0ZXJzLmxv d2VyID0gY2hhcmFjdGVycy5sb3dlcgoKLS0gcHJpbnQoY29udmVydGVycy5Xb3JkKCJmb28gYmFy IikpCi0tIHByaW50KGNvbnZlcnRlcnMuV29yZCgiIGZvbyBiYXIiKSkKLS0gcHJpbnQoY29udmVy dGVycy5Xb3JkKCIxMjMgZm9vIGJhciIpKQotLSBwcmludChjb252ZXJ0ZXJzLldvcmQoIiAxMjMg Zm9vIGJhciIpKQoKLS0gcHJpbnQoY29udmVydGVycy5Xb3JkcygiZm9vIGJhciIpKQotLSBwcmlu dChjb252ZXJ0ZXJzLldvcmRzKCIgZm9vIGJhciIpKQotLSBwcmludChjb252ZXJ0ZXJzLldvcmRz KCIxMjMgZm9vIGJhciIpKQotLSBwcmludChjb252ZXJ0ZXJzLldvcmRzKCIgMTIzIGZvbyBiYXIi KSkKCi0tIC0tCgpsb2NhbCB2X2RheSAgICAgID0gdmFyaWFibGVzLmRheQpsb2NhbCB2X3llYXIg ICAgID0gdmFyaWFibGVzLnllYXIKbG9jYWwgdl9tb250aCAgICA9IHZhcmlhYmxlcy5tb250aAps b2NhbCB2X3dlZWtkYXkgID0gdmFyaWFibGVzLndlZWtkYXkKbG9jYWwgdl9yZWZlcnJhbCA9IHZh cmlhYmxlcy5yZWZlcnJhbApsb2NhbCB2X3NwYWNlICAgID0gdmFyaWFibGVzLnNwYWNlCgpsb2Nh bCB2X01PTlRIICAgID0gdXBwZXIodl9tb250aCkKbG9jYWwgdl9XRUVLREFZICA9IHVwcGVyKHZf d2Vla2RheSkKCmxvY2FsIGNvbnZlcnQgPSBjb252ZXJ0ZXJzLmNvbnZlcnQKCmxvY2FsIGRheXMg PSB7IC0tIG5vdCB2YXJpYWJsZXMKICAgICJzdW5kYXkiLAogICAgIm1vbmRheSIsCiAgICAidHVl c2RheSIsCiAgICAid2VkbmVzZGF5IiwKICAgICJ0aHVyc2RheSIsCiAgICAiZnJpZGF5IiwKICAg ICJzYXR1cmRheSIsCn0KCmxvY2FsIG1vbnRocyA9IHsgLS0gbm90IHZhcmlhYmxlcwogICAgImph bnVhcnkiLAogICAgImZlYnJ1YXJ5IiwKICAgICJtYXJjaCIsCiAgICAiYXByaWwiLAogICAgIm1h eSIsCiAgICAianVuZSIsCiAgICAianVseSIsCiAgICAiYXVndXN0IiwKICAgICJzZXB0ZW1iZXIi LAogICAgIm9jdG9iZXIiLAogICAgIm5vdmVtYmVyIiwKICAgICJkZWNlbWJlciIsCn0KCmxvY2Fs IG1vbnRobW5lbXMgPSB7IC0tIG5vdCB2YXJpYWJsZXMKICAgIC0tIHZpcnR1YWwgdGFibGUKfQoK bG9jYWwgZGF5bW5lbXMgPSB7IC0tIG5vdCB2YXJpYWJsZXMKICAgIC0tIHZpcnR1YWwgdGFibGUK fQoKc2V0bWV0YXRhYmxlaW5kZXgoZGF5cywgICAgICAgZnVuY3Rpb24odCxrKSByZXR1cm4gInVu a25vd24iIGVuZCkKc2V0bWV0YXRhYmxlaW5kZXgoZGF5bW5lbXMsICAgZnVuY3Rpb24odCxrKSBy ZXR1cm4gZGF5c1trXSAuLiAiOm1uZW0iIGVuZCkKc2V0bWV0YXRhYmxlaW5kZXgobW9udGhzLCAg ICAgZnVuY3Rpb24odCxrKSByZXR1cm4gInVua25vd24iIGVuZCkKc2V0bWV0YXRhYmxlaW5kZXgo bW9udGhtbmVtcywgZnVuY3Rpb24odCxrKSByZXR1cm4gbW9udGhzW2tdIC4uICI6bW5lbSIgZW5k KQoKZG8KCiAgICBsb2NhbCBmdW5jdGlvbiBkYXluYW1lKG4pCiAgICAgICAgY3R4X2xhYmVsdGV4 dChkYXlzW25dKQogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gZGF5bW5lbShuKQogICAgICAg IGN0eF9sYWJlbHRleHQoZGF5bW5lbXNbbl0pCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiB3 ZWVrZGF5bmFtZShkYXksbW9udGgseWVhcikKICAgICAgICBjdHhfbGFiZWx0ZXh0KGRheXNbd2Vl a2RheShkYXksbW9udGgseWVhcildKQogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gbW9udGhu YW1lKG4pCiAgICAgICAgY3R4X2xhYmVsdGV4dChtb250aHNbbl0pCiAgICBlbmQKCiAgICBsb2Nh bCBmdW5jdGlvbiBtb250aG1uZW0obikKICAgICAgICBjdHhfbGFiZWx0ZXh0KG1vbnRobW5lbXNb bl0pCiAgICBlbmQKCiAgICBpbXBsZW1lbnQgewogICAgICAgIG5hbWUgICAgICA9ICJkYXluYW1l IiwKICAgICAgICBhY3Rpb25zICAgPSBkYXluYW1lLAogICAgICAgIGFyZ3VtZW50cyA9ICJpbnRl Z2VyIiwKICAgIH0KCiAgICBpbXBsZW1lbnQgewogICAgICAgIG5hbWUgICAgICA9ICJkYXltbmVt IiwKICAgICAgICBhY3Rpb25zICAgPSBkYXltbmVtLAogICAgICAgIGFyZ3VtZW50cyA9ICJpbnRl Z2VyIiwKICAgIH0KCiAgICBpbXBsZW1lbnQgewogICAgICAgIG5hbWUgICAgICA9ICJ3ZWVrZGF5 bmFtZSIsCiAgICAgICAgYWN0aW9ucyAgID0gd2Vla2RheW5hbWUsCiAgICAgICAgYXJndW1lbnRz ID0geyAiaW50ZWdlciIsICJpbnRlZ2VyIiwgImludGVnZXIiIH0KICAgIH0KCiAgICBpbXBsZW1l bnQgewogICAgICAgIG5hbWUgICAgICA9ICJtb250aG5hbWUiLAogICAgICAgIGFjdGlvbnMgICA9 IG1vbnRobmFtZSwKICAgICAgICBhcmd1bWVudHMgPSAiaW50ZWdlciIsCiAgICB9CgogICAgaW1w bGVtZW50IHsKICAgICAgICBuYW1lICAgICAgPSAibW9udGhtbmVtIiwKICAgICAgICBhY3Rpb25z ICAgPSBtb250aG1uZW0sCiAgICAgICAgYXJndW1lbnRzID0gImludGVnZXIiLAogICAgfQoKICAg IC0tIHRvZG8gOiBzaG9ydCB3ZWVrIGRheXMKCiAgICBsb2NhbCBmX21vbnRobG9uZyAgICA9IGZv cm1hdHRlcnNbIlxcbW9udGhsb25neyVzfSJdCiAgICBsb2NhbCBmX21vbnRoc2hvcnQgICA9IGZv cm1hdHRlcnNbIlxcbW9udGhzaG9ydHslc30iXQogICAgbG9jYWwgZl9kYXlsb25nICAgICAgPSBm b3JtYXR0ZXJzWyJcXGRheWxvbmd7JXN9Il0KICAgIGxvY2FsIGZfZGF5c2hvcnQgICAgID0gZm9y bWF0dGVyc1siXFxkYXlzaG9ydHslc30iXQogICAgbG9jYWwgZl93ZWVrZGF5ICAgICAgPSBmb3Jt YXR0ZXJzWyJcXHdlZWtkYXl7JXN9Il0KICAgIGxvY2FsIGZfZGF5b2Z0aGV3ZWVrID0gZm9ybWF0 dGVyc1siXFxkYXlvZnRoZXdlZWt7JXN9eyVzfXslc30iXQoKICAgIGxvY2FsIGZ1bmN0aW9uIHRv bW9udGhsb25nIChtKSByZXR1cm4gZl9tb250aGxvbmcgKHRvbnVtYmVyKG0pIG9yIDEpIGVuZAog ICAgbG9jYWwgZnVuY3Rpb24gdG9tb250aHNob3J0KG0pIHJldHVybiBmX21vbnRoc2hvcnQodG9u dW1iZXIobSkgb3IgMSkgZW5kCiAgICBsb2NhbCBmdW5jdGlvbiB0b2RheWxvbmcgICAoZCkgcmV0 dXJuIGZfZGF5bG9uZyAgICh0b251bWJlcihkKSBvciAxKSBlbmQKICAgIGxvY2FsIGZ1bmN0aW9u IHRvZGF5c2hvcnQgIChkKSByZXR1cm4gZl9kYXlzaG9ydCAgKHRvbnVtYmVyKGQpIG9yIDEpIGVu ZAogICAgbG9jYWwgZnVuY3Rpb24gdG93ZWVrZGF5ICAgKGQpIHJldHVybiBmX3dlZWtkYXkgICAo dG9udW1iZXIoZCkgb3IgMSkgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24gdG9kYXlvZnRoZXdlZWso ZCxtLHkpCiAgICAgICAgcmV0dXJuIGZfZGF5b2Z0aGV3ZWVrKHRvbnVtYmVyKGQpIG9yIDEsdG9u dW1iZXIobSkgb3IgMSx0b251bWJlcih5KSBvciAyMDAwKQogICAgZW5kCgogICAgYWRkZm9ybWF0 dGVyKGZvcm1hdHRlcnMsIm1vbnRobG9uZyIsICAgW1t0b21vbnRobG9uZyglcyldXSwgICAgICAg ICB7IHRvbW9udGhsb25nICAgID0gdG9tb250aGxvbmcgICAgfSkKICAgIGFkZGZvcm1hdHRlcihm b3JtYXR0ZXJzLCJtb250aHNob3J0IiwgIFtbdG9tb250aHNob3J0KCVzKV1dLCAgICAgICAgeyB0 b21vbnRoc2hvcnQgICA9IHRvbW9udGhzaG9ydCAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0 dGVycywiZGF5bG9uZyIsICAgICBbW3RvZGF5bG9uZyglcyldXSwgICAgICAgICAgIHsgdG9kYXls b25nICAgICAgPSB0b2RheWxvbmcgICAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMs ImRheXNob3J0IiwgICAgW1t0b2RheXNob3J0KCVzKV1dLCAgICAgICAgICB7IHRvZGF5c2hvcnQg ICAgID0gdG9kYXlzaG9ydCAgICAgfSkKICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJ3ZWVr ZGF5IiwgICAgIFtbdG93ZWVrZGF5KCVzKV1dLCAgICAgICAgICAgeyB0b3dlZWtkYXkgICAgICA9 IHRvd2Vla2RheSAgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0dGVycywiZGF5b2Z0aGV3 ZWVrIixbW3RvZGF5b2Z0aGV3ZWVrKCVzLCVzLCVzKV1dLHsgdG9kYXlvZnRoZXdlZWsgPSB0b2Rh eW9mdGhld2VlayB9KQoKICAgIC0tIHVzaW5nICV0IGlzIHNsb3dlciwgZXZlbiB3aXRoIGNhY2hp bmcgYXMgd2Ugc2VsZG9tIHVzZSA+IDMgaXRlbXMgcGVyIGVwb2NoCgogICAgbG9jYWwgZnVuY3Rp b24gdG9leWVhciAgKGUpIHJldHVybiBvc2RhdGUoIiVZIix0b251bWJlcihlKSkgIGVuZAogICAg bG9jYWwgZnVuY3Rpb24gdG9lbW9udGggKGUpIHJldHVybiBvc2RhdGUoIiVtIix0b251bWJlcihl KSkgIGVuZAogICAgbG9jYWwgZnVuY3Rpb24gdG9lZGF5ICAgKGUpIHJldHVybiBvc2RhdGUoIiVk Iix0b251bWJlcihlKSkgIGVuZAogICAgbG9jYWwgZnVuY3Rpb24gdG9lbWludXRlKGUpIHJldHVy biBvc2RhdGUoIiVNIix0b251bWJlcihlKSkgIGVuZAogICAgbG9jYWwgZnVuY3Rpb24gdG9lc2Vj b25kKGUpIHJldHVybiBvc2RhdGUoIiVTIix0b251bWJlcihlKSkgIGVuZAoKICAgIGxvY2FsIGZ1 bmN0aW9uIHRvZW1vbnRobG9uZyhlKQogICAgICAgIHJldHVybiBmX21vbnRobG9uZyh0b251bWJl cihvc2RhdGUoIiVtIix0b251bWJlcihlKSkpKQogICAgZW5kCgogICAgbG9jYWwgZnVuY3Rpb24g dG9lbW9udGhzaG9ydChlKQogICAgICAgIHJldHVybiBmX21vbnRoc2hvcnQodG9udW1iZXIob3Nk YXRlKCIlbSIsdG9udW1iZXIoZSkpKSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZWRh eWxvbmcoZSkKICAgICAgICByZXR1cm4gZl9kYXRsb25nKHRvbnVtYmVyKG9zZGF0ZSgiJXciLHRv bnVtYmVyKGUpKSkpCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiB0b2VkYXlzaG9ydChlKQog ICAgICAgIHJldHVybiBmX2RheXNob3J0KHRvbnVtYmVyKG9zZGF0ZSgiJXciLHRvbnVtYmVyKGUp KSkpCiAgICBlbmQKCiAgICBsb2NhbCBmdW5jdGlvbiB0b2V3ZWVrKGUpIC0tIHdlIHJ1biBmcm9t IDEtNyBub3QgMC02CiAgICAgICAgcmV0dXJuIHRvc3RyaW5nKHRvbnVtYmVyKG9zZGF0ZSgiJXci LHRvbnVtYmVyKGUpKSkrMSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZXdlZWtkYXko ZSkKICAgICAgICByZXR1cm4gZl93ZWVrZGF5KHRvbnVtYmVyKG9zZGF0ZSgiJXciLHRvbnVtYmVy KGUpKSkrMSkKICAgIGVuZAoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZWRhdGUoZm9ybWF0LGUpCiAg ICAgICAgcmV0dXJuIG9zZGF0ZShmb3JtYXQsdG9udW1iZXIoZSkpCiAgICBlbmQKCiAgICBhZGRm b3JtYXR0ZXIoZm9ybWF0dGVycywiZXllYXIiLCAgICAgICAgW1t0b2V5ZWFyKCVzKV1dLCAgICAg ICAgeyB0b2V5ZWFyICAgICAgICAgPSB0b2V5ZWFyICAgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIo Zm9ybWF0dGVycywiZW1vbnRoIiwgICAgICAgW1t0b2Vtb250aCglcyldXSwgICAgICAgeyB0b2Vt b250aCAgICAgICAgPSB0b2Vtb250aCAgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0dGVy cywiZWRheSIsICAgICAgICAgW1t0b2VkYXkoJXMpXV0sICAgICAgICAgeyB0b2VkYXkgICAgICAg ICAgPSB0b2VkYXkgICAgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0dGVycywiZXdlZWsi LCAgICAgICAgW1t0b2V3ZWVrKCVzKV1dLCAgICAgICAgeyB0b2V3ZWVrICAgICAgICAgPSB0b2V3 ZWVrICAgICAgIH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0dGVycywiZW1pbnV0ZSIsICAgICAg W1t0b2VtaW51dGUoJXMpXV0sICAgICAgeyB0b2VtaW51dGUgICAgICAgPSB0b2VtaW51dGUgICAg IH0pCiAgICBhZGRmb3JtYXR0ZXIoZm9ybWF0dGVycywiZXNlY29uZCIsICAgICAgW1t0b2VzZWNv bmQoJXMpXV0sICAgICAgeyB0b2VzZWNvbmQgICAgICAgPSB0b2VzZWNvbmQgICAgIH0pCgogICAg YWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVtb250aGxvbmciLCAgIFtbdG9lbW9udGhsb25nKCVz KV1dLCAgIHsgdG9lbW9udGhsb25nICAgID0gdG9lbW9udGhsb25nICB9KQogICAgYWRkZm9ybWF0 dGVyKGZvcm1hdHRlcnMsImVtb250aHNob3J0IiwgIFtbdG9lbW9udGhzaG9ydCglcyldXSwgIHsg dG9lbW9udGhzaG9ydCAgID0gdG9lbW9udGhzaG9ydCB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1h dHRlcnMsImVkYXlsb25nIiwgICAgIFtbdG9lZGF5bG9uZyglcyldXSwgICAgIHsgdG9lZGF5bG9u ZyAgICAgID0gdG9lZGF5bG9uZyAgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImVk YXlzaG9ydCIsICAgIFtbdG9lZGF5c2hvcnQoJXMpXV0sICAgIHsgdG9lZGF5c2hvcnQgICAgID0g dG9lZGF5c2hvcnQgICB9KQogICAgYWRkZm9ybWF0dGVyKGZvcm1hdHRlcnMsImV3ZWVrZGF5Iiwg ICAgIFtbdG9ld2Vla2RheSglcyldXSwgICAgIHsgdG9ld2Vla2RheSAgICAgID0gdG9ld2Vla2Rh eSAgICB9KQoKICAgIGFkZGZvcm1hdHRlcihmb3JtYXR0ZXJzLCJlZGF0ZSIsICAgICAgICBbW3Rv ZWRhdGUoJXMsJXMpXV0sICAgICB7IHRvZWRhdGUgICAgICAgICA9IHRvZWRhdGUgICAgICAgfSkK CmVuZAoKLS0gYSBwcmVsdWRlIHRvIGEgZnVuY3Rpb24gdGhhdCB3ZSBjYW4gdXNlIGF0IHRoZSBs dWEgZW5kCgotLSBkYXk6b3JkIG1vbnRoOm1tZW0KLS0gaiBhbmQgamogb2Jzb2xldGUKCmxvY2Fs IHNwYWNlZCA9IHsKICAgIFt2X3llYXJdICAgID0gdHJ1ZSwKICAgIFt2X21vbnRoXSAgID0gdHJ1 ZSwKICAgIFt2X01PTlRIXSAgID0gdHJ1ZSwKICAgIFt2X2RheV0gICAgID0gdHJ1ZSwKICAgIFt2 X3dlZWtkYXldID0gdHJ1ZSwKICAgIFt2X1dFRUtEQVldID0gdHJ1ZSwKfQoKbG9jYWwgZGF0ZWNv bnZlcnRlcnMgPSB7CiAgICBbImhlYnJldzp0byJdICAgPSBncmVnb3JpYW5fdG9faGVicmV3LAog ICAgWyJqYWxhbGk6dG8iXSAgID0gZ3JlZ29yaWFuX3RvX2phbGFsaSwKICAgIFsiamFsYWxpOmZy b20iXSA9IGphbGFsaV90b19ncmVnb3JpYW4sCn0KCmxvY2FsIHZhcmlhbnRzID0gewogICAgbW5l bSAgID0gewogICAgICAgIG1vbnRoID0gbW9udGhtbmVtcywKICAgICAgICBkYXkgICA9IGRheW1u ZW1zLAogICAgfSwKICAgIGhlYnJldyA9IHsKICAgICAgICBtb250aCA9IHNldG1ldGF0YWJsZWlu ZGV4KGZ1bmN0aW9uKHQsaykgcmV0dXJuIG1vbnRoc1trXSAuLiAiOmhlYnJldyIgZW5kKSwKICAg ICAgICBkYXkgICA9IHNldG1ldGF0YWJsZWluZGV4KGZ1bmN0aW9uKHQsaykgcmV0dXJuIGRheXMg IFtrXSAuLiAiOmhlYnJldyIgZW5kKSwKICAgIH0sCiAgICBqYWxhbGkgPSB7CiAgICAgICAgbW9u dGggPSBzZXRtZXRhdGFibGVpbmRleChmdW5jdGlvbih0LGspIHJldHVybiBtb250aHNba10gLi4g IjpqYWxhbGkiIGVuZCksCiAgICAgICAgZGF5ICAgPSBzZXRtZXRhdGFibGVpbmRleChmdW5jdGlv bih0LGspIHJldHVybiBkYXlzICBba10gLi4gIjpqYWxhbGkiIGVuZCksCiAgICB9LAp9CgpkbwoK ICAgIGxvY2FsIGZ1bmN0aW9uIGN1cnJlbnRkYXRlKHN0cixjdXJyZW50bGFuZ3VhZ2UseWVhcixt b250aCxkYXkpIC0tIHNlY29uZCBhcmd1bWVudCBmYWxzZSA6IG5vIGxhYmVsCiAgICAgICAgbG9j YWwgbGlzdCAgICAgICA9IHV0aWxpdGllcy5wYXJzZXJzLnNldHRpbmdzX3RvX2FycmF5KHN0cikK ICAgICAgICBsb2NhbCBzcGxpdGxhYmVsID0gbGFuZ3VhZ2VzLmxhYmVscy5zcGxpdCBvciBzdHJp bmcuaXRzZWxmIC0tIHdlIG5lZWQgdG8gZ2V0IHRoZSBsb2FkaW5nIG9yZGVyIHJpZ2h0CiAgICAg LS0gbG9jYWwgeWVhciAgICAgICA9IHRleC55ZWFyCiAgICAgLS0gbG9jYWwgbW9udGggICAgICA9 IHRleC5tb250aAogICAgIC0tIGxvY2FsIGRheSAgICAgICAgPSB0ZXguZGF5CiAgICAgICAgbG9j YWwgYXV0byAgICAgICA9IHRydWUKICAgICAgICBpZiBjdXJyZW50bGFuZ3VhZ2UgPT0gIiIgdGhl bgogICAgICAgICAgICBjdXJyZW50bGFuZ3VhZ2UgPSBmYWxzZQogICAgICAgIGVuZAogICAgICAg IGZvciBpPTEsI2xpc3QgZG8KICAgICAgICAgICAgbG9jYWwgZW50cnkgPSBsaXN0W2ldCiAgICAg ICAgICAgIGxvY2FsIGNvbnZlcnQgPSBkYXRlY29udmVydGVyc1tlbnRyeV0KICAgICAgICAgICAg aWYgY29udmVydCB0aGVuCiAgICAgICAgICAgICAgICB5ZWFyLCBtb250aCwgZGF5ID0gY29udmVy dCh5ZWFyLG1vbnRoLGRheSkKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbG9jYWwg dGFnLCBwbHVzID0gc3BsaXRsYWJlbChlbnRyeSkKICAgICAgICAgICAgICAgIGxvY2FsIG9yZGlu YWwsIG1uZW1vbmljLCB3aGF0b3JkaW5hbCwgaGlnaG9yZGluYWwgPSBmYWxzZSwgZmFsc2UsIG5p bCwgZmFsc2UKICAgICAgICAgICAgICAgIGlmIG5vdCB0YWcgdGhlbgogICAgICAgICAgICAgICAg ICAgIHRhZyA9IGVudHJ5CiAgICAgICAgICAgICAgICBlbHNlaWYgcGx1cyA9PSAiKyIgb3IgcGx1 cyA9PSAib3JkIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgb3JkaW5hbCA9IHRydWUKICAgICAg ICAgICAgICAgIGVsc2VpZiBwbHVzID09ICIrKyIgb3IgcGx1cyA9PSAiaGlnaG9yZCIgdGhlbgog ICAgICAgICAgICAgICAgICAgIG9yZGluYWwgPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgaGln aG9yZGluYWwgPSB0cnVlCiAgICAgICAgICAgICAgICBlbHNlaWYgcGx1cyB0aGVuIC0tIG1uZW0g TU5FTSBldGMKICAgICAgICAgICAgICAgICAgICBtbmVtb25pYyA9IHZhcmlhbnRzW3BsdXNdCiAg ICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGlmIG5vdCBhdXRvIGFuZCBzcGFjZWRb dGFnXSB0aGVuCiAgICAgICAgICAgICAgICAgICAgY3R4X3NwYWNlKCkKICAgICAgICAgICAgICAg IGVuZAogICAgICAgICAgICAgICAgYXV0byA9IGZhbHNlCiAgICAgICAgICAgICAgICBpZiB0YWcg PT0gdl95ZWFyIG9yIHRhZyA9PSAieSIgb3IgdGFnID09ICJZIiB0aGVuCiAgICAgICAgICAgICAg ICAgICAgaWYgcGx1cyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIHBsdXMgPSBjb252ZXJ0 ZXJzW3BsdXNdCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgaWYg cGx1cyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQocGx1cyh5ZWFyKSkKICAg ICAgICAgICAgICAgICAgICBlbHNlaWYgY3VycmVudGxhbmd1YWdlID09IGZhbHNlIHRoZW4KICAg ICAgICAgICAgICAgICAgICAgICAgY29udGV4dCh5ZWFyKQogICAgICAgICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICAgICAgICAgY3R4X2NvbnZlcnRudW1iZXIodl95ZWFyLHllYXIp CiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgdGFnID09ICJ5 eSIgb3IgdGFnID09ICJZWSIgdGhlbgogICAgICAgICAgICAgICAgICAgIGNvbnRleHQoIiUwMmki LHllYXIgJSAxMDApCiAgICAgICAgICAgICAgICBlbHNlaWYgdGFnID09IHZfbW9udGggb3IgdGFn ID09ICJtIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgaWYgY3VycmVudGxhbmd1YWdlID09IGZh bHNlIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dChXb3JkKG1vbnRoc1ttb250 aF0pKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYg dHlwZShtbmVtb25pYykgPT0gInRhYmxlIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtbmVtb25pYyA9IG1uZW1vbmljLm1vbnRoCiAgICAgICAgICAgICAgICAgICAgICAgIGVuZAog ICAgICAgICAgICAgICAgICAgICAgICBpZiBtbmVtb25pYyB0aGVuCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHhfbGFiZWx0ZXh0KHZhcmlhYmxlc1ttbmVtb25pY1ttb250aF1dKQogICAg ICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhf bGFiZWx0ZXh0KHZhcmlhYmxlc1ttb250aHNbbW9udGhdXSkKICAgICAgICAgICAgICAgICAgICAg ICAgZW5kCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNlaWYgdGFn ID09IHZfTU9OVEggdGhlbgogICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRsYW5ndWFnZSA9 PSBmYWxzZSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQoV29yZCh2YXJpYWJs ZXNbbW9udGhzW21vbnRoXV0pKQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICAgICAgICAgaWYgdHlwZShtbmVtb25pYykgPT0gInRhYmxlIiB0aGVuCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtbmVtb25pYyA9IG1uZW1vbmljLm1vbnRoCiAgICAgICAgICAgICAg ICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgICAgICBpZiBtbmVtb25pYyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjdHhfTEFCRUxURVhUKHZhcmlhYmxlc1ttbmVtb25p Y1ttb250aF1dKQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjdHhfTEFCRUxURVhUKHZhcmlhYmxlc1ttb250aHNbbW9udGhdXSkKICAgICAg ICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAg ICAgICBlbHNlaWYgdGFnID09ICJtbSIgdGhlbgogICAgICAgICAgICAgICAgICAgIGNvbnRleHQo IiUwMmkiLG1vbnRoKQogICAgICAgICAgICAgICAgZWxzZWlmIHRhZyA9PSAiTSIgdGhlbgogICAg ICAgICAgICAgICAgICAgIGNvbnRleHQobW9udGgpCiAgICAgICAgICAgICAgICBlbHNlaWYgdGFn ID09IHZfZGF5IG9yIHRhZyA9PSAiZCIgdGhlbgogICAgICAgICAgICAgICAgICAgIGlmIHBsdXMg dGhlbgogICAgICAgICAgICAgICAgICAgICAgICBwbHVzID0gY29udmVydGVyc1twbHVzXQogICAg ICAgICAgICAgICAgICAgIGVuZAogICAgICAgICAgICAgICAgICAgIGlmIHBsdXMgdGhlbgogICAg ICAgICAgICAgICAgICAgICAgICBjb250ZXh0KHBsdXMoZGF5KSkKICAgICAgICAgICAgICAgICAg ICBlbHNlaWYgY3VycmVudGxhbmd1YWdlID09IGZhbHNlIHRoZW4KICAgICAgICAgICAgICAgICAg ICAgICAgY29udGV4dChkYXkpCiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgICAgICAgICBjdHhfY29udmVydG51bWJlcih2X2RheSxkYXkpCiAgICAgICAgICAgICAgICAg ICAgZW5kCiAgICAgICAgICAgICAgICAgICAgd2hhdG9yZGluYWwgPSBkYXkKICAgICAgICAgICAg ICAgIGVsc2VpZiB0YWcgPT0gImRkIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgY29udGV4dCgi JTAyaSIsZGF5KQogICAgICAgICAgICAgICAgICAgIHdoYXRvcmRpbmFsID0gZGF5CiAgICAgICAg ICAgICAgICBlbHNlaWYgdGFnID09ICJEIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgY29udGV4 dChkYXkpCiAgICAgICAgICAgICAgICAgICAgd2hhdG9yZGluYWwgPSBkYXkKICAgICAgICAgICAg ICAgIGVsc2VpZiB0YWcgPT0gdl93ZWVrZGF5IG9yIHRhZyA9PSAidyIgdGhlbgogICAgICAgICAg ICAgICAgICAgIGxvY2FsIHdkID0gd2Vla2RheShkYXksbW9udGgseWVhcikKICAgICAgICAgICAg ICAgICAgICBpZiBjdXJyZW50bGFuZ3VhZ2UgPT0gZmFsc2UgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICBjb250ZXh0KFdvcmQoZGF5c1t3ZF0pKQogICAgICAgICAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgICAgICAgICAgaWYgdHlwZShtbmVtb25pYykgPT0gInRhYmxlIiB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtbmVtb25pYyA9IG1uZW1vbmljLmRheQogICAg ICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgaWYgbW5lbW9u aWMgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4X2xhYmVsdGV4dCh2YXJpYWJs ZXNbbW5lbW9uaWNbd2RdXSkKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgY3R4X2xhYmVsdGV4dCh2YXJpYWJsZXNbZGF5c1t3ZF1dKQogICAg ICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAg ICAgICAgIGVsc2VpZiB0YWcgPT0gdl9XRUVLREFZIHRoZW4KICAgICAgICAgICAgICAgICAgICBs b2NhbCB3ZCA9IHdlZWtkYXkoZGF5LG1vbnRoLHllYXIpCiAgICAgICAgICAgICAgICAgICAgaWYg Y3VycmVudGxhbmd1YWdlID09IGZhbHNlIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgY29u dGV4dChXb3JkKGRheXNbd2RdKSkKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg ICAgICAgICAgICAgIGlmIHR5cGUobW5lbW9uaWMpID09ICJ0YWJsZSIgdGhlbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgbW5lbW9uaWMgPSBtbmVtb25pYy5kYXkKICAgICAgICAgICAgICAg ICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG1uZW1vbmljIHRoZW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN0eF9MQUJFTFRFWFQodmFyaWFibGVzW21uZW1vbmlj W3dkXV0pCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGN0eF9MQUJFTFRFWFQodmFyaWFibGVzW2RheXNbd2RdXSkKICAgICAgICAgICAgICAg ICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICBlbHNl aWYgdGFnID09ICJXIiB0aGVuCiAgICAgICAgICAgICAgICAgICAgY29udGV4dCh3ZWVrZGF5KGRh eSxtb250aCx5ZWFyKSkKICAgICAgICAgICAgICAgIGVsc2VpZiB0YWcgPT0gdl9yZWZlcnJhbCB0 aGVuCiAgICAgICAgICAgICAgICAgICAgY29udGV4dCgiJTA0aSUwMmklMDJpIix5ZWFyLG1vbnRo LGRheSkKICAgICAgICAgICAgICAgIGVsc2VpZiB0YWcgPT0gdl9zcGFjZSBvciB0YWcgPT0gIlxc ICIgdGhlbgogICAgICAgICAgICAgICAgICAgIGN0eF9zcGFjZSgpCiAgICAgICAgICAgICAgICAg ICAgYXV0byA9IHRydWUKICAgICAgICAgICAgICAgIGVsc2VpZiB0YWcgfj0gIiIgdGhlbgogICAg ICAgICAgICAgICAgICAgIGNvbnRleHQodGFnKQogICAgICAgICAgICAgICAgICAgIGF1dG8gPSB0 cnVlCiAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgIGlmIG9yZGluYWwgYW5kIHdo YXRvcmRpbmFsIHRoZW4KICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50bGFuZ3VhZ2UgPT0g ZmFsc2UgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAtLSBpZ25vcmUKICAgICAgICAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRbaGlnaG9yZGluYWwg YW5kICJoaWdob3JkaW5hbHN0ciIgb3IgIm9yZGluYWxzdHIiXShjb252ZXJ0ZXJzLm9yZGluYWwo d2hhdG9yZGluYWwsY3VycmVudGxhbmd1YWdlKSkKICAgICAgICAgICAgICAgICAgICBlbmQKICAg ICAgICAgICAgICAgIGVuZAogICAgICAgICAgICBlbmQKICAgICAgICBlbmQKICAgIGVuZAoKICAg IGltcGxlbWVudCB7CiAgICAgICAgbmFtZSAgICAgID0gImN1cnJlbnRkYXRlIiwKICAgICAgICBh cmd1bWVudHMgPSB7ICJzdHJpbmciLCAic3RyaW5nIiwgInN0cmluZyIsICJpbnRlZ2VyIiwgImlu dGVnZXIiLCAiaW50ZWdlciIgfSwKICAgICAgICBhY3Rpb25zICAgPSBmdW5jdGlvbihwYXR0ZXJu LGRlZmF1bHQsbGFuZ3VhZ2UseWVhcixtb250aCxkYXkpCiAgICAgICAgICAgIGN1cnJlbnRkYXRl KAogICAgICAgICAgICAgICAgcGF0dGVybiAgPT0gIiIgYW5kIGRlZmF1bHQgb3IgcGF0dGVybiwK ICAgICAgICAgICAgICAgIGxhbmd1YWdlID09ICIiIGFuZCBmYWxzZSAgIG9yIGxhbmd1YWdlLAog ICAgICAgICAgICAgICAgeWVhciwgbW9udGgsIGRheQogICAgICAgICAgICApCiAgICAgICAgZW5k LAogICAgfQoKICAgIGxvY2FsIGZ1bmN0aW9uIHRvZGF0ZShzLHksbSxkKQogICAgICAgIGlmIHkg b3IgbSBvciBkIHRoZW4KICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlcnNbIlxcZGF0ZVt5PSVz LG09JXMsZD0lc11bJXNdXFxyZWxheCJdKHkgb3IgIiIsbSBvciAiIixkIG9yICIiLHMgb3IgIiIp CiAgICAgICAgZWxzZQogICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVyc1siXFxjdXJyZW50ZGF0 ZVslc11cXHJlbGF4Il0ocykKICAgICAgICBlbmQKICAgIGVuZAoKICAgIGFkZGZvcm1hdHRlcihm b3JtYXR0ZXJzLCJkYXRlIiwgW1t0b2RhdGUoLi4uKV1dLCB7IHRvZGF0ZSA9IHRvZGF0ZSB9KQoK ICAgIC0tIGNvbnRleHQoIm9uZTogJTQhZGF0ZSEiLCJNT05USCIsMjAyMCwxMiwxMSkgICAgICAg ICAgY29udGV4dC5wYXIoKQogICAgLS0gY29udGV4dCgib25lOiAlNCFkYXRlISIsIm1vbnRoIiwy MDIwLDEyLDExKSAgICAgICAgICBjb250ZXh0LnBhcigpCiAgICAtLSBjb250ZXh0KCJvbmU6ICU0 IWRhdGUhIiwieWVhciwtLG1tLC0sZGQiLDIwMjAsMTIsMTEpIGNvbnRleHQucGFyKCkKCiAgICAt LSBjb250ZXh0KCJ0d286ICUzIWRhdGUhIiwiTU9OVEgiLGZhbHNlLDEyKSAgICAgICAgICBjb250 ZXh0LnBhcigpCiAgICAtLSBjb250ZXh0KCJ0d286ICUzIWRhdGUhIiwibW9udGgiLGZhbHNlLDEy KSAgICAgICAgICBjb250ZXh0LnBhcigpCiAgICAtLSBjb250ZXh0KCJ0d286ICUzIWRhdGUhIiwi eWVhciwtLG1tLC0sZGQiLGZhbHNlLDEyKSBjb250ZXh0LnBhcigpCgplbmQKCmltcGxlbWVudCB7 CiAgICBuYW1lICAgICAgPSAidW5paGV4IiwKICAgIGFyZ3VtZW50cyA9ICJpbnRlZ2VyIiwKICAg IGFjdGlvbnMgICA9IHsgZm9ybWF0dGVyc1siVSslMDVYIl0sIGNvbnRleHQgfSwKfQoKbG9jYWwg biA9IFIoIjA5IileMSAvIHRvbnVtYmVyCgpsb2NhbCBwID0gQ2YoIEN0KCIiKQogICAgKiBDZyhD YygieWVhciIpICAqIChuICAgICAgICAgICApKSAqIFAoIi0iKV4tMQogICAgKiBDZyhDYygibW9u dGgiKSAqIChuICsgQ2MoICAgMSkpKSAqIFAoIi0iKV4tMQogICAgKiBDZyhDYygiZGF5IikgICAq IChuICsgQ2MoICAgMSkpKSAqIHdoaXRlc3BhY2VeLTEKICAgICogQ2coQ2MoImhvdXIiKSAgKiAo biArIENjKCAgIDApKSkgKiBQKCI6IileLTEKICAgICogQ2coQ2MoIm1pbiIpICAgKiAobiArIENj KCAgIDApKSkKICAgICwgcmF3c2V0KQoKZnVuY3Rpb24gY29udmVydGVycy50b3RpbWUocykKICAg IGlmIG5vdCBzIHRoZW4KICAgICAgICByZXR1cm4KICAgIGVsc2VpZiB0eXBlKHMpID09ICJ0YWJs ZSIgdGhlbgogICAgICAgIHJldHVybiBzCiAgICBlbHNlaWYgdHlwZShzKSA9PSAic3RyaW5nIiB0 aGVuCiAgICAgICAgcmV0dXJuIGxwZWdtYXRjaChwLHMpCiAgICBlbmQKICAgIGxvY2FsIG4gPSB0 b251bWJlcihzKQogICAgaWYgbiBhbmQgbiA+PSAwIHRoZW4KICAgICAgICByZXR1cm4gZGF0ZSgi KnQiLG4pCiAgICBlbmQKZW5kCgpmdW5jdGlvbiBjb252ZXJ0ZXJzLnNldHRpbWUodCkKICAgIGlm IHR5cGUodCkgfj0gInRhYmxlIiB0aGVuCiAgICAgICAgdCA9IGNvbnZlcnRlcnMudG90aW1lKHQp CiAgICBlbmQKICAgIGlmIHQgdGhlbgogICAgICAgIHRleHNldCgieWVhciIsIHQueWVhciBvciAx MDAwKQogICAgICAgIHRleHNldCgibW9udGgiLCB0Lm1vbnRoIG9yIDEpCiAgICAgICAgdGV4c2V0 KCJkYXkiLCB0LmRheSBvciAxKQogICAgICAgIHRleHNldCgidGltZSIsICh0LmhvdXIgb3IgMCkg KiA2MCArICh0Lm1pbiBvciAwKSkKICAgIGVuZAplbmQKCi0tIHRha2VuIGZyb20geC1hc2NpaW1h dGggKHdoZXJlIHdlIG5lZWRlZCBpdCBmb3IgYSBwcm9qZWN0KQoKbG9jYWwgZF9vbmUgICAgICAg ICA9IGxwZWdwYXR0ZXJucy5kaWdpdApsb2NhbCBkX3R3byAgICAgICAgID0gZF9vbmUgKiBkX29u ZQpsb2NhbCBkX3RocmVlICAgICAgID0gZF90d28gKiBkX29uZQpsb2NhbCBkX2ZvdXIgICAgICAg ID0gZF90aHJlZSAqIGRfb25lCmxvY2FsIGRfc3BsaXQgICAgICAgPSBQKC0xKSArIENhcmcoMikg KiAobHBlZ3BhdHRlcm5zLnBlcmlvZCAvIiIpCgpsb2NhbCBkX3NwYWNlZCAgICAgID0gKENhcmco MSkgKiBkX3RocmVlKV4xCgpsb2NhbCBkaWdpdGl6ZWRfMSAgID0gQ3MgKCAoCiAgICAgICAgICAg ICAgICAgICAgICAgIGRfdGhyZWUgKiBkX3NwYWNlZCAqIGRfc3BsaXQgKwogICAgICAgICAgICAg ICAgICAgICAgICBkX3R3byAgICogZF9zcGFjZWQgKiBkX3NwbGl0ICsKICAgICAgICAgICAgICAg ICAgICAgICAgZF9vbmUgICAqIGRfc3BhY2VkICogZF9zcGxpdCArCiAgICAgICAgICAgICAgICAg ICAgICAgIFAoMSkKICAgICAgICAgICAgICAgICAgICAgICleMSApCgpsb2NhbCBwX2ZvdXJiZWZv cmUgID0gZF9mb3VyICogZF9zcGxpdApsb2NhbCBwX2ZvdXJhZnRlciAgID0gZF9mb3VyICogUCgt MSkKCmxvY2FsIHBfYmVmb3Jlc3BsaXQgPSBkX3RocmVlICogZF9zcGFjZWReMCAqIGRfc3BsaXQK ICAgICAgICAgICAgICAgICAgICArIGRfdHdvICAgKiBkX3NwYWNlZF4wICogZF9zcGxpdAogICAg ICAgICAgICAgICAgICAgICsgZF9vbmUgICAqIGRfc3BhY2VkXjAgKiBkX3NwbGl0CiAgICAgICAg ICAgICAgICAgICAgKyBkX29uZSAgICogZF9zcGxpdAoKbG9jYWwgcF9hZnRlcnNwbGl0ICA9IHBf Zm91cmFmdGVyCiAgICAgICAgICAgICAgICAgICAgKyBkX3RocmVlICogZF9zcGFjZWQKICAgICAg ICAgICAgICAgICAgICArIGRfdHdvICAgKiBkX3NwYWNlZAogICAgICAgICAgICAgICAgICAgICsg ZF9vbmUgICAqIGRfc3BhY2VkCgpsb2NhbCBkaWdpdGl6ZWRfMiAgID0gQ3MgKAogICAgICAgICAg ICAgICAgICAgICAgICAgcF9mb3VyYmVmb3JlICAqICAocF9hZnRlcnNwbGl0XjApICsKICAgICAg ICAgICAgICAgICAgICAgICAgIHBfYmVmb3Jlc3BsaXQgKiAoKHBfYWZ0ZXJzcGxpdCArIGRfb25l XjEpXjApCiAgICAgICAgICAgICAgICAgICAgICApCgpsb2NhbCBwX2ZvdXJiZWZvcmUgID0gZF9m b3VyICogZF9zcGxpdApsb2NhbCBwX2ZvdXJhZnRlciAgID0gZF9mb3VyCmxvY2FsIGRfc3BhY2Vk ICAgICAgPSAoQ2FyZygxKSAqIChkX3RocmVlICsgZF90d28gKyBkX29uZSkpXjEKbG9jYWwgcF9h ZnRlcnNwbGl0ICA9IHBfZm91cmFmdGVyICogUCgtMSkKICAgICAgICAgICAgICAgICAgICArIGRf dGhyZWUgKiBkX3NwYWNlZCAqIFAoMSleMAogICAgICAgICAgICAgICAgICAgICsgZF9vbmVeMQoK bG9jYWwgZGlnaXRpemVkXzMgICA9IENzKChwX2ZvdXJiZWZvcmUgKyBwX2JlZm9yZXNwbGl0KSAq IHBfYWZ0ZXJzcGxpdF4wKQoKbG9jYWwgZGlnaXRzX3NwYWNlICA9IHV0ZmNoYXIoMHgyMDA4KQoK bG9jYWwgc3BsaXRtZXRob2RzICA9IHsKICAgIGRpZ2l0aXplZF8xLAogICAgZGlnaXRpemVkXzIs CiAgICBkaWdpdGl6ZWRfMywKfQoKbG9jYWwgcmVwbGFjZXJzICAgICA9IHRhYmxlLnNldG1ldGF0 YWJsZWluZGV4KGZ1bmN0aW9uKHQsaykKICAgIGxvY2FsIHYgPSBscGVnLnJlcGxhY2VyKCIuIixr KQogICAgdFtrXSA9IHYKICAgIHJldHVybiB2CmVuZCkKCmZ1bmN0aW9uIGNvbnZlcnRlcnMuc3Bh Y2VkZGlnaXRzKHNldHRpbmdzLGRhdGEpCiAgICBsb2NhbCBkYXRhID0gdG9zdHJpbmcoZGF0YSBv ciBzZXR0aW5ncy5kYXRhIG9yICIiKQogICAgaWYgZGF0YSB+PSAiIiB0aGVuCiAgICAgICAgbG9j YWwgbWV0aG9kID0gc2V0dGluZ3MubWV0aG9kCiAgICAgICAgbG9jYWwgc3BsaXQgID0gc3BsaXRt ZXRob2RzW3RvbnVtYmVyKG1ldGhvZCkgb3IgMV0KICAgICAgICBpZiBzcGxpdCB0aGVuCiAgICAg ICAgICAgIGxvY2FsIHN5bWJvbCAgICA9IHNldHRpbmdzLnN5bWJvbAogICAgICAgICAgICBsb2Nh bCBzZXBhcmF0b3IgPSBzZXR0aW5ncy5zZXBhcmF0b3IKICAgICAgICAgICAgaWYgbm90IHN5bWJv bCBvciBzeW1ib2wgPT0gIiIgdGhlbgogICAgICAgICAgICAgICAgc3ltYm9sID0gIi4iCiAgICAg ICAgICAgIGVuZAogICAgICAgICAgICBpZiB0eXBlKHNlcGFyYXRvcikgfj0gInN0cmluZyIgb3Ig c2VwYXJhdG9yID09ICIiIHRoZW4KICAgICAgICAgICAgICAgIHNlcGFyYXRvciA9IGRpZ2l0c19z cGFjZQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgbG9jYWwgcmVzdWx0ID0gbHBlZ21hdGNo KHNwbGl0LGRhdGEsMSxzZXBhcmF0b3Isc3ltYm9sKQogICAgICAgICAgICBpZiBub3QgcmVzdWx0 IGFuZCBzeW1ib2wgfj0gIi4iIHRoZW4KICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxwZWdtYXRj aChyZXBsYWNlcnNbc3ltYm9sXSxkYXRhKQogICAgICAgICAgICBlbmQKICAgICAgICAgICAgaWYg cmVzdWx0IHRoZW4KICAgICAgICAgICAgIC0tIHByaW50KG1ldGhvZCxzeW1ib2wsc2VwYXJhdG9y LGRhdGEscmVzdWx0KQogICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgICAgICAgICBl bmQKICAgICAgICBlbmQKICAgIGVuZAogICAgcmV0dXJuIHN0cgplbmQKCi0tIG1ldGhvZCAyIDog c3BsaXQgMyBiZWZvcmUgYW5kIDMgYWZ0ZXIKLS0gbWV0aG9kIDMgOiBzcGxpdCAzIGJlZm9yZSBh bmQgMyBhZnRlciB3aXRoID4gNCBiZWZvcmUKCi0tIHN5bWJvbHMgaXMgZXh0cmEgc3BsaXQgKGlu IGFkZGl0aW9uIHRvIHBlcmlvZCkKCi0tIGxvY2FsIHNldHVwID0geyBzcGxpdG1ldGhvZCA9IDMs IHN5bWJvbCA9ICIsIiB9Ci0tIGxvY2FsIHNldHVwID0geyBzcGxpdG1ldGhvZCA9IDIsIHN5bWJv bCA9ICIsIiB9Ci0tIGxvY2FsIHNldHVwID0geyBzcGxpdG1ldGhvZCA9IDEsIHN5bWJvbCA9ICIs IiB9Ci0tCi0tIGxvY2FsIHQgPSB7Ci0tICAgICAiMC4wMDAwMiIsCi0tICAgICAiMSIsICIxMiIs ICIxMjMiLCAiMTIzNCIsICIxMjM0NSIsICIxMjM0NTYiLCAiMTIzNDU2NyIsICIxMjM0NTY3OCIs ICIxMjM0NTY3ODkiLAotLSAgICAgIjEuMSIsCi0tICAgICAiMTIuMTIiLAotLSAgICAgIjEyMy4x MjMiLAotLSAgICAgIjEyMzQuMTIzIiwKLS0gICAgICIxMjM0LjEyMzQiLAotLSAgICAgIjEyMzQ1 LjEyMzQiLAotLSAgICAgIjEyMzQuMTIzNDUiLAotLSAgICAgIjEyMzQ1LjEyMzQ1IiwKLS0gICAg ICIxMjM0NTYuMTIzNDU2IiwKLS0gICAgICIxMjM0NTY3LjEyMzQ1NjciLAotLSAgICAgIjEyMzQ1 Njc4LjEyMzQ1Njc4IiwKLS0gICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5IiwKLS0gICAgICIwLjEy MzQiLAotLSAgICAgIjEyMzQuMCIsCi0tICAgICAiMTIzNC4wMCIsCi0tICAgICAiMC4xMjM0NTY3 ODkiLAotLSAgICAgIjEwMC4wMDAwNSIsCi0tICAgICAiMC44MDAxOCIsCi0tICAgICAiMTAuODAw MTgiLAotLSAgICAgIjEwMC44MDAxOCIsCi0tICAgICAiMTAwMC44MDAxOCIsCi0tICAgICAiMTAw MDAuODAwMTgiLAotLSB9Ci0tCi0tIGZvciBpPTEsI3QgZG8KLS0gICAgIHByaW50KGZvcm1hdHRl cnNbIiUtMjBzIDogWyVzXSJdKHRbaV0sY29udmVydGVycy5zcGFjZWRkaWdpdHMoc2V0dXAsdFtp XSkpKQotLSBlbmQKCmltcGxlbWVudCB7CiAgICBuYW1lICAgICAgPSAic3BhY2VkZGlnaXRzIiwK ICAgIGFjdGlvbnMgICA9IHsgY29udmVydGVycy5zcGFjZWRkaWdpdHMsIGNvbnRleHQgfSwKICAg IGFyZ3VtZW50cyA9IHsKICAgICAgICB7CiAgICAgICAgICAgIHsgInN5bWJvbCIgfSwKICAgICAg ICAgICAgeyAic2VwYXJhdG9yIiB9LAogICAgICAgICAgICB7ICJkYXRhIiB9LAogICAgICAgICAg ICB7ICJtZXRob2QiIH0sCiAgICAgICAgfQogICAgfQp9Cgpsb2NhbCBmdW5jdGlvbiBmaWVsZChu KSByZXR1cm4gY29udGV4dChvc2RhdGUoIip0Iilbbl0pIGVuZAoKaW1wbGVtZW50IHsgbmFtZSA9 ICJhY3R1YWxkYXkiLCAgIHB1YmxpYyA9IHRydWUsIGFjdGlvbnMgPSBmdW5jdGlvbigpIGZpZWxk KCJkYXkiKSAgIGVuZCB9CmltcGxlbWVudCB7IG5hbWUgPSAiYWN0dWFsbW9udGgiLCBwdWJsaWMg PSB0cnVlLCBhY3Rpb25zID0gZnVuY3Rpb24oKSBmaWVsZCgibW9udGgiKSBlbmQgfQppbXBsZW1l bnQgeyBuYW1lID0gImFjdHVhbHllYXIiLCAgcHVibGljID0gdHJ1ZSwgYWN0aW9ucyA9IGZ1bmN0 aW9uKCkgZmllbGQoInllYXIiKSAgZW5kIH0K --000000000000d784a705c02de645 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSWYgeW91ciBxdWVzdGlvbiBpcyBvZiBpbnRlcmVz dCB0byBvdGhlcnMgYXMgd2VsbCwgcGxlYXNlIGFkZCBhbiBlbnRyeSB0byB0aGUgV2lraSEKCm1h aWxsaXN0IDogbnRnLWNvbnRleHRAbnRnLm5sIC8gaHR0cDovL3d3dy5udGcubmwvbWFpbG1hbi9s aXN0aW5mby9udGctY29udGV4dAp3ZWJwYWdlICA6IGh0dHA6Ly93d3cucHJhZ21hLWFkZS5ubCAv IGh0dHA6Ly9jb250ZXh0LmFhbmhldC5uZXQKYXJjaGl2ZSAgOiBodHRwczovL2JpdGJ1Y2tldC5v cmcvcGhnL2NvbnRleHQtbWlycm9yL2NvbW1pdHMvCndpa2kgICAgIDogaHR0cDovL2NvbnRleHRn YXJkZW4ubmV0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCg== --000000000000d784a705c02de645--