From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 632 invoked by alias); 6 Feb 2003 13:46:01 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 613 invoked by uid 71); 6 Feb 2003 13:46:00 -0000 Resent-Date: 6 Feb 2003 13:46:00 -0000 Resent-Message-ID: <20030206134600.612.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, grave@ipno.in2p3.fr Received: (qmail 28562 invoked by uid 48); 6 Feb 2003 13:36:32 -0000 Message-Id: <20030206133632.28555.qmail@sources.redhat.com> Date: Thu, 06 Feb 2003 13:46:00 -0000 From: grave@ipno.in2p3.fr Reply-To: grave@ipno.in2p3.fr To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: ada/9596: Internal compiler error during gtkada compilation X-SW-Source: 2003-02/txt/msg00302.txt.bz2 List-Id: >Number: 9596 >Category: ada >Synopsis: Internal compiler error during gtkada compilation >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Feb 06 13:46:00 UTC 2003 >Closed-Date: >Last-Modified: >Originator: xavier grave >Release: gcc version 3.2.2 20030131 (Debian prerelease) >Organization: >Environment: Linux ipnnarval 2.4.20-rc3-ben0 #1 SMP lun nov 25 16:04:34 CET 2002 ppc unknown unknown GNU/Linux >Description: >How-To-Repeat: gcc-3.2 -c -I. -O2 -gnatn -gnatwuwl -fPIC -I- gtk-extra-plot_data.adb >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="all_ada_files" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="all_ada_files" LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZv ciBHdGsrL0dub21lICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICBDb3B5cmln aHQgKEMpIDE5OTgtMjAwMCBFLiBCcmlvdCwgSi4gQnJvYmVja2VyIGFuZCBBLiBDaGFybGV0ICAg LS0KLS0gICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDEgQUNULUV1cm9wZSAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAg ICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhp cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGli cmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0K LS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwg aWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0 LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAg LS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAg dGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhv d2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0 YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAg ICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBQaXhtYXBzIGFy ZSBvZmYtc2NyZWVuIGRyYXdhYmxlcy4gVGhleSBjYW4gYmUgZHJhd24gdXBvbiB3aXRoIHRoZSBz dGFuZGFyZAotLSAgZHJhd2luZyBwcmltaXRpdmVzLCB0aGVuIGNvcGllZCB0byBhbm90aGVyIGRy YXdhYmxlIChzdWNoIGFzIGEgR2RrX1dpbmRvdykKLS0gIHdpdGggR2RrLlBpeG1hcC5EcmF3LiBU aGUgZGVwdGggb2YgYSBwaXhtYXAgaXMgdGhlIG51bWJlciBvZiBiaXRzIHBlcgotLSAgcGl4ZWxz LiBCaXRtYXBzIGFyZSBzaW1wbHkgcGl4bWFwcyB3aXRoIGEgZGVwdGggb2YgMS4gKFRoYXQgaXMs IHRoZXkgYXJlCi0tICBtb25vY2hyb21lIGJpdG1hcHMgLSBlYWNoIHBpeGVsIGNhbiBiZSBlaXRo ZXIgb24gb3Igb2ZmKS4KLS0gIEBweHJlZntQYWNrYWdlX0dkay5QaXhtYXB9IGZvciBtb3JlIGRl dGFpbHMgb24gcGl4bWFwIGhhbmRsaW5nLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3Zl cnNpb24+MS4yLjc8L2NfdmVyc2lvbj4KCndpdGggR2xpYjsgdXNlIEdsaWI7Cgp3aXRoIEdkay5X aW5kb3c7CgpwYWNrYWdlIEdkay5CaXRtYXAgaXMKCiAgIHN1YnR5cGUgR2RrX0JpdG1hcCBpcyBH ZGsuR2RrX0JpdG1hcDsKICAgLS0gIEEgYmxhY2sgYW5kIHdoaXRlIGltYWdlLgogICAtLSAgVGhp cyB0eXBlIGlzIG1haW5seSB1c2VkIGFzIGEgbWFzayB3aGVuIGRyYXdpbmcgb3RoZXIgY29sb3Jl ZCBpbWFnZXMuCiAgIC0tICBFYWNoIHBpeGVsIGNhbiBoYXZlIHR3byB2YWx1ZXMsIDAgb3IgMS4K CiAgIE51bGxfQml0bWFwIDogY29uc3RhbnQgR2RrX0JpdG1hcDsKCiAgIHByb2NlZHVyZSBHZGtf TmV3IChCaXRtYXAgOiBvdXQgR2RrX0JpdG1hcDsKICAgICAgICAgICAgICAgICAgICAgIFdpbmRv dyA6IGluICBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICBXaWR0 aCAgOiBpbiAgR2ludDsKICAgICAgICAgICAgICAgICAgICAgIEhlaWdodCA6IGluICBHaW50KTsK ICAgLS0gIENyZWF0ZSBhIG5ldyBiaXRtYXAgd2l0aCBhIGdpdmVuIHNpemUuCiAgIC0tICBXaW5k b3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBuZXcgYml0bWFw LgogICAtLSAgQ2FuIGJlIGV2ZW50dWFsbHkgbnVsbCBpbiB3aGljaCBjYXNlIHRoZSByb290IHdp bmRvdyBpcyB1c2VkLgogICAtLSAgV2lkdGggaXMgdGhlIHdpZHRoIG9mIHRoZSBuZXcgYml0bWFw IGluIHBpeGVscy4KICAgLS0gIEhlaWdodCBpcyB0aGUgaGVpZ2h0IG9mIHRoZSBuZXcgYml0bWFw IGluIHBpeGVscy4KCiAgIHByb2NlZHVyZSBSZWYgKEJpdG1hcCA6IGluIEdka19CaXRtYXApOwog ICAtLSAgQWRkIGEgcmVmZXJlbmNlIHRvIGEgYml0bWFwLgoKICAgcHJvY2VkdXJlIFVucmVmIChC aXRtYXAgOiBpbiBHZGtfQml0bWFwKTsKICAgLS0gIFRoaXMgaXMgdGhlIHVzdWFsIHdheSB0byBk ZXN0cm95IGEgYml0bWFwLiBUaGUgbWVtb3J5IGlzIGZyZWVkIHdoZW4KICAgLS0gIHRoZXJlIGlz IG5vIG1vcmUgcmVmZXJlbmNlCgogICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fRGF0YSAoQml0bWFw IDogICAgb3V0IEdka19CaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5k b3cgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRGF0YSAgIDogaW4gICAgIFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFdpZHRoICA6IGluICAgICBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgSGVpZ2h0IDogaW4gICAgIEdpbnQpOwogICAtLSAgQ3JlYXRlIGEgYml0bWFwIGZyb20gZGF0 YSBpbiBYQk0gZm9ybWF0LgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1 bHQgdmFsdWVzIGZvciB0aGUgbmV3IGJpdG1hcCwgY2FuIGJlCiAgIC0tICBudWxsIGluIHdoaWNo IGNhc2UgdGhlIHJvb3Qgd2luZG93IGlzIHVzZWQuCiAgIC0tICBEYXRhIGlzIHRoZSBYQk0gZGF0 YS4KICAgLS0gIFdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMu CiAgIC0tICBIZWlnaHQgaXMgdGhlIGhlaWdodCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMu Cgpwcml2YXRlCiAgIE51bGxfQml0bWFwIDogY29uc3RhbnQgR2RrX0JpdG1hcCA6PSBudWxsOwog ICBwcmFnbWEgSW1wb3J0IChDLCBSZWYsICJnZGtfYml0bWFwX3JlZiIpOwogICBwcmFnbWEgSW1w b3J0IChDLCBVbnJlZiwgImdka19iaXRtYXBfdW5yZWYiKTsKZW5kIEdkay5CaXRtYXA7Ci0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1w IFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0 ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAg IC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90 aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3Ig eW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0t IGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSBy ZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVy IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUg ZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0t Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBwYWNrYWdlIHBy b3ZpZGVzIGFuIGludGVyZmFjZSB0byB0aGUgY29sb3IgaGFuZGxpbmcgZmFjaWxpdGllcyBpbgot LSAgZ3RrKy4gSXQgaXMgYWJsZSB0byBoYW5kbGUgYW55IGtpbmQgb2YgdmlzdWFsIChtb25vY2hy b21lLCBncmV5c2NhbGUsCi0tICBjb2xvciB3aXRoIGRpZmZlcmVudCBkZXB0aHMsIC4uLiksIGJ1 dCBwcm92aWRlcyBhIGNvbW1vbiBhbmQgZWFzeQotLSAgaW50ZXJmYWNlIGZvciBhbGwgb2YgdGhl bS4KLS0gIFNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIGV4cGVjdCBhIENvbG9ybWFwLiBUaGVyZSBh cmUgdHdvIHdheXMgeW91IGNhbgotLSAgZ2V0IHN1Y2ggYSBjb2xvcm1hcCwgZWl0aGVyIGEgc3lz dGVtIGRlZmF1bHQgY29sb3JtYXAgb3IgYSBwZXItd2lkZ2V0Ci0tICBjb2xvcm1hcC4gSXQgaXMg cmVjb21tZW5kZWQsIHVubGVzcyB5b3UgYXJlIHdyaXRpbmcgeW91ciBvd24gbmV3IHdpZGdldCwK LS0gIHRvIGFsd2F5cyB1c2UgdGhlIHN5c3RlbSBkZWZhdWx0IENvbG9ybWFwLiBBbGwgdGhlIGZ1 bmN0aW9ucyB0byBnZXQKLS0gIHRoZXNlIGNvbG9ybWFwcyBhcmUgZm91bmQgaW4gR3RrLldpZGdl dC4KLS0KLS0gIEdldHRpbmcgdGhlIFJlZC9HcmVlbi9CbHVlIGNvbXBvbmVudHMgY2FuIGJlIGRv bmUgdGhyb3VnaCBQYXJzZSwgYW5kIGlzCi0tICBhY3R1YWxseSByZWNvbW1lbmRlZCwgc2luY2Ug dGhlIGV4YWN0IGNvbG9yIGdlbmVyYWxseSBkZXBlbmRzIG9uIHRoZQotLSAgdmlzdWFsIHlvdXIg YXBwbGljYXRpb24gaXMgcnVubmluZyBvbi4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192 ZXJzaW9uPjEuMi42PC9jX3ZlcnNpb24+Cgp3aXRoIEdsaWI7IHVzZSBHbGliOwp3aXRoIEdkay5W aXN1YWw7CgpwYWNrYWdlIEdkay5Db2xvciBpcwoKICAgdHlwZSBHZGtfQ29sb3IgaXMgcHJpdmF0 ZTsKICAgLS0gIEEgY29sb3IgdG8gYmUgZGlzcGxheWVkIG9uIHRoZSBzY3JlZW4uCiAgIC0tICBD dXJyZW50bHksIEd0a0FkYSBvbmx5IHN1cHBvcnRzIHRoZSBSR0Igc3RhbmRhcmQsIGllIGVhY2gg Y29sb3IgaXMKICAgLS0gIHNldCBieSBpdHMgcmVkLCBncmVlbiBhbmQgYmx1ZSBjb21wb25lbnRz LgogICAtLSAgQW4gZXh0cmEgZmllbGQgKFBpeGVsKSBpcyB0aGUgaW50ZXJuYWwgcmVwcmVzZW50 YXRpb24gb2YgdGhlIGNvbG9yLAogICAtLSAgd2hpY2ggaXMgc2V0IG9uY2UgdGhlIGNvbG9yIGhh cyBiZWVuIGFsbG9jYXRlZC4KCiAgIHR5cGUgR2RrX0NvbG9yX0FycmF5IGlzIGFycmF5IChOYXR1 cmFsIHJhbmdlIDw+KSBvZiBHZGtfQ29sb3I7CiAgIC0tICBBbiBhcnJheSBvZiBjb2xvcnMuCgog ICBOdWxsX0NvbG9yIDogY29uc3RhbnQgR2RrX0NvbG9yOwogICAtLSAgTm8gY29sb3IuIEZvciBt b3N0IGZ1bmN0aW9ucywgdGhpcyB3aWxsIHNlbGVjdCB0aGUgZGVmYXVsdCBjb2xvciBpbiB0aGUK ICAgLS0gIGNvbnRleHQsIGFsdGhvdWdoIHRoaXMgZXhhY3Qgc3BlY2lmaWNhdGlvbiBkZXBlbmRz IG9uIHRoZSBmdW5jdGlvbiB5b3UKICAgLS0gIHdhbnQgdG8gdXNlLgoKICAgdHlwZSBHZGtfQ29s b3JtYXAgaXMgbmV3IENfUHJveHk7CiAgIC0tICBUaGUgc2V0IG9mIGNvbG9ycyB0aGUgY2FuIGJl IGRpc3BsYXllZCBvbiB0aGUgc2NyZWVuLgogICAtLSAgV2hlbiB0aGUgc2NyZWVuIGlzIG5vdCBh IHRydWUtY29sb3Igc2NyZWVuIChpZSB0aGVyZSBpcyBvbmx5IGEgbGltaXRlZAogICAtLSAgbnVt YmVyIG9mIHBvc3NpYmxlIGNvbG9ycywgbGlrZSAyNTYpLCB0aGUgY29sb3JzIGFyZSBpbiBmYWN0 IGluZGV4ZXMKICAgLS0gIGludG8gYSBjb2xvcm1hcCwgd2hpY2ggZ2l2ZXMgdGhlIGNvbXBvbmVu dHMgb2YgdGhlIGNvbG9yLgogICAtLSAgVGhpcyBpcyB0aGUgc2FtZSBjb25jZXB0IGFzIGEgcGFs ZXR0ZS4KCiAgIE51bGxfQ29sb3JtYXAgOiBjb25zdGFudCBHZGtfQ29sb3JtYXA7CgogICBXcm9u Z19Db2xvciA6IGV4Y2VwdGlvbjsKICAgLS0gIEV4Y2VwdGlvbiByYWlzZWQgd2hlbiBzb21lIGZ1 bmN0aW9ucyBiZWxvdyBjb3VsZCBub3QgZmluZCBvciBhbGxvY2F0ZQogICAtLSAgYSBjb2xvciBv biB0aGUgdXNlcidzIHN5c3RlbS4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAtLSBDcmVhdGluZyBhbmQgRGVzdHJveWluZyBjb2xvcnMgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBQYXJzZSAoU3BlYyA6IGlu IFN0cmluZykgcmV0dXJuIEdka19Db2xvcjsKICAgLS0gIFBhcnNlIHRoZSBzdHJpbmcgU3BlYywg YW5kIGdldCBpdHMgUmVkL0dyZWVuL0JsdWUgY29tcG9uZW50cy4KICAgLS0gIFRoZSBjb2xvciBp cyBub3QgYWxsb2NhdGVkLCBhbmQgeW91IG5lZWQgdG8gY2FsbCBBbGxvY19Db2xvci4KICAgLS0g IElmIHRoZSBzdHJpbmcgY291bGQgbm90IGJlIHBhcnNlZCB0byBhbiBleGlzdGluZyBjb2xvciwg V3JvbmdfQ29sb3IgaXMKICAgLS0gIHJhaXNlZC4KICAgLS0gIFRoZSBzdHJpbmcgY2FuIGJlIG9u ZSBvZiA6CiAgIC0tCiAgIC0tICAtICJSQkc6RkYvRkYvRkYiIHdoZXJlIHRoZSAiRkYiIHN1YnN0 cmluZ3MgYXJlIHJlc3BlY3RpdmVseSB0aGUgdmFsdWUKICAgLS0gICAgb2YgdGhlIHJlZCwgZ3Jl ZW4gYW5kIGJsdWUgY29tcG9uZW50cy4gU29tZSBvdGhlciBwcmVmaXhlcyB0aGFuIFJHQgogICAt LSAgICBhcmUgZGVmaW5lZCBpbiB0aGUgWDExIGRlZmluaXRpb24sIHBsZWFzZSBzZWUgc29tZSBY MTEgZG9jdW1lbnRhdGlvbgogICAtLSAgICAob3IgdGhlIG1hbiBwYWdlIFhQYXJzZUNvbG9yIG9u IHVuaXggc3lzdGVtcykuCiAgIC0tCiAgIC0tICAtICJjb2xvcl9uYW1lIiB3aGljaCBjYW4gYmUg YW55IGNvbG9yIG5hbWUgZGVmaW5lZCBpbiB0aGUgZmlsZSByZ2IudHh0CiAgIC0tICAgIG9mIHRo ZSB1c2VyJ3Mgc3lzdGVtLiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayB0aGF0IFdyb25nX0NvbG9y IHdhcyBub3QKICAgLS0gICAgcmFpc2VkLCBpbiBjYXNlIHRoZSBjb2xvciB3YXMgbm90IGtub3du IG9uIHRoZSB1c2VyJ3Mgc3lzdGVtLiBUaGlzCiAgIC0tICAgIHN0cmluZyBpcyBjYXNlIGluc2Vu c2l0aXZlLgoKICAgcHJvY2VkdXJlIEFsbG9jX0NvbG9yIChDb2xvcm1hcCAgIDogaW4gICAgIEdk a19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciAgICAgIDogaW4gb3V0 IEdka19Db2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZWFibGUgIDogaW4gICAg IEJvb2xlYW4gOj0gRmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVzdF9NYXRjaCA6 IGluICAgICBCb29sZWFuIDo9IFRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgU3VjY2Vz cyAgICA6ICAgIG91dCBCb29sZWFuKTsKICAgLS0gIEFsbG9jYXRlIGEgbmV3IGNvbG9yLgogICAt LSAgVGhlIGZpZWxkcyBSR0Igc2hvdWxkIGhhdmUgYmVlbiBzZXQgYmVmb3JlIGNhbGxpbmcgdGhp cyBmdW5jdGlvbi4KICAgLS0gIElmIFdyaXRlYWJsZSBpcyBUcnVlLCB0aGUgY29sb3Igd2lsbCBi ZSBhbGxvY2F0ZWQgcmVhZC93cml0ZSwgdGhhdCBjYW4KICAgLS0gIGJlIGNoYW5nZWQgYXQgYW55 IHRpbWUuIE5vdCBhbGwgdmlzdWFscyBzdXBwb3J0IHRoaXMuIE9uIG1vZGVybiBzeXN0ZW1zCiAg IC0tICB0aGlzIHVzYWdlIGhhcyBiZWNvbWUgbGVzcyB1c2VmdWwgdGhhbiBiZWZvcmUsIHNpbmNl IHJlZHJhd2luZyB0aGUKICAgLS0gIHNjcmVlbiB3aXRoIGEgbmV3IGNvbG9yIGlzIGFib3V0IGFz IGZhc3QuCiAgIC0tICBJZiBCZXN0X01hdGNoIGlzIFRydWUsIGFuZCB0aGUgZXhhY3QgY29sb3Ig Y2FuIG5vdCBiZSBhbGxvY2F0ZWQsIEd0a0FkYQogICAtLSAgd2lsbCBmaW5kIHRoZSBjbG9zZXN0 IHBvc3NpYmxlIG1hdGNoLCBhbmQgbW9kaWZ5IHRoZSBmaWVsZHMgUmVkLCBHcmVlbgogICAtLSAg YW5kIEJsdWUgb2YgQ29sb3IuCiAgIC0tICBOb3RlIHRoYXQgdGhlIGFsbG9jYXRpb24gaGFzIG1v cmUgY2hhbmNlcyB0byBzdWNjZWVkIGlmIFdyaXRlYWJsZSBpcwogICAtLSAgRmFsc2UgYW5kIEJl c3RfTWF0Y2ggaXMgVHJ1ZS4KICAgLS0gIFdoZW4geW91IG5vIGxvbmdlciB1c2UgYSBjb2xvciwg eW91IHNob3VsZCBjYWxsIEZyZWUuCgogICBwcm9jZWR1cmUgQWxsb2NfQ29sb3JzIChDb2xvcm1h cCAgIDogaW4gICAgIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29s b3JzICAgICA6IGluIG91dCBHZGtfQ29sb3JfQXJyYXk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgIFdyaXRlYWJsZSAgOiBpbiAgICAgQm9vbGVhbiA6PSBGYWxzZTsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgQmVzdF9NYXRjaCA6IGluICAgICBCb29sZWFuIDo9IFRydWU7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgOiAgICBvdXQgQm9vbGVhbl9BcnJheTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0ICAgICA6ICAgIG91dCBHaW50KTsKICAgLS0g IEFsbG9jYXRlIGEgc2V0IG9mIGNvbG9ycy4KICAgLS0gIFRoZSBwYXJhbWV0ZXJzIGFyZSB0aGUg c2FtZSBhcyBmb3IgQWxsb2NfQ29sb3IKICAgLS0gIFJlc3VsdCBpcyB0aGUgbnVtYmVyIG9mIGNv bG9ycyBub3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZC4KICAgLS0KICAgLS0gIFRoZSBzaXplIG9m IHRoZSBCb29sZWFuX0FycmF5IGlzIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlCiAgIC0tICBD b2xvcnNfQXJyYXkuIFVzYWdlIG9mIGFuIGFycmF5IG9mIGEgZGlmZmVyZW50IHNpemUgd2lsbAog ICAtLSAgcHJvYmFibHkgbGVhZCB0byBhIENvbnN0cmFpbnRfRXJyb3IuCgogICBwcm9jZWR1cmUg QWxsb2MgKENvbG9ybWFwICA6IGluIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICBD b2xvciAgICAgOiBpbiBvdXQgR2RrX0NvbG9yKTsKICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMgQWxs b2NfQ29sb3JzIGFib3ZlLCBidXQgZm9yIGEgc2luZ2xlIGNvbG9yLgogICAtLSAgVGhlIGNvbG9y IGlzIGFsbG9jYXRlZCBub24td3JpdGVhYmxlLCBhbmQgdGhlIGJlc3QtbWF0Y2ggaXMgdGFrZW4u CiAgIC0tICBSYWlzZXMgV3JvbmdfQ29sb3IgaWYgdGhlIGNvbG9yIGNvdWxkIG5vdCBiZSBhbGxv Y2F0ZWQKCiAgIGZ1bmN0aW9uIFdoaXRlIChDb2xvcm1hcCAgOiBpbiBHZGtfQ29sb3JtYXApIHJl dHVybiBHZGtfQ29sb3I7CiAgIC0tICBSZXR1cm4gdGhlIGRlZmF1bHQgd2hpdGUgY29sb3IgZm9y IHRoZSBjb2xvcm1hcC4KICAgLS0gIElmIHRoaXMgY29sb3Igd2FzIG5vdCBmb3VuZCBvciBjb3Vs ZCBub3QgYmUgYWxsb2NhdGVkLCBXcm9uZ19Db2xvciBpcwogICAtLSAgcmFpc2VkLgoKICAgZnVu Y3Rpb24gQmxhY2sgKENvbG9ybWFwICA6IGluIEdka19Db2xvcm1hcCkgcmV0dXJuIEdka19Db2xv cjsKICAgLS0gIFJldHVybiB0aGUgZGVmYXVsdCBibGFjayBjb2xvcnMgZm9yIHRoZSBjb2xvcm1h cC4KICAgLS0gIElmIHRoaXMgY29sb3IgaXMgbm90IGZvdW5kIG9yIGNvdWxkIG5vdCBiZSBhbGxv Y2F0ZWQsIFdyb25nX0NvbG9yIGlzCiAgIC0tICByYWlzZWQuCgogICBmdW5jdGlvbiBHZXRfU3lz dGVtIHJldHVybiBHZGtfQ29sb3JtYXA7CiAgIC0tICBHZXQgdGhlIGRlZmF1bHQgY29sb3JtYXAg Zm9yIHRoZSBzeXN0ZW0uCiAgIC0tICBUaGlzIGlzIHRoZSBzYW1lIGZ1bmN0aW9uIGFzIEd0ay5X aWRnZXQuR2V0X0RlZmF1bHRfQ29sb3JtYXAuCgogICBwcm9jZWR1cmUgR2V0X1Zpc3VhbCAoQ29s b3JtYXAgOiBpbiAgICAgR2RrX0NvbG9ybWFwOwogICAgICAgICAgICAgICAgICAgICAgICAgVmlz dWFsICAgOiAgICBvdXQgR2RrLlZpc3VhbC5HZGtfVmlzdWFsKTsKICAgLS0gIEdldCB0aGUgdmlz dWFsIGFzc29jaWF0ZWQgd2l0aCBhIGNvbG9ybWFwLgogICAtLSAgVGhlIG1haW4gaW5mb3JtYXRp b24geW91IGNhbiBnZXQgZnJvbSB0aGVyZSBpcyB0aGUgZGVwdGggb2YgdGhlIGRpc3BsYXkuCgog ICBwcm9jZWR1cmUgR2RrX05ldyAoQ29sb3JtYXAgICAgIDogICAgb3V0IEdka19Db2xvcm1hcDsK ICAgICAgICAgICAgICAgICAgICAgIFZpc3VhbCAgICAgICA6IGluICAgICBHZGsuVmlzdWFsLkdk a19WaXN1YWw7CiAgICAgICAgICAgICAgICAgICAgICBQcml2YXRlX0NtYXAgOiBpbiAgICAgQm9v bGVhbik7CiAgIC0tICBDcmVhdGUgYSBuZXcgY29sb3JtYXAgZm9yIHRoZSB2aXN1YWwuCiAgIC0t ICBJZiBQcml2YXRlX0NtYXAgaXMgdHJ1ZSwgdGhlbiB0aGUKICAgLS0gIGNvbG9ybWFwIHdvbid0 IGJlIG1vZGlmaWFibGUgb3V0c2lkZSB0aGlzIHNjb3BlLiBUaGlzIG1pZ2h0IHJlc3VsdCBpbgog ICAtLSAgc29tZSBzdHJhbmdlIGNvbG9ycyBvbiB0aGUgZGlzcGxheS4uLgoKICAgcHJvY2VkdXJl IFVucmVmIChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcCk7CiAgIC0tICBVbnJlZiBpcyB0aGUg b25seSB3YXkgdG8gZGVzdHJveSBhIGNvbG9ybWFwIG9uY2UgeW91IG5vIGxvbmdlciBuZWVkIGl0 LgogICAtLSAgTm90ZSB0aGF0IGJlY2F1c2UgZ3RrKyB1c2VzIHJlZmVyZW5jZSBjb3VudHMsIHRo ZSBjb2xvcm1hcCB3aWxsIG5vdAogICAtLSAgYmUgYWN0dWFsbHkgZGVzdHJveWVkIHdoaWxlIGF0 IGxlYXN0IG9uZSBvYmplY3QgaXMgdXNpbmcgaXQuCgogICBwcm9jZWR1cmUgUmVmIChDb2xvcm1h cCA6IGluIEdka19Db2xvcm1hcCk7CiAgIC0tICBJbmNyZW1lbnQgdGhlIHJlZi1jb3VudCBmb3Ig dGhlIGNvbG9yLgogICAtLSAgWW91IHNob3VsZCBub3QgaGF2ZSB0byB1c2UgdGhpcyBmdW5jdGlv bi4KCiAgIGZ1bmN0aW9uIEdldF9TeXN0ZW1fU2l6ZSByZXR1cm4gR2ludDsKICAgLS0gIFJldHVy biB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGRlZmF1bHQgY29sb3JtYXAgb24gdGhlIHN5 c3RlbS4KCiAgIHByb2NlZHVyZSBGcmVlX0NvbG9ycyAoQ29sb3JtYXAgOiBpbiBHZGtfQ29sb3Jt YXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3JzICAgOiBpbiBHZGtfQ29sb3JfQXJy YXkpOwogICAtLSAgRnJlZSBDb2xvcnMsIGFzc3VtaW5nIHRoZXkgYXJlIGFsbG9jYXRlZCBpbiBD b2xvcm1hcC4KCiAgIHByb2NlZHVyZSBTdG9yZSAoQ29sb3JtYXAgOiBpbiBHZGtfQ29sb3JtYXA7 CiAgICAgICAgICAgICAgICAgICAgQ29sb3JzICAgOiBpbiBHZGtfQ29sb3JfQXJyYXkpOwogICAt LSAgU3RvcmUgdGhlIENvbG9ycyBpbiB0aGUgQ29sb3JtYXAKCiAgIHByb2NlZHVyZSBBbGxvYyAo Q29sb3JtYXAgICA6IGluIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICBDb250aWd1 b3VzIDogaW4gQm9vbGVhbjsKICAgICAgICAgICAgICAgICAgICBQbGFuZXMgICAgIDogaW4gICAg IEd1bG9uZ19BcnJheTsKICAgICAgICAgICAgICAgICAgICBQaXhlbHMgICAgIDogaW4gICAgIEd1 bG9uZ19BcnJheTsKICAgICAgICAgICAgICAgICAgICBTdWNjZWVkZWQgIDogICAgb3V0IEJvb2xl YW4pOwogICAtLSAgQWxsb2NhdGUgc29tZSBSZWFkL1dyaXRlIGNvbG9yIGNlbGxzLgogICAtLSAg Q29sb3IgY2VsbHMnIHZhbHVlcyBjYW4gYmUgY2hhbmdlZAogICAtLSAgZHluYW1pY2FsbHkuIFRo ZSBwaXhlbHMgYWxsb2NhdGVkIGFyZSByZXR1cm5lZCBpbiBQaXhlbHMuCiAgIC0tICBTZWUgWEFs bG9jQ29sb3JDZWxscygzKSBvbiBVbml4IHN5c3RlbXMuCiAgIC0tICBUaGUgUGxhbmVzIHBhcmFt ZXRlciBjYW4gYmUgdXNlZCB0byBub25kZXN0cnVjdGl2ZWx5IG92ZXJsYXkgb25lCiAgIC0tICBz ZXQgb2YgZ3JhcGhpY3Mgb3ZlciBhbm90aGVyLiBTZWUgdGhlIFgxMSBtYW51YWwgZm9yIG1vcmUg aW5mby4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGlzIGEgbG93LWxldmVsIGZ1bmN0aW9uIHdoaWNo IHlvdSBzaG91bGQgcmFyZWx5CiAgIC0tICBoYXZlIHRvIHVzZS4KCiAgIHByb2NlZHVyZSBGcmVl IChDb2xvcm1hcCA6IGluIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgIFBpeGVscyAg IDogaW4gR3Vsb25nX0FycmF5OwogICAgICAgICAgICAgICAgICAgUGxhbmVzICAgOiBpbiBHdWxv bmcpOwogICAtLSAgRnJlZSBzb21lIGNvbG9ycyBpbiB0aGUgY29sb3JtYXAuCiAgIC0tICBTZWUg WEZyZWVDb2xvcnMoMykgb24gVW5peCBzeXN0ZW1zLgoKICAgLS0gIDxkb2NfaWdub3JlPgogICBm dW5jdGlvbiBIYXNoIChDb2xvcl9BIDogaW4gR2RrX0NvbG9yOwogICAgICAgICAgICAgICAgICBD b2xvcl9CIDogaW4gR2RrX0NvbG9yKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4gYSBoYXNo IGNvZGUgZm9yIENvbG9yX0EuCiAgIC0tICBUaGlzIHNlZW1zIHRvIGJlIGEgaW50ZXJuYWwgZnVu Y3Rpb24gZm9yIGd0aysgb25seS4KICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHByb2NlZHVyZSBD aGFuZ2UgKENvbG9ybWFwICA6IGluIEdka19Db2xvcm1hcDsKICAgICAgICAgICAgICAgICAgICAg Q29sb3IgICAgIDogaW4gb3V0IEdka19Db2xvcjsKICAgICAgICAgICAgICAgICAgICAgU3VjY2Vl ZGVkIDogICAgb3V0IEJvb2xlYW4pOwogICAtLSAgQ2hhbmdlIHRoZSBSZWFkL1dyaXRlIGNvbG9y bWFwIGNlbGwgY29ycmVzcG9uZGluZyB0byBDb2xvci4KICAgLS0gIFRoZSBuZXcgdmFsdWUgaXMg dGhlIG9uZSBjb250YWluZWQgaW4gdGhlIFJlZCwgR3JlZW4gYW5kIEJsdWUKICAgLS0gIGZpZWxk cyBvZiBDb2xvci4KCiAgIHByb2NlZHVyZSBDaGFuZ2UgKENvbG9ybWFwIDogaW4gR2RrX0NvbG9y bWFwOwogICAgICAgICAgICAgICAgICAgICBOY29sb3JzICA6IGluIEdpbnQpOwogICAtLSAgQ2hh bmdlcyB0aGUgZmlyc3QgTmNvbG9ycyBkZWZpbmVkIGluIENvbG9ybWFwLgoKICAgcHJvY2VkdXJl IENvcHkgKFNvdXJjZSAgICAgIDogaW4gICAgIEdka19Db2xvcjsKICAgICAgICAgICAgICAgICAg IERlc3RpbmF0aW9uIDogICAgb3V0IEdka19Db2xvcik7CiAgIC0tICBDb3B5IHRoZSBTb3VyY2Ug Y29sb3IgdG8gRGVzdGluYXRpb24uCgogICBmdW5jdGlvbiBFcXVhbCAoQ29sb3JhLCBDb2xvcmIg OiBpbiBHZGtfQ29sb3IpIHJldHVybiBCb29sZWFuOwogICAtLSAgVHJ1ZSBpZiB0aGUgUmVkLCBH cmVlbiBhbmQgQmx1ZSBjb21wb25lbnRzIG9mIGJvdGggY29sb3JzIGFyZSBlcXVhbC4KCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXR0aW5n L0dldHRpbmcgdGhlIGZpZWxkcyBvZiBHZGtfQ29sb3IgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X1JnYiAoQ29sb3Ig ICA6IG91dCBHZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICBSZWQsIEdyZWVuLCBCbHVl IDogaW4gR3VzaG9ydCk7CiAgIC0tICBNb2RpZnkgdGhlIGZpZWxkcyBvZiB0aGUgY29sb3IuCiAg IC0tICBZb3UgdGhlbiBoYXZlIHRvIGFsbG9jYXRlIHRoZSBjb2xvciB3aXRoIG9uZSBvZiB0aGUg QWxsb2MqIGZ1bmN0aW9ucwogICAtLSAgYWJvdmUuCgogICBwcm9jZWR1cmUgU2V0X1BpeGVsIChD b2xvciA6IGluIG91dCBHZGtfQ29sb3I7IFBpeGVsIDogR3Vsb25nKTsKICAgLS0gIFRoaXMgZnVu Y3Rpb24gc2hvdWxkIGFsbW9zdCBuZXZlciBiZSB1c2VkLiBJbnN0ZWFkLCB1c2UgQWxsb2NfQ29s b3IKCiAgIGZ1bmN0aW9uIFJlZCAoQ29sb3IgOiBpbiBHZGtfQ29sb3IpIHJldHVybiBHdXNob3J0 OwogICAtLSAgUmV0dXJuIHRoZSBSZWQgZmllbGQgb2YgQ29sb3IuCgogICBmdW5jdGlvbiBHcmVl biAoQ29sb3IgOiBpbiBHZGtfQ29sb3IpIHJldHVybiBHdXNob3J0OwogICAtLSAgUmV0dXJuIHRo ZSBHcmVlbiBmaWVsZCBvZiBDb2xvci4KCiAgIGZ1bmN0aW9uIEJsdWUgKENvbG9yIDogaW4gR2Rr X0NvbG9yKSByZXR1cm4gR3VzaG9ydDsKICAgLS0gIFJldHVybiB0aGUgQmx1ZSBmaWVsZCBvZiBD b2xvci4KCiAgIGZ1bmN0aW9uIFBpeGVsIChDb2xvciA6IGluIEdka19Db2xvcikgcmV0dXJuIEd1 bG9uZzsKICAgLS0gIFJldHVybiB0aGUgUGl4ZWwgZmllbGQgb2YgQ29sb3IuCgpwcml2YXRlCiAg IE51bGxfQ29sb3JtYXAgOiBjb25zdGFudCBHZGtfQ29sb3JtYXAgOj0gbnVsbDsKCiAgIHR5cGUg R2RrX0NvbG9yIGlzCiAgICAgIHJlY29yZAogICAgICAgICBQaXhlbCA6IEd1bG9uZzsKICAgICAg ICAgUmVkICAgOiBHdXNob3J0OwogICAgICAgICBHcmVlbiA6IEd1c2hvcnQ7CiAgICAgICAgIEJs dWUgIDogR3VzaG9ydDsKICAgICAgZW5kIHJlY29yZDsKICAgLS0gIFRoZSBmaWVsZHMgYXJlIHRv IGJlIGNob3NlbiBiZXR3ZWVuIDAgYW5kIDY1NTM1LCBub3QgMCBhbmQgMjU1ISEhCgogICBOdWxs X0NvbG9yIDogY29uc3RhbnQgR2RrX0NvbG9yIDo9IChHdWxvbmcnTGFzdCwgMSwgMCwgMCk7CiAg IC0tICBOb3RlOiBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgR3RrQWRhLCBldmVyeXRpbWUgYSBj b2xvciBpcyB1c2VkLCBpdAogICAtLSAgaXMgaW1wb3J0YW50IHRvIHRlc3Qgd2hldGhlciB0aGlz IGlzIE51bGxfQ29sb3Igb3Igbm90LiBJZiBpdCBpcywgdGhlbgogICAtLSAgU3lzdGVtLk51bGxf QWRkcmVzcyBzaG91bGQgYmUgcGFzc2VkIHRvIEMgaW5zdGVhZCBvZiBOdWxsX0NvbG9yJ0FkZHJl c3MKICAgLS0gIHNvIHRoYXQgZ3RrKyBjYW4gcHJvdmlkZSBhIGRlZmF1bHQgdmFsdWUgZm9yIGNv bG9ycy4KCiAgIHByYWdtYSBJbmxpbmUgKFNldF9SZ2IpOwogICBwcmFnbWEgSW5saW5lIChTZXRf UGl4ZWwpOwogICBwcmFnbWEgSW5saW5lIChSZWQpOwogICBwcmFnbWEgSW5saW5lIChHcmVlbik7 CiAgIHByYWdtYSBJbmxpbmUgKEJsdWUpOwogICBwcmFnbWEgSW5saW5lIChQaXhlbCk7CiAgIHBy YWdtYSBJbXBvcnQgKEMsIEdldF9TeXN0ZW1fU2l6ZSwgImdka19jb2xvcm1hcF9nZXRfc3lzdGVt X3NpemUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1N5c3RlbSwgImdka19jb2xvcm1hcF9n ZXRfc3lzdGVtIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImdka19jb2xvcm1hcF9yZWYi KTsKICAgcHJhZ21hIEltcG9ydCAoQywgVW5yZWYsICJnZGtfY29sb3JtYXBfdW5yZWYiKTsKZW5k IEdkay5Db2xvcjsKCi0tICA8ZXhhbXBsZT4KLS0gIC0tICBIZXJlIGlzIGFuIGV4YW1wbGUgaG93 IHlvdSBjYW4gYWxsb2NhdGUgYSBuZXcgY29sb3IsIHdoZW4geW91IGtub3cKLS0gIC0tICBpdHMg cmVkL2dyZWVuL2JsdWUgY29tcG9uZW50czogTm90ZSB0aGF0IHdlIGFsbG9jYXRlIHdoaXRlIGlu IGZhY3QKLS0gIC0tICBzaW5jZSB0aGUgbWF4aW1hbCB2YWx1ZSBmb3IgY29sb3IgY29tcG9uZW50 cyBpcyA2NTUzNS4KLS0gICAgIENvbG9yICAgOiBHZGtfQ29sb3I7Ci0tICAgICBTdWNjZXNzIDog Qm9vbGVhbjsKLS0gICAgIFNldF9SYmcgKENvbG9yLCA2NTUzNSwgNjU1MzUsIDY1NTM1KTsKLS0g ICAgIEFsbG9jX0NvbG9yIChDb2xvcm1hcCAgID0+IEd0ay5XaWRnZXQuR2V0X0RlZmF1bHRfQ29s b3JtYXAsCi0tICAgICAgICAgICAgICAgICAgQ29sb3IgICAgICA9PiBDb2xvciwKLS0gICAgICAg ICAgICAgICAgICBXcml0ZWFibGUgID0+IEZhbHNlLAotLSAgICAgICAgICAgICAgICAgIEJlc3Rf TWF0Y2ggPT4gVHJ1ZSwKLS0gICAgICAgICAgICAgICAgICBTdWNjZXNzICAgID0+IFN1Y2Nlc3Mp OwotLSAgICAgaWYgbm90IFN1Y2Nlc3MgdGhlbgotLSAgICAgICAgIC4uLjsgIC0tICBhbGxvY2F0 aW9uIGZhaWxlZAotLSAgICAgZW5kIGlmOwotLSAgPC9leGFtcGxlPgotLQotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0 ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENv cHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAg RW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg ICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3Qs IHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt LQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxl cyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5r IHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRh YmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5n ICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlk YXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1p Z2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4KLS0gIFRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUg Y2FwYWJpbGl0eSB0byBjcmVhdGUgcHJlZGVmaW5lZCBtb3VzZSBjdXJzb3JzCi0tICBhcyB3ZWxs IGFzIHVzZXIgZGVmaW5lZCBvbmVzLgotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3ZlcnNpb24+ MS4yLjg8L2NfdmVyc2lvbj4KCndpdGggR2xpYjsKd2l0aCBHZGsuVHlwZXM7CndpdGggR2RrLkNv bG9yOwoKcGFja2FnZSBHZGsuQ3Vyc29yIGlzCgogICB0eXBlIEdka19DdXJzb3IgaXMgbmV3IEdk ay5DX1Byb3h5OwogICBOdWxsX0N1cnNvciA6IGNvbnN0YW50IEdka19DdXJzb3I7CgogICBwcm9j ZWR1cmUgR2RrX05ldwogICAgIChXaWRnZXQgICAgICA6IG91dCBHZGtfQ3Vyc29yOwogICAgICBD dXJzb3JfVHlwZSA6IGluICBHZGsuVHlwZXMuR2RrX0N1cnNvcl9UeXBlKTsKICAgLS0gIENyZWF0 ZSBhIG5ldyBzdGFuZGFyZCBjdXJzb3IuCgogICBwcm9jZWR1cmUgR2RrX05ldwogICAgIChXaWRn ZXQgOiBvdXQgR2RrX0N1cnNvcjsKICAgICAgU291cmNlIDogaW4gR2RrLkdka19QaXhtYXA7CiAg ICAgIE1hc2sgICA6IGluIEdkay5HZGtfUGl4bWFwOwogICAgICBGZyAgICAgOiBpbiBHZGsuQ29s b3IuR2RrX0NvbG9yOwogICAgICBCZyAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAg ICBYICAgICAgOiBpbiBHbGliLkdpbnQ7CiAgICAgIFkgICAgICA6IGluIEdsaWIuR2ludCk7CiAg IC0tICBDcmVhdGUgYSBuZXcgY3Vyc29yIGZyb20gYSBnaXZlbiBwaXhtYXAgYW5kIG1hc2suCiAg IC0tICBCb3RoIHRoZSBwaXhtYXAgYW5kIG1hc2sgbXVzdCBoYXZlIGEgZGVwdGggb2YgMSAoaS5l LiBlYWNoIHBpeGVsIGhhcwogICAtLSAgb25seSAyIHZhbHVlcyAtIG9uIG9yIG9mZikuIFRoZSBz dGFuZGFyZCBjdXJzb3Igc2l6ZSBpcyAxNiBieSAxNiBwaXhlbHMuCiAgIC0tICAgLSBTb3VyY2Ug aXMgdGhlIHBpeG1hcCBzcGVjaWZ5aW5nIHRoZSBjdXJzb3IuCiAgIC0tICAgLSBNYXNrIGlzIHRo ZSBwaXhtYXAgc3BlY2lmeWluZyB0aGUgbWFzaywgd2hpY2ggbXVzdCBiZSB0aGUgc2FtZSBzaXpl CiAgIC0tICAgYXMgc291cmNlLgogICAtLSAgIC0gRmcgaXMgdGhlIGZvcmVncm91bmQgY29sb3Is IHVzZWQgZm9yIHRoZSBiaXRzIGluIHRoZSBzb3VyY2Ugd2hpY2ggYXJlCiAgIC0tICAgZW5hYmxl ZC4gVGhlIGNvbG9yIGRvZXMgbm90IGhhdmUgdG8gYmUgYWxsb2NhdGVkIGZpcnN0LgogICAtLSAg IC0gQmcgaXMgdGhlIGJhY2tncm91bmQgY29sb3IsIHVzZWQgZm9yIHRoZSBiaXRzIGluIHRoZSBz b3VyY2Ugd2hpY2ggYXJlCiAgIC0tICAgZGlzYWJsZWQuIFRoZSBjb2xvciBkb2VzIG5vdCBoYXZl IHRvIGJlIGFsbG9jYXRlZCBmaXJzdC4KICAgLS0gICAtIFggaXMgdGhlIGhvcml6b250YWwgb2Zm c2V0IG9mIHRoZSAnaG90c3BvdCcgb2YgdGhlIGN1cnNvci4KICAgLS0gICAtIFkgaXMgdGhlIHZl cnRpY2FsIG9mZnNldCBvZiB0aGUgJ2hvdHNwb3QnIG9mIHRoZSBjdXJzb3IuCgogICBwcm9jZWR1 cmUgRGVzdHJveSAoQ3Vyc29yIDogaW4gR2RrX0N1cnNvcik7CiAgIC0tICBEZXN0cm95IGEgY3Vy c29yLCBmcmVlaW5nIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBpdC4KCnByaXZhdGUKICAg TnVsbF9DdXJzb3IgOiBjb25zdGFudCBHZGtfQ3Vyc29yIDo9IG51bGw7CiAgIHByYWdtYSBJbXBv cnQgKEMsIERlc3Ryb3ksICJnZGtfY3Vyc29yX2Rlc3Ryb3kiKTsKZW5kIEdkay5DdXJzb3I7Ci0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBH aW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFy bGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAg IC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0t IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlm IG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwg b3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0t Ci0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRo ZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFi bGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAg IC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLSAgVGhpcyBwYWNrYWdlIHBy b3ZpZGVzIGZ1bmN0aW9ucyBkZWFsaW5nIHdpdGggZXZlbnRzIGZyb20gdGhlIHdpbmRvdyBzeXN0 ZW0uCi0tICBJbiBHdGtBZGEgYXBwbGljYXRpb25zLCB0aGUgZXZlbnRzIGFyZSBoYW5kbGVkIGF1 dG9tYXRpY2FsbHkgaW4KLS0gIEd0ay5NYWluLkRvX0V2ZW50LCBhbmQgcGFzc2VkIG9uIHRvIHRo ZSBhcHByb3ByaWF0ZSB3aWRnZXRzLCBzbyB0aGVzZQotLSAgZnVuY3Rpb25zIGFyZSByYXJlbHkg bmVlZGVkLgotLQotLSAgISEgV2FybmluZyAhISBUaGlzIGlzIG9uZSBvZiB0aGUgb25seSBwYWNr YWdlIHRoYXQgcmVxdWlyZXMgbWFudWFsCi0tICBtZW1vcnkgbWFuYWdlbWVudCBpbiBzb21lIGNh c2VzLiBJZiB5b3UgdXNlIHRoZSBmdW5jdGlvbiBBbGxvY2F0ZSwKLS0gIHlvdSBoYXZlIHRvIHVz ZSB0aGUgZnVuY3Rpb24gRnJlZSB0b28uLi4KLS0gIDwvZGVzY3JpcHRpb24+Cgp3aXRoIFN5c3Rl bTsKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuUmVjdGFuZ2xlOwp3aXRoIEdkay5UeXBl czsKd2l0aCBHZGsuV2luZG93OwoKcGFja2FnZSBHZGsuRXZlbnQgaXMKCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgRGVmaW5pdGlvbiBvZiB0aGUgdHlwZXMgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICB0eXBlIEdka19FdmVudCBpcyBuZXcg R2RrLkNfUHJveHk7CgogICBzdWJ0eXBlIEdka19FdmVudF9BbnkgaXMgR2RrX0V2ZW50OwogICAt LSAgQ2hhbmdlIGZyb20gR3RrQWRhMS4yLjM6IFRoZXJlIGlzIG5vIGxvbmdlciBhIHRhZ2dlZCB0 eXBlCiAgIC0tICBoaWVyYXJjaHksIG9ubHkgb25lIHR5cGUuCiAgIC0tICBIb3dldmVyIHRoZXJl IGFyZSBub3cgYSBmZXcgcnVudGltZSB0ZXN0cyBmb3IgZWFjaCBvZiB0aGUKICAgLS0gIGZ1bmN0 aW9uLCB0byBjaGVjayB3aGV0aGVyIGEgZ2l2ZW4gZmllbGQgaXMgYXZhaWxhYmxlIG9yIG5vdC4K ICAgLS0KICAgLS0gIEZpZWxkcyBjb21tb24gdG8gYWxsIGV2ZW50czogV2luZG93LCBTZW5kX0V2 ZW50LCBFdmVudF9UeXBlCgogICBzdWJ0eXBlIEdka19FdmVudF9CdXR0b24gaXMgR2RrX0V2ZW50 OwogICAtLSAgQSBidXR0b24gd2FzIHByZXNzZWQgb3IgcmVsZWFzZS4gUmVsZXZhbnQgZmllbGRz OgogICAtLSAgVGltZSwgWCwgWSwgUHJlc3N1cmUsIFh0aWx0LCBZdGlsdCwgU3RhdGUsIEJ1dHRv biwgU291cmNlLAogICAtLSAgRGV2aWNlX0lkLCBYX1Jvb3QsIFlfUm9vdCwgV2luZG93LgogICAt LSAgVHlwZTogQnV0dG9uX1ByZXNzLCBHZGtfMkJ1dHRvbl9QcmVzcywgR2RrXzNCdXR0b25fUHJl c3Mgb3IKICAgLS0gIEJ1dHRvbl9SZWxlYXNlLgoKICAgc3VidHlwZSBHZGtfRXZlbnRfQ29uZmln dXJlIGlzIEdka19FdmVudDsKICAgLS0gIFRoZSB3aW5kb3cgY29uZmlndXJhdGlvbiBoYXMgY2hh bmdlZDogZWl0aGVyIGl0IHdhcyByZW1hcHBlZCwKICAgLS0gIHJlc2l6ZWQsIG1vdmVkLCAuLi4K ICAgLS0gIE5vdGUgdGhhdCB5b3UgdXN1YWxseSBkb24ndCBoYXZlIHRvIHJlZHJhdyB5b3VyIHdp bmRvdyB3aGVuIHlvdQogICAtLSAgcmVjZWl2ZSBzdWNoIGFuIGV2ZW50LCBzaW5jZSBpdCBpcyBm b2xsb3dlZCBieSBhbiBHZGtfRXZlbnRfRXhwb3NlLgogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBY LCBZLCBXaWR0aCwgSGVpZ2h0CiAgIC0tICBUeXBlOiBDb25maWd1cmUKCiAgIHN1YnR5cGUgR2Rr X0V2ZW50X0Nyb3NzaW5nIGlzIEdka19FdmVudDsKICAgLS0gIFRoZSBtb3VzZSBoYXMgYmVlbiBt b3ZlZCBpbiBvciBvdXQgb2YgdGhlIHdpbmRvdwogICAtLSAgUmVsZXZhbnQgZmllbGRzOiBUaW1l LCBTdWJXaW5kb3csIFgsIFksIFhfUm9vdCwgWV9Sb290LCBNb2RlLAogICAtLSAgRGV0YWlsLCBG b2N1cywgU3RhdGUKICAgLS0gIFR5cGU6IEVudGVyX05vdGlmeSwgTGVhdmVfTm90aWZ5CgogICBz dWJ0eXBlIEdka19FdmVudF9FeHBvc2UgaXMgR2RrX0V2ZW50OwogICAtLSAgVGhlIHdpbmRvdyBu ZWVkcyB0byBiZSByZWRyYXduLiBGb3IgZWZmaWNpZW5jeSwgZ3RrIGdpdmVzIHlvdSB0aGUKICAg LS0gIHNtYWxsZXN0IGFyZWEgdGhhdCB5b3UgbmVlZCB0byByZWRyYXcKICAgLS0gIFJlbGV2YW50 IGZpZWxkczogQXJlYSwgQ291bnQsIEdyYXBoaWNzX0V4cG9zZQogICAtLSAgVHlwZTogRXhwb3Nl CgogICBzdWJ0eXBlIEdka19FdmVudF9Ob19FeHBvc2UgaXMgR2RrX0V2ZW50OwogICAtLSAgSW5k aWNhdGUgdGhhdCB0aGUgc291cmNlIHJlZ2lvbiB3YXMgY29tcGxldGVseSBhdmFpbGFibGUgd2hl biBwYXJ0cyBvZgogICAtLSAgYSBkcmF3YWJsZSB3ZXJlIGNvcGllZC4KICAgLS0gIFRoaXMgaXMg YWxzbyBlbWl0dGVkIHdoZW4gYSBnYyB3aG9zZSAiZXhwb3N1cmVzIiBhdHRyaWJ1dGUgaXMgc2V0 IHRvCiAgIC0tICBGYWxzZSBpbiBhIGNhbGwgdG8gQ29weV9BcmVhIG9yIERyYXdfUGl4bWFwLiBT ZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiAgIC0tICBHZGsuR0MuU2V0X0V4cG9zdXJlcy4KICAg LS0gIE5vIFJlbGV2ZW50IGZpZWxkcyBleGNlcHQgdGhlIGNvbW1vbiBvbmVzCiAgIC0tICBUeXBl OiBOb19FeHBvc2UKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X0ZvY3VzIGlzIEdka19FdmVudDsKICAg LS0gIFRoZSBmb2N1cyBoYXMgY2hhbmdlZCBmb3IgYSB3aW5kb3cuCiAgIC0tICBSZWxldmFudCBm aWVsZHM6IGluCiAgIC0tICBUeXBlOiBGb2N1c19DaGFuZ2UKCiAgIHN1YnR5cGUgR2RrX0V2ZW50 X01vdGlvbiBpcyBHZGtfRXZlbnQ7CiAgIC0tICBUaGUgbW91c2UgaGFzIG1vdmVkCiAgIC0tICBS ZWxldmFudCBmaWVsZHM6IFRpbWUsIFgsIFksIFByZXNzdXJlLCBYdGlsdCwgWXRpbHQsIFN0YXRl LAogICAtLSAgSXNfSGludCwgU291cmNlLCBEZXZpY2VfSWQsIFhfUm9vdCwgWV9Sb290CiAgIC0t ICBUeXBlOiBNb3Rpb25fTm90aWZ5CgogICBzdWJ0eXBlIEdka19FdmVudF9LZXkgaXMgR2RrX0V2 ZW50OwogICAtLSAgQSBrZXlib2FyZCBrZXkgd2FzIHByZXNzZWQKICAgLS0gIFJlbGV2YW50IGZp ZWxkczogVGltZSwgU3RhdGUsIEtleV9WYWwsIFN0cmluZwogICAtLSAgVHlwZTogS2V5X1ByZXNz LCBLZXlfUmVsZWFzZQoKICAgc3VidHlwZSBHZGtfRXZlbnRfUHJvcGVydHkgaXMgR2RrX0V2ZW50 OwogICAtLSAgU29tZSBwcm9wZXJ0eSBvZiB0aGUgd2luZG93IHdhcyBtb2RpZmllZC4gR3RrQWRh IHByb3ZpZGVzIGEgaGlnaGVyCiAgIC0tICBsZXZlbCBpbnRlcmZhY2UsIGFuZCB5b3UgYWxtb3N0 IG5ldmVyIG5lZWQgdG8gdXNlIHRoaXMgZXZlbnQuCiAgIC0tICBSZWxldmVudCBmaWVsZHM6IEF0 b20sIFRpbWUsIFByb3BlcnR5X1N0YXRlCiAgIC0tICBUeXBlOiBQcm9wZXJ0eV9Ob3RpZnkKCiAg IHN1YnR5cGUgR2RrX0V2ZW50X1Byb3hpbWl0eSBpcyBHZGtfRXZlbnQ7CiAgIC0tICBmcm9tIGd0 ays6ICJUaGlzIGV2ZW50IHR5cGUgd2lsbCBiZSB1c2VkIHByZXR0eSByYXJlbHkuIEl0IG9ubHkg aXMKICAgLS0gIGltcG9ydGFudCBmb3IgWElucHV0IGF3YXJlIHByb2dyYW1zIHRoYXQgYXJlIGRy YXdpbmcgdGhlaXIgb3duCiAgIC0tICBjdXJzb3IiLiBUaGlzIGlzIG9ubHkgdXNlZCB3aXRoIG5v biBzdGFuZGFyZCBpbnB1dCBkZXZpY2VzLCBsaWtlCiAgIC0tICBncmFwaGljIHRhYmxldHMuCiAg IC0tICBSZWxldmFudCBmaWVsZHM6IFRpbWUsIFNvdXJjZSwgRGV2aWNlX0lkCiAgIC0tICBUeXBl OiBQcm94aW1pdHlfSW4sIFByb3hpbWl0eV9PdXQKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X1Zpc2li aWxpdHkgaXMgR2RrX0V2ZW50OwogICAtLSAgVGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHdp bmRvdyAocGFydGlhbGx5IHZpc2libHksIGZ1bGx5IHZpc2libGUsCiAgIC0tICBoaWRkZW4pLiBU aGlzIGV2ZW50IGFsbW9zdCBuZXZlciBuZWVkIHRvIGJlIHVzZWQsIHNpbmNlIG90aGVyIGV2ZW50 cwogICAtLSAgYXJlIGdlbmVyYXRlZCBhdCB0aGUgc2FtZSB0aW1lLCBsaWtlIGV4cG9zZV9ldmVu dHMKICAgLS0gIFJlbGV2YW50IGZpZWxkczogVmlzaWJpbGl0eV9TdGF0ZQogICAtLSAgdHlwZTog VmlzaWJpbGl0eV9Ob3RpZnkKCiAgIHN1YnR5cGUgR2RrX0V2ZW50X1NlbGVjdGlvbiBpcyBHZGtf RXZlbnQ7CiAgIC0tICBUaGlzIGlzIGhvdyBYMTEgaW1wbGVtZW50cyBhIHNpbXBsZSBjdXQtYW5k LXBhc3RlIG1lY2hhbmlzbS4gSG93ZXZlciwKICAgLS0gIEd0a0FkYSBwcm92aWRlcyBhIGhpZ2hl ciBsZXZlbCBpbnRlcmZhY2UgdG8gdGhlIHNlbGVjdGlvbiBtZWNoYW5pc20sCiAgIC0tICBzbyB0 aGlzIGV2ZW50IHdpbGwgYWxtb3N0IG5ldmVyIGJlIHVzZWQuCiAgIC0tICBSZWxldmFudCBmaWVs ZHM6IFNlbGVjdGlvbiwgVGFyZ2V0LCBQcm9wZXJ0eSwgUmVxdWVzdG9yLCBUaW1lCiAgIC0tICBU eXBlOiBTZWxlY3Rpb25fQ2xlYXIsIFNlbGVjdGlvbl9SZXF1ZXN0LCBTZWxlY3Rpb25fTm90aWZ5 CgogICBzdWJ0eXBlIEdka19FdmVudF9DbGllbnQgaXMgR2RrX0V2ZW50OwogICAtLSAgVGhpcyBp cyBhbiBldmVudCB1c2VkIHRvIHNlbmQgYXJiaXRyYXJ5IGRhdGEgZnJvbSBvbmUgWCBhcHBsaWNh dGlvbgogICAtLSAgdG8gYW5vdGhlci4gVGhpcyBldmVudCB0b28gaXMgYWxtb3N0IG5ldmVyIHVz ZWQsIGFuZCBpcyBub3QgZG9jdW1lbnRlZAogICAtLSAgaGVyZS4gUGxlYXNlIGNvbnN1bHQgYW4g WDExIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgIC0tICBSZWxldmFudCBm aWVsZHM6IE1lc3NhZ2VfVHlwZSwgRGF0YQogICAtLSAgVHlwZTogQ2xpZW50X0V2ZW50CgogICAt LSAgVGhlIGZvbGxvd2luZyBldmVudCB0eXBlcyBkbyBub3Qgc2VlbSB0byBoYXZlIGFueSBhc3Nv Y2lhdGVkIHR5cGU6CiAgIC0tICBEZWxldGUsIERlc3Ryb3ksIE1hcCwgVW5tYXAsIERyYWdfRW50 ZXIsIERyYWdfTGVhdmUsIERyYWdfTW90aW9uLAogICAtLSAgRHJhZ19TdGF0dXMsIERyYWdfU3Rh cnQsIERyYWdfRmluaXNoZWQKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgLS0gU3BlY2lmaWMgZGVmaW5pdGlvbiBmb3IgdGhlIGZpZWxkcyAtLQogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICB0eXBlIEdka19FdmVudF9D bGllbnRfRGF0YV9Gb3JtYXQgaXMKICAgICAoQ2hhcl9BcnJheSwgU2hvcnRfQXJyYXksIExvbmdf QXJyYXkpOwogICBmb3IgR2RrX0V2ZW50X0NsaWVudF9EYXRhX0Zvcm1hdCB1c2UKICAgICAoQ2hh cl9BcnJheSAgPT4gOCwgU2hvcnRfQXJyYXkgPT4gMTYsIExvbmdfQXJyYXkgID0+IDMyKTsKICAg LS0gIFZhbHVlcyBleHRyYWN0ZWQgZnJvbSB0aGUgWENsaWVudE1lc3NhZ2VFdmVudCBtYW4gcGFn ZS4KCiAgIE51bWJlcl9PZl9DaGFyYWN0ZXJzIDogY29uc3RhbnQgOj0gMjA7CiAgIE51bWJlcl9P Zl9TaG9ydHMgICAgIDogY29uc3RhbnQgOj0gMTA7CiAgIE51bWJlcl9PZl9Mb25ncyAgICAgIDog Y29uc3RhbnQgOj0gNTsKCiAgIHR5cGUgR2RrX0V2ZW50X0NsaWVudF9EYXRhCiAgICAgKEZvcm1h dCA6IEdka19FdmVudF9DbGllbnRfRGF0YV9Gb3JtYXQpIGlzCiAgIHJlY29yZAogICAgICBjYXNl IEZvcm1hdCBpcwogICAgICAgICB3aGVuIENoYXJfQXJyYXkgPT4KICAgICAgICAgICAgQiA6IFN0 cmluZyAoMSAuLiBOdW1iZXJfT2ZfQ2hhcmFjdGVycyk7CiAgICAgICAgIHdoZW4gU2hvcnRfQXJy YXkgPT4KICAgICAgICAgICAgUyA6IEdzaG9ydF9BcnJheSAoMSAuLiBOdW1iZXJfT2ZfU2hvcnRz KTsKICAgICAgICAgd2hlbiBMb25nX0FycmF5ID0+CiAgICAgICAgICAgIEwgOiBHbG9uZ19BcnJh eSAoMSAuLiBOdW1iZXJfT2ZfTG9uZ3MpOwogICAgICBlbmQgY2FzZTsKICAgZW5kIHJlY29yZDsK CiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEFjY2VzcyB0byBm aWVsZHMgb2YgdGhlIGV2ZW50IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCgogICBJbnZhbGlkX0ZpZWxkIDogZXhjZXB0aW9uOwogICAtLSAgSWYgYSBmaWVsZCBkb2Vz IG5vdCBleGlzdCBmb3IgdGhlIGV2ZW50IHlvdSBnYXZlLCBhbiBleGNlcHRpb24KICAgLS0gIElu dmFsaWRfRmllbGQgaXMgcmFpc2VkCgogICBmdW5jdGlvbiBHZXRfRXZlbnRfVHlwZSAoRXZlbnQg OiBpbiBHZGtfRXZlbnQpIHJldHVybiBUeXBlcy5HZGtfRXZlbnRfVHlwZTsKICAgLS0gIFRoZSB0 eXBlIG9mIHRoZSBldmVudC4KCiAgIGZ1bmN0aW9uIEdldF9TZW5kX0V2ZW50IChFdmVudCA6IGlu IEdka19FdmVudCkgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBTZXQgdG8gdHJ1ZSBpZiB0aGUgZXZl bnQgd2FzIGdlbmVyYXRlZCBieSB0aGUgYXBwbGljYXRpb24sIEZhbHNlCiAgIC0tICBpZiBnZW5l cmF0ZWQgYnkgdGhlIFggc2VydmVyL1dpbjMyLgoKICAgZnVuY3Rpb24gR2V0X1dpbmRvdyAgICAo RXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgIC0t ICBUaGUgd2luZG93IHRoZSBldmVudCBvY2N1cmVkIG9uLgoKICAgZnVuY3Rpb24gR2V0X1RpbWUg ICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHdWludDMyOwogICAtLSAgVGltZSB3 aGVuIHRoZSBldmVudCBvY2N1cmVkLgoKICAgZnVuY3Rpb24gR2V0X1ggICAgICAgICAoRXZlbnQg OiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZG91YmxlOwogICAtLSAgSG9yaXpvbnRhbCBjb29yZGlu YXRlIG9mIHRoZSBtb3VzZSB3aGVuIHRoZSBldmVudCBvY2N1cmVkLgogICAtLSAgVGhlIGNvb3Jk aW5hdGVzIGFyZSByZWxhdGl2ZSB0byB0aGUgcGFyZW50IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdl dF9ZICAgICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0g IFZlcnRpY2FsIGNvb3JkaW5hdGUgb2YgdGhlIG1vdXNlIHdoZW4gdGhlIGV2ZW50IG9jY3VyZWQu CiAgIC0tICBUaGUgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgd2luZG93 LgoKICAgZnVuY3Rpb24gR2V0X1hfUm9vdCAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVy biBHZG91YmxlOwogICAtLSAgSG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSBtb3VzZSB3aGVu IHRoZSBldmVudCBvY2N1cmVkLgogICAtLSAgUmVsYXRpdmUgdG8gdGhlIHJvb3Qgd2luZG93LgoK ICAgZnVuY3Rpb24gR2V0X1lfUm9vdCAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBH ZG91YmxlOwogICAtLSAgVmVydGljYWwgY29vcmRpbmF0ZSBvZiB0aGUgbW91c2Ugd2hlbiB0aGUg ZXZlbnQgb2NjdXJlZC4KICAgLS0gIFJlbGF0aXZlIHRvIHRoZSByb290IHdpbmRvdy4KCiAgIGZ1 bmN0aW9uIEdldF9CdXR0b24gICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR3VpbnQ7 CiAgIC0tICBOdW1iZXIgb2YgdGhlIGJ1dHRvbiB0aGF0IHdhcyBwcmVzc2VkLgoKICAgZnVuY3Rp b24gR2V0X1N0YXRlICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZTsKICAgLS0gIFN0YXRl IG9mIHRoZSBtb3VzZSBidXR0b25zIGFuZCBrZXlib2FyZCBrZXlzIGp1c3QgcHJpb3IgdG8gdGhl IGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X1N1YndpbmRvdyAoRXZlbnQgOiBpbiBHZGtfRXZlbnQp IHJldHVybiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgIC0tICBDaGlsZCB3aW5kb3cgZm9yIHRo ZSBldmVudC4KICAgLS0gIEZvciBhbiBFbnRlcl9Ob3RpZnlfRXZlbnQsIHRoaXMgaXMgc2V0IHRv IHRoZSBpbml0aWFsIHdpbmRvdyBmb3IgdGhlCiAgIC0tICBwb2ludGVyOyBmb3IgYW4gTGVhdmVf Tm90aWZ5X0V2ZW50IHRoaXMgaXMgc2V0IHRvIHRoZSB3aW5kb3cgb2NjdXBpZWQKICAgLS0gIGJ5 IHRoZSBwb2ludGVyIGluIGl0cyBsYXN0IHBvc2l0aW9uLgoKICAgZnVuY3Rpb24gR2V0X01vZGUg KEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19Dcm9zc2luZ19Nb2Rl OwogICAtLSAgUmV0dXJuIHRoZSBtb2RlIG9mIGFuIEV2ZW50LgogICAtLSAgU2V0IHRvIGluZGlj YXRlIHdoZXRoZXIgdGhlIGV2ZW50cyBhcmUgbm9ybWFsIGV2ZW50cywgcHNldWRvLW1vdGlvbgog ICAtLSAgZXZlbnRzIHdoZW4gYSBncmFiIGFjdGl2YXRlcyBvciBwc2V1ZG8tbW90aW9uIGV2ZW50 cyB3aGVuIGEgZ3JhYgogICAtLSAgZGVhdGl2YXRlcy4KCiAgIGZ1bmN0aW9uIEdldF9EZXRhaWwg KEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19Ob3RpZnlfVHlwZTsK ICAgLS0gIFNldCB0byBpbmRpY2F0ZSB0aGUgbm90aWZ5IGRldGFpbHMuCiAgIC0tICBNb3N0IGFw cGxpY2F0aW9ucyBjYW4gaWdub3JlIGV2ZW50cyB3aXRoIGEgTm90aWZ5IFZpcnR1YWwgb3IgYQog ICAtLSAgTm90aWZ5X05vbl9MaW5lYXJfVmlydHVhbCBkZXRhaWwuCgogICBmdW5jdGlvbiBHZXRf Rm9jdXMgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFNldCB0 byB0cnVlIGlmIHRoZSB3aW5kb3cgZm9yIHRoZSBldmVudCBpcyB0aGUgZm9jdXMgd2luZG93LgoK ICAgZnVuY3Rpb24gR2V0X1ByZXNzdXJlICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBH ZG91YmxlOwogICAtLSAgVGhpcyBpcyBzZXQgdG8gYSBjb25zdGFudCBpbiB0aGUgZ3RrKyBjb2Rl IGl0c2VsZiwgc28gaXQKICAgLS0gIGlzIG1vc3QgcHJvYmFibHkgdXNlbGVzcy4uLiBJdHMgdmFs dWUgaXMgMC41LgogICAtLSAgSXQgaXMgb25seSB1c2VkIHdpdGggc29tZSBzcGVjaWFsIGlucHV0 IGRldmljZXMsIGxpa2UgZHJhd2luZwogICAtLSAgdGFibGV0cywuLi4KCiAgIGZ1bmN0aW9uIEdl dF9YdGlsdCAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RvdWJsZTsKICAgLS0g IFRoaXMgaXMgc2V0IHRvIGEgY29uc3RhbnQgaW4gdGhlIGd0aysgY29kZSBpdHNlbGYsIHNvIGl0 CiAgIC0tICBpcyBtb3N0IHByb2JhYmx5IHVzZWxlc3MuLi4gSXRzIHZhbHVlIGlzIDAuMC4KICAg LS0gIEl0IGlzIG9ubHkgdXNlZCB3aXRoIHNvbWUgc3BlY2lhbCBpbnB1dCBkZXZpY2VzLCBsaWtl IGRyYXdpbmcKICAgLS0gIHRhYmxldHMsLi4uCgogICBmdW5jdGlvbiBHZXRfWXRpbHQgICAgIChF dmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdkb3VibGU7CiAgIC0tICBUaGlzIGlzIHNldCB0 byBhIGNvbnN0YW50IGluIHRoZSBndGsrIGNvZGUgaXRzZWxmLCBzbyBpdAogICAtLSAgaXMgbW9z dCBwcm9iYWJseSB1c2VsZXNzLi4uIEl0cyB2YWx1ZSBpcyAwLjAuCiAgIC0tICBJdCBpcyBvbmx5 IHVzZWQgd2l0aCBzb21lIHNwZWNpYWwgaW5wdXQgZGV2aWNlcywgbGlrZSBkcmF3aW5nCiAgIC0t ICB0YWJsZXRzLC4uLgoKICAgZnVuY3Rpb24gR2V0X1dpZHRoIChFdmVudCA6IGluIEdka19FdmVu dCkgcmV0dXJuIEdpbnQxNjsKICAgLS0gIEdldCB0aGUgd2lkdGggaW4gYSBjb25maWd1cmUgZXZl bnQuCgogICBmdW5jdGlvbiBHZXRfSGVpZ2h0IChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJu IEdpbnQxNjsKICAgLS0gIEdldCB0aGUgaGVpZ2h0IGluIGEgY29uZmlndXJlIGV2ZW50LgoKICAg ZnVuY3Rpb24gR2V0X1NvdXJjZQogICAgIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEdk ay5UeXBlcy5HZGtfSW5wdXRfU291cmNlOwogICAtLSAgU2V0IHRvIGEgY29uc3RhbnQgZm9yIG5v dyBpbiB0aGUgZ3RrKyBzb3VyY2UuLi4gUHJvYmFibHkgdXNlbGVzcy4KCiAgIGZ1bmN0aW9uIEdl dF9EZXZpY2VfSWQKICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMu R2RrX0RldmljZV9JZDsKICAgLS0gIFNldCB0byBhIGNvbnN0YW50IGZvciBub3cgaW4gdGhlIGd0 aysgc291cmNlLi4uIFByb2JhYmx5IHVzZWxlc3MuCiAgIC0tICBTaW5jZSBtdWx0aXBsZSBpbnB1 dCBkZXZpY2VzIGNhbiBiZSB1c2VkIGF0IHRoZSBzYW1lIHRpbWUsIGxpa2UgYSBtb3VzZQogICAt LSAgYW5kIGEgZ3JhcGhpYyB0YWJsZXQsIHRoaXMgaW5kaWNhdGVkIHdoaWNoIG9uZSBnZW5lcmF0 ZWQgdGhlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0X0FyZWEgKEV2ZW50IDogaW4gR2RrX0V2ZW50 KSByZXR1cm4gUmVjdGFuZ2xlLkdka19SZWN0YW5nbGU7CiAgIC0tICBUaGUgbWluaW1hbCBhcmVh IG9uIHdoaWNoIHRoZSBldmVudCBhcHBsaWVzLgogICAtLSAgRm9yIEV4cG9zZV9FdmVudHMsIHRo aXMgaXMgdGhlIG1pbmltYWwgYXJlYSB0byByZWRyYXcuCgogICBmdW5jdGlvbiBHZXRfQ291bnQg KEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2ludDsKICAgLS0gIE51bWJlciBvZiBFeHBv c2VfRXZlbnRzIHRoYXQgYXJlIHRvIGZvbGxvdyB0aGlzIG9uZS4KICAgLS0gIE1vc3QgYXBwbGlj YXRpb25zIGNhbiBpZ25vcmUgdGhlIGV2ZW50IGlmIENvdW50IGlzIG5vdCAwLCB3aGljaCBhbHNv CiAgIC0tICBhbGxvd3MgZm9yIG9wdGltaXphdGlvbnMuCgogICBmdW5jdGlvbiBHZXRfSW4gKEV2 ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRydWUgaWYgdGhlIHdp bmRvdyBoYXMgZ2FpbmVkIHRoZSBmb2N1cywgRmFsc2Ugb3RoZXJ3aXNlLgoKICAgZnVuY3Rpb24g R2V0X0lzX0hpbnQgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0g ID8/PwoKICAgZnVuY3Rpb24gR2V0X0tleV9WYWwgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1 cm4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgLS0gIENvZGUgb2YgdGhlIGtleSB0aGF0IHdh cyBwcmVzc2VkIChhbmQgdGhhdCBnZW5lcmF0ZWQgdGhlIGV2ZW50LgoKICAgZnVuY3Rpb24gR2V0 X1N0cmluZyAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gU3RyaW5nOwogICAtLSAgU3lt Ym9sIG9mIHRoZSBrZXkgdGhhdCB3YXMgcHJlc3NlZCwgYXMgYSBzdHJpbmcuCgogICBmdW5jdGlv biBHZXRfQXRvbSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0F0 b207CiAgIC0tICBJbmRpY2F0ZSB3aGljaCBwcm9wZXJ0eSBoYXMgY2hhbmdlZC4KICAgLS0gID8/ PyBBdG9tIHNob3VsZCBub3QgYmUgYSBHdWludAoKICAgZnVuY3Rpb24gR2V0X1Byb3BlcnR5X1N0 YXRlIChFdmVudCA6IGluIEdka19FdmVudCkgcmV0dXJuIEd1aW50OwogICAtLSAgPz8/IFRoZSBy ZXR1cm4gdHlwZSBzaG91bGQgYmUgY2hhbmdlZC4KCiAgIGZ1bmN0aW9uIEdldF9WaXNpYmlsaXR5 X1N0YXRlCiAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19W aXNpYmlsaXR5X1N0YXRlOwogICAtLSAgUmV0dXJuIHRoZSBuZXcgdmlzaWJpbGl0eSBzdGF0ZSBm b3IgdGhlIHdpbmRvdy4KCiAgIGZ1bmN0aW9uIEdldF9TZWxlY3Rpb24gKEV2ZW50IDogaW4gR2Rr X0V2ZW50KSByZXR1cm4gR2RrLlR5cGVzLkdka19BdG9tOwogICAtLSAgV2hhdCB3YXMgc2VsZWN0 ZWQgaW4gdGhlIHdpbmRvdy4uLgoKICAgZnVuY3Rpb24gR2V0X1RhcmdldCAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMuR2RrX0F0b207CiAgIC0tICA/Pz8KCiAgIGZ1bmN0 aW9uIEdldF9Qcm9wZXJ0eSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMu R2RrX0F0b207CiAgIC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9SZXF1ZXN0b3IgKEV2ZW50IDog aW4gR2RrX0V2ZW50KSByZXR1cm4gR3VpbnQzMjsKICAgLS0gID8/PwoKICAgZnVuY3Rpb24gR2V0 X01lc3NhZ2VfVHlwZSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQpIHJldHVybiBHZGsuVHlwZXMuR2Rr X0F0b207CiAgIC0tICA/Pz8KCiAgIGZ1bmN0aW9uIEdldF9EYXRhIChFdmVudCA6IGluIEdka19F dmVudCkgcmV0dXJuIEdka19FdmVudF9DbGllbnRfRGF0YTsKICAgLS0gID8/PwoKICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gTW9kaWZ5aW5nIHRoZSBmaWVs ZHMgb2YgYW4gZXZlbnQgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiAgIHByb2NlZHVyZSBTZXRfV2luZG93IChFdmVudCA6IGluIEdka19FdmVudDsgV2luIDog R2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFNldCB0aGUgV2luZG93IGZpZWxkIG9mIGFu IGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9YICAgICAgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBY IDogR2RvdWJsZSk7CiAgIC0tICBTZXQgdGhlIFggZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9j ZWR1cmUgU2V0X1kgICAgICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IFkgOiBHZG91YmxlKTsKICAg LS0gIFNldCB0aGUgWSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfWHJvb3Qg IChFdmVudCA6IGluIEdka19FdmVudDsgWHJvb3QgOiBHZG91YmxlKTsKICAgLS0gIFNldCB0aGUg WHJvb3QgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1lyb290ICAoRXZlbnQg OiBpbiBHZGtfRXZlbnQ7IFlyb290IDogR2RvdWJsZSk7CiAgIC0tICBTZXQgdGhlIFlyb290IGZp ZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9XaWR0aCAgKEV2ZW50IDogaW4gR2Rr X0V2ZW50OyBXaWR0aCA6IEdpbnQxNik7CiAgIC0tICBTZXQgdGhlIFdpZHRoIGZpZWxkIG9mIGFu IGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9IZWlnaHQgKEV2ZW50IDogaW4gR2RrX0V2ZW50OyBI ZWlnaHQgOiBHaW50MTYpOwogICAtLSAgU2V0IHRoZSBIZWlnaHQgZmllbGQgb2YgYW4gZXZlbnQu CgogICBwcm9jZWR1cmUgU2V0X0J1dHRvbiAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7IEJ1dHRvbiA6 IEd1aW50KTsKICAgLS0gIFNldCB0aGUgQnV0dG9uIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJv Y2VkdXJlIFNldF9UaW1lIChFdmVudCA6IGluIEdka19FdmVudDsgVGltZSA6IEd1aW50MzIpOwog ICAtLSAgU2V0IHRoZSB0aW1lIGZvciB0aGUgZXZlbnQuCiAgIC0tICBJZiBUaW1lIGlzIDAsIHRo ZW4gaXQgaXMgc2V0IHRvIHRoZSBjdXJyZW50IHRpbWUuCgogICBwcm9jZWR1cmUgU2V0X1N0YXRl ICAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSA6 IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CiAgIC0tICBTZXQgdGhlIFN0YXRlIGZp ZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9TdWJ3aW5kb3cgKEV2ZW50ICA6IGlu IEdka19FdmVudDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyA6IGluIEdkay5X aW5kb3cuR2RrX1dpbmRvdyk7CiAgIC0tICBTZXQgdGhlIFN1YndpbmRvdyBmaWVsZCBvZiBhbiBl dmVudC4KCiAgIHByb2NlZHVyZSBTZXRfTW9kZSAgIChFdmVudCA6IGluIEdka19FdmVudDsKICAg ICAgICAgICAgICAgICAgICAgICAgIE1vZGUgIDogaW4gR2RrLlR5cGVzLkdka19Dcm9zc2luZ19N b2RlKTsKICAgLS0gIFNldCB0aGUgTW9kZSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVy ZSBTZXRfRGV0YWlsIChFdmVudCAgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAg ICAgICBEZXRhaWwgOiBpbiBHZGsuVHlwZXMuR2RrX05vdGlmeV9UeXBlKTsKICAgLS0gIFNldCB0 aGUgRGV0YWlsIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9Gb2N1cyAoRXZl bnQgOiBpbiBHZGtfRXZlbnQ7IEhhc19Gb2N1cyA6IEJvb2xlYW4pOwogICAtLSAgU2V0IHRoZSBG b2N1cyBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfQXJlYSAgKEV2ZW50IDog aW4gR2RrX0V2ZW50OyBBcmVhIDogUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUpOwogICAtLSAgU2V0 IHRoZSBBcmVhIGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9JbiAgICAoRXZl bnQgOiBpbiBHZGtfRXZlbnQ7IEZvY3VzX0luIDogQm9vbGVhbik7CiAgIC0tICBTZXQgdGhlIElu IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9Jc19IaW50IChFdmVudCA6IGlu IEdka19FdmVudDsgSXNfSGludCA6IEJvb2xlYW4pOwogICAtLSAgU2V0IHRoZSBJc19IaW50IGZp ZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9LZXlfVmFsIChFdmVudCA6IGluIEdk a19FdmVudDsgS2V5IDogR2RrLlR5cGVzLkdka19LZXlfVHlwZSk7CiAgIC0tICBTZXQgdGhlIEtl eV9WYWwgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X0F0b20gKEV2ZW50IDog aW4gR2RrX0V2ZW50OyBBdG9tIDogR2RrLlR5cGVzLkdka19BdG9tKTsKICAgLS0gIFNldCB0aGUg QXRvbSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfUHJvcGVydHlfU3RhdGUg KEV2ZW50IDogaW4gR2RrX0V2ZW50OyBTdGF0ZSA6IEd1aW50KTsKICAgLS0gIFNldCB0aGUgUHJv cGVydHlfU3RhdGUgZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1Zpc2liaWxp dHlfU3RhdGUgKEV2ZW50IDogaW4gR2RrX0V2ZW50OwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN0YXRlIDogR2RrLlR5cGVzLkdka19WaXNpYmlsaXR5X1N0YXRlKTsKICAgLS0g IFNldCB0aGUgVmlzaWJpbGl0eV9TdGF0ZSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVy ZSBTZXRfU2VsZWN0aW9uIChFdmVudCA6IGluIEdka19FdmVudDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNlbGVjdGlvbiA6IEdkay5UeXBlcy5HZGtfQXRvbSk7CiAgIC0tICBTZXQgdGhl IFNlbGVjdGlvbiBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfVGFyZ2V0IChF dmVudCA6IGluIEdka19FdmVudDsgVGFyZ2V0IDogR2RrLlR5cGVzLkdka19BdG9tKTsKICAgLS0g IFNldCB0aGUgVGFyZ2V0IGZpZWxkIG9mIGFuIGV2ZW50LgoKICAgcHJvY2VkdXJlIFNldF9Qcm9w ZXJ0eSAoRXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy b3BlcnR5IDogR2RrLlR5cGVzLkdka19BdG9tKTsKICAgLS0gIFNldCB0aGUgUHJvcGVydHkgZmll bGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X1JlcXVlc3RvciAoRXZlbnQgOiBpbiBH ZGtfRXZlbnQ7IFJlcXVlc3RvciA6IEd1aW50MzIpOwogICAtLSAgU2V0IHRoZSBSZXF1ZXN0b3Ig ZmllbGQgb2YgYW4gZXZlbnQuCgogICBwcm9jZWR1cmUgU2V0X01lc3NhZ2VfVHlwZSAoRXZlbnQg OiBpbiBHZGtfRXZlbnQ7IFR5cCA6IEdkay5UeXBlcy5HZGtfQXRvbSk7CiAgIC0tICBTZXQgdGhl IE1lc3NhZ2VfVHlwZSBmaWVsZCBvZiBhbiBldmVudC4KCiAgIHByb2NlZHVyZSBTZXRfU3RyaW5n IChFdmVudCA6IGluIEdka19FdmVudDsgU3RyIDogU3RyaW5nKTsKICAgLS0gIFNldCB0aGUgc3Ry aW5nIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgIC0tIEdlbmVyYWwgZnVuY3Rpb25zIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgog ICBwcm9jZWR1cmUgRGVlcF9Db3B5IChGcm9tIDogR2RrX0V2ZW50OyBUbyA6IG91dCBHZGtfRXZl bnQpOwogICAtLSAgRGVlcCBjb3B5IGZvciBhbiBldmVudC4gVGhlIEMgc3RydWN0dXJlIGlzIGl0 c2VsZiBkdXBsaWNhdGVkLgogICAtLSAgWW91IG5lZWQgdG8gZGVhbGxvY2F0ZWQgaXQgeW91cnNl bGYgd2l0aCBhIGNhbGwgdG8gRnJlZSBiZWxvdy4KCiAgIHByb2NlZHVyZSBHZXRfR3JhcGhpY3Nf RXhwb3NlCiAgICAgKEV2ZW50ICA6IG91dCBHZGtfRXZlbnRfRXhwb3NlOwogICAgICBXaW5kb3cg OiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAgV2FpdHMgZm9yIGEgR3JhcGhpY3NF eHBvc2Ugb3IgTm9FeHBvc2UgZXZlbnQKICAgLS0gIElmIGl0IGdldHMgYSBHcmFwaGljc0V4cG9z ZSBldmVudCwgaXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQsCiAgIC0tICBvdGhlcndpc2UgaXQg cmV0dXJucyBhbiBldmVudCBmb3Igd2hpY2ggSXNfQ3JlYXRlZCBpcyBGYWxzZS4KICAgLS0KICAg LS0gIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gaW1wbGVtZW50IHNjcm9sbGluZzogeW91 IG11c3QgY2FsbAogICAtLSAgR2RrLkdDLlNldF9FeHBvc3VyZXMgd2l0aCBUcnVlIG9uIHRoZSBH QyB5b3UgYXJlIHVzaW5nIGZvciB0aGUKICAgLS0gIGRyYXdpbmcsIHNvIHRoYXQgYSBldmVudHMg YXJlIGdlbmVyYXRlZCBmb3Igb2JzY3VyZWQgYXJlYXMgYW5kIGV2ZXJ5CiAgIC0tICB0aW1lIGEg bmV3IHBhcnQgb2YgdGhlIHdpZGdldCBpcyBkcmF3bi4gSG93ZXZlciwgdGhlcmUgaXMgYSByYWNl CiAgIC0tICBjb25kaXRpb24gaWYgbXVsdGlwbGUgc2Nyb2xscyBoYXBwZW4gYmVmb3JlIHlvdSBo YXZlIGZpbmlzaGVkCiAgIC0tICBwcm9jZXNzaW5nIHRoZSBmaXJzdCBvbmUuIEEgd29ya2Fyb3Vu ZCBpcyB0byBjYWxsIEdldF9HcmFwaGljc19FeHBvc2UKICAgLS0gIGFmdGVyIGV2ZXJ5IHNjcm9s bCB1bnRpbCBpdCByZXR1cm5zIGEgbnVsbCBldmVudC4KCiAgIGZ1bmN0aW9uIEV2ZW50c19QZW5k aW5nIHJldHVybiBCb29sZWFuOwogICAtLSAgSXMgdGhlcmUgYW55IGV2ZW50IHBlbmRpbmcgb24g dGhlIHF1ZXVlID8KCiAgIHByb2NlZHVyZSBHZXQgKEV2ZW50IDogb3V0IEdka19FdmVudCk7CiAg IC0tICBHZXQgdGhlIG5leHQgZXZlbnQgb24gdGhlIHF1ZXVlLgoKICAgcHJvY2VkdXJlIFBlZWsg KEV2ZW50IDogb3V0IEdka19FdmVudCk7CiAgIC0tICBMb29rIGF0IHRoZSBuZXh0IGV2ZW50IG9u IHRoZSBxdWV1ZSwgYnV0IGxlYXZlIGlmIHRoZXJlLgoKICAgcHJvY2VkdXJlIFB1dCAoRXZlbnQg OiBpbiBHZGtfRXZlbnQpOwogICAtLSAgQWRkIGFuIGV2ZW50IG9uIHRoZSBxdWV1ZSAtIEJldHRl ciB0byB1c2UgR3RrLlNpZ25hbC5FbWl0X0J5X05hbWUKCiAgIHByb2NlZHVyZSBTZXRfU2hvd19F dmVudHMgKFNob3dfRXZlbnRzIDogaW4gQm9vbGVhbiA6PSBUcnVlKTsKICAgLS0gIEZvciBkZWJ1 ZyBwdXJwb3NlcywgeW91IGNhbiBjaG9vc2Ugd2hldGhlciB5b3Ugd2FudCB0byBzZWUgdGhlIGV2 ZW50cwogICAtLSAgR3RrQWRhIHJlY2VpdmVzLgoKICAgZnVuY3Rpb24gR2V0X1Nob3dfRXZlbnRz IHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlIG9mIFNob3df RXZlbnRzLgoKICAgcHJvY2VkdXJlIFNlbmRfQ2xpZW50X01lc3NhZ2VfVG9fQWxsIChFdmVudCA6 IGluIEdka19FdmVudCk7CiAgIC0tICBMb3cgbGV2ZWwgcm91dGluZSB0byBzZW5kIGFuIEV2ZW50 IHRvIGV2ZXJ5IHdpbmRvdy4KCiAgIGZ1bmN0aW9uIFNlbmRfQ2xpZW50X01lc3NhZ2UKICAgICAo RXZlbnQgOiBpbiBHZGtfRXZlbnQ7CiAgICAgIFhpZCAgIDogaW4gR3VpbnQzMikgcmV0dXJuIEJv b2xlYW47CiAgIC0tICBMb3cgbGV2ZWwgcm91dGluZSB0byBzZW5kIGFuIEV2ZW50IHRvIGEgc3Bl Y2lmaWVkIFggd2luZG93LgoKICAgcHJvY2VkdXJlIEFsbG9jYXRlCiAgICAgKEV2ZW50ICAgICAg OiBvdXQgR2RrX0V2ZW50OwogICAgICBFdmVudF9UeXBlIDogaW4gVHlwZXMuR2RrX0V2ZW50X1R5 cGU7CiAgICAgIFdpbmRvdyAgICAgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3cpOwogICAtLSAg Q3JlYXRlIGFuIGV2ZW50LCB3aG9zZSBmaWVsZHMgYXJlIHVuaW5pdGlhbGl6ZWQuCiAgIC0tICBZ b3UgbmVlZCB0byB1c2UgdGhlIGZ1bmN0aW9uIFNldF8qIGFib3ZlIHRvIG1vZGlmeSB0aGVtLCBi ZWZvcmUgeW91IGNhbgogICAtLSAgc2VuZCB0aGUgZXZlbnQgd2l0aCBFbWl0X0J5X05hbWUuCiAg IC0tICAhIU5vdGUhITogVGhlIGV2ZW50IGhhcyB0byBiZSBmcmVlZCBpZiB5b3UgaGF2ZSBjYWxs ZWQgdGhpcyBmdW5jdGlvbi4KICAgLS0gIFVzZSB0aGUgZnVuY3Rpb24gRnJlZS4KCiAgIHByb2Nl ZHVyZSBGcmVlIChFdmVudCA6IGluIG91dCBHZGtfRXZlbnQpOwogICAtLSAgRnJlZSB0aGUgbWVt b3J5IChhbmQgQyBzdHJ1Y3R1cmUpIGFzc29jaWF0ZWQgd2l0aCBhbiBldmVudC4KICAgLS0gIFlv dSBuZWVkIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbmx5IGlmIHRoZSBldmVudCB3YXMgY3JlYXRl ZCB0aHJvdWdoCiAgIC0tICBBbGxvY2F0ZSwgbm90IGlmIGl0IHdhcyBjcmVhdGVkIGJ5IEd0a0Fk YSBpdHNlbGYgKG9yIHlvdSB3b3VsZCBnZXQKICAgLS0gIGEgc2VnbWVudGF0aW9uIGZhdWx0KS4K CiAgIHR5cGUgRXZlbnRfSGFuZGxlcl9GdW5jIGlzIGFjY2VzcyBwcm9jZWR1cmUKICAgICAoRXZl bnQgOiBTeXN0ZW0uQWRkcmVzczsgRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgLS0gIEZ1bmN0 aW9uIHRoYXQgY2FuIGJlIHVzZWQgYXMgYSBuZXcgZXZlbnQgaGFuZGxlci4KICAgLS0gIFVzZSBG cm9tX0FkZHJlc3MgYmVsb3cgdG8gY29udmVydCB0byBhIHJlYWwgZXZlbnQgdHlwZS4KICAgLS0g IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGRpc3BhdGNoIGFsbCB0aGUgZXZlbnRzIHByb3Blcmx5LCBz aW5jZSBpdCByZXBsYWNlcwogICAtLSAgY29tcGxldGx5IHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRs ZXIuIEhvd2V2ZXIsIGl0IGNhbiBjYWxsCiAgIC0tICBHdGsuTWFpbi5Eb19FdmVudCB0byB0YWtl IGNhcmUgb2YgdGhlIGV2ZW50cyBpdCBkb2VzIG5vdCBrbm93IGhvdyB0bwogICAtLSAgaGFuZGxl LgoKICAgcHJvY2VkdXJlIEV2ZW50X0hhbmRsZXJfU2V0CiAgICAgKEZ1bmMgOiBFdmVudF9IYW5k bGVyX0Z1bmM7IERhdGEgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgIC0tICBTZXQgdXAgYSBuZXcgZXZl bnQgaGFuZGxlci4KICAgLS0gIFRoaXMgaGFuZGxlciByZXBsYWNlcyB0aGUgZGVmYXVsdCBHdGtB ZGEgZXZlbnQgaGFuZGxlciwgYW5kIHRodXMgc2hvdWxkCiAgIC0tICBtYWtlIHN1cmUgdGhhdCBh bGwgZXZlbnRzIGFyZSBjb3JyZWN0bHkgaGFuZGxlZC4KICAgLS0KICAgLS0gIE5vdGUgdGhhdCBt YW5hZ2luZyB0aGUgbWVtb3J5IGZvciBEYXRhIGlzIHlvdXIgcmVzcG9uc2FiaWxpdHksIGFuZAog ICAtLSAgRGF0YSBpcyBwYXNzZWQgYXMgaXMgdG8gRnVuYy4KCiAgIGZ1bmN0aW9uIEZyb21fQWRk cmVzcyAoQyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2RrX0V2ZW50OwogICAtLSAgQ29udmVy dCBhIEMgaGFuZGxlciB0byB0aGUgbWF0Y2hpbmcgRXZlbnQgc3RydWN0dXJlLgoKICAgZnVuY3Rp b24gVG9fQWRkcmVzcyAoQyA6IEdka19FdmVudCkgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAt LSAgQ29udmVydCBhbiBldmVudCB0byB0aGUgdW5kZXJseWluZyBDIGhhbmRsZXIuCgogICBmdW5j dGlvbiBJc19DcmVhdGVkIChFIDogR2RrX0V2ZW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFJl dHVybiBUcnVlIGlmIHRoZSB1bmRlcmx5aW5nIEMgZXZlbnQgaGFzIGJlZW4gY3JlYXRlZC4KCiAg IC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gRGVzaWduIGlzc3VlcyAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tICBTZWUgZ2RrLWV2ZW50LmFkYiBmb3Igc29tZSBvZiB0aGUgZGVzaWdu IGlzc3VlcyBiZWhpbmcgdGhhdCBwYWNrYWdlLgoKcHJpdmF0ZQogICBwcmFnbWEgSW1wb3J0IChD LCBHZXRfRXZlbnRfVHlwZSwgImFkYV9nZGtfZXZlbnRfZ2V0X3R5cGUiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgR2V0X1dpbmRvdywgImFkYV9nZGtfZXZlbnRfZ2V0X3dpbmRvdyIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBHZXRfVGltZSwgImdka19ldmVudF9nZXRfdGltZSIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBQdXQsICJnZGtfZXZlbnRfcHV0Iik7CiAgIHByYWdtYSBJbXBvcnQKICAgICAo QywgU2VuZF9DbGllbnRfTWVzc2FnZV9Ub19BbGwsICJnZGtfZXZlbnRfc2VuZF9jbGllbnRtZXNz YWdlX3RvYWxsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9XaW5kb3csICJhZGFfZ2RrX2V2 ZW50X3NldF93aW5kb3ciKTsKCmVuZCBHZGsuRXZlbnQ7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAg ICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChD KSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBC cmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0t IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0t Ci0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAg IC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRp YXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0 IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMg IHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4 ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Uu IFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90 aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292 ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgot LSAgPGRlc2NyaXB0aW9uPgotLSAgVGhpcyBpcyB0aGUgYmFzZSBwYWNrYWdlIGZvciBoYW5kbGlu ZyBmb250cy4KLS0gIEd0a0FkYSBrbm93cyBhYm91dCBiaXRtYXAgYW5kIHZlY3RvcmlhbCBmb250 cywgYW5kIGNhbiBkcmF3IGJvdGguCi0tICBUaGUgbGlzdCBvZiBmb250cyBhdmFpbGFibGUgdG8g eW91IGRlcGVuZHMgb24gd2hhdCBpcyBpbnN0YWxsZWQgb24KLS0gIHlvdXIgc3lzdGVtLgotLQot LSAgVGhlIG5hbWUgb2YgdGhlIGZvbnQgaXMgaW5kaWNhdGVkIGluIHRoZSBzdGFuZGFyZCBYMTEg ZmFzaGlvbiwgbmFtZWx5OgotLSAgKGV4YW1wbGUgZXh0cmFjdGVkIGZyb20gdGhlIFhsaWIgbWFu dWFsKToKLS0KLS0gIC1hZG9iZS1jb3VyaWVyLWJvbGQtby1ub3JtYWwtLTEwLTEwMC03NS03NS1t LTYwLWlzbzg4NTktMQotLSAgd2hlcmU6Ci0tICAgIC0gYWRvYmUgICAgIDogZm91bmRyeQotLSAg ICAtIGNvdXJpZXIgICA6IGZvbnQgZmFtaWx5Ci0tICAgIC0gYm9sZCAgICAgIDogd2VpZ2h0IChl LmcuIGJvbGQsIG1lZGl1bSkKLS0gICAgLSBvICAgICAgICAgOiBzbGFudCAoZS5nLiByb21hbiwg aXRhbGljLCBvYmxpcXVlKQotLSAgICAtIG5vcm1hbCAgICA6IHNldCB3aWR0aCAoZS5nLiBub3Jt YWwsIGNvbmRlbnNlZCwgbmFycm93LCBkb3VibGUpCi0tICAgIC0gMTAgICAgICAgIDogcGl4ZWxz Ci0tICAgIC0gMTAwICAgICAgIDogcG9pbnRzIChpbiB0ZW50aHMgb2YgYSBwb2ludCkKLS0gICAg LSA3NSAgICAgICAgOiBob3Jpem9udGFsIHJlc29sdXRpb24gaW4gZHBpCi0tICAgIC0gNzUgICAg ICAgIDogdmVydGljYWwgcmVzb2x1dGlvbiBpbiBkcGkKLS0gICAgLSBtICAgICAgICAgOiBzcGFj aW5nIChlLmcuIG1vbm9zcGFjZSBvciBwcm9wb3J0aW9uYWwpCi0tICAgIC0gNjAgICAgICAgIDog YXZlcmFnZSB3aWR0aCAoaW4gdGVudGhzIG9mIGEgcGl4ZWwpCi0tICAgIC0gaXNvODg1OS0xIDog Y2hhcmFjdGVyIHNldAotLQotLSAgQW55IG9mIHRoZSBmaWVsZHMgY2FuIGhhdmUgYSAnKicgaW5z dGVhZCwgc28gdGhhdCB0aGUgc3lzdGVtIHdpbGwKLS0gIGF1dG9tYXRpY2FsbHkgZmluZCBhIGZv bnQgdGhhdCBtYXRjaGVzIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcsIGFuZCB3b24ndAotLSAgY2Fy ZSBhYm91dCB0aGF0IHNwZWNpZmljIGZpZWxkLgotLQotLSAgQnV0IHRoZSBlYXNpZXN0IHdheSB0 byBzZWxlY3QgYSBmb250IGlzIGJ5IHVzaW5nIHNvbWUgZXh0ZXJuYWwgcHJvZ3JhbXMsCi0tICBm b3IgaW5zdGFuY2UgeGZvbnRzZWwsIHhsc2ZvbnQsIGdmb250c2VsLCBvciBldmVuIHRoZSBmb250 IHNlbGVjdGlvbgotLSAgZGlhbG9nIGV4YW1wbGUgaW4gdGhlIHRlc3RndGsvIGRpcmVjdG9yeSBv ZiB0aGUgR3RrQWRhIGRpc3RyaWJ1dGlvbi4KLS0KLS0gIEBweHJlZntQYWNrYWdlX0d0ay5FeHRy YS5Qc0ZvbnR9IGZvciBhIHBhY2thZ2UgdGhhdCBwcm9jZXNzZXMgcG9zdHNjcmlwdAotLSAgZm9u dHMsIHdpdGggdGhlaXIgbW9yZSB1c3VhbCBuYW1lcywgYW5kIGNhbiBlYXNpbHkgY29udmVydCB0 aGVtIHRvIHN0YW5kYXJkCi0tICBHZGtfRm9udCBzdHJ1Y3R1cmVzLgotLQotLSAgU29tZSBvZiB0 aGUgZnVuY3Rpb25zIGJlbG93IHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIHdpZGUtY2hhcmFjdGVy IHN0cmluZ3MuCi0tICBUaGlzIGlzIG5lZWRlZCBmb3IgbGFuZ3VhZ2VzIHdpdGggbW9yZSB0aGFu IDI1NiBjaGFyYWN0ZXJzLgotLQotLSAgV2lkZSBjaGFyYWN0ZXIgdmFsdWVzIGJldHdlZW4gMCBh bmQgMTI3IGFyZSBhbHdheXMgaWRlbnRpY2FsIGluIG1lYW5pbmcgdG8KLS0gIHRoZSBBU0NJSSBj aGFyYWN0ZXIgY29kZXMuCi0tICBBbiBhbHRlcm5hdGl2ZSB0byB3aWRlIGNoYXJhY3RlcnMgaXMg bXVsdGktYnl0ZSBjaGFyYWN0ZXJzLCB3aGljaCBleHRlbmQKLS0gIG5vcm1hbCBjaGFyIHN0cmlu Z3MgdG8gY29wZSB3aXRoIGxhcmdlciBjaGFyYWN0ZXIgc2V0cy4gQXMgdGhlIG5hbWUKLS0gIHN1 Z2dlc3RzLCBtdWx0aS1ieXRlIGNoYXJhY3RlcnMgdXNlIGEgZGlmZmVyZW50IG51bWJlciBvZiBi eXRlcyB0byBzdG9yZQotLSAgZGlmZmVyZW50IGNoYXJhY3RlciBjb2Rlcy4gRm9yIGV4YW1wbGUg Y29kZXMgMC0xMjcgKGkuZS4gdGhlIEFTQ0lJIGNvZGVzKQotLSAgb2Z0ZW4gdXNlIGp1c3Qgb25l IGJ5dGUgb2YgbWVtb3J5LCB3aGlsZSBvdGhlciBjb2RlcyBtYXkgdXNlIDIsIDMgb3IgZXZlbgot LSAgNCBieXRlcy4gTXVsdGktYnl0ZSBjaGFyYWN0ZXJzIGhhdmUgdGhlIGFkdmFudGFnZSB0aGF0 IHRoZXkgY2FuIG9mdGVuIGJlCi0tICB1c2VkIGluIGFuIGFwcGxpY2F0aW9uIHdpdGggbGl0dGxl IGNoYW5nZSwgc2luY2Ugc3RyaW5ncyBhcmUgc3RpbGwKLS0gIHJlcHJlc2VudGVkIGFzIGFycmF5 cyBvZiBjaGFyIHZhbHVlcy4gSG93ZXZlciBtdWx0aS1ieXRlIHN0cmluZ3MgYXJlIG11Y2gKLS0g IGVhc2llciB0byBtYW5pcHVsYXRlIHNpbmNlIHRoZSBjaGFyYWN0ZXIgYXJlIGFsbCBvZiB0aGUg c2FtZSBzaXplLgotLQotLSAgT24gVW5peCBzeXN0ZW1zLCB0aGUgZXh0ZXJuYWwgdXRpbGl0eSAn eGZkJyBjYW4gYmUgdXNlZCB0byBkaXNwbGF5IGFsbAotLSAgdGhlIGNoYXJhY3RlcnMgaW4gYSBm b250LgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3ZlcnNpb24+MS4yLjc8L2NfdmVyc2lv bj4KLS0gIDxzY3JlZW5zaG90PmZvbnQ8L3NjcmVlbnNob3Q+Cgp3aXRoIEdsaWI7IHVzZSBHbGli Owp3aXRoIEdkay5UeXBlczsKCnBhY2thZ2UgR2RrLkZvbnQgaXMKCiAgIHR5cGUgR2RrX0ZvbnQg aXMgbmV3IEdkay5DX1Byb3h5OwogICAtLSAgQSBmb250IHVzZWQgdG8gZHJhdyB0ZXh0LgogICAt LSAgVGhpcyBjYW4gcmVwcmVzZW50IGEgYml0bWFwIGZvbnQsIGEgc2NhbGFibGUgKHZlY3Rvcmlh bCkgZm9udCwgb3IKICAgLS0gIGEgZm9udHNldC4gQSBmb250c2V0IGlzIGEgbGlzdCBvZiBjb21t YS1zZXBhcmF0ZWQgZm9udHMsIHRoYXQgcGVybWl0cwogICAtLSAgR3RrQWRhIHRvIG9idGFpbiB0 aGUgZm9udHMgbmVlZGVkIGZvciBhIHZhcmlldHkgb2YgbG9jYWxlcyBmcm9tIGEKICAgLS0gIHNp bmdsZSBsb2NhbGUtaW5kZXBlbmRlbnQgYmFzZSBmb250IG5hbWUuIFRoZSBzaW5nbGUgYmFzZSBm b250IG5hbWUKICAgLS0gIHNob3VsZCBuYW1lIGEgZmFtaWx5IG9mIGZvbnRzIHdob3NlIG1lbWJl cnMgYXJlIGVuY29kZWQgaW4gdGhlIHZhcmlvdXMKICAgLS0gIGNoYXJzZXRzIG5lZWRlZCBieSB0 aGUgbG9jYWxlcyBvZiBpbnRlcmVzdC4KICAgLS0gIFRoZSBhbGdvcml0aG0gdXNlZCB0byBzZWxl Y3QgdGhlIGZvbnQgaXMgZGVzY3JpYmVkIGluIHRoZSBtYW51YWwgcGFnZQogICAtLSAgZm9yIFhD cmVhdGVGb250U2V0KDNYKS4KCiAgIE51bGxfRm9udCA6IGNvbnN0YW50IEdka19Gb250OwoKICAg cHJvY2VkdXJlIExvYWQgKEZvbnQgICAgICA6ICAgIG91dCBHZGtfRm9udDsKICAgICAgICAgICAg ICAgICAgIEZvbnRfTmFtZSA6IGluICAgICBTdHJpbmcpOwogICAtLSAgTG9hZCBhIG5ldyBmb250 LCBnaXZlbiBpdHMgbmFtZS4KICAgLS0gIFRoaXMgaXMgdGhlIGZpcnN0IHN0ZXAgYmVmb3JlIHVz aW5nIGEgZm9udC4KICAgLS0gIFRoZSBmb250IGlzIGZpcnN0IGxvb2tlZCB1cCBpbiB0aGUgY2Fj aGUsIGFuZCBpZiBpdCB3YXMgYWxyZWFkeQogICAtLSAgbG9hZGVkLCBpdCBpcyBub3QgcmVsb2Fk ZWQgYWdhaW4uIFRodXMsIGl0IGRvZXMgbm90IGhhcm0gdG8gY2FsbAogICAtLSAgdGhpcyBmdW5j dGlvbiBtdWx0aXBsZSB0aW1lcyB3aXRoIHRoZSBzYW1lIEZvbnRfTmFtZS4KICAgLS0gIE51bGxf Rm9udCBpcyByZXR1cm5lZCBpZiB0aGUgZm9udCBjb3VsZCBub3QgYmUgbG9hZGVkLgoKICAgcHJv Y2VkdXJlIEZvbnRzZXRfTG9hZCAoRm9udCAgICAgICAgIDogICBvdXQgR2RrX0ZvbnQ7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIEZvbnRzZXRfTmFtZSA6IGluICAgIFN0cmluZyk7CiAgIC0t ICBMb2FkIGEgbmV3IGZvbnQgc2V0LgogICAtLSAgRm9udHNldF9OYW1lIGlzIGEgY29tbWEtc2Vw YXJhdGVkIGxpc3Qgb2YgZm9udHMgdGhhdCB3aWxsIGJlIGxvYWRlZAogICAtLSAgYXMgcGFydCBv ZiB0aGUgZm9udHNldC4KCiAgIHByb2NlZHVyZSBSZWYgKEZvbnQgOiBpbiBHZGtfRm9udCk7CiAg IC0tICBJbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGZvciB0aGUgZm9udC4KICAgLS0g IFlvdSBzaG91bGQgbm90IG1ha2UgYW55IGFzc3VtcHRpb24gb2YgdGhlIGluaXRpYWwgdmFsdWUg b2YgdGhlIGZvbnRzCiAgIC0tICByZXR1cm5lZCBieSBMb2FkIG9yIEZvbnRzZXRfTG9hZCwgc2lu Y2UgdGhlc2UgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGEKICAgLS0gIGNhY2hlLgoKICAgcHJvY2Vk dXJlIFVucmVmIChGb250IDogaW4gR2RrX0ZvbnQpOwogICAtLSAgRGVjcmVtZW50IHRoZSByZWZl cmVuY2UgY291bnRlciBmb3IgdGhlIGZvbnQuCiAgIC0tICBXaGVuIHRoaXMgY291bnRlciByZWFj aGVzIDAsIHRoZSBmb250IGlzIGRlbGV0ZWQgZnJvbSBtZW1vcnkuCgogICBmdW5jdGlvbiBJZCAo Rm9udCA6IGluIEdka19Gb250KSByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgWCBmb250 IGlkIGZvciB0aGUgZm9udC4KICAgLS0gIFRoaXMgSWQgd2lsbCBvbmx5IGJlIG5lZWRlZCBpZiB5 b3Ugd2FudCB0byBjYWxsIGRpcmVjdGx5IFgxMSBmdW5jdGlvbnMsCiAgIC0tICB5b3Ugd29uJ3Qg bmVlZCBpdCB3aXRoIEd0a0FkYS4KCiAgIGZ1bmN0aW9uIEVxdWFsIChGb250YSwgRm9udGIgOiBp biBHZGtfRm9udCkgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBDb21wYXJlIHR3byBmb250cyBvciB0 d28gZm9udHNldHMgZm9yIGVxdWFsaXR5LgogICAtLSAgVHdvIGZvbnRzIGFyZSBlcXVhbCBpZiB0 aGV5IGhhdmUgdGhlIHNhbWUgZm9udCBJZC4KICAgLS0gIFR3byBmb250c2V0cyBhcmUgZXF1YWwg aWYgdGhlIG5hbWUgZ2l2ZW4gdG8gRm9udHNldF9Mb2FkIHdhcyB0aGUgc2FtZS4KCiAgIGZ1bmN0 aW9uIEdldF9Bc2NlbnQgKEZvbnQgOiBpbiBHZGtfRm9udCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBS ZXR1cm4gdGhlIG1heGltYWwgYXNjZW50IGZvciB0aGUgZm9udC4KICAgLS0gIFRoaXMgaXMgdGhl IGxvZ2ljYWwgZXh0ZW50IGFib3ZlIHRoZSBiYXNlbGluZSBmb3Igc3BhY2luZyBiZXR3ZWVuIHR3 bwogICAtLSAgbGluZXMuCgogICBmdW5jdGlvbiBHZXRfRGVzY2VudCAoRm9udCA6IGluIEdka19G b250KSByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgbWF4aW1hbCBkZXNjZW50IGZvciB0 aGUgZm9udC4KICAgLS0gIFRoaXMgaXMgdGhlIGxvZ2ljYWwgZXh0ZW50IGJlbG93IHRoZSBiYXNl bGluZSBmb3Igc3BhY2luZyBiZXR3ZWVuIHR3bwogICAtLSAgbGluZXMuCgogICBmdW5jdGlvbiBT dHJpbmdfV2lkdGggKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAg ICBTdHIgIDogaW4gU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7 CiAgIC0tICBSZXR1cm4gdGhlIHdpZHRoIGluIHBpeGVscyB0aGF0IFN0ciB3aWxsIG9jY3VweSBp ZiBkcmF3biB3aXRoIEZvbnQuCiAgIC0tICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgdGhlIGRpc3Rh bmNlIGJldHdlZW4gdGhlIG9yaWdpbiBvZiB0aGUgdGV4dCBhbmQKICAgLS0gIHRoZSBwb3NpdGlv biBhdCB3aGljaCB0aGUgbmV4dCBzdHJpbmcgc2hvdWxkIGJlIGRyYXduLgoKICAgZnVuY3Rpb24g VGV4dF9XaWR0aCAoRm9udCA6IGluIEdka19Gb250OwogICAgICAgICAgICAgICAgICAgICAgICBU ZXh0IDogaW4gU3RyaW5nKQogICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAt LSAgVGhpcyBpcyB0aGUgc2FtZSBmdW5jdGlvbiBhcyBTdHJpbmdfV2lkdGguCiAgIC0tICBJbiBD LCB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIG1lYXN1cmUgb25seSB0aGUgd2lkdGggb2Yg YSBwYXJ0CiAgIC0tICBvZiB0aGUgc3RyaW5nLCBidXQgeW91IGNhbiBzaW1wbHkgcGFzcyBpdCBh IHN1YnN0cmluZyBpbiBBZGEuCgogICBmdW5jdGlvbiBUZXh0X1dpZHRoIChGb250IDogaW4gR2Rr X0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgOiBpbiBHZGsuVHlwZXMuR2RrX1dT dHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4g dGhlIHdpZHRoIGluIHBpeGVscyB0aGF0IFRleHQgd2lsbCBvY2N1cHkgb24gdGhlIHNjcmVlbi4K ICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgd2l0aCBzdHJpbmdzIHRoYXQgY29u dGFpbiBVbmljb2RlCiAgIC0tICBjaGFyYWN0ZXJzCgogICBmdW5jdGlvbiBDaGFyX1dpZHRoIChG b250IDogaW4gR2RrX0ZvbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIENoYXIgOiBpbiBDaGFy YWN0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4g dGhlIHdpZHRoIGluIHBpeGVscyBvY2N1cGllZCBieSBhIHNpbmdsZSBjaGFyYWN0ZXIgb24gdGhl IHNjcmVlbi4KICAgLS0gIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyB0aGUgZGlzdGFuY2UgYmV0d2Vl biBDaGFyJ3Mgb3JpZ2luIG9uIHRoZSBzY3JlZW4KICAgLS0gIGFuZCB0aGUgb3JpZ2luIG9mIHRo ZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgoKICAgZnVuY3Rpb24gQ2hhcl9XaWR0aCAo Rm9udCA6IGluIEdka19Gb250OwogICAgICAgICAgICAgICAgICAgICAgICBDaGFyIDogaW4gR2Rr LlR5cGVzLkdka19XQ2hhcikKICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAg LS0gIFJldHVybiB0aGUgd2lkdGggaW4gcGl4ZWxzIG9jY3VwaWVkIGJ5IGEgc2luZ2xlIHdpZGUt Y2hhcmFjdGVyLgoKICAgZnVuY3Rpb24gU3RyaW5nX01lYXN1cmUgKEZvbnQgOiBpbiBHZGtfRm9u dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciAgOiBpbiBTdHJpbmcpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgRGV0ZXJtaW5lIHRoZSBkaXN0 YW5jZSBmcm9tIHRoZSBvcmlnaW4gdG8gdGhlIHJpZ2h0bW9zdCBwb3J0aW9uIG9mIFN0ci4KICAg LS0gIFRoaXMgaXMgbm90IHRoZSBjb3JyZWN0IHZhbHVlIGZvciBkZXRlcm1pbmluZyB0aGUgb3Jp Z2luIG9mIHRoZSBuZXh0CiAgIC0tICBwb3J0aW9uIHdoZW4gZHJhd2luZyB0ZXh0IGluIG11bHRp cGxlIHBpZWNlcy4KICAgLS0gIFNlZSBTdHJpbmdfV2lkdGggaW5zdGVhZC4KCiAgIGZ1bmN0aW9u IFRleHRfTWVhc3VyZSAoRm9udCA6IGluIEdka19Gb250OwogICAgICAgICAgICAgICAgICAgICAg ICAgIFRleHQgOiBpbiBTdHJpbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2lu dDsKICAgLS0gIFNhbWUgZnVuY3Rpb24gYSBTdHJpbmdfTWVhc3VyZS4KICAgLS0gIEluIEMsIHRo aXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWVhc3VyZSBvbmx5IHRoZSB3aWR0aCBvZiBhIHBh cnQgb2YKICAgLS0gIHRoZSBzdHJpbmcsIGJ1dCB5b3UgY2FuIHNpbXBseSBwYXNzIGl0IGEgc3Vi c3RyaW5nIGluIEFkYS4KICAgLS0gIFRoaXMgaXMgYWxzbyBjYWxsZWQgdGhlIHJpZ2h0IGJlYXJp bmcgb2YgdGhlIHN0cmluZy4KCiAgIGZ1bmN0aW9uIENoYXJfTWVhc3VyZSAoRm9udCA6IGluIEdk a19Gb250OwogICAgICAgICAgICAgICAgICAgICAgICAgIENoYXIgOiBpbiBDaGFyYWN0ZXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgd2lk dGggaW4gcGl4ZWxzIG9mIENoYXIuCiAgIC0tICBBcyBvcHBvc2VkIHRvIENoYXJfV2lkdGgsIHRo ZSB2YWx1ZSByZXR1cm5lZCBpcyBub3QgdGhlIGRpc3RhbmNlIGF0CiAgIC0tICB3aGljaCB0aGUg bmV4dCBjaGFyYWN0ZXIgc2hvdWxkIGJlIGRyYXduLgogICAtLSAgVGhpcyBpcyBhbHNvIGNhbGxl ZCB0aGUgcmlnaHQgYmVhcmluZyBvZiB0aGUgY2hhcmFjdGVyLgoKICAgcHJvY2VkdXJlIFN0cmlu Z19FeHRlbnRzIChGb250ICAgICA6IGluICAgICBHZGsuRm9udC5HZGtfRm9udDsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBTdHIgICAgICA6IGluICAgICBTdHJpbmc7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGJlYXJpbmcgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBSYmVhcmluZyA6ICAgIG91dCBHaW50OwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFdpZHRoICAgIDogICAgb3V0IEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQXNjZW50ICAgOiAgICBvdXQgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBEZXNjZW50ICA6ICAgIG91dCBHaW50KTsKICAgLS0gIFJldHVybiB0aGUgbWV0cmljcyBmb3Ig YSBnaXZlbiB0ZXh0LgogICAtLSAgU2VlIHRoZSBwaWN0dXJlIGZvciBtb3JlIGV4cGxhbmF0aW9u cyBvbiBhbGwgdGhlIGZpZWxkcy4KICAgLS0gIExiZWFyaW5nIDogT3JpZ2luIHRvIGxlZnQgZWRn ZSBvZiBjaGFyYWN0ZXIuCiAgIC0tICBSYmVhcmluZyA6IE9yaWdpbiB0byByaWdodCBlZGdlIG9m IGNoYXJhY3Rlci4KICAgLS0gIFdpZHRoICAgIDogQWR2YW5jZSB0byBuZXh0IGNoYXJhY3Rlcidz IG9yaWdpbi4KICAgLS0gIEFzY2VudCAgIDogQmFzZWxpbmUgdG8gdG9wIGVkZ2Ugb2YgY2hhcmFj dGVyLgogICAtLSAgRGVzY2VudCAgOiBCYXNlbGluZSB0byBib3R0b20gZWRnZSBvZiBjaGFyYWN0 ZXIuCgogICBwcm9jZWR1cmUgVGV4dF9FeHRlbnRzIChGb250ICAgICAgICA6IGluICAgICBHZGtf Rm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgOiBpbiAgICAgU3Ry aW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICBMYmVhcmluZyAgICA6ICAgIG91dCBHaW50 OwogICAgICAgICAgICAgICAgICAgICAgICAgICBSYmVhcmluZyAgICA6ICAgIG91dCBHaW50Owog ICAgICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgICAgICA6ICAgIG91dCBHaW50OwogICAg ICAgICAgICAgICAgICAgICAgICAgICBBc2NlbnQgICAgICA6ICAgIG91dCBHaW50OwogICAgICAg ICAgICAgICAgICAgICAgICAgICBEZXNjZW50ICAgICA6ICAgIG91dCBHaW50KTsKICAgLS0gIFJl dHVybiBhbGwgdGhlIG1ldHJpY3MgZm9yIGEgZ2l2ZW4gdGV4dC4KICAgLS0gIFNlZSB0aGUgcGlj dHVyZSBmb3IgbW9yZSBleHBsYW5hdGlvbnMgb24gYWxsIHRoZSBmaWVsZHMuCiAgIC0tICBpbiBD LCB0aGlzIGZ1bmN0aW9uIHdvdWxkIGJlIHVzZWQgZm9yIHBhcnQgb2YgYSBzdHJpbmcsIHdoaWNo IHlvdSBjYW4KICAgLS0gIHNpbXVsYXRlIGluIEFkYSB3aXRoIGEgc3Vic3RyaW5nLgoKICAgcHJv Y2VkdXJlIFRleHRfRXh0ZW50cyAoRm9udCAgICAgICAgOiBpbiAgICAgR2RrX0ZvbnQ7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRleHQgICAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtf V1N0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgTGJlYXJpbmcgICAgOiAgICBvdXQg R2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgUmJlYXJpbmcgICAgOiAgICBvdXQgR2lu dDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lkdGggICAgICAgOiAgICBvdXQgR2ludDsK ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNjZW50ICAgICAgOiAgICBvdXQgR2ludDsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgRGVzY2VudCAgICAgOiAgICBvdXQgR2ludCk7CiAgIC0t ICBSZXR1cm4gYWxsIHRoZSBtZXRyaWNzIGZvciBhIGdpdmVuIHdpZGUtY2hhcmFjdGVyIHN0cmlu Zy4KICAgLS0gIFNlZSB0aGUgcGljdHVyZSBmb3IgbW9yZSBleHBsYW5hdGlvbnMgb24gdGhlIHJl dHVybmVkIHZhbHVlcy4KCiAgIGZ1bmN0aW9uIFN0cmluZ19IZWlnaHQgKEZvbnQgOiBpbiBHZGtf Rm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyICA6IGluIFN0cmluZykKICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgLS0gIFJldHVybiB0aGUgaGVpZ2h0 IGluIHBpeGVscyBvZiB0aGUgc3RyaW5nLgogICAtLSAgVGhpcyBpcyB0aGUgdG90YWwgaGVpZ2h0 LCBhbmQgeW91IGNhbiBub3QgZWFzaWx5IHRlbGwgaG93IHRoaXMgaGVpZ2h0CiAgIC0tICBpcyBz cGxpdCBhcm91bmQgdGhlIGJhc2VsaW5lLgoKICAgZnVuY3Rpb24gVGV4dF9IZWlnaHQgKEZvbnQg OiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0ciAgOiBpbiBTdHJpbmcp CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50OwogICAtLSAgU2FtZSBhcyBTdHJp bmdfSGVpZ2h0LgogICAtLSAgSW4gQywgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBtZWFz dXJlIG9ubHkgdGhlIHdpZHRoIG9mIGEgcGFydCBvZgogICAtLSAgdGhlIHN0cmluZywgYnV0IHlv dSBjYW4gc2ltcGx5IHBhc3MgaXQgYSBzdWJzdHJpbmcgaW4gQWRhLgogICAtLSAgVGhpcyBpcyBh bHNvIGNhbGxlZCB0aGUgcmlnaHQgYmVhcmluZyBvZiB0aGUgc3RyaW5nLgoKICAgZnVuY3Rpb24g Q2hhcl9IZWlnaHQgKEZvbnQgOiBpbiBHZGtfRm9udDsKICAgICAgICAgICAgICAgICAgICAgICAg IENoYXIgOiBpbiBDaGFyYWN0ZXIpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHaW50 OwogICAtLSAgUmV0dXJuIHRoZSB0b3RhbCBoZWlnaHQgaW4gcGl4ZWxzIG9mIGEgc2luZ2xlIGNo YXJhY3Rlci4KCgpwcml2YXRlCiAgIE51bGxfRm9udCA6IGNvbnN0YW50IEdka19Gb250IDo9IG51 bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENoYXJfSGVpZ2h0LCAiZ2RrX2NoYXJfaGVpZ2h0Iik7 CiAgIHByYWdtYSBJbXBvcnQgKEMsIElkLCAiZ2RrX2ZvbnRfaWQiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgUmVmLCAiZ2RrX2ZvbnRfcmVmIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAi Z2RrX2ZvbnRfdW5yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0FzY2VudCwgImFkYV9n ZGtfZm9udF9nZXRfYXNjZW50Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9EZXNjZW50LCAi YWRhX2dka19mb250X2dldF9kZXNjZW50Iik7CmVuZCBHZGsuRm9udDsKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K LS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5 cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVt bWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAg ICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj ICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3 cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMg aW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0 aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJs ZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAg LS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0 ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdo dCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBBIGdyYXBoaWMgY29udGV4dCBpcyBhIHN0 cnVjdHVyZSB0aGF0IGRlc2NyaWJlcyBhbGwgdGhlIGF0dHJpYnV0ZXMKLS0gIHVzZWQgYnkgdGhl IGRyYXdpbmcgZnVuY3Rpb25zIGluIEdkay4KLS0gIFRoZSBjb2xvcnMsIGxpbmUgc3R5bGVzLCBG aWxsIHN0eWxlcyBhbmQgc28gb24gYXJlIGRlZmluZWQgdGhyb3VnaAotLSAgdGhpcyBzdHJ1Y3R1 cmUuCi0tCi0tICBPbiBYMTEgc3lzdGVtcywgdGhpcyBzdHJ1Y3R1cmUgaXMgc3RvcmVkIGRpcmVj dGx5IG9uIHRoZSBYU2VydmVyLAotLSAgd2hpY2ggc3BlZWRzIHVwIHRoZSB0cmFuc2ZlciBvZiB0 aGUgZHJhd2luZyBhdHRyaWJ1dGVzIGEgbG90LiBJbnN0ZWFkCi0tICBvZiB0cmFuc2ZlcnJpbmcg YWxsIG9mIHRoZW0gZXZlcnkgdGltZSB5b3UgY2FsbCBvbmUgb2YgdGhlIGRyYXdpbmcKLS0gIGZ1 bmN0aW9ucywgeW91IHNpbXBseSBzcGVjaWZ5IHdoaWNoIEdDIHlvdSB3YW50IHRvIHVzZS4KLS0K LS0gIFRodXMsIGl0IGlzIHJlY29tbWVuZGVkIHRvIGNyZWF0ZSBhcyBtYW55IEdDcyBhcyB5b3Ug bmVlZCwgaW5zdGVhZAotLSAgb2YgY3JlYXRpbmcgYSBzaW5nbGUgb25lIHRoYXQgaXMgbW9kaWZp ZWQgZXZlcnkgdGltZSB5b3UgbmVlZCB0bwotLSAgbW9kaWZ5IG9uZSBvZiB0aGUgYXR0cmlidXRl cy4KLS0KLS0gIE9uIFVuaXggbWFjaGluZXMsIHlvdSBzaG91bGQgaGF2ZSBhIGxvb2sgYXQgdGhl IGV4dGVybmFsIHV0aWxpdHkgJ3hnYycKLS0gIHdoaWNoIGRlbW9uc3RyYXRlcyBhbGwgdGhlIGJh c2ljIHNldHRpbmdzIG9mIHRoZSBncmFwaGljIGNvbnRleHRzLgotLQotLSAgPC9kZXNjcmlwdGlv bj4KLS0gIDxjX3ZlcnNpb24+MS4yLjY8L2NfdmVyc2lvbj4KCndpdGggR2xpYjsgdXNlIEdsaWI7 CndpdGggR2RrLkNvbG9yOwp3aXRoIEdkay5Gb250Owp3aXRoIEdkay5SZWN0YW5nbGU7CndpdGgg R2RrLlJlZ2lvbjsKd2l0aCBHZGsuVHlwZXM7CndpdGggR2RrLldpbmRvdzsKCnBhY2thZ2UgR2Rr LkdDIGlzCgogICBzdWJ0eXBlIEdka19HQyBpcyBHZGsuR2RrX0dDOwogICAtLSAgQSBncmFwaGlj IGNvbnRleHQgdGhhdCBjb250YWluIGFsbCB0aGUgaW5mb3JtYXRpb24gdG8gZHJhdyBncmFwaGlj cwogICAtLSAgb24gdGhlIHNjcmVlbi4KICAgLS0gIENyZWF0aW5nIHRoZXNlIEdDIGlzIG1vcmUg ZWZmaWNpZW50IHRoYW4gcGFzc2luZyBhIGxvdCBvZiBwYXJhbWV0ZXJzCiAgIC0tICB0byBlYWNo IG9mIHRoZSBkcmF3aW5nIGZ1bmN0aW9ucywgc2luY2UgdGhlc2UgR0MgYXJlIHN0b3JlZCBvbiB0 aGUKICAgLS0gIHNlcnZlciBzaWRlIGFuZCBkbyBub3QgbmVlZCB0byBiZSBwYXNzIHRocm91Z2gg dGhlIG5ldHdvcmsuCgogICB0eXBlIEdka19HQ19WYWx1ZXMgaXMgbmV3IEdkay5DX1Byb3h5Owog ICAtLSAgQSBzdHJ1Y3R1cmUgdXNlZCBvbiB0aGUgY2xpZW50IHNpZGUgdG8gc3RvcmUgdGhlIHNh bWUgaW5mb3JtYXRpb24KICAgLS0gIGFzIHRoZSBHQy4gQ3JlYXRpbmcgYSBHQyBmcm9tIHRoaXMg c3RydWN0dXJlIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4KICAgLS0gIGNhbGxpbmcgYSBsb3Qgb2Yg ZnVuY3Rpb25zIHRvIG1vZGlmeSB0aGUgR0MgZGlyZWN0bHksIHNpbmNlIHRoZXJlIGlzCiAgIC0t ICBhIHNpbmdsZSBjYWxsIHRvIHRoZSBzZXJ2ZXIuCgogICBOdWxsX0dDIDogY29uc3RhbnQgR2Rr X0dDOwogICBOdWxsX0dDX1ZhbHVlcyA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXM7CgogICAtLS0t LS0tLS0tLS0KICAgLS0gR2RrX0dDIC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdk a19OZXcgKEdDICAgICA6ICAgIG91dCBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICBXaW5k b3cgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIENyZWF0ZSBhIG5ldyBn cmFwaGljIGNvbnRleHQuCiAgIC0tICBUaGUgd2luZG93IG11c3QgaGF2ZSBiZWVuIHJlYWxpemVk IGZpcnN0IChzbyB0aGF0IGl0IGlzIGFzc29jaWF0ZWQKICAgLS0gIHdpdGggc29tZSByZXNvdXJj ZXMgb24gdGhlIFhzZXJ2ZXIpLgogICAtLSAgVGhlIEdDIGNhbiB0aGVuIGJlIHVzZWQgZm9yIGFu eSB3aW5kb3cgdGhhdCBoYXMgdGhlIHNhbWUgcm9vdCB3aW5kb3csCiAgIC0tICBhbmQgc2FtZSBj b2xvciBkZXB0aCBhcyBXaW5kb3cuCiAgIC0tICBTZWUgdGhlIG1hbnVhbCBwYWdlIGZvciBYQ3Jl YXRlR0Mgb24gVW5peCBzeXN0ZW1zIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKICAgcHJvY2VkdXJl IEdka19OZXcgKEdDICAgICAgICAgIDogICAgb3V0IEdka19HQzsKICAgICAgICAgICAgICAgICAg ICAgIFdpbmRvdyAgICAgIDogaW4gICAgIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgICAg ICAgICAgICAgICAgIFZhbHVlcyAgICAgIDogaW4gICAgIEdka19HQ19WYWx1ZXM7CiAgICAgICAg ICAgICAgICAgICAgICBWYWx1ZXNfTWFzayA6IGluICAgICBUeXBlcy5HZGtfR0NfVmFsdWVzX01h c2spOwogICAtLSAgQ3JlYXRlIGEgbmV3IGdyYXBoaWMgY29udGV4dC4KICAgLS0gIEl0IGlzIGRp cmVjdGx5IGNyZWF0ZWQgd2l0aCB0aGUgdmFsdWVzIHNldCBpbiBWYWx1ZXMsIGFuZCB3aG9zZQog ICAtLSAgYXNzb2NpYXRlZCBmaWVsZCBoYXMgYmVlbiBzZXQgaW4gVmFsdWVzX01hc2suCiAgIC0t ICBUaGlzIGlzIGZhc3RlciB0aGFuIGNhbGxpbmcgdGhlIHNpbXBsZSBHZGtfTmV3IGZ1bmN0aW9u IGFuZCBlYWNoIG9mCiAgIC0tICBvdGhlciBmdW5jdGlvbnMgaW4gdGhpcyBwYWNrYWdlLCBzaW5j ZSBlYWNoIG9mIHRoZW0gcmVxdWlyZXMgYSBjYWxsCiAgIC0tICB0byB0aGUgc2VydmVyLgoKICAg cHJvY2VkdXJlIERlc3Ryb3kgKEdDIDogaW4gR2RrX0dDKTsKICAgLS0gIEZyZWUgdGhlIG1lbW9y eSBhbGxvY2F0ZWQgb24gdGhlIHNlcnZlciBmb3IgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0g IEdyYXBoaWMgY29udGV4dHMgYXJlIG5ldmVyIGZyZWVkIGF1dG9tYXRpY2FsbHkgYnkgR3RrQWRh LCB0aGlzIGlzCiAgIC0tICB0aGUgdXNlciByZXNwb25zaWJpbGl0eSB0byBkbyBzby4KCiAgIHBy b2NlZHVyZSBSZWYgKEdDIDogaW4gR2RrX0dDKTsKICAgLS0gIEluY3JlbWVudCB0aGUgcmVmZXJl bmNlIGNvdW50aW5nIGZvciB0aGUgZ3JhcGhpYyBjb250ZXh0LgogICAtLSAgWW91IHNob3VsZCB1 c3VhbGx5IG5vdCBoYXZlIHRvIHVzZSBpdC4KCiAgIHByb2NlZHVyZSBVbnJlZiAoR0MgOiBpbiBH ZGtfR0MpOwogICAtLSAgRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIHRoZSBn cmFwaGljIGNvbnRleHQuCiAgIC0tICBXaGVuIHRoaXMgcmVhY2hlcyAwLCB0aGUgZ3JhcGhpYyBj b250ZXh0IGlzIGRlc3Ryb3llZC4KCiAgIHByb2NlZHVyZSBHZXRfVmFsdWVzIChHQyAgICAgOiBp biBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMgOiBpbiBHZGtfR0NfVmFs dWVzKTsKICAgLS0gIEdldCB0aGUgdmFsdWVzIHNldCBpbiB0aGUgR0MuCiAgIC0tICBUaGlzIGNv cGllcyB0aGUgdmFsdWVzIGZyb20gdGhlIHNlcnZlciB0byBjbGllbnQsIGFsbG93aW5nIGZhc3Rl cgogICAtLSAgbW9kaWZpY2F0aW9ucy4gVmFsdWVzIGNhbiB0aGVuIGJlIGNvcGllZCBiYWNrIHRv IHRoZSBzZXJ2ZXIgYnkKICAgLS0gIGNyZWF0aW5nIGEgbmV3IGdyYXBoaWMgY29udGV4dCB3aXRo IHRoZSBmdW5jdGlvbiBHZGtfTmV3IGFib3ZlLgogICAtLSAgVmFsdWVzIHNob3VsZCBoYXZlIGJl ZW4gYWxsb2NhdGVkIGZpcnN0IHdpdGggYSBjYWxsIHRvIEdka19OZXcuCgogICBwcm9jZWR1cmUg U2V0X0ZvcmVncm91bmQgKEdDICAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIENvbG9yIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQgdGhlIGZv cmVncm91bmQgY29sb3IgZm9yIHRoZSBncmFwaGljIGNvbnRleHQuCiAgIC0tICBUaGlzIGNvbG9y IGlzIHRoZSBvbmUgdGhhdCBpcyB1c2VkIGJ5IG1vc3QgZHJhd2luZyBmdW5jdGlvbnMuCgogICBw cm9jZWR1cmUgU2V0X0JhY2tncm91bmQgKEdDICAgICA6IGluIEdka19HQzsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBDb2xvciAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0g IFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGdyYXBoaWMgY29udGV4dC4KCiAgIHBy b2NlZHVyZSBTZXRfRm9udCAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAg ICBGb250IDogaW4gR2RrLkZvbnQuR2RrX0ZvbnQpOwogICAtLSAgU2V0IHRoZSBmb250IHVzZWQg YnkgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoaXMgZm9udCBpcyB1c2VkIGJ5IHRoZSBm dW5jdGlvbiBHZGsuRHJhd2FibGUuRHJhd19UZXh0LgoKICAgcHJvY2VkdXJlIFNldF9GdW5jdGlv biAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuYyA6IGlu IFR5cGVzLkdka19GdW5jdGlvbik7CiAgIC0tICBTZXQgdGhlIGZ1bmN0aW9uIGluIHRoZSBncmFw aGljIGNvbnRleHQuCiAgIC0tICBUaGlzIGZ1bmN0aW9uIHNwZWNpZmllcyBob3cgdGhlIHBvaW50 cyBhcmUgcHV0IG9uIHRoZSBzY3JlZW4sIGllCiAgIC0tICBpZiBHdGtBZGEgaG93IEd0a0FkYSBz aG91bGQgbWl4IHRoZSBwb2ludCBhbHJlYWR5IG9uIHRoZSBzY3JlZW4KICAgLS0gIGFuZCB0aGUg bmV3IHBvaW50IGJlaW5nIHB1dC4KICAgLS0gIE5vdGUgdGhhdCBzZXR0aW5nIHRoZSBmdW5jdGlv biB0byBHZGtfWG9yIGlzIG5vdCB0aGUgcmlnaHQgd2F5CiAgIC0tICB0byBkbyBhbmltYXRpb24u IFlvdSBzaG91bGQgaW5zdGVhZCBzYXZlIHRoZSBiYWNrZ3JvdW5kIHBpeG1hcCwKICAgLS0gIHB1 dCB0aGUgaW1hZ2UsIGFuZCB0aGVuIHJlc3RvcmUgdGhlIGJhY2tncm91bmQuCiAgIC0tCiAgIC0t ICBJbiBnZW5lcmFsLCB0aGVyZSBhcmUgdGhyZWUgYmFzaWMgc3RlcHMgdG8gZHJhd2luZzogcmVh ZGluZyB0aGUgc291cmNlCiAgIC0tICBwaXhlbHMsIHJlYWRpbmcgdGhlIGRlc3RpbmF0aW9uIHBp eGVscywgYW5kIHdyaXRpbmcgdGhlIGRlc3RpbmF0aW9uCiAgIC0tICBwaXhlbHMuICBTb21lIGZ1 bmN0aW9ucyBvbmx5IHBlcmZvcm0gdGhlIHRoaXJkIHN0ZXAgKFNldCBhbmQgQ2xlYXIpLAogICAt LSAgc29tZSBkbyBub3QgbmVlZCB0aGUgbWlkZGxlIHN0ZXAgKENvcHkpLCB3aGVyZWFzIG1vc3Qg cmVxdWlyZSB0aGUgdGhyZWUKICAgLS0gIHN0ZXBzLCBhbmQgdGh1cyBjYW4gYmUgbXVjaCBzbG93 ZXIuCgogICBwcm9jZWR1cmUgU2V0X0ZpbGwgKEdDICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAg ICAgICAgICAgICAgRmlsbCA6IGluIFR5cGVzLkdka19GaWxsKTsKICAgLS0gIFNldCB0aGUgcGF0 dGVybiB1c2VkIGZvciBmaWxsaW5nIHRoZSBwb2x5Z29ucy4KCiAgIHByb2NlZHVyZSBTZXRfVGls ZSAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICBUaWxlIDogaW4gR2Rr Lkdka19QaXhtYXApOwoKICAgcHJvY2VkdXJlIFNldF9TdGlwcGxlIChHQyAgICAgIDogaW4gR2Rr X0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgIFN0aXBwbGUgOiBpbiBHZGsuR2RrX1BpeG1h cCk7CgogICBwcm9jZWR1cmUgU2V0X0NsaXBfTWFzayAoR0MgICAgOiBpbiBHZGsuR0MuR2RrX0dD OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFzayAgOiBpbiBHZGsuR2RrX0JpdG1hcCk7 CiAgIC0tICBJZiBNYXNrIGlzIHNldCB0byBOdWxsX0JpdG1hcCwgdGhlbiBubyBjbGlwX21hc2sg aXMgdXNlZCBmb3IgZHJhd2luZy4KICAgLS0gIFBvaW50cyB3aWxsIGJlIGRyYXduIHRocm91Z2gg dGhpcyBHQyBvbmx5IHdoZXJlIHRoZSBiaXRzIGFyZSBzZXQgdG8gMQogICAtLSAgaW4gdGhlIG1h c2suIFNlZSBhbHNvIHRoZSBmdW5jdGlvbiBTZXRfQ2xpcF9PcmlnaW4gZm9yCiAgIC0tICBob3cg dG8gbW92ZSB0aGUgbWFzayBpbnNpZGUgdGhlIEdDLgoKICAgcHJvY2VkdXJlIFNldF9Uc19Pcmln aW4gKEdDICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYLCBZIDog aW4gR2ludCk7CiAgIC0tICBTZXQgdGhlIFRpbGUgYW5kIFN0aXBwbGUgb3JpZ2luIGluIHRoZSBn cmFwaGljIGNvbnRleHQuCgogICBwcm9jZWR1cmUgU2V0X0NsaXBfT3JpZ2luIChHQyAgIDogaW4g R2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYLCBZIDogaW4gR2ludCk7CiAg IC0tICBTZXQgdGhlIG9yaWdpbiBvZiB0aGUgY2xpcCBtYXNrLgogICAtLSAgU2VlIHRoZSBmdW5j dGlvbnMgU2V0X0NsaXBfUmVjdGFuZ2xlLCBTZXRfQ2xpcF9SZWdpb24gYW5kCiAgIC0tICBHZGsu Qml0bWFwLlNldF9DbGlwX01hc2sgZm9yIG1vcmUgZXhwbGFuYXRpb24uCgogICBwcm9jZWR1cmUg U2V0X0NsaXBfUmVjdGFuZ2xlCiAgICAgKEdDICAgICAgICA6IGluIEdka19HQzsKICAgICAgUmVj dGFuZ2xlIDogaW4gR2RrLlJlY3RhbmdsZS5HZGtfUmVjdGFuZ2xlKTsKICAgLS0gIFNldCB0aGUg Y2xpcCByZWN0YW5nbGUuCiAgIC0tICBPbmx5IHRoZSBwb2ludHMgdGhhdCBhcmUgZHJhd24gaW5z aWRlIHRoaXMgcmVjdGFuZ2xlIHdpbGwgYmUgZGlzcGxheWVkCiAgIC0tICBvbiB0aGUgc2NyZWVu LiBOb3RlIHRoYXQgeW91IG1pZ2h0IGhhdmUgdG8gbW9kaWZ5IHRoZSBDbGlwIG9yaWdpbiBmaXJz dAogICAtLSAgd2l0aCBTZXRfQ2xpcF9PcmlnaW4uCiAgIC0tICBTZWUgU2V0X0NsaXBfTWFzayB0 byBkZWxldGUgdGhlIGN1cnJlbnQgY2xpcCBtYXNrLgoKICAgcHJvY2VkdXJlIFNldF9DbGlwX1Jl Z2lvbiAoR0MgICAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZWdpb24gOiBpbiBHZGsuUmVnaW9uLkdka19SZWdpb24pOwogICAtLSAgRGVmaW5lIGEgY2xpcCBy ZWdpb24gb24gdGhlIHNjcmVlbi4KICAgLS0gIFRoaXMgaXMganVzdCBsaWtlIFNldF9DbGlwX1Jl Y3RhbmdsZSwgZXhjZXB0IHRoYXQgYSByZWdpb24gaXMgYSBtb3JlCiAgIC0tICBjb21wbGV4IHJl Z2lvbiwgdGhhdCBjYW4gYmUgdGhlIGludGVyc2VjdGlvbiBvciB1bmlvbiBvZiBtdWx0aXBsZQog ICAtLSAgcmVjdGFuZ2xlcy4gTm90ZSB0aGF0IHRoZSBDbGlwX09yaWdpbiBjYW4gaGF2ZSBhbiBp bmZsdWVuY2Ugb24gdGhpcwogICAtLSAgZnVuY3Rpb24uCgogICBwcm9jZWR1cmUgU2V0X1N1Yndp bmRvdyAoR0MgICA6IGluIEdka19HQzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUg OiBpbiBUeXBlcy5HZGtfU3Vid2luZG93X01vZGUpOwogICAtLSAgU2V0IHRoZSBzdWJ3aW5kb3cg bW9kZSBmb3IgdGhlIGdyYXBoaWMgY29udGV4dC4KICAgLS0gIFRoaXMgc3BlY2lmaWVzIHdoZXRo ZXIgdGhlIGRyYXdpbmcgcm91dGluZXMgc2hvdWxkIGJlIGNsaXBwZWQgdG8KICAgLS0gIHRoZSBz cGVjaWZpYyB3aW5kb3cgdGhleSBhcmUgZHJhd24gaW50bywgb3IgaWYgdGhleSBzaG91bGQgZXh0 ZW5kCiAgIC0tICB0byBzdWJ3aW5kb3dzIGFzIHdlbGwuCgogICBwcm9jZWR1cmUgU2V0X0V4cG9z dXJlcyAoR0MgICAgICAgIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg RXhwb3N1cmVzIDogaW4gQm9vbGVhbik7CiAgIC0tICBFeHBvc3VyZXMgaW5kaWNhdGVzIHdoZXRo ZXIgeW91IHdhbnQgImV4cG9zZSIgYW5kICJub2V4cG9zZSIgZXZlbnRzIHRvCiAgIC0tICBiZSBy ZXBvcnRlZCB3aGVuIGNhbGxpbmcgQ29weV9BcmVhIGFuZCBDb3B5X1BsYW5lIHdpdGggdGhpcyBH Qy4KICAgLS0gIFlvdSBzaG91bGQgZGlzYWJsZSB0aGlzIGlmIHlvdSBkb24ndCBuZWVkIHRoZSBl dmVudCBhbmQgd2FudCB0byBvcHRpbWl6ZQogICAtLSAgeW91ciBhcHBsaWNhdGlvbi4KICAgLS0g IElmIEV4cG9zdXJlcyBpcyBUcnVlLCB0aGVuIGFueSBjYWxsIHRvIENvcHlfQXJlYSBvciBEcmF3 X1BpeG1hcCB3aWxsCiAgIC0tICBnZW5lcmF0ZSBhbiBleHBvc2UgZXZlbnQuIE90aGVyd2lzZSwg dGhlc2Ugd2lsbCBnZW5lcmF0ZSBhIG5vX2V4cG9zZQogICAtLSAgZXZlbnQuCgogICBwcm9jZWR1 cmUgU2V0X0xpbmVfQXR0cmlidXRlcyAoR0MgICAgICAgICA6IGluIEdka19HQzsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfV2lkdGggOiBpbiBHaW50OwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9TdHlsZSA6IGluIFR5cGVzLkdka19MaW5lX1N0 eWxlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FwX1N0eWxlICA6IGluIFR5 cGVzLkdka19DYXBfU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKb2lu X1N0eWxlIDogaW4gVHlwZXMuR2RrX0pvaW5fU3R5bGUpOwogICAtLSAgU2V0IHRoZSBsaW5lIGF0 dHJpYnV0ZXMgZm9yIHRoaXMgR0MuCiAgIC0tICBMaW5lX1dpZHRoIGlzIHRoZSB3aWR0aCBvZiB0 aGUgbGluZS4gSWYgaXRzIHZhbHVlIGlzIDAsIHRoZSBsaW5lIGlzIGFzCiAgIC0tICB0aGluIGFz IHBvc3NpYmxlLCBwb3NzaWJseSBldmVuIG1vcmUgc28gdGhhbiBpZiB0aGUgd2lkdGggaXMgMS4g SXQgaXMKICAgLS0gIGFsc28gZmFzdGVyIHRvIGRyYXcgYSBsaW5lIHdpdGggd2lkdGggMCB0aGFu IGFueSBvdGhlciBsaW5lIHdpZHRoLgogICAtLQogICAtLSAgTGluZV9TdHlsZSBzcGVjaWZpZXMg d2hldGhlciB0aGUgbGluZSBzaG91bGQgYmUgc29saWQgb3IgZGFzaGVkLgogICAtLSAgV2l0aCBM aW5lX09uX09mZl9EYXNoLCB0aGUgY29sb3JzIGFyZSBhbHRlcm5hdGl2ZWx5IHRoZSBmb3JlZ3Jv dW5kCiAgIC0tICBjb2xvciwgYW5kIGJsYW5rLiBXaXRoIExpbmVfRG91YmxlX0Rhc2gsIHRoZSBj b2xvcnMgYXJlCiAgIC0tICBhbHRlcm5hdGl2ZWx5IHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3Jv dW5kIGNvbG9ycy4KICAgLS0KICAgLS0gIENhcF9TdHlsZSBzcGVjaWZpZXMgaG93IHRoZSBsaW5l IHNob3VsZCBlbmQsIGVpdGhlciBmbGF0IG9yIHJvdW5kZWQuCiAgIC0tCiAgIC0tICBKb2luX1N0 eWxlIHNwZWNpZmllcyBob3cgdHdvIGNvbnNlY3V0aXZlIGxpbmVzIGRyYXduIGJ5IERyYXdfTGlu ZXMgYXJlCiAgIC0tICBjb25uZWN0ZWQuCgogICBwcm9jZWR1cmUgU2V0X0Rhc2hlcyAoR2MgICAg ICAgICAgOiBpbiBHZGtfR0M7CiAgICAgICAgICAgICAgICAgICAgICAgICBEYXNoX09mZnNldCA6 IGluIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBEYXNoX0xpc3QgICA6IGluIEd1Y2hh cl9BcnJheSk7CiAgIC0tICBTcGVjaWZ5IHRoZSBkYXNoIHBhdHRlcm4gd2hlbiB0aGUgbGluZSdz IHN0eWxlIGlzIGFueXRoaW5nIGJ1dCBzb2xpZC4KICAgLS0gIFRoZSB2YWx1ZXMgaW4gdGhlIGFy cmF5IGFsdGVybmF0aXZlbHkgZ2l2ZSB0aGUgbGVuZ3RoIChpbiBwaXhlbHMpIG9mCiAgIC0tICB0 aGUgcGxhaW4gZGFzaCwgdGhlIGVtcHR5IGRhc2gsIHRoZSBzZWNvbmQgcGxhaW4gZGFzaCwgLi4u IE5vbmUgb2YKICAgLS0gIHRoZXNlIHZhbHVlcyBjYW4gYmUgMC4gSWYgdGhlcmUgaXMgYW4gb2Rk IG51bWJlciBvZiBpdGVtcyBpbiBEYXNoX0xpc3QsCiAgIC0tICB0aGlzIGlzIGVxdWl2YWxlbnQg dG8gZ2l2aW5nIHRoZSBhcnJheSBjb25jYXRlbmF0ZWQgd2l0aCBpdHNlbGYuCiAgIC0tICBEYXNo X09mZnNldCBzcGVjaWZpZXMgdGhlIHBoYXNlIG9mIHRoZSBwYXR0ZXJuIHRvIHN0YXJ0IHdpdGgu CgogICBwcm9jZWR1cmUgQ29weSAoRHN0X0dDIDogaW4gR2RrX0dDOwogICAgICAgICAgICAgICAg ICAgU3JjX0dDIDogaW4gR2RrX0dDKTsKICAgLS0gIENvcHkgYSBTcmNfR0MgdG8gRHN0X0dDLgoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZGtfQ29sb3JfVmFsdWVzIC0tCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdka19OZXcgcmV0dXJuIEdka19HQ19W YWx1ZXM7CiAgIC0tICBBbGxvY2F0ZSBhIG5ldyBWYWx1ZXMgc3RydWN0dXJlIG9uIHRoZSBjbGll bnQuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBDIHN0cnVjdHVy ZSwgYW5kIHRodXMgbmVlZHMgdG8KICAgLS0gIGJlIGZyZWVkIHdpdGggYSBjYWxsIHRvIEZyZWUg YmVsb3cuCgogICBwcm9jZWR1cmUgRnJlZSAoVmFsdWVzIDogaW4gR2RrX0dDX1ZhbHVlcyk7CiAg IC0tICBGcmVlIHRoZSBDIHN0cnVjdHVyZSBhc3NvY2lhdGVkIHdpdGggVmFsdWVzLgoKICAgcHJv Y2VkdXJlIFNldF9Gb3JlZ3JvdW5kIChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENvbG9yICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwog ICAtLSAgU2FtZSBhcyBTZXRfRm9yZWdyb3VuZCwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAg cHJvY2VkdXJlIFNldF9CYWNrZ3JvdW5kIChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3Ip OwogICAtLSAgU2FtZSBhcyBTZXRfQmFja2dyb3VuZCwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoK ICAgcHJvY2VkdXJlIFNldF9Gb250IChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAg ICAgICAgICAgICAgICAgIEZvbnQgICA6IGluIEdkay5Gb250Lkdka19Gb250KTsKICAgLS0gIFNh bWUgYXMgU2V0X0ZvbnQsIGJ1dCBvbiB0aGUgY2xpZW50IHNpZGUKCiAgIHByb2NlZHVyZSBTZXRf RnVuY3Rpb24gKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZ1bmMgICA6IGluIFR5cGVzLkdka19GdW5jdGlvbik7CiAgIC0tICBTYW1lIGFzIFNl dF9GdW5jdGlvbiwgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2VkdXJlIFNldF9GaWxs IChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgIEZpbGwg ICA6IGluIFR5cGVzLkdka19GaWxsKTsKICAgLS0gIFNhbWUgYXMgU2V0X0ZpbGwsIGJ1dCBvbiB0 aGUgY2xpZW50IHNpZGUKCiAgIHByb2NlZHVyZSBTZXRfVHNfT3JpZ2luIChWYWx1ZXMgOiBpbiBH ZGtfR0NfVmFsdWVzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgWCwgWSAgIDogaW4gR2lu dCk7CiAgIC0tICBTYW1lIGFzIFNldF9Uc19PcmlnaW4sIGJ1dCBvbiB0aGUgY2xpZW50IHNpZGUK CiAgIHByb2NlZHVyZSBTZXRfQ2xpcF9PcmlnaW4gKFZhbHVlcyA6IGluIEdka19HQ19WYWx1ZXM7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgsIFkgICA6IGluIEdpbnQpOwogICAtLSAg U2FtZSBhcyBTZXRfQ2xpcF9PcmlnaW4sIGJ1dCBvbiB0aGUgY2xpZW50IHNpZGUKCiAgIHByb2Nl ZHVyZSBTZXRfU3Vid2luZG93IChWYWx1ZXMgOiBpbiBHZGtfR0NfVmFsdWVzOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgTW9kZSAgIDogaW4gVHlwZXMuR2RrX1N1YndpbmRvd19Nb2RlKTsK ICAgLS0gIFNhbWUgYXMgU2V0X1N1YndpbmRvdywgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAg cHJvY2VkdXJlIFNldF9FeHBvc3VyZXMgKFZhbHVlcyAgICA6IGluIEdka19HQ19WYWx1ZXM7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBvc3VyZXMgOiBpbiBCb29sZWFuKTsKICAgLS0g IFNhbWUgYXMgU2V0X0V4cG9zdXJlcywgYnV0IG9uIHRoZSBjbGllbnQgc2lkZQoKICAgcHJvY2Vk dXJlIFNldF9MaW5lX0F0dHJpYnV0ZXMgKFZhbHVlcyAgICAgOiBpbiBHZGtfR0NfVmFsdWVzOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9XaWR0aCA6IGluIEdpbnQ7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lX1N0eWxlIDogaW4gVHlwZXMuR2Rr X0xpbmVfU3R5bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXBfU3R5bGUg IDogaW4gVHlwZXMuR2RrX0NhcF9TdHlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEpvaW5fU3R5bGUgOiBpbiBUeXBlcy5HZGtfSm9pbl9TdHlsZSk7CiAgIC0tICBTYW1lIGFz IFNldF9MaW5lX0F0dHJpYnV0ZXMsIGJ1dCBvbiB0aGUgY2xpZW50IHNpZGUKCnByaXZhdGUKICAg TnVsbF9HQyA6IGNvbnN0YW50IEdka19HQyA6PSBudWxsOwogICBOdWxsX0dDX1ZhbHVlcyA6IGNv bnN0YW50IEdka19HQ19WYWx1ZXMgOj0gbnVsbDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIENvcHks ICJnZGtfZ2NfY29weSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBEZXN0cm95LCAiZ2RrX2djX2Rl c3Ryb3kiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgRnJlZSwgImFkYV9nZGtfZ2NfZnJlZV92YWx1 ZXMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1ZhbHVlcywgImdka19nY19nZXRfdmFsdWVz Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImdka19nY19yZWYiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgVW5yZWYsICJnZGtfZ2NfdW5yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0 X1N0aXBwbGUsICJnZGtfZ2Nfc2V0X3N0aXBwbGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0 X1RpbGUsICJnZGtfZ2Nfc2V0X3RpbGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0NsaXBf TWFzaywgImdka19nY19zZXRfY2xpcF9tYXNrIik7CmVuZCBHZGsuR0M7Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ci0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29w eXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBF bW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAg ICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwg d3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVz IGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsg dGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFi bGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcg IC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRh dGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWln aHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgUGl4bWFwcyBhcmUgb2ZmLXNjcmVlbiBk cmF3YWJsZXMuIFRoZXkgY2FuIGJlIGRyYXduIHVwb24gd2l0aCB0aGUgc3RhbmRhcmQKLS0gIGRy YXdpbmcgcHJpbWl0aXZlcywgdGhlbiBjb3BpZWQgdG8gYW5vdGhlciBkcmF3YWJsZSAoc3VjaCBh cyBhIEdka19XaW5kb3cpCi0tICB3aXRoIEdkay5QaXhtYXAuRHJhdy4gVGhlIGRlcHRoIG9mIGEg cGl4bWFwIGlzIHRoZSBudW1iZXIgb2YgYml0cyBwZXIKLS0gIHBpeGVscy4gQml0bWFwcyBhcmUg c2ltcGx5IHBpeG1hcHMgd2l0aCBhIGRlcHRoIG9mIDEuIChUaGF0IGlzLCB0aGV5IGFyZQotLSAg bW9ub2Nocm9tZSBiaXRtYXBzIC0gZWFjaCBwaXhlbCBjYW4gYmUgZWl0aGVyIG9uIG9yIG9mZiku Ci0tICBAcHhyZWZ7UGFja2FnZV9HZGsuQml0bWFwfSBmb3IgbW9yZSBkZXRhaWxzIG9uIGJpdG1h cCBoYW5kbGluZy4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192ZXJzaW9uPjEuMi43PC9j X3ZlcnNpb24+Cgp3aXRoIEdsaWI7IHVzZSBHbGliOwp3aXRoIEdkay5CaXRtYXA7CndpdGggR2Rr LkNvbG9yOwp3aXRoIEdkay5XaW5kb3c7CndpdGggR3RrYWRhLlR5cGVzOwoKcGFja2FnZSBHZGsu UGl4bWFwIGlzCgogICBzdWJ0eXBlIEdka19QaXhtYXAgaXMgR2RrLkdka19QaXhtYXA7CiAgIC0t ICBBIHNlcnZlci1zaWRlIGltYWdlLgogICAtLSAgWW91IGNhbiBjcmVhdGUgYW4gZW1wdHkgcGl4 bWFwLCBvciBsb2FkIGlmIGZyb20gZXh0ZXJuYWwgZmlsZXMgaW4KICAgLS0gIGJpdG1hcCBhbmQg cGl4bWFwIGZvcm1hdC4gU2VlIEdkay5QaXhidWYgaWYgeW91IG5lZWQgdG8gbG9hZAogICAtLSAg aW1hZ2VzIGluIG90aGVyIGZvcm1hdHMuCgogICBOdWxsX1BpeG1hcCA6IGNvbnN0YW50IEdka19Q aXhtYXA7CgogICBwcm9jZWR1cmUgR2RrX05ldyAoUGl4bWFwIDogICAgb3V0IEdka19QaXhtYXA7 CiAgICAgICAgICAgICAgICAgICAgICBXaW5kb3cgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2lu ZG93OwogICAgICAgICAgICAgICAgICAgICAgV2lkdGggIDogaW4gICAgIEdpbnQ7CiAgICAgICAg ICAgICAgICAgICAgICBIZWlnaHQgOiBpbiAgICAgR2ludDsKICAgICAgICAgICAgICAgICAgICAg IERlcHRoICA6IGluICAgICBHaW50IDo9IC0xKTsKICAgLS0gIENyZWF0ZSBhIG5ldyBwaXhtYXAg d2l0aCBhIGdpdmVuIHNpemUuCiAgIC0tICBXaW5kb3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVm YXVsdCB2YWx1ZXMgZm9yIHRoZSBuZXcgcGl4bWFwLgogICAtLSAgQ2FuIGJlIGV2ZW50dWFsbHkg bnVsbC4KICAgLS0gIFdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgbmV3IHBpeG1hcCBpbiBwaXhl bHMuCiAgIC0tICBIZWlnaHQgaXMgdGhlIGhlaWdodCBvZiB0aGUgbmV3IHBpeG1hcCBpbiBwaXhl bHMuCiAgIC0tICBEZXB0aCBpcyB0aGUgZGVwdGggKG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCkg b2YgdGhlIG5ldyBwaXhtYXAuCiAgIC0tICBJZiAtMSwgYW5kIHdpbmRvdyBpcyBub3QgbnVsbCwg dGhlIGRlcHRoIG9mIHRoZSBuZXcgcGl4bWFwIHdpbGwgYmUKICAgLS0gIGVxdWFsIHRvIHRoYXQg b2Ygd2luZG93LgogICAtLSAgQXV0b21hdGljYWxseSByZWZlcmVuY2UgdGhlIHBpeG1hcCBvbmNl LgoKICAgcHJvY2VkdXJlIFJlZiAoUGl4bWFwIDogaW4gR2RrX1BpeG1hcCk7CiAgIC0tICBBZGQg YSByZWZlcmVuY2UgdG8gYSBwaXhtYXAuCgogICBwcm9jZWR1cmUgVW5yZWYgKFBpeG1hcCA6IGlu IEdka19QaXhtYXApOwogICAtLSAgVGhpcyBpcyB0aGUgdXN1YWwgd2F5IHRvIGRlc3Ryb3kgYSBw aXhtYXAuIFRoZSBtZW1vcnkgaXMgZnJlZWQgd2hlbgogICAtLSAgdGhlcmUgaXMgbm8gbW9yZSBy ZWZlcmVuY2UKCiAgIHByb2NlZHVyZSBDcmVhdGVfRnJvbV9EYXRhIChQaXhtYXAgOiAgICBvdXQg R2RrX1BpeG1hcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvdyA6IGluICAg ICBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE YXRhICAgOiBpbiAgICAgU3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2lk dGggIDogaW4gICAgIEdpbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWlnaHQg OiBpbiAgICAgR2ludDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHRoICA6IGlu ICAgICBHaW50OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmcgICAgIDogaW4gICAg IENvbG9yLkdka19Db2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJnICAgICA6 IGluICAgICBDb2xvci5HZGtfQ29sb3IpOwogICAtLSAgQ3JlYXRlIGEgcGl4bWFwIGZyb20gZGF0 YSBpbiBYQk0gZm9ybWF0LgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1 bHQgdmFsdWVzIGZvciB0aGUgbmV3IGJpdG1hcCwgY2FuIGJlCiAgIC0tICBudWxsIGluIHdoaWNo IGNhc2UgdGhlIHJvb3Qgd2luZG93IGlzIHVzZWQuCiAgIC0tICBEYXRhIGlzIHRoZSBYQk0gZGF0 YS4KICAgLS0gIFdpZHRoIGlzIHRoZSB3aWR0aCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMu CiAgIC0tICBIZWlnaHQgaXMgdGhlIGhlaWdodCBvZiB0aGUgbmV3IGJpdG1hcCBpbiBwaXhlbHMu CiAgIC0tICBEZXB0aCBpcyB0aGUgZGVwdGggKG51bWJlciBvZiBiaXRzIHBlciBwaXhlbCkgb2Yg dGhlIG5ldyBwaXhtYXAuCiAgIC0tICBGZyBpcyB0aGUgZm9yZWdyb3VuZCBjb2xvci4KICAgLS0g IEJnIGlzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLgoKICAgcHJvY2VkdXJlIENyZWF0ZV9Gcm9tX1hw bSAoUGl4bWFwICAgICAgOiAgICBvdXQgR2RrX1BpeG1hcDsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgV2luZG93ICAgICAgOiBpbiAgICAgR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBNYXNrICAgICAgICA6IGluIG91dCBHZGsuQml0bWFw Lkdka19CaXRtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zcGFyZW50IDog aW4gICAgIEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEZpbGVuYW1lICAgIDogaW4gICAgIFN0cmluZyk7CiAgIC0tICBDcmVhdGUgYSBwaXhtYXAgZnJv bSBhIFhQTSBmaWxlLgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQg dmFsdWVzIGZvciB0aGUgbmV3IHBpeG1hcC4KICAgLS0gIE1hc2sgaXMgYSBwb2ludGVyIHRvIGEg cGxhY2UgdG8gc3RvcmUgYSBiaXRtYXAgcmVwcmVzZW50aW5nIHRoZQogICAtLSAgdHJhbnNwYXJl bmN5IG1hc2sgb2YgdGhlIFhQTSBmaWxlLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZQogICAt LSAgdHJhbnNwYXJlbmN5IHdpbGwgYmUgaWdub3JlZC4KICAgLS0gIFRyYW5zcGFyZW50IGlzIHRo ZSBjb2xvciB0byBiZSB1c2VkIGZvciB0aGUgcGl4ZWxzIHRoYXQgYXJlIHRyYW5zcGFyZW50CiAg IC0tICBpbiB0aGUgaW5wdXQgZmlsZS4gQ2FuIGJlIG51bGwsIGluIHdoaWNoIGNhc2UgYSBkZWZh dWx0IGNvbG9yIHdpbGwgYmUKICAgLS0gIHVzZWQuCiAgIC0tICBGaWxlbmFtZSBpcyB0aGUgZmls ZW5hbWUgb2YgYSBmaWxlIGNvbnRhaW5pbmcgWFBNIGRhdGEuCgogICBwcm9jZWR1cmUgQ3JlYXRl X0Zyb21fWHBtIChQaXhtYXAgICAgICA6ICAgIG91dCBHZGtfUGl4bWFwOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBXaW5kb3cgICAgICA6IGluICAgICBHZGsuV2luZG93Lkdka19XaW5k b3c7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9ybWFwICAgIDogaW4gICAgIEdk ay5Db2xvci5HZGtfQ29sb3JtYXA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hc2sg ICAgICAgIDogaW4gb3V0IEdkay5CaXRtYXAuR2RrX0JpdG1hcDsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgVHJhbnNwYXJlbnQgOiBpbiAgICAgR2RrLkNvbG9yLkdka19Db2xvcjsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgOiBpbiAgICAgU3RyaW5nKTsK ICAgLS0gIENyZWF0ZSBhIHBpeG1hcCBmcm9tIGEgWFBNIGZpbGUgdXNpbmcgYSBwYXJ0aWN1bGFy IGNvbG9ybWFwLgogICAtLSAgV2luZG93IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIGRlZmF1bHQgdmFs dWVzIGZvciB0aGUgbmV3IHBpeG1hcC4gQ2FuIGJlCiAgIC0tICBudWxsIGlmIGNvbG9ybWFwIGlz IGdpdmVuLgogICAtLSAgQ29sb3JtYXAgaXMgdGhlIEdka19Db2xvcm1hcCB0aGF0IHRoZSBuZXcg cGl4bWFwIHdpbGwgdXNlLiBJZiBvbWl0dGVkLAogICAtLSAgdGhlIGNvbG9ybWFwIGZvciB3aW5k b3cgd2lsbCBiZSB1c2VkLgogICAtLSAgTWFzayBpcyBhIHBvaW50ZXIgdG8gYSBwbGFjZSB0byBz dG9yZSBhIGJpdG1hcCByZXByZXNlbnRpbmcgdGhlCiAgIC0tICB0cmFuc3BhcmVuY3kgbWFzayBv ZiB0aGUgWFBNIGZpbGUuIENhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlCiAgIC0tICB0cmFuc3Bh cmVuY3kgd2lsbCBiZSBpZ25vcmVkLgogICAtLSAgVHJhbnNwYXJlbnQgaXMgdGhlIGNvbG9yIHRv IGJlIHVzZWQgZm9yIHRoZSBwaXhlbHMgdGhhdCBhcmUgdHJhbnNwYXJlbnQKICAgLS0gIGluIHRo ZSBpbnB1dCBmaWxlLiBDYW4gYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIGRlZmF1bHQgY29sb3Ig d2lsbCBiZQogICAtLSAgdXNlZC4KICAgLS0gIEZpbGVuYW1lIGlzIHRoZSBmaWxlbmFtZSBvZiBh IGZpbGUgY29udGFpbmluZyBYUE0gZGF0YS4KCiAgIHByb2NlZHVyZSBDcmVhdGVfRnJvbV9YcG1f RAogICAgIChQaXhtYXAgICAgICA6ICAgIG91dCBHZGtfUGl4bWFwOwogICAgICBXaW5kb3cgICAg ICA6IGluICAgICBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAgICAgIE1hc2sgICAgICAgIDogaW4g b3V0IEdkay5CaXRtYXAuR2RrX0JpdG1hcDsKICAgICAgVHJhbnNwYXJlbnQgOiBpbiAgICAgR2Rr LkNvbG9yLkdka19Db2xvcjsKICAgICAgRGF0YSAgICAgICAgOiBpbiAgICAgR3RrYWRhLlR5cGVz LkNoYXJzX1B0cl9BcnJheSk7CiAgIC0tICBDcmVhdGUgYSBwaXhtYXAgZnJvbSBkYXRhIGluIFhQ TSBmb3JtYXQuCiAgIC0tICBXaW5kb3cgaXMgdXNlZCB0byBkZXRlcm1pbmUgZGVmYXVsdCB2YWx1 ZXMgZm9yIHRoZSBuZXcgcGl4bWFwLgogICAtLSAgTWFzayBpcyBhIHBvaW50ZXIgdG8gYSBwbGFj ZSB0byBzdG9yZSBhIGJpdG1hcCByZXByZXNlbnRpbmcgdGhlCiAgIC0tICB0cmFuc3BhcmVuY3kg bWFzayBvZiB0aGUgWFBNIGZpbGUuIENhbiBiZSBudWxsLCBpbiB3aGljaCBjYXNlCiAgIC0tICB0 cmFuc3BhcmVuY3kgd2lsbCBiZSBpZ25vcmVkLgogICAtLSAgVHJhbnNwYXJlbnQgd2lsbCBiZSB1 c2VkIGZvciB0aGUgcGl4ZWxzIHRoYXQgYXJlIHRyYW5zcGFyZW50IGluIHRoZQogICAtLSAgaW5w dXQgZmlsZS4gQ2FuIGJlIG51bGwgaW4gd2hpY2ggY2FzZSBhIGRlZmF1bHQgY29sb3Igd2lsbCBi ZSB1c2VkLgogICAtLSAgRGF0YSBpcyBhIHBvaW50ZXIgdG8gYSBzdHJpbmcgY29udGFpbmluZyB0 aGUgWFBNIGRhdGEuCgogICBwcm9jZWR1cmUgQ3JlYXRlX0Zyb21fWHBtX0QKICAgICAoUGl4bWFw ICAgICAgOiAgICBvdXQgR2RrX1BpeG1hcDsKICAgICAgV2luZG93ICAgICAgOiBpbiAgICAgR2Rr LldpbmRvdy5HZGtfV2luZG93OwogICAgICBDb2xvcm1hcCAgICA6IGluICAgICBHZGsuQ29sb3Iu R2RrX0NvbG9ybWFwOwogICAgICBNYXNrICAgICAgICA6IGluIG91dCBHZGsuQml0bWFwLkdka19C aXRtYXA7CiAgICAgIFRyYW5zcGFyZW50IDogaW4gICAgIEdkay5Db2xvci5HZGtfQ29sb3I7CiAg ICAgIERhdGEgICAgICAgIDogaW4gICAgIEd0a2FkYS5UeXBlcy5DaGFyc19QdHJfQXJyYXkpOwog ICAtLSAgQ3JlYXRlIGEgcGl4bWFwIGZyb20gZGF0YSBpbiBYUE0gZm9ybWF0IHVzaW5nIGEgcGFy dGljdWxhciBjb2xvcm1hcC4KICAgLS0gIFdpbmRvdyBpcyB1c2VkIHRvIGRldGVybWluZSBkZWZh dWx0IHZhbHVlcyBmb3IgdGhlIG5ldyBwaXhtYXAuCiAgIC0tICBDb2xvcm1hcCBpcyB0aGUgR2Rr X0NvbG9ybWFwIHRoYXQgdGhlIG5ldyBwaXhtYXAgd2lsbCBiZSB1c2UuIElmCiAgIC0tICBvbWl0 dGVkLCB0aGUgY29sb3JtYXAgZm9yIHdpbmRvdyB3aWxsIGJlIHVzZWQuCiAgIC0tICBNYXNrIGlz IGEgcG9pbnRlciB0byBhIHBsYWNlIHRvIHN0b3JlIGEgYml0bWFwIHJlcHJlc2VudGluZyB0aGUK ICAgLS0gIHRyYW5zcGFyZW5jeSBtYXNrIG9mIHRoZSBYUE0gZmlsZS4gQ2FuIGJlIG51bGwsIGlu IHdoaWNoIGNhc2UKICAgLS0gIHRyYW5zcGFyZW5jeSB3aWxsIGJlIGlnbm9yZWQuCiAgIC0tICBU cmFuc3BhcmVudCB3aWxsIGJlIHVzZWQgZm9yIHRoZSBwaXhlbHMgdGhhdCBhcmUgdHJhbnNwYXJl bnQgaW4gdGhlCiAgIC0tICBpbnB1dCBmaWxlLiBDYW4gYmUgbnVsbCBpbiB3aGljaCBjYXNlIGEg ZGVmYXVsdCBjb2xvciB3aWxsIGJlIHVzZWQuCiAgIC0tICBEYXRhIGlzIGEgcG9pbnRlciB0byBh IHN0cmluZyBjb250YWluaW5nIHRoZSBYUE0gZGF0YS4KCnByaXZhdGUKICAgTnVsbF9QaXhtYXAg OiBjb25zdGFudCBHZGtfUGl4bWFwIDo9IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwg Imdka19waXhtYXBfcmVmIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAiZ2RrX3BpeG1h cF91bnJlZiIpOwplbmQgR2RrLlBpeG1hcDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3Rr QWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgt MTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBK b2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0g TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAg ICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2Vu ZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBv dGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAg ZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJs ZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAg LS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVh c29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5 IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2xp YjsgdXNlIEdsaWI7CgpwYWNrYWdlIEdkay5SZWN0YW5nbGUgaXMKCiAgIHR5cGUgR2RrX1JlY3Rh bmdsZSBpcyByZWNvcmQKICAgICAgWCAgICAgIDogR2ludDE2OwogICAgICBZICAgICAgOiBHaW50 MTY7CiAgICAgIFdpZHRoICA6IEd1aW50MTY7CiAgICAgIEhlaWdodCA6IEd1aW50MTY7CiAgIGVu ZCByZWNvcmQ7CiAgIHByYWdtYSBQYWNrIChHZGtfUmVjdGFuZ2xlKTsKCiAgIEZ1bGxfQXJlYSA6 IGNvbnN0YW50IEdka19SZWN0YW5nbGU7CiAgIC0tICBUaGUgY29uc3RhbnQgYWJvdmUgY2FuIGJl IHVzZWQgaW4gR3RrLldpZGdldC5EcmF3IHdoZW4geW91IHdhbnQgdG8KICAgLS0gIHJlZHJhdyB0 aGUgd2hvbGUgd2lkZ2V0CgogICBwcm9jZWR1cmUgSW50ZXJzZWN0CiAgICAgKFNyYzEgICAgICA6 IGluICAgICBHZGtfUmVjdGFuZ2xlOwogICAgICBTcmMyICAgICAgOiBpbiAgICAgR2RrX1JlY3Rh bmdsZTsKICAgICAgRGVzdCAgICAgIDogICAgb3V0IEdka19SZWN0YW5nbGU7CiAgICAgIEludGVy c2VjdCA6ICAgIG91dCBCb29sZWFuKTsKCiAgIHByb2NlZHVyZSBVbmlvbgogICAgIChTcmMxIDog aW4gICAgIEdka19SZWN0YW5nbGU7CiAgICAgIFNyYzIgOiBpbiAgICAgR2RrX1JlY3RhbmdsZTsK ICAgICAgRGVzdCA6ICAgIG91dCBHZGtfUmVjdGFuZ2xlKTsKCnByaXZhdGUKCiAgIEZ1bGxfQXJl YSA6IGNvbnN0YW50IEdka19SZWN0YW5nbGUgOj0KICAgICAoR2ludDE2J0ZpcnN0LCBHaW50MTYn Rmlyc3QsIEd1aW50MTYnTGFzdCwgR3VpbnQxNidMYXN0KTsKCmVuZCBHZGsuUmVjdGFuZ2xlOwot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUg R2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAg ICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAgICAgICAgICAgICAt LQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hh cmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAg ICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlz IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJy YXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQot LSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBp ZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQs IG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAt LQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0 aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93 ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRh YmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAg ICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKd2l0aCBHbGliOyB1c2UgR2xpYjsKd2l0aCBHZGsuUmVjdGFu Z2xlOwp3aXRoIEdkay5UeXBlczsKCnBhY2thZ2UgR2RrLlJlZ2lvbiBpcwoKICAgdHlwZSBHZGtf UmVnaW9uIGlzIG5ldyBHZGsuQ19Qcm94eTsKICAgTnVsbF9SZWdpb24gOiBjb25zdGFudCBHZGtf UmVnaW9uOwoKICAgcHJvY2VkdXJlIEdka19OZXcgKFJlZ2lvbiA6IG91dCBHZGtfUmVnaW9uKTsK CiAgIHByb2NlZHVyZSBEZXN0cm95IChSZWdpb24gOiBpbiBvdXQgR2RrX1JlZ2lvbik7CgogICBw cm9jZWR1cmUgR2V0X0NsaXBib3gKICAgICAoUmVnaW9uICAgIDogaW4gICAgIEdka19SZWdpb247 CiAgICAgIFJlY3RhbmdsZSA6ICAgIG91dCBHZGsuUmVjdGFuZ2xlLkdka19SZWN0YW5nbGUpOwoK ICAgZnVuY3Rpb24gRW1wdHkgKFJlZ2lvbiA6IGluIEdka19SZWdpb24pIHJldHVybiBCb29sZWFu OwoKICAgZnVuY3Rpb24gIj0iIChMZWZ0LCBSaWdodCA6IGluIEdka19SZWdpb24pIHJldHVybiBC b29sZWFuOwoKICAgZnVuY3Rpb24gUG9pbnRfSW4KICAgICAoUmVnaW9uIDogaW4gR2RrX1JlZ2lv bjsKICAgICAgWCwgWSAgIDogaW4gSW50ZWdlcikgcmV0dXJuIEJvb2xlYW47CgogICBmdW5jdGlv biBSZWN0X0luCiAgICAgKFJlZ2lvbiA6IGluIEdka19SZWdpb247CiAgICAgIFJlY3QgICA6IGlu IFJlY3RhbmdsZS5HZGtfUmVjdGFuZ2xlKSByZXR1cm4gVHlwZXMuR2RrX092ZXJsYXBfVHlwZTsK CiAgIHByb2NlZHVyZSBQb2x5Z29uCiAgICAgKFJlZ2lvbiA6ICAgIG91dCBHZGtfUmVnaW9uOwog ICAgICBQb2ludHMgOiBpbiAgICAgR2RrLlR5cGVzLkdka19Qb2ludHNfQXJyYXk7CiAgICAgIEZp bGxfUnVsZSA6IGluICAgICBUeXBlcy5HZGtfRmlsbF9SdWxlKTsKCiAgIHByb2NlZHVyZSBPZmZz ZXQKICAgICAoUmVnaW9uIDogaW4gR2RrX1JlZ2lvbjsKICAgICAgRHggICAgIDogaW4gR2ludDsK ICAgICAgRHkgICAgIDogaW4gR2ludCk7CgogICBwcm9jZWR1cmUgU2hyaW5rCiAgICAgKFJlZ2lv biA6IGluIEdka19SZWdpb247CiAgICAgIER4ICAgICA6IGluIEdpbnQ7CiAgICAgIER5ICAgICA6 IGluIEdpbnQpOwoKICAgcHJvY2VkdXJlIFVuaW9uX1dpdGhfUmVjdAogICAgIChSZXN1bHQgOiAg ICBvdXQgR2RrX1JlZ2lvbjsKICAgICAgUmVnaW9uIDogaW4gICAgIEdka19SZWdpb247CiAgICAg IFJlY3QgICA6IGluICAgICBSZWN0YW5nbGUuR2RrX1JlY3RhbmdsZSk7CgogICBwcm9jZWR1cmUg SW50ZXJzZWN0CiAgICAgKFJlc3VsdCAgOiAgICBvdXQgR2RrX1JlZ2lvbjsKICAgICAgU291cmNl MSA6IGluICAgICBHZGtfUmVnaW9uOwogICAgICBTb3VyY2UyIDogaW4gICAgIEdka19SZWdpb24p OwoKICAgcHJvY2VkdXJlIFVuaW9uCiAgICAgKFJlc3VsdCAgOiAgICAgb3V0IEdka19SZWdpb247 CiAgICAgIFNvdXJjZTEgOiBpbiAgICAgIEdka19SZWdpb247CiAgICAgIFNvdXJjZTIgOiBpbiAg ICAgIEdka19SZWdpb24pOwoKICAgcHJvY2VkdXJlIFN1YnN0cmFjdAogICAgIChSZXN1bHQgIDog ICAgIG91dCBHZGtfUmVnaW9uOwogICAgICBTb3VyY2UxIDogaW4gICAgICBHZGtfUmVnaW9uOwog ICAgICBTb3VyY2UyIDogaW4gICAgICBHZGtfUmVnaW9uKTsKCiAgIHByb2NlZHVyZSBHZGtfWG9y CiAgICAgKFJlc3VsdCAgOiAgICAgb3V0IEdka19SZWdpb247CiAgICAgIFNvdXJjZTEgOiBpbiAg ICAgIEdka19SZWdpb247CiAgICAgIFNvdXJjZTIgOiBpbiAgICAgIEdka19SZWdpb24pOwoKcHJp dmF0ZQogICBOdWxsX1JlZ2lvbiA6IGNvbnN0YW50IEdka19SZWdpb24gOj0gbnVsbDsKICAgcHJh Z21hIEltcG9ydCAoQywgT2Zmc2V0LCAiZ2RrX3JlZ2lvbl9vZmZzZXQiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgU2hyaW5rLCAiZ2RrX3JlZ2lvbl9zaHJpbmsiKTsKZW5kIEdkay5SZWdpb247Ci0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBH aW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFy bGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAg IC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJh cnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0t IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlm IG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwg b3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0t Ci0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRo ZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dl dmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFi bGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAg IC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdsaWI7IHVzZSBHbGliOwoKcGFja2FnZSBHZGsuVHlw ZXMgaXMKCiAgIHR5cGUgR2RrX0dlb21ldHJ5IGlzIHJlY29yZAogICAgICBNaW5fV2lkdGggICA6 IEdpbnQ7CiAgICAgIE1pbl9IZWlnaHQgIDogR2ludDsKICAgICAgTWF4X1dpZHRoICAgOiBHaW50 OwogICAgICBNYXhfSGVpZ2h0ICA6IEdpbnQ7CiAgICAgIEJhc2VfV2lkdGggIDogR2ludDsKICAg ICAgQmFzZV9IZWlnaHQgOiBHaW50OwogICAgICBXaWR0aF9JbmMgICA6IEdpbnQ7CiAgICAgIEhl aWdodF9JbmMgIDogR2ludDsKICAgICAgTWluX0FzcGVjdCAgOiBHZG91YmxlOwogICAgICBNYXhf QXNwZWN0ICA6IEdkb3VibGU7CiAgIGVuZCByZWNvcmQ7CiAgIHByYWdtYSBQYWNrIChHZGtfR2Vv bWV0cnkpOwoKICAgdHlwZSBHZGtfUG9pbnQgaXMgcmVjb3JkCiAgICAgIFggOiBHaW50MTY7CiAg ICAgIFkgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIHByYWdtYSBQYWNrIChHZGtfUG9pbnQp OwogICBmb3IgR2RrX1BvaW50J1NpemUgdXNlIEdpbnQnU2l6ZTsKCiAgIHR5cGUgR2RrX1BvaW50 c19BcnJheSBpcyBhcnJheSAoUG9zaXRpdmUgcmFuZ2UgPD4pIG9mIEdka19Qb2ludDsKICAgcHJh Z21hIFBhY2sgKEdka19Qb2ludHNfQXJyYXkpOwoKICAgdHlwZSBHZGtfU2VnbWVudCBpcyByZWNv cmQKICAgICAgWDEgOiBHaW50MTY7CiAgICAgIFkxIDogR2ludDE2OwogICAgICBYMiA6IEdpbnQx NjsKICAgICAgWTIgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIHByYWdtYSBQYWNrIChHZGtf U2VnbWVudCk7CiAgIGZvciBHZGtfU2VnbWVudCdTaXplIHVzZSA2NDsKCiAgIHR5cGUgR2RrX1Nl Z21lbnRzX0FycmF5IGlzIGFycmF5IChQb3NpdGl2ZSByYW5nZSA8Pikgb2YgR2RrX1NlZ21lbnQ7 CiAgIHByYWdtYSBQYWNrIChHZGtfU2VnbWVudHNfQXJyYXkpOwoKICAgLS0KICAgLS0gIFNlZSBh dCB0aGUgZW5kIG9mIHRoZSBwYWNrYWdlIGEgbGlzdCBvZiBhbGwgdGhlIHR5cGVzIHRoYXQKICAg LS0gIGhhdmUgbm90IGJlZW4gImJvdW5kIi4KICAgLS0KCiAgIHR5cGUgR2RrX0F0b20gaXMgbmV3 IEd1bG9uZzsKICAgLS0gIFRoaXMgdHlwZSByZXByZXNlbnRzIGEgcHJvcGVydHkgb2YgdGhlIFgt c2VydmVyLCB0aGF0IGNhbiBiZQogICAtLSAgbWFuaXB1bGF0ZWQgdGhyb3VnaCBmdW5jdGlvbnMg aW4gR2RrLlByb3BlcnR5LiBUaGV5IGhhdmUgYW4gYXNzb2NpYXRlZAogICAtLSAgbmFtZSwgdGhh dCBjYW4gYmUgcHJpbnRlZCwgYXMgd2VsbCBhcyBhIHZhbHVlIHdob3NlIHR5cGUgbWF5IHZhcnku CgogICB0eXBlIEdka19BeGlzX1VzZSBpcwogICAgIChBeGlzX0lnbm9yZSwKICAgICAgQXhpc19Y LAogICAgICBBeGlzX1ksCiAgICAgIEF4aXNfUHJlc3N1cmUsCiAgICAgIEF4aXNfWF9UaWx0LAog ICAgICBBeGlzX1lfVGlsdCwKICAgICAgQXhpc19MYXN0KTsKCiAgIHR5cGUgR2RrX0J5dGVfT3Jk ZXIgaXMgKExzYl9GaXJzdCwgTXNiX0ZpcnN0KTsKCiAgIHR5cGUgR2RrX0NhcF9TdHlsZSBpcyAo Q2FwX05vdF9MYXN0LCBDYXBfQnV0dCwgQ2FwX1JvdW5kLCBDYXBfUHJvamVjdGluZyk7CgogICB0 eXBlIEdka19Dcm9zc2luZ19Nb2RlIGlzIChDcm9zc2luZ19Ob3JtYWwsIENyb3NzaW5nX0dyYWIs IENyb3NzaW5nX1VuZ3JhYik7CgogICB0eXBlIEdka19DdXJzb3JfVHlwZSBpcwogICAgIChYX0N1 cnNvciwKICAgICAgQXJyb3csCiAgICAgIEJhc2VkX0Fycm93X0Rvd24sCiAgICAgIEJhc2VkX0Fy cm93X1VwLAogICAgICBCb2F0LAogICAgICBCb2dvc2l0eSwKICAgICAgQm90dG9tX0xlZnRfQ29y bmVyLAogICAgICBCb3R0b21fUmlnaHRfQ29ybmVyLAogICAgICBCb3R0b21fU2lkZSwKICAgICAg Qm90dG9tX1RlZSwKICAgICAgQm94X1NwaXJhbCwKICAgICAgQ2VudGVyX1B0ciwKICAgICAgQ2ly Y2xlLAogICAgICBDbG9jaywKICAgICAgQ29mZmVlX011ZywKICAgICAgQ3Jvc3MsCiAgICAgIENy b3NzX1JldmVyc2UsCiAgICAgIENyb3NzaGFpciwKICAgICAgRGlhbW9uZF9Dcm9zcywKICAgICAg RG90LAogICAgICBEb3Rib3gsCiAgICAgIERvdWJsZV9BcnJvdywKICAgICAgRHJhZnRfTGFyZ2Us CiAgICAgIERyYWZ0X1NtYWxsLAogICAgICBEcmFwZWRfQm94LAogICAgICBFeGNoYW5nZSwKICAg ICAgRmxldXIsCiAgICAgIEdvYmJsZXIsCiAgICAgIEd1bWJ5LAogICAgICBIYW5kMSwKICAgICAg SGFuZDIsCiAgICAgIEhlYXJ0LAogICAgICBJY29uLAogICAgICBJcm9uX0Nyb3NzLAogICAgICBM ZWZ0X1B0ciwKICAgICAgTGVmdF9TaWRlLAogICAgICBMZWZ0X1RlZSwKICAgICAgTGVmdGJ1dHRv biwKICAgICAgTGxfQW5nbGUsCiAgICAgIExyX0FuZ2xlLAogICAgICBNYW4sCiAgICAgIE1pZGRs ZWJ1dHRvbiwKICAgICAgTW91c2UsCiAgICAgIFBlbmNpbCwKICAgICAgUGlyYXRlLAogICAgICBQ bHVzLAogICAgICBRdWVzdGlvbl9BcnJvdywKICAgICAgUmlnaHRfUHRyLAogICAgICBSaWdodF9T aWRlLAogICAgICBSaWdodF9UZWUsCiAgICAgIFJpZ2h0YnV0dG9uLAogICAgICBSdGxfTG9nbywK ICAgICAgU2FpbGJvYXQsCiAgICAgIFNiX0Rvd25fQXJyb3csCiAgICAgIFNiX0hfRG91YmxlX0Fy cm93LAogICAgICBTYl9MZWZ0X0Fycm93LAogICAgICBTYl9SaWdodF9BcnJvdywKICAgICAgU2Jf VXBfQXJyb3csCiAgICAgIFNiX1ZfRG91YmxlX0Fycm93LAogICAgICBTaHV0dGxlLAogICAgICBT aXppbmcsCiAgICAgIFNwaWRlciwKICAgICAgU3ByYXljYW4sCiAgICAgIFN0YXIsCiAgICAgIFRh cmdldCwKICAgICAgVGNyb3NzLAogICAgICBUb3BfTGVmdF9BcnJvdywKICAgICAgVG9wX0xlZnRf Q29ybmVyLAogICAgICBUb3BfUmlnaHRfQ29ybmVyLAogICAgICBUb3BfU2lkZSwKICAgICAgVG9w X1RlZSwKICAgICAgVHJlaywKICAgICAgVWxfQW5nbGUsCiAgICAgIFVtYnJlbGxhLAogICAgICBV cl9BbmdsZSwKICAgICAgV2F0Y2gsCiAgICAgIFh0ZXJtKTsKCiAgIHR5cGUgR2RrX0RldmljZV9J ZCBpcyBuZXcgR3VpbnQzMjsKICAgLS0gIFRoaXMgdHlwZSBpcyBzcGVjaWZpYyB0byBHdGtBZGEu IEluIEdkaywgZ3VpbnQzMiBpcyB1c2VkIGluc3RlYWQuCgogICB0eXBlIEdka19FdmVudF9NYXNr IGlzIG1vZCAyICoqIDIxOwogICAtLSAgTm90ZSB0aGF0IHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUg ZXZlbnQgbWFzayBvZiBhIHdpZGdldCBpZiB5b3Ugd2FudAogICAtLSAgdG8gYmUgYWJsZSB0byBn ZXQgc29tZSBldmVudHMuIFRvIGNoYW5nZSB0aGlzIG1hc2ssIHRoZSB3aWRnZXQKICAgLS0gIG11 c3QgZmlyc3QgYmUgVW5yZWFsaXplZC4KCiAgIE51bGxfRXZlbnRfTWFzayAgICAgICAgICA6IGNv bnN0YW50IEdka19FdmVudF9NYXNrOwogICBFeHBvc3VyZV9NYXNrICAgICAgICAgICAgOiBjb25z dGFudCBHZGtfRXZlbnRfTWFzazsKCiAgIFBvaW50ZXJfTW90aW9uX01hc2sgICAgICA6IGNvbnN0 YW50IEdka19FdmVudF9NYXNrOwogICAtLSAgRXZlcnkgdGltZSB0aGUgbW91c2UgbW92ZXMsIEd0 a0FkYSB3aWxsIHNlbmQgYSBNb3Rpb25fTm90aWZ5IGV2ZW50LgogICAtLSAgVGhlc2UgZXZlbnRz IHdpbGwgYmUgc2VudCBhcyBmYXN0IGFzIHBvc3NpYmxlLCBhbmQgeW91ciBhcHBsaWNhdGlvbgog ICAtLSAgbmVlZHMgdG8gYmUgYWJsZSB0byByZXNwb25kIGFzIGZhc3QgYXMgcG9zc2libGUgKGdl bmVyYWxseSBhYm91dAogICAtLSAgMjAwIGV2ZW50cyBwZXIgc2Vjb25kKS4KCiAgIFBvaW50ZXJf TW90aW9uX0hpbnRfTWFzayA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICAtLSAgR3RrQWRh IHdpbGwgb25seSBzZW5kIG9uZSBNb3Rpb25fTm90aWZ5IGV2ZW50IHdoZW4gdGhlIG1vdXNlIG1v dmVzLgogICAtLSAgVGhlIGhhbmRsZXIgc2hvdWxkIGNhbGwgR2RrLldpbmRvdy5HZXRfUG9pbnRl ciwgdG8gZ2V0IHRoZSBjdXJyZW50CiAgIC0tICBwb3NpdGlvbiBhbmQgc2lnbmFscyBHdGtBZGEg dGhhdCBpdCBpcyByZWFkeSB0byBnZXQgYW5vdGhlcgogICAtLSAgTW90aW9uX05vdGlmeSBzaWdu YWwuIE5vIG5ldyBNb3Rpb25fTm90aWZ5IHdpbGwgYmUgc2VudCB1bnRpbAogICAtLSAgR2V0X1Bv aW50ZXIgaGFzIGJlZW4gY2FsbGVkLgoKICAgQnV0dG9uX01vdGlvbl9NYXNrICAgICAgIDogY29u c3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEJ1dHRvbjFfTW90aW9uX01hc2sgICAgICA6IGNvbnN0 YW50IEdka19FdmVudF9NYXNrOwogICBCdXR0b24yX01vdGlvbl9NYXNrICAgICAgOiBjb25zdGFu dCBHZGtfRXZlbnRfTWFzazsKICAgQnV0dG9uM19Nb3Rpb25fTWFzayAgICAgIDogY29uc3RhbnQg R2RrX0V2ZW50X01hc2s7CiAgIEJ1dHRvbl9QcmVzc19NYXNrICAgICAgICA6IGNvbnN0YW50IEdk a19FdmVudF9NYXNrOwogICBCdXR0b25fUmVsZWFzZV9NYXNrICAgICAgOiBjb25zdGFudCBHZGtf RXZlbnRfTWFzazsKICAgS2V5X1ByZXNzX01hc2sgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0V2 ZW50X01hc2s7CiAgIEtleV9SZWxlYXNlX01hc2sgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVu dF9NYXNrOwogICBFbnRlcl9Ob3RpZnlfTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRf TWFzazsKICAgTGVhdmVfTm90aWZ5X01hc2sgICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01h c2s7CiAgIEZvY3VzX0NoYW5nZV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNr OwogICBTdHJ1Y3R1cmVfTWFzayAgICAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsK ICAgUHJvcGVydHlfQ2hhbmdlX01hc2sgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAg IFZpc2liaWxpdHlfTm90aWZ5X01hc2sgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwogICBQ cm94aW1pdHlfSW5fTWFzayAgICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzazsKICAgUHJv eGltaXR5X091dF9NYXNrICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2s7CiAgIEFsbF9F dmVudHNfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrOwoKICAgdHlwZSBH ZGtfRXZlbnRfVHlwZSBpcwogICAgIChOb3RoaW5nLAogICAgICBEZWxldGUsCiAgICAgIERlc3Ry b3ksCiAgICAgIEV4cG9zZSwKICAgICAgTW90aW9uX05vdGlmeSwKICAgICAgQnV0dG9uX1ByZXNz LAogICAgICBHZGtfMmJ1dHRvbl9QcmVzcywgIC0tICBEb3VibGUtY2xpY2sKICAgICAgR2RrXzNi dXR0b25fUHJlc3MsICAtLSAgVHJpcGxlLWNsaWNrCiAgICAgIEJ1dHRvbl9SZWxlYXNlLAogICAg ICBLZXlfUHJlc3MsCiAgICAgIEtleV9SZWxlYXNlLAogICAgICBFbnRlcl9Ob3RpZnksCiAgICAg IExlYXZlX05vdGlmeSwKICAgICAgRm9jdXNfQ2hhbmdlLAogICAgICBDb25maWd1cmUsCiAgICAg IE1hcCwKICAgICAgVW5tYXAsCiAgICAgIFByb3BlcnR5X05vdGlmeSwKICAgICAgU2VsZWN0aW9u X0NsZWFyLAogICAgICBTZWxlY3Rpb25fUmVxdWVzdCwKICAgICAgU2VsZWN0aW9uX05vdGlmeSwK ICAgICAgUHJveGltaXR5X0luLAogICAgICBQcm94aW1pdHlfT3V0LAogICAgICBEcmFnX0VudGVy LAogICAgICBEcmFnX0xlYXZlLAogICAgICBEcmFnX01vdGlvbiwKICAgICAgRHJhZ19TdGF0dXMs CiAgICAgIERyb3BfU3RhcnQsCiAgICAgIERyb3BfRmluaXNoZWQsCiAgICAgIENsaWVudF9FdmVu dCwKICAgICAgVmlzaWJpbGl0eV9Ob3RpZnksCiAgICAgIE5vX0V4cG9zZSk7CgogICB0eXBlIEdk a19FeHRlbnNpb25fTW9kZSBpcwogICAgIChFeHRlbnNpb25fRXZlbnRzX05vbmUsIEV4dGVuc2lv bl9FdmVudHNfQWxsLCBFeHRlbnNpb25fRXZlbnRzX0N1cnNvcik7CgogICB0eXBlIEdka19GaWxs IGlzIChTb2xpZCwgVGlsZWQsIFN0aXBwbGVkLCBPcGFxdWVfU3RpcHBsZWQpOwoKICAgdHlwZSBH ZGtfRmlsbF9SdWxlIGlzIChFdmVuX09kZF9SdWxlLCBXaW5kaW5nX1J1bGUpOwoKICAgdHlwZSBH ZGtfRnVuY3Rpb24gaXMKICAgICAoQ29weSwKICAgICAgSW52ZXJ0LAogICAgICBHZGtfWG9yLAog ICAgICBDbGVhciwKICAgICAgR2RrX0FuZCwKICAgICAgQW5kX1JldmVyc2UsCiAgICAgIEFuZF9J bnZlcnQsCiAgICAgIE5vb3AsCiAgICAgIEdka19PciwKICAgICAgRXF1aXYsCiAgICAgIE9yX1Jl dmVyc2UsCiAgICAgIENvcHlfSW52ZXJ0LAogICAgICBPcl9JbnZlcnQsCiAgICAgIE5hbmQsCiAg ICAgIFNldCk7CgogICB0eXBlIEdka19Kb2luX1N0eWxlIGlzIChKb2luX01pdGVyLCBKb2luX1Jv dW5kLCBKb2luX0JldmVsKTsKCiAgIHR5cGUgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSBpcyBuZXcg R3VpbnQ7CiAgIEljX1N0eWxlICAgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJp YnV0ZXNfVHlwZTsKICAgSWNfQ2xpZW50X1dpbmRvdyAgICAgICAgOiBjb25zdGFudCBHZGtfSUNf QXR0cmlidXRlc19UeXBlOwogICBJY19Gb2N1c19XaW5kb3cgICAgICAgICA6IGNvbnN0YW50IEdk a19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX0ZpbHRlcl9FdmVudHMgICAgICAgIDogY29uc3Rh bnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3BvdF9Mb2NhdGlvbiAgICAgICAgOiBj b25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19MaW5lX1NwYWNpbmcgICAgICAg ICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX0N1cnNvciAgICAgICAg ICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9G b250c2V0ICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19QcmVl ZGl0X0FyZWEgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIElj X1ByZWVkaXRfQXJlYV9OZWVkZWQgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsK ICAgSWNfUHJlZWRpdF9Gb3JlZ3JvdW5kICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19U eXBlOwogICBJY19QcmVlZGl0X0JhY2tncm91bmQgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1 dGVzX1R5cGU7CiAgIEljX1ByZWVkaXRfUGl4bWFwICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0 dHJpYnV0ZXNfVHlwZTsKICAgSWNfUHJlZWRpdF9Db2xvcm1hcCAgICAgOiBjb25zdGFudCBHZGtf SUNfQXR0cmlidXRlc19UeXBlOwogICBJY19TdGF0dXNfRm9udHNldCAgICAgICA6IGNvbnN0YW50 IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19BcmVhICAgICAgICAgIDogY29u c3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3RhdHVzX0FyZWFfTmVlZGVkICAg OiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19TdGF0dXNfRm9yZWdyb3Vu ZCAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19CYWNr Z3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZTsKICAgSWNfU3RhdHVz X1BpeG1hcCAgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlOwogICBJY19T dGF0dXNfQ29sb3JtYXAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGU7CiAg IEljX0FsbF9SZXEgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlw ZTsKICAgSWNfUHJlZWRpdF9BcmVhX1JlcSAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRl c19UeXBlOwogICBJY19QcmVlZGl0X1Bvc2l0aW9uX1JlcSA6IGNvbnN0YW50IEdka19JQ19BdHRy aWJ1dGVzX1R5cGU7CiAgIEljX1N0YXR1c19BcmVhX1JlcSAgICAgIDogY29uc3RhbnQgR2RrX0lD X0F0dHJpYnV0ZXNfVHlwZTsKCiAgIHR5cGUgR2RrX0lNX1N0eWxlIGlzIG5ldyBHdWludDsKICAg SW1fUHJlZWRpdF9BcmVhICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1ByZWVk aXRfQ2FsbGJhY2tzIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJbV9QcmVlZGl0X1Bvc2l0 aW9uICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1fUHJlZWRpdF9Ob3RoaW5nICAgOiBj b25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1ByZWVkaXRfTm9uZSAgICAgIDogY29uc3RhbnQg R2RrX0lNX1N0eWxlOwogICBJbV9QcmVlZGl0X01hc2sgICAgICA6IGNvbnN0YW50IEdka19JTV9T dHlsZTsKICAgSW1fU3RhdHVzX0FyZWEgICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAg IEltX1N0YXR1c19DYWxsYmFja3MgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlOwogICBJbV9TdGF0 dXNfTm90aGluZyAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZTsKICAgSW1fU3RhdHVzX05vbmUg ICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGU7CiAgIEltX1N0YXR1c19NYXNrICAgICAgIDog Y29uc3RhbnQgR2RrX0lNX1N0eWxlOwoKICAgdHlwZSBHZGtfSW5wdXRfQ29uZGl0aW9uIGlzIChJ bnB1dF9SZWFkLCBJbnB1dF9Xcml0ZSwgSW5wdXRfRXhjZXB0aW9uKTsKCiAgIHR5cGUgR2RrX0lu cHV0X01vZGUgaXMgKE1vZGVfRGlzYWJsZWQsIE1vZGVfU2NyZWVuLCBNb2RlX1dpbmRvdyk7Cgog ICB0eXBlIEdka19JbnB1dF9Tb3VyY2UgaXMKICAgICAoU291cmNlX01vdXNlLAogICAgICBTb3Vy Y2VfUGVuLAogICAgICBTb3VyY2VfRXJhc2VyLAogICAgICBTb3VyY2VfQ3Vyc29yKTsKCiAgIHR5 cGUgR2RrX0tleV9UeXBlIGlzIG5ldyBHdWludDsKICAgLS0gIHNlZSBHZGsuVHlwZXMuS2V5c3lt cyBmb3Iga2V5IHR5cGUgY29uc3RhbnRzCgogICB0eXBlIEdka19MaW5lX1N0eWxlIGlzIChMaW5l X1NvbGlkLCBMaW5lX09uX09mZl9EYXNoLCBMaW5lX0RvdWJsZV9EYXNoKTsKCiAgIHR5cGUgR2Rr X01vZGlmaWVyX1R5cGUgaXMgbmV3IEd1aW50OwogICBTaGlmdF9NYXNrICAgIDogY29uc3RhbnQg R2RrX01vZGlmaWVyX1R5cGU7CiAgIExvY2tfTWFzayAgICAgOiBjb25zdGFudCBHZGtfTW9kaWZp ZXJfVHlwZTsKICAgQ29udHJvbF9NYXNrICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwog ICBNb2QxX01hc2sgICAgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIE1vZDJfTWFz ayAgICAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgTW9kM19NYXNrICAgICA6IGNv bnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBNb2Q0X01hc2sgICAgIDogY29uc3RhbnQgR2Rr X01vZGlmaWVyX1R5cGU7CiAgIE1vZDVfTWFzayAgICAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJf VHlwZTsKICAgQnV0dG9uMV9NYXNrICA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBC dXR0b24yX01hc2sgIDogY29uc3RhbnQgR2RrX01vZGlmaWVyX1R5cGU7CiAgIEJ1dHRvbjNfTWFz ayAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlwZTsKICAgQnV0dG9uNF9NYXNrICA6IGNvbnN0 YW50IEdka19Nb2RpZmllcl9UeXBlOwogICBCdXR0b241X01hc2sgIDogY29uc3RhbnQgR2RrX01v ZGlmaWVyX1R5cGU7CiAgIFJlbGVhc2VfTWFzayAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJfVHlw ZTsKICAgTW9kaWZpZXJfTWFzayA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9UeXBlOwoKICAgdHlw ZSBHZGtfTm90aWZ5X1R5cGUgaXMKICAgICAoTm90aWZ5X0FuY2VzdG9yLAogICAgICBOb3RpZnlf VmlydHVhbCwKICAgICAgTm90aWZ5X0luZmVyaW9yLAogICAgICBOb3RpZnlfTm9uX0xpbmVhciwK ICAgICAgTm90aWZ5X05vbl9MaW5lYXJfVmlydHVhbCwKICAgICAgTm90aWZ5X1Vua25vd24pOwoK ICAgdHlwZSBHZGtfT3ZlcmxhcF9UeXBlIGlzCiAgICAgKE92ZXJsYXBfUmVjdGFuZ2xlX0luLAog ICAgICBPdmVybGFwX1JlY3RhbmdsZV9PdXQsCiAgICAgIE92ZXJsYXBfUmVjdGFuZ2xlX1BhcnQp OwoKICAgdHlwZSBHZGtfUHJvcF9Nb2RlIGlzCiAgICAgKFByb3BfTW9kZV9SZXBsYWNlLCBQcm9w X01vZGVfUHJlcGVuZCwgUHJvcF9Nb2RlX0FwcGVuZCk7CgogICB0eXBlIEdka19TdWJ3aW5kb3df TW9kZSBpcyAoQ2xpcF9CeV9DaGlsZHJlbiwgSW5jbHVkZV9JbmZlcmlvcnMpOwoKICAgdHlwZSBH ZGtfR0NfVmFsdWVzX01hc2sgaXMgbmV3IEd1aW50OwogICBHQ19Gb3JlZ3JvdW5kICAgIDogY29u c3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19CYWNrZ3JvdW5kICAgIDogY29uc3RhbnQg R2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19Gb250ICAgICAgICAgIDogY29uc3RhbnQgR2RrX0dD X1ZhbHVlc19NYXNrOwogICBHQ19GdW5jdGlvbiAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVl c19NYXNrOwogICBHQ19GaWxsICAgICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNr OwogICBHQ19UaWxlICAgICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBH Q19TdGlwcGxlICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19DbGlw X01hc2sgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19TdWJ3aW5kb3cg ICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19Uc19YX09yaWdpbiAgIDog Y29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19UeF9ZX09yaWdpbiAgIDogY29uc3Rh bnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19DbGlwX1hfT3JpZ2luIDogY29uc3RhbnQgR2Rr X0dDX1ZhbHVlc19NYXNrOwogICBHQ19DbGlwX1lfT3JpZ2luIDogY29uc3RhbnQgR2RrX0dDX1Zh bHVlc19NYXNrOwogICBHQ19FeHBvc3VyZXMgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19N YXNrOwogICBHQ19MaW5lX1dpZHRoICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwog ICBHQ19MaW5lX1N0eWxlICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19D YXBfU3R5bGUgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwogICBHQ19Kb2luX1N0 eWxlICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrOwoKICAgdHlwZSBHZGtfVmlzaWJp bGl0eV9TdGF0ZSBpcwogICAgIChWaXNpYmlsaXR5X1Vub2JzY3VyZWQsCiAgICAgIFZpc2liaWxp dHlfUGFydGlhbCwKICAgICAgVmlzaWJpbGl0eV9GdWxseV9PYnNjdXJlZCk7CgogICB0eXBlIEdk a19WaXN1YWxfVHlwZSBpcwogICAgIChWaXN1YWxfU3RhdGljX0dyYXksCiAgICAgIFZpc3VhbF9H cmF5c2NhbGUsCiAgICAgIFZpc3VhbF9TdGF0aWNfQ29sb3IsCiAgICAgIFZpc3VhbF9Qc2V1ZG9f Q29sb3IsCiAgICAgIFZpc3VhbF9UcnVlX0NvbG9yLAogICAgICBWaXN1YWxfRGlyZWN0X0NvbG9y KTsKCiAgIHR5cGUgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgaXMgbmV3IEd1aW50OwogICBX YV9UaXRsZSAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9Y ICAgICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9ZICAg ICAgICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9DdXJzb3Ig ICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9Db2xvcm1hcCA6 IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9WaXN1YWwgICA6IGNv bnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9XbWNsYXNzICA6IGNvbnN0 YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwogICBXYV9Ob3JlZGlyICA6IGNvbnN0YW50 IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlOwoKICAgdHlwZSBHZGtfV2luZG93X0NsYXNzIGlz IChJbnB1dF9PdXRwdXQsIElucHV0X09ubHkpOwoKICAgdHlwZSBHZGtfV2luZG93X0hpbnRzIGlz IG5ldyBHdWludDsKICAgR2RrX0hpbnRfUG9zICAgICAgICA6IGNvbnN0YW50IEdka19XaW5kb3df SGludHM7CiAgIEdka19IaW50X01pbl9TaXplICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRz OwogICBHZGtfSGludF9NYXhfU2l6ZSAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50czsKICAg R2RrX0hpbnRfQmFzZV9TaXplICA6IGNvbnN0YW50IEdka19XaW5kb3dfSGludHM7CiAgIEdka19I aW50X0FzcGVjdCAgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRzOwogICBHZGtfSGludF9S ZXNpemVfSW5jIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50czsKCiAgIHR5cGUgR2RrX1dpbmRv d19UeXBlIGlzCiAgICAgKFdpbmRvd19Sb290LAogICAgICBXaW5kb3dfVG9wbGV2ZWwsCiAgICAg IFdpbmRvd19DaGlsZCwKICAgICAgV2luZG93X0RpYWxvZywKICAgICAgV2luZG93X1RlbXAsCiAg ICAgIFdpbmRvd19QaXhtYXAsCiAgICAgIFdpbmRvd19Gb3JlaWduKTsKCiAgIHR5cGUgR2RrX1dt X0RlY29yYXRpb24gaXMgbmV3IEd1aW50OwogICBEZWNvcl9BbGwgICAgICA6IGNvbnN0YW50IEdk a19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9Cb3JkZXIgICA6IGNvbnN0YW50IEdka19XbV9EZWNv cmF0aW9uOwogICBEZWNvcl9SZXNpemVfSCA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwog ICBEZWNvcl9UaXRsZSAgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9N ZW51ICAgICA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9NaW5pbWl6ZSA6 IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uOwogICBEZWNvcl9NYXhpbWl6ZSA6IGNvbnN0YW50 IEdka19XbV9EZWNvcmF0aW9uOwoKICAgdHlwZSBHZGtfV21fRnVuY3Rpb24gaXMgbmV3IEd1aW50 OwogICBGdW5jX0FsbCAgICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5jX1Jl c2l6ZSAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5jX01vdmUgICAgIDogY29u c3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwogICBGdW5jX01pbmltaXplIDogY29uc3RhbnQgR2RrX1dt X0Z1bmN0aW9uOwogICBGdW5jX01heGltaXplIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwog ICBGdW5jX0Nsb3NlICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uOwoKICAgc3VidHlwZSBH ZGtfV0NoYXIgaXMgU3RhbmRhcmQuV2lkZV9DaGFyYWN0ZXI7CiAgIHN1YnR5cGUgR2RrX1dTdHJp bmcgaXMgU3RhbmRhcmQuV2lkZV9TdHJpbmc7CiAgIC0tICBHZGsgZG9lcyBub3QgZGVmaW5lIGEg R2RrX1dTdHJpbmcgdHlwZSwgYnV0IHVzZXMgcG9pbnRlcnMKICAgLS0gIHRvIEdka19XQ2hhciBp bnN0ZWFkLgoKcHJpdmF0ZQoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgUHJp dmF0ZSBjb25zdGFudHMgIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIE51bGxf RXZlbnRfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDA7CiAgIEV4 cG9zdXJlX01hc2sgICAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiog MTsKICAgUG9pbnRlcl9Nb3Rpb25fTWFzayAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2sg Oj0gMiAqKiAyOwogICBQb2ludGVyX01vdGlvbl9IaW50X01hc2sgOiBjb25zdGFudCBHZGtfRXZl bnRfTWFzayA6PSAyICoqIDM7CiAgIEJ1dHRvbl9Nb3Rpb25fTWFzayAgICAgICA6IGNvbnN0YW50 IEdka19FdmVudF9NYXNrIDo9IDIgKiogNDsKICAgQnV0dG9uMV9Nb3Rpb25fTWFzayAgICAgIDog Y29uc3RhbnQgR2RrX0V2ZW50X01hc2sgOj0gMiAqKiA1OwogICBCdXR0b24yX01vdGlvbl9NYXNr ICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6PSAyICoqIDY7CiAgIEJ1dHRvbjNfTW90 aW9uX01hc2sgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogNzsKICAgQnV0 dG9uX1ByZXNzX01hc2sgICAgICAgIDogY29uc3RhbnQgR2RrX0V2ZW50X01hc2sgOj0gMiAqKiA4 OwogICBCdXR0b25fUmVsZWFzZV9NYXNrICAgICAgOiBjb25zdGFudCBHZGtfRXZlbnRfTWFzayA6 PSAyICoqIDk7CiAgIEtleV9QcmVzc19NYXNrICAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVu dF9NYXNrIDo9IDIgKiogMTA7CiAgIEtleV9SZWxlYXNlX01hc2sgICAgICAgICA6IGNvbnN0YW50 IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTE7CiAgIEVudGVyX05vdGlmeV9NYXNrICAgICAgICA6 IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTI7CiAgIExlYXZlX05vdGlmeV9NYXNr ICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTM7CiAgIEZvY3VzX0No YW5nZV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTQ7CiAg IFN0cnVjdHVyZV9NYXNrICAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIg KiogMTU7CiAgIFByb3BlcnR5X0NoYW5nZV9NYXNrICAgICA6IGNvbnN0YW50IEdka19FdmVudF9N YXNrIDo9IDIgKiogMTY7CiAgIFZpc2liaWxpdHlfTm90aWZ5X01hc2sgICA6IGNvbnN0YW50IEdk a19FdmVudF9NYXNrIDo9IDIgKiogMTc7CiAgIFByb3hpbWl0eV9Jbl9NYXNrICAgICAgICA6IGNv bnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTg7CiAgIFByb3hpbWl0eV9PdXRfTWFzayAg ICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMTk7CiAgIFN1YnN0cnVjdHVy ZV9NYXNrICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDIgKiogMjA7CiAgIEFs bF9FdmVudHNfTWFzayAgICAgICAgICA6IGNvbnN0YW50IEdka19FdmVudF9NYXNrIDo9IDE2IzFG RkZGRiM7CgogICBJY19TdHlsZSAgICAgICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRy aWJ1dGVzX1R5cGUgOj0gMiAqKiAwOwogICBJY19DbGllbnRfV2luZG93ICAgICAgICA6IGNvbnN0 YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAxOwogICBJY19Gb2N1c19XaW5kb3cg ICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyOwogICBJ Y19GaWx0ZXJfRXZlbnRzICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUg Oj0gMiAqKiAzOwogICBJY19TcG90X0xvY2F0aW9uICAgICAgICA6IGNvbnN0YW50IEdka19JQ19B dHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA0OwogICBJY19MaW5lX1NwYWNpbmcgICAgICAgICA6IGNv bnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA1OwogICBJY19DdXJzb3IgICAg ICAgICAgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiA2Owog ICBJY19QcmVlZGl0X0ZvbnRzZXQgICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5 cGUgOj0gMiAqKiAxMDsKICAgSWNfUHJlZWRpdF9BcmVhICAgICAgICAgOiBjb25zdGFudCBHZGtf SUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTE7CiAgIEljX1ByZWVkaXRfQXJlYV9OZWVkZWQg IDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDEyOwogICBJY19QcmVl ZGl0X0ZvcmVncm91bmQgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAq KiAxMzsKICAgSWNfUHJlZWRpdF9CYWNrZ3JvdW5kICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmli dXRlc19UeXBlIDo9IDIgKiogMTQ7CiAgIEljX1ByZWVkaXRfUGl4bWFwICAgICAgIDogY29uc3Rh bnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDE1OwogICBJY19QcmVlZGl0X0NvbG9y bWFwICAgICA6IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAxNjsKICAg SWNfU3RhdHVzX0ZvbnRzZXQgICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBl IDo9IDIgKiogMjE7CiAgIEljX1N0YXR1c19BcmVhICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lD X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDIyOwogICBJY19TdGF0dXNfQXJlYV9OZWVkZWQgICA6 IGNvbnN0YW50IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyMzsKICAgSWNfU3RhdHVz X0ZvcmVncm91bmQgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiog MjQ7CiAgIEljX1N0YXR1c19CYWNrZ3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0 ZXNfVHlwZSA6PSAyICoqIDI1OwogICBJY19TdGF0dXNfUGl4bWFwICAgICAgICA6IGNvbnN0YW50 IEdka19JQ19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAyNjsKICAgSWNfU3RhdHVzX0NvbG9ybWFw ICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogMjc7CiAgIElj X0FsbF9SZXEgICAgICAgICAgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6 PQogICAgIEljX1N0eWxlIG9yIEljX0NsaWVudF9XaW5kb3c7CiAgIEljX1ByZWVkaXRfQXJlYV9S ZXEgICAgIDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PQogICAgIEljX1ByZWVk aXRfQXJlYSBvciBJY19QcmVlZGl0X0ZvbnRzZXQ7CiAgIEljX1ByZWVkaXRfUG9zaXRpb25fUmVx IDogY29uc3RhbnQgR2RrX0lDX0F0dHJpYnV0ZXNfVHlwZSA6PQogICAgIEljX1ByZWVkaXRfQXJl YSBvciBJY19TcG90X0xvY2F0aW9uIG9yIEljX1ByZWVkaXRfRm9udHNldDsKICAgSWNfU3RhdHVz X0FyZWFfUmVxICAgICAgOiBjb25zdGFudCBHZGtfSUNfQXR0cmlidXRlc19UeXBlIDo9CiAgICAg SWNfU3RhdHVzX0FyZWEgb3IgSWNfU3RhdHVzX0ZvbnRzZXQ7CgogICBJbV9QcmVlZGl0X0FyZWEg ICAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAxNiMwMDAxIzsKICAgSW1fUHJlZWRpdF9D YWxsYmFja3MgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMDAwMiM7CiAgIEltX1ByZWVk aXRfUG9zaXRpb24gIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2IzAwMDQjOwogICBJbV9Q cmVlZGl0X05vdGhpbmcgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAxNiMwMDA4IzsKICAg SW1fUHJlZWRpdF9Ob25lICAgICAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUgOj0gMTYjMDAxMCM7 CiAgIEltX1ByZWVkaXRfTWFzayAgICAgIDogY29uc3RhbnQgR2RrX0lNX1N0eWxlIDo9IDE2IzAw MUYjOwogICBJbV9TdGF0dXNfQXJlYSAgICAgICA6IGNvbnN0YW50IEdka19JTV9TdHlsZSA6PSAx NiMwMTAwIzsKICAgSW1fU3RhdHVzX0NhbGxiYWNrcyAgOiBjb25zdGFudCBHZGtfSU1fU3R5bGUg Oj0gMTYjMDIwMCM7CiAgIEltX1N0YXR1c19Ob3RoaW5nICAgIDogY29uc3RhbnQgR2RrX0lNX1N0 eWxlIDo9IDE2IzA0MDAjOwogICBJbV9TdGF0dXNfTm9uZSAgICAgICA6IGNvbnN0YW50IEdka19J TV9TdHlsZSA6PSAxNiMwODAwIzsKICAgSW1fU3RhdHVzX01hc2sgICAgICAgOiBjb25zdGFudCBH ZGtfSU1fU3R5bGUgOj0gMTYjMEYwMCM7CgogICBTaGlmdF9NYXNrICAgOiBjb25zdGFudCBHZGtf TW9kaWZpZXJfVHlwZSA6PSAyICoqIDA7CiAgIExvY2tfTWFzayAgICA6IGNvbnN0YW50IEdka19N b2RpZmllcl9UeXBlIDo9IDIgKiogMTsKICAgQ29udHJvbF9NYXNrIDogY29uc3RhbnQgR2RrX01v ZGlmaWVyX1R5cGUgOj0gMiAqKiAyOwogICBNb2QxX01hc2sgICAgOiBjb25zdGFudCBHZGtfTW9k aWZpZXJfVHlwZSA6PSAyICoqIDM7CiAgIE1vZDJfTWFzayAgICA6IGNvbnN0YW50IEdka19Nb2Rp Zmllcl9UeXBlIDo9IDIgKiogNDsKICAgTW9kM19NYXNrICAgIDogY29uc3RhbnQgR2RrX01vZGlm aWVyX1R5cGUgOj0gMiAqKiA1OwogICBNb2Q0X01hc2sgICAgOiBjb25zdGFudCBHZGtfTW9kaWZp ZXJfVHlwZSA6PSAyICoqIDY7CiAgIE1vZDVfTWFzayAgICA6IGNvbnN0YW50IEdka19Nb2RpZmll cl9UeXBlIDo9IDIgKiogNzsKICAgQnV0dG9uMV9NYXNrIDogY29uc3RhbnQgR2RrX01vZGlmaWVy X1R5cGUgOj0gMiAqKiA4OwogICBCdXR0b24yX01hc2sgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJf VHlwZSA6PSAyICoqIDk7CiAgIEJ1dHRvbjNfTWFzayA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9U eXBlIDo9IDIgKiogMTA7CiAgIEJ1dHRvbjRfTWFzayA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9U eXBlIDo9IDIgKiogMTE7CiAgIEJ1dHRvbjVfTWFzayA6IGNvbnN0YW50IEdka19Nb2RpZmllcl9U eXBlIDo9IDIgKiogMTI7CiAgIFJlbGVhc2VfTWFzayAgOiBjb25zdGFudCBHZGtfTW9kaWZpZXJf VHlwZSA6PSAyICoqIDEzOwogICBNb2RpZmllcl9NYXNrIDogY29uc3RhbnQgR2RrX01vZGlmaWVy X1R5cGUgOj0gMTYjM0ZGRiM7CgogICBXYV9UaXRsZSAgICA6IGNvbnN0YW50IEdka19XaW5kb3df QXR0cmlidXRlc19UeXBlIDo9IDIgKiogMTsKICAgV2FfWCAgICAgICAgOiBjb25zdGFudCBHZGtf V2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDI7CiAgIFdhX1kgICAgICAgIDogY29uc3Rh bnQgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAqKiAzOwogICBXYV9DdXJzb3IgICA6 IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBlIDo9IDIgKiogNDsKICAgV2FfQ29s b3JtYXAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0ZXNfVHlwZSA6PSAyICoqIDU7CiAg IFdhX1Zpc3VhbCAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19BdHRyaWJ1dGVzX1R5cGUgOj0gMiAq KiA2OwogICBXYV9XbWNsYXNzICA6IGNvbnN0YW50IEdka19XaW5kb3dfQXR0cmlidXRlc19UeXBl IDo9IDIgKiogNzsKICAgV2FfTm9yZWRpciAgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHJpYnV0 ZXNfVHlwZSA6PSAyICoqIDg7CgogICBHQ19Gb3JlZ3JvdW5kICAgIDogY29uc3RhbnQgR2RrX0dD X1ZhbHVlc19NYXNrIDo9IDIgKiogMDsKICAgR0NfQmFja2dyb3VuZCAgICA6IGNvbnN0YW50IEdk a19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE7CiAgIEdDX0ZvbnQgICAgICAgICAgOiBjb25zdGFu dCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAyOwogICBHQ19GdW5jdGlvbiAgICAgIDogY29u c3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMzsKICAgR0NfRmlsbCAgICAgICAgICA6 IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDQ7CiAgIEdDX1RpbGUgICAgICAg ICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiA1OwogICBHQ19TdGlwcGxl ICAgICAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogNjsKICAgR0NfQ2xp cF9NYXNrICAgICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDc7CiAgIEdD X1N1YndpbmRvdyAgICAgOiBjb25zdGFudCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiA4Owog ICBHQ19Uc19YX09yaWdpbiAgIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiog OTsKICAgR0NfVHhfWV9PcmlnaW4gICA6IGNvbnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAy ICoqIDEwOwogICBHQ19DbGlwX1hfT3JpZ2luIDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNr IDo9IDIgKiogMTE7CiAgIEdDX0NsaXBfWV9PcmlnaW4gOiBjb25zdGFudCBHZGtfR0NfVmFsdWVz X01hc2sgOj0gMiAqKiAxMjsKICAgR0NfRXhwb3N1cmVzICAgICA6IGNvbnN0YW50IEdka19HQ19W YWx1ZXNfTWFzayA6PSAyICoqIDEzOwogICBHQ19MaW5lX1dpZHRoICAgIDogY29uc3RhbnQgR2Rr X0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTQ7CiAgIEdDX0xpbmVfU3R5bGUgICAgOiBjb25zdGFu dCBHZGtfR0NfVmFsdWVzX01hc2sgOj0gMiAqKiAxNTsKICAgR0NfQ2FwX1N0eWxlICAgICA6IGNv bnN0YW50IEdka19HQ19WYWx1ZXNfTWFzayA6PSAyICoqIDE2OwogICBHQ19Kb2luX1N0eWxlICAg IDogY29uc3RhbnQgR2RrX0dDX1ZhbHVlc19NYXNrIDo9IDIgKiogMTc7CgogICBHZGtfSGludF9Q b3MgICAgICAgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50cyA6PSAyICoqIDA7CiAgIEdka19I aW50X01pbl9TaXplICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRzIDo9IDIgKiogMTsKICAg R2RrX0hpbnRfTWF4X1NpemUgICA6IGNvbnN0YW50IEdka19XaW5kb3dfSGludHMgOj0gMiAqKiAy OwogICBHZGtfSGludF9CYXNlX1NpemUgIDogY29uc3RhbnQgR2RrX1dpbmRvd19IaW50cyA6PSAy ICoqIDM7CiAgIEdka19IaW50X0FzcGVjdCAgICAgOiBjb25zdGFudCBHZGtfV2luZG93X0hpbnRz IDo9IDIgKiogNDsKICAgR2RrX0hpbnRfUmVzaXplX0luYyA6IGNvbnN0YW50IEdka19XaW5kb3df SGludHMgOj0gMiAqKiA1OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0t ICBSZXByZXNlbnRhdGlvbiBjbGF1c2VzICAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCiAgIGZvciBHZGtfRXZlbnRfVHlwZSB1c2UKICAgICAoTm90aGluZyA9PiAtMSwKICAg ICAgRGVsZXRlID0+IDAsCiAgICAgIERlc3Ryb3kgPT4gMSwKICAgICAgRXhwb3NlID0+IDIsCiAg ICAgIE1vdGlvbl9Ob3RpZnkgPT4gMywKICAgICAgQnV0dG9uX1ByZXNzID0+IDQsCiAgICAgIEdk a18yYnV0dG9uX1ByZXNzID0+IDUsCiAgICAgIEdka18zYnV0dG9uX1ByZXNzID0+IDYsCiAgICAg IEJ1dHRvbl9SZWxlYXNlID0+IDcsCiAgICAgIEtleV9QcmVzcyA9PiA4LAogICAgICBLZXlfUmVs ZWFzZSA9PiA5LAogICAgICBFbnRlcl9Ob3RpZnkgPT4gMTAsCiAgICAgIExlYXZlX05vdGlmeSA9 PiAxMSwKICAgICAgRm9jdXNfQ2hhbmdlID0+IDEyLAogICAgICBDb25maWd1cmUgPT4gMTMsCiAg ICAgIE1hcCA9PiAxNCwKICAgICAgVW5tYXAgPT4gMTUsCiAgICAgIFByb3BlcnR5X05vdGlmeSA9 PiAxNiwKICAgICAgU2VsZWN0aW9uX0NsZWFyID0+IDE3LAogICAgICBTZWxlY3Rpb25fUmVxdWVz dCA9PiAxOCwKICAgICAgU2VsZWN0aW9uX05vdGlmeSA9PiAxOSwKICAgICAgUHJveGltaXR5X0lu ID0+IDIwLAogICAgICBQcm94aW1pdHlfT3V0ID0+IDIxLAogICAgICBEcmFnX0VudGVyID0+IDIy LAogICAgICBEcmFnX0xlYXZlID0+IDIzLAogICAgICBEcmFnX01vdGlvbiA9PiAyNCwKICAgICAg RHJhZ19TdGF0dXMgPT4gMjUsCiAgICAgIERyb3BfU3RhcnQgPT4gMjYsCiAgICAgIERyb3BfRmlu aXNoZWQgPT4gMjcsCiAgICAgIENsaWVudF9FdmVudCA9PiAyOCwKICAgICAgVmlzaWJpbGl0eV9O b3RpZnkgPT4gMjksCiAgICAgIE5vX0V4cG9zZSA9PiAzMCk7CgogICBmb3IgR2RrX0lucHV0X0Nv bmRpdGlvbiB1c2UKICAgICAoSW5wdXRfUmVhZCAgICAgID0+IDIgKiogMCwKICAgICAgSW5wdXRf V3JpdGUgICAgID0+IDIgKiogMSwKICAgICAgSW5wdXRfRXhjZXB0aW9uID0+IDIgKiogMik7Cgog ICBmb3IgR2RrX1N1YndpbmRvd19Nb2RlIHVzZSAoQ2xpcF9CeV9DaGlsZHJlbiAgPT4gMCwgSW5j bHVkZV9JbmZlcmlvcnMgPT4gMSk7CgogICAtLSAgV2FybmluZyA6IHRoZXNlIHZhbHVlcyBzaG91 bGQgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBnZGsvZ2RjdXJzb3JzLmgKICAgLS0gID8/PyBI b3dldmVyLCBzaW5jZSB0aGVzZSB2YWx1ZXMgYXJlIGltcG9ydGVkIGZyb20gWGxpYiwgaXQgaXMg dW5saWtlbHkKICAgLS0gIHRoYXQgdGhleSB3aWxsIGNoYW5nZSBzb29uLgoKICAgZm9yIEdka19D dXJzb3JfVHlwZSB1c2UKICAgICAoWF9DdXJzb3IgPT4gMCwKICAgICAgQXJyb3cgICAgPT4gMiwK ICAgICAgQmFzZWRfQXJyb3dfRG93biA9PiA0LAogICAgICBCYXNlZF9BcnJvd19VcCA9PiA2LAog ICAgICBCb2F0ID0+IDgsCiAgICAgIEJvZ29zaXR5ID0+IDEwLAogICAgICBCb3R0b21fTGVmdF9D b3JuZXIgPT4gMTIsCiAgICAgIEJvdHRvbV9SaWdodF9Db3JuZXIgPT4gMTQsCiAgICAgIEJvdHRv bV9TaWRlID0+IDE2LAogICAgICBCb3R0b21fVGVlID0+IDE4LAogICAgICBCb3hfU3BpcmFsID0+ IDIwLAogICAgICBDZW50ZXJfUHRyID0+IDIyLAogICAgICBDaXJjbGUgPT4gMjQsCiAgICAgIENs b2NrID0+IDI2LAogICAgICBDb2ZmZWVfTXVnID0+IDI4LAogICAgICBDcm9zcyA9PiAzMCwKICAg ICAgQ3Jvc3NfUmV2ZXJzZSA9PiAzMiwKICAgICAgQ3Jvc3NoYWlyID0+IDM0LAogICAgICBEaWFt b25kX0Nyb3NzID0+IDM2LAogICAgICBEb3QgPT4gMzgsCiAgICAgIERvdGJveCA9PiA0MCwKICAg ICAgRG91YmxlX0Fycm93ID0+IDQyLAogICAgICBEcmFmdF9MYXJnZSA9PiA0NCwKICAgICAgRHJh ZnRfU21hbGwgPT4gNDYsCiAgICAgIERyYXBlZF9Cb3ggPT4gNDgsCiAgICAgIEV4Y2hhbmdlID0+ IDUwLAogICAgICBGbGV1ciA9PiA1MiwKICAgICAgR29iYmxlciA9PiA1NCwKICAgICAgR3VtYnkg PT4gNTYsCiAgICAgIEhhbmQxID0+IDU4LAogICAgICBIYW5kMiA9PiA2MCwKICAgICAgSGVhcnQg PT4gNjIsCiAgICAgIEljb24gPT4gNjQsCiAgICAgIElyb25fQ3Jvc3MgPT4gNjYsCiAgICAgIExl ZnRfUHRyID0+IDY4LAogICAgICBMZWZ0X1NpZGUgPT4gNzAsCiAgICAgIExlZnRfVGVlID0+IDcy LAogICAgICBMZWZ0YnV0dG9uID0+IDc0LAogICAgICBMbF9BbmdsZSA9PiA3NiwKICAgICAgTHJf QW5nbGUgPT4gNzgsCiAgICAgIE1hbiA9PiA4MCwKICAgICAgTWlkZGxlYnV0dG9uID0+IDgyLAog ICAgICBNb3VzZSA9PiA4NCwKICAgICAgUGVuY2lsID0+IDg2LAogICAgICBQaXJhdGUgPT4gODgs CiAgICAgIFBsdXMgPT4gOTAsCiAgICAgIFF1ZXN0aW9uX0Fycm93ID0+IDkyLAogICAgICBSaWdo dF9QdHIgPT4gOTQsCiAgICAgIFJpZ2h0X1NpZGUgPT4gOTYsCiAgICAgIFJpZ2h0X1RlZSA9PiA5 OCwKICAgICAgUmlnaHRidXR0b24gPT4gMTAwLAogICAgICBSdGxfTG9nbyA9PiAxMDIsCiAgICAg IFNhaWxib2F0ID0+IDEwNCwKICAgICAgU2JfRG93bl9BcnJvdyA9PiAxMDYsCiAgICAgIFNiX0hf RG91YmxlX0Fycm93ID0+IDEwOCwKICAgICAgU2JfTGVmdF9BcnJvdyA9PiAxMTAsCiAgICAgIFNi X1JpZ2h0X0Fycm93ID0+IDExMiwKICAgICAgU2JfVXBfQXJyb3cgPT4gMTE0LAogICAgICBTYl9W X0RvdWJsZV9BcnJvdyA9PiAxMTYsCiAgICAgIFNodXR0bGUgPT4gMTE4LAogICAgICBTaXppbmcg PT4gMTIwLAogICAgICBTcGlkZXIgPT4gMTIyLAogICAgICBTcHJheWNhbiA9PiAxMjQsCiAgICAg IFN0YXIgPT4gMTI2LAogICAgICBUYXJnZXQgPT4gMTI4LAogICAgICBUY3Jvc3MgPT4gMTMwLAog ICAgICBUb3BfTGVmdF9BcnJvdyA9PiAxMzIsCiAgICAgIFRvcF9MZWZ0X0Nvcm5lciA9PiAxMzQs CiAgICAgIFRvcF9SaWdodF9Db3JuZXIgPT4gMTM2LAogICAgICBUb3BfU2lkZSA9PiAxMzgsCiAg ICAgIFRvcF9UZWUgPT4gMTQwLAogICAgICBUcmVrID0+IDE0MiwKICAgICAgVWxfQW5nbGUgPT4g MTQ0LAogICAgICBVbWJyZWxsYSA9PiAxNDYsCiAgICAgIFVyX0FuZ2xlID0+IDE0OCwKICAgICAg V2F0Y2ggPT4gMTUwLAogICAgICBYdGVybSA9PiAxNTIpOwoKICAgRGVjb3JfQWxsICAgICAgOiBj b25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDA7CiAgIERlY29yX0JvcmRlciAgIDog Y29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiAxOwogICBEZWNvcl9SZXNpemVfSCA6 IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogMjsKICAgRGVjb3JfVGl0bGUgICAg OiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDM7CiAgIERlY29yX01lbnUgICAg IDogY29uc3RhbnQgR2RrX1dtX0RlY29yYXRpb24gOj0gMiAqKiA0OwogICBEZWNvcl9NaW5pbWl6 ZSA6IGNvbnN0YW50IEdka19XbV9EZWNvcmF0aW9uIDo9IDIgKiogNTsKICAgRGVjb3JfTWF4aW1p emUgOiBjb25zdGFudCBHZGtfV21fRGVjb3JhdGlvbiA6PSAyICoqIDY7CgogICBGdW5jX0FsbCAg ICAgIDogY29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogMDsKICAgRnVuY19SZXNpemUg ICA6IGNvbnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDE7CiAgIEZ1bmNfTW92ZSAgICAg OiBjb25zdGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiAyOwogICBGdW5jX01pbmltaXplIDog Y29uc3RhbnQgR2RrX1dtX0Z1bmN0aW9uIDo9IDIgKiogMzsKICAgRnVuY19NYXhpbWl6ZSA6IGNv bnN0YW50IEdka19XbV9GdW5jdGlvbiA6PSAyICoqIDQ7CiAgIEZ1bmNfQ2xvc2UgICAgOiBjb25z dGFudCBHZGtfV21fRnVuY3Rpb24gOj0gMiAqKiA1OwplbmQgR2RrLlR5cGVzOwoKLS0gIFRoZSBm b2xsb3dpbmcgdHlwZXMgd2VyZSBub3QgYm91bmQgYmVjYXVzZSBpdCBkaWQgbm90IHNlZW0KLS0g IHRvIGJlIG5lY2Vzc2FyeSAoeWV0KS4KLS0KLS0gICsgR2RrQ29sb3JDb250ZXh0TW9kZQotLSAg KyBHZGtDcm9zc2luZ01vZGUKLS0gICsgR2RrRmlsdGVyUmV0dXJuCi0tICArIEdka0ZvbnRUeXBl Ci0tICArIEdka05vdGlmeVR5cGUKLS0gICsgR2RrUHJvcGVydHlTdGF0ZQotLSAgKyBHZGtTdGF0 dXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3Ig dGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVk IENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAg ICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMg bGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAg LS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlv biwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1 bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFu ICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVz ZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90 IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhl Y3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNl LiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGggR2xpYjsgdXNlIEdsaWI7CndpdGggR2xpYi5H bGlzdDsKcHJhZ21hIEVsYWJvcmF0ZV9BbGwgKEdsaWIuR2xpc3QpOwoKd2l0aCBHZGsuVHlwZXM7 CndpdGggU3lzdGVtOwp3aXRoIFVuY2hlY2tlZF9Db252ZXJzaW9uOwoKcGFja2FnZSBHZGsuVmlz dWFsIGlzCgogICB0eXBlIEdka19WaXN1YWwgaXMgbmV3IEdkay5DX1Byb3h5OwogICBOdWxsX1Zp c3VhbCA6IGNvbnN0YW50IEdka19WaXN1YWw7CiAgIC0tICBUaGlzIHR5cGUgaXMgbm90IHByaXZh dGUgYmVjYXVzZSB3ZSBuZWVkIHRoZSBmdWxsIGRlY2xhcmF0aW9uCiAgIC0tICB0byBpbnN0YW5j aWF0ZSBHbGliLkdsaXN0LkdlbmVyaWNfTGlzdCB3aXRoIGl0LgoKICAgdHlwZSBHZGtfVmlzdWFs X1R5cGVfQXJyYXkgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pCiAgICAgb2YgVHlwZXMuR2Rr X1Zpc3VhbF9UeXBlOwoKICAgZnVuY3Rpb24gR2V0X0Jlc3RfRGVwdGggcmV0dXJuIEdpbnQ7Cgog ICBmdW5jdGlvbiBHZXRfQmVzdF9UeXBlIHJldHVybiBUeXBlcy5HZGtfVmlzdWFsX1R5cGU7Cgog ICBwcm9jZWR1cmUgR2V0X1N5c3RlbSAoVmlzdWFsIDogb3V0IEdka19WaXN1YWwpOwoKICAgcHJv Y2VkdXJlIEdldF9CZXN0IChWaXN1YWwgOiBvdXQgR2RrX1Zpc3VhbCk7CgogICBwcm9jZWR1cmUg R2V0X0Jlc3QKICAgICAoVmlzdWFsIDogICAgb3V0IEdka19WaXN1YWw7CiAgICAgIERlcHRoICA6 IGluICAgICBHaW50KTsKCiAgIHByb2NlZHVyZSBHZXRfQmVzdAogICAgIChWaXN1YWwgICAgICA6 ICAgIG91dCBHZGtfVmlzdWFsOwogICAgICBWaXN1YWxfVHlwZSA6IGluICAgICBUeXBlcy5HZGtf VmlzdWFsX1R5cGUpOwoKICAgcHJvY2VkdXJlIEdldF9CZXN0CiAgICAgKFZpc3VhbCAgICAgIDog ICAgb3V0IEdka19WaXN1YWw7CiAgICAgIERlcHRoICAgICAgIDogaW4gICAgIEdpbnQ7CiAgICAg IFZpc3VhbF9UeXBlIDogaW4gICAgIFR5cGVzLkdka19WaXN1YWxfVHlwZSk7CgogICBmdW5jdGlv biBRdWVyeV9EZXB0aHMgcmV0dXJuIEdpbnRfQXJyYXk7CgogICBmdW5jdGlvbiBRdWVyeV9WaXN1 YWxfVHlwZXMgcmV0dXJuIEdka19WaXN1YWxfVHlwZV9BcnJheTsKCiAgIGZ1bmN0aW9uIENvbnZl cnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uIChHZGtfVmlzdWFsLCBTeXN0ZW0uQWRkcmVz cyk7CiAgIGZ1bmN0aW9uIENvbnZlcnQgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uIChTeXN0 ZW0uQWRkcmVzcywgR2RrX1Zpc3VhbCk7CgogICBwYWNrYWdlIEdka19WaXN1YWxfTGlzdCBpcyBu ZXcgR2xpYi5HbGlzdC5HZW5lcmljX0xpc3QgKEdka19WaXN1YWwpOwoKICAgZnVuY3Rpb24gTGlz dF9WaXN1YWxzIHJldHVybiBHZGtfVmlzdWFsX0xpc3QuR2xpc3Q7Cgpwcml2YXRlCiAgIE51bGxf VmlzdWFsIDogY29uc3RhbnQgR2RrX1Zpc3VhbCA6PSBudWxsOwogICBwcmFnbWEgSW1wb3J0IChD LCBHZXRfQmVzdF9EZXB0aCwgImdka192aXN1YWxfZ2V0X2Jlc3RfZGVwdGgiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgR2V0X0Jlc3RfVHlwZSwgImdka192aXN1YWxfZ2V0X2Jlc3RfdHlwZSIpOwpl bmQgR2RrLlZpc3VhbDsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUg YmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tl ciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAg ICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0g R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0K LS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVj aWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAg LS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0 byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5 IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3Zl cmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0 aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhl ICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1 YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICBBIEdka19XaW5kb3cgaXMg dGhlIHBoeXNpY2FsIHdpbmRvdyB0aGF0IGFwcGVhcnMgb24gdGhlIHNjcmVlbi4KLS0gIFRoaXMg aXMgdGhlIGxvdy1sZXZlbCBzdHJ1Y3R1cmUga25vd24gdG8gdGhlIFggc2VydmVyIG9yIHRvIFdp bjMyLgotLSAgQWxsIHRoZSB3aWRnZXRzIGFyZSBpbnRlcm5hbGx5IGFzc29jaWF0ZWQgd2l0aCBh IHNwZWNpZmljIEdka19XaW5kb3csCi0tICB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMgc3VjaCBhcyB0 aGUgd2luZG93IGRlY29yYXRpb24sIHdoZXRoZXIgdGhlIHdpbmRvdwotLSAgY2FuIGJlIGludGVy YWN0aXZlbHkgcmVzaXplZCwuLi4KLS0KLS0gIE9uIHNvbWUgc3lzdGVtcywgdGhlIGdyYXBoaWMg c2VydmVyIGtub3dzIGhvdyB0byBkaXNwbGF5IG5vbi1yZWN0YW5ndWxhcgotLSAgd2luZG93cyAo dGhpcyBpcyBwYXJ0IG9mIHRoZSBYIGV4dGVuc2lvbnMpLgotLQotLSAgSWYgeW91IHNpbXBseSB3 YW50IHRvIGNyZWF0ZSBhIHNpbXBseSB3aW5kb3csIHlvdSBzaG91bGQgaW5zdGVhZCBsb29rCi0t ICBhdCB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGluIEd0ay5XaW5kb3cgYW5kIEd0ay5XaWRnZXQs IHdoaWNoIGFyZSBoaWdoZXIKLS0gIGxldmVsIHRoYW4gdGhlc2UuIFNlZSBhbHNvIHRoZSBmdW5j dGlvbiBHdGsuV2lkZ2V0LkdldF9XaW5kb3cgdG8gZ2V0IHRoZQotLSAgR2RrX1dpbmRvdyBhc3Nv Y2lhdGVkIHdpdGggYSB3aWRnZXQuIEJlIGF3YXJlIHRoYXQgc29tZSBvZiB0aGVtIGRvbid0IGhh dmUKLS0gIHN1Y2ggd2luZG93cyEKLS0KLS0gIFNjcm9sbGluZyBjYW4gYmUgaW1wbGVtZW50ZWQg aW4gc2V2ZXJhbCB3YXlzIHdpdGggR3RrQWRhICh0b3BsZXZlbAotLSAgc2Nyb2xsaW5nIHNob3Vs ZCBiZSBkb25lIHdpdGggdGhlIEd0a19TY3JvbGxlZF9XaW5kb3cgd2lkZ2V0LCBidXQgeW91Ci0t ICBtaWdodCB3YW50IHRvIGhhbmRsZSBzY3JvbGxpbmcgeW91cnNlbGYpLiBTZWUgdGhlIGZ1bmN0 aW9uCi0tICBHZGsuRXZlbnQuR2V0X0dyYXBoaWNzX0V4cG9zZSBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KLS0gIDxjX3ZlcnNpb24+MS4yLjc8L2NfdmVyc2lvbj4KCndpdGggU3lzdGVtOwp3aXRoIEds aWI7IHVzZSBHbGliOwp3aXRoIEdsaWIuR2xpc3Q7CndpdGggR2RrOwp3aXRoIEdkay5Db2xvcjsK d2l0aCBHZGsuQ3Vyc29yOwp3aXRoIEdkay5UeXBlczsKd2l0aCBHZGsuVmlzdWFsOwp3aXRoIEdk ay5XaW5kb3dfQXR0cjsKd2l0aCBVbmNoZWNrZWRfQ29udmVyc2lvbjsKCnBhY2thZ2UgR2RrLldp bmRvdyBpcwoKICAgc3VidHlwZSBHZGtfV2luZG93IGlzIEdkay5HZGtfV2luZG93OwoKICAgTnVs bF9XaW5kb3cgOiBjb25zdGFudCBHZGtfV2luZG93OwoKICAgcHJvY2VkdXJlIEdka19OZXcKICAg ICAoV2luZG93ICAgICAgICAgIDogb3V0IEdka19XaW5kb3c7CiAgICAgIFBhcmVudCAgICAgICAg ICA6IEdka19XaW5kb3c7CiAgICAgIEF0dHJpYnV0ZXMgICAgICA6IEdkay5XaW5kb3dfQXR0ci5H ZGtfV2luZG93X0F0dHI7CiAgICAgIEF0dHJpYnV0ZXNfTWFzayA6IEdkay5UeXBlcy5HZGtfV2lu ZG93X0F0dHJpYnV0ZXNfVHlwZSk7CgogICBwcm9jZWR1cmUgRm9yZWlnbl9OZXcgKFdpbmRvdyA6 IG91dCBHZGtfV2luZG93OyBBbl9JZCA6IEd1aW50MzIpOwoKICAgcHJvY2VkdXJlIERlc3Ryb3kg KFdpbmRvdyA6IGluIG91dCBHZGtfV2luZG93KTsKICAgLS0gIERlc3Ryb3kgYSB3aW5kb3cgYW5k IGFsbCBpdHMgY2hpbGRyZW4uCgogICBwcm9jZWR1cmUgUmVmIChXaW5kb3cgOiBHZGtfV2luZG93 KTsKICAgLS0gIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgYXNzb2NpYXRlZCB3aXRo IHdpbmRvdy4KCiAgIHByb2NlZHVyZSBVbnJlZiAoV2luZG93IDogR2RrX1dpbmRvdyk7CiAgIC0t ICBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFzc29jaWF0ZWQgd2l0aCB3aW5kb3cu CgogICBwcm9jZWR1cmUgV2luZG93X0F0X1BvaW50ZXIKICAgICAoV2luX1ggIDogb3V0IEdpbnQ7 CiAgICAgIFdpbl9ZICA6IG91dCBHaW50OwogICAgICBXaW5kb3cgOiBvdXQgR2RrX1dpbmRvdyk7 CiAgIC0tICBSZXR1cm4gdGhlIHdpbmRvdyBhbmQgdGhlIGNvb3JkaW5hdGVzIGNvcnJlc3BvbmRp bmcgdG8gdGhlIGN1cnJlbnQKICAgLS0gIHBvc2l0aW9uIG9mIHRoZSBjdXJzb3IuCgogICBwcm9j ZWR1cmUgU2hvdyAoV2luZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgSGlkZSAoV2lu ZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgV2l0aGRyYXcgKFdpbmRvdyA6IEdka19X aW5kb3cpOwoKICAgcHJvY2VkdXJlIE1vdmUKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAg ICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAgIDogR2ludCk7CgogICBwcm9jZWR1cmUgUmVz aXplCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFdpZHRoICA6IEdpbnQ7CiAgICAg IEhlaWdodCA6IEdpbnQpOwoKICAgcHJvY2VkdXJlIE1vdmVfUmVzaXplCiAgICAgKFdpbmRvdyA6 IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdpbnQ7CiAg ICAgIFdpZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwoKICAgcHJvY2VkdXJlIFJl cGFyZW50CiAgICAgKFdpbmRvdyAgICAgOiBHZGtfV2luZG93OwogICAgICBOZXdfUGFyZW50IDog R2RrX1dpbmRvdzsKICAgICAgWCAgICAgICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICAgICAgOiBH aW50KTsKCiAgIHByb2NlZHVyZSBDbGVhciAoV2luZG93IDogR2RrX1dpbmRvdyk7CgogICBwcm9j ZWR1cmUgQ2xlYXJfQXJlYQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBYICAgICAg OiBHaW50OwogICAgICBZICAgICAgOiBHaW50OwogICAgICBXaWR0aCAgOiBHaW50OwogICAgICBI ZWlnaHQgOiBHaW50KTsKICAgLS0gIERvZXMgbm90IGdlbmVyYXRlIGFuIGV4cG9zZSBldmVudC4K CiAgIHByb2NlZHVyZSBDbGVhcl9BcmVhX0UKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAg ICAgWCAgICAgIDogR2ludDsKICAgICAgWSAgICAgIDogR2ludDsKICAgICAgV2lkdGggIDogR2lu dDsKICAgICAgSGVpZ2h0IDogR2ludCk7CiAgIC0tICBTYW1lIGFzIENsZWFyX0FyZWEsIGJ1dCBn ZW5lcmF0ZXMgYW4gZXhwb3NlIGV2ZW50LgoKICAgcHJvY2VkdXJlIENvcHlfQXJlYQogICAgIChX aW5kb3cgICAgICAgIDogR2RrX1dpbmRvdzsKICAgICAgR2MgICAgICAgICAgICA6IEdkay5HZGtf R0M7CiAgICAgIFggICAgICAgICAgICAgOiBHaW50OwogICAgICBZICAgICAgICAgICAgIDogR2lu dDsKICAgICAgU291cmNlX1dpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFNvdXJjZV9YICAgICAg OiBHaW50OwogICAgICBTb3VyY2VfWSAgICAgIDogR2ludDsKICAgICAgV2lkdGggICAgICAgICA6 IEdpbnQ7CiAgICAgIEhlaWdodCAgICAgICAgOiBHaW50KTsKCiAgIHByb2NlZHVyZSBHZGtfUmFp c2UgKFdpbmRvdyA6IEdka19XaW5kb3cpOwoKICAgcHJvY2VkdXJlIExvd2VyIChXaW5kb3cgOiBH ZGtfV2luZG93KTsKCiAgIHByb2NlZHVyZSBTZXRfT3ZlcnJpZGVfUmVkaXJlY3QKICAgICAoV2lu ZG93ICAgICAgICAgICAgOiBHZGtfV2luZG93OwogICAgICBPdmVycmlkZV9SZWRpcmVjdCA6IEJv b2xlYW4gOj0gVHJ1ZSk7CgogICBwcm9jZWR1cmUgU2V0X0NoaWxkX1NoYXBlcyAoV2luZG93IDog R2RrX1dpbmRvdyk7CgogICBwcm9jZWR1cmUgTWVyZ2VfQ2hpbGRfU2hhcGVzIChXaW5kb3cgOiBH ZGtfV2luZG93KTsKCiAgIGZ1bmN0aW9uIElzX1Zpc2libGUgKFdpbmRvdyA6IEdka19XaW5kb3cp IHJldHVybiBCb29sZWFuOwoKICAgZnVuY3Rpb24gSXNfVmlld2FibGUgKFdpbmRvdyA6IEdka19X aW5kb3cpIHJldHVybiBCb29sZWFuOwoKICAgcHJvY2VkdXJlIFNldF9IaW50cwogICAgIChXaW5k b3cgICAgIDogR2RrX1dpbmRvdzsKICAgICAgWCAgICAgICAgICA6IEdpbnQ7CiAgICAgIFkgICAg ICAgICAgOiBHaW50OwogICAgICBNaW5fV2lkdGggIDogR2ludDsKICAgICAgTWluX0hlaWdodCA6 IEdpbnQ7CiAgICAgIE1heF9XaWR0aCAgOiBHaW50OwogICAgICBNYXhfSGVpZ2h0IDogR2ludDsK ICAgICAgRmxhZ3MgICAgICA6IEdkay5UeXBlcy5HZGtfV2luZG93X0hpbnRzKTsKCiAgIHByb2Nl ZHVyZSBTZXRfR2VvbWV0cnlfSGludHMKICAgICAoV2luZG93ICAgOiBHZGtfV2luZG93OwogICAg ICBHZW9tZXRyeSA6IGluIG91dCBHZGsuVHlwZXMuR2RrX0dlb21ldHJ5OwogICAgICBGbGFncyAg ICA6IEdkay5UeXBlcy5HZGtfV2luZG93X0hpbnRzKTsKCiAgIHByb2NlZHVyZSBTZXRfVGl0bGUg KFdpbmRvdyA6IEdka19XaW5kb3c7IFRpdGxlIDogU3RyaW5nKTsKCiAgIHByb2NlZHVyZSBTZXRf Um9sZSAoV2luZG93IDogR2RrX1dpbmRvdzsgUm9sZSA6IFN0cmluZyk7CgogICBwcm9jZWR1cmUg U2V0X1RyYW5zaWVudF9Gb3IKICAgICAoV2luZG93IDogR2RrX1dpbmRvdzsgTGVhZGVyIDogR2Rr X1dpbmRvdyk7CgogICBwcm9jZWR1cmUgU2V0X0JhY2tncm91bmQKICAgICAoV2luZG93IDogR2Rr X1dpbmRvdzsgQ29sb3IgOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAgIHByb2NlZHVyZSBTZXRf QmFja19QaXhtYXAKICAgICAoV2luZG93ICAgICAgICAgIDogR2RrX1dpbmRvdzsKICAgICAgUGl4 bWFwICAgICAgICAgIDogR2RrLkdka19QaXhtYXA7CiAgICAgIFBhcmVudF9SZWxhdGl2ZSA6IEJv b2xlYW4pOwoKICAgcHJvY2VkdXJlIFNldF9DdXJzb3IKICAgICAoV2luZG93IDogR2RrX1dpbmRv dzsgQ3Vyc29yIDogR2RrLkN1cnNvci5HZGtfQ3Vyc29yKTsKICAgLS0gIE5vdGU6IHRoZSB3aW5k b3cgbXVzdCBiZSByZWFsaXplZCBmaXJzdCwgaWUgaGF2ZSBhbiBhc3NvY2lhdGVkIFgxMS9XaW4z MgogICAtLSAgd2luZG93LgoKICAgcHJvY2VkdXJlIFNldF9Db2xvcm1hcAogICAgIChXaW5kb3cg OiBHZGtfV2luZG93OyBDb2xvcm1hcCA6IEdkay5Db2xvci5HZGtfQ29sb3JtYXApOwoKICAgcHJv Y2VkdXJlIEdldF9HZW9tZXRyeQogICAgIChXaW5kb3cgOiBHZGtfV2luZG93OwogICAgICBYICAg ICAgOiBvdXQgR2ludDsKICAgICAgWSAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFdpZHRoICA6IG91 dCBHaW50OwogICAgICBIZWlnaHQgOiBvdXQgR2ludDsKICAgICAgRGVwdGggIDogb3V0IEdpbnQp OwogICAtLSAgWW91IGNhbiBnZXQgdGhlIHNpemUgb2YgdGhlIHJvb3Qgd2luZG93IChpZSB0aGUg c2l6ZSBvZiB0aGUgc2NyZWVuKQogICAtLSAgc2ltcGx5IGJ5IGdpdmluZyBOdWxsX1dpbmRvdyBh cyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwcm9jZWR1cmUuCgogICBwcm9jZWR1cmUgR2V0 X1Bvc2l0aW9uCiAgICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IG91dCBH aW50OwogICAgICBZICAgICAgOiBvdXQgR2ludCk7CgogICBwcm9jZWR1cmUgR2V0X1NpemUKICAg ICAoV2luZG93IDogR2RrX1dpbmRvdzsKICAgICAgV2lkdGggIDogb3V0IEdpbnQ7CiAgICAgIEhl aWdodCA6IG91dCBHaW50KTsKCiAgIGZ1bmN0aW9uIEdldF9WaXN1YWwgKFdpbmRvdyA6IEdka19X aW5kb3cpIHJldHVybiBHZGsuVmlzdWFsLkdka19WaXN1YWw7CgogICBmdW5jdGlvbiBHZXRfQ29s b3JtYXAgKFdpbmRvdyA6IEdka19XaW5kb3cpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFw OwoKICAgZnVuY3Rpb24gR2V0X1R5cGUgKFdpbmRvdyA6IEdka19XaW5kb3cpIHJldHVybiBHZGsu VHlwZXMuR2RrX1dpbmRvd19UeXBlOwoKICAgcHJvY2VkdXJlIEdldF9PcmlnaW4KICAgICAoV2lu ZG93ICA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICAgOiBvdXQgR2ludDsKICAgICAgWSAgICAg ICA6IG91dCBHaW50OwogICAgICBTdWNjZXNzIDogb3V0IEJvb2xlYW4pOwoKICAgcHJvY2VkdXJl IEdldF9EZXNrX1JlbGF0aXZlX09yaWdpbgogICAgIChXaW5kb3cgIDogR2RrX1dpbmRvdzsKICAg ICAgWCAgICAgICA6IG91dCBHaW50OwogICAgICBZICAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFN1 Y2Nlc3MgOiBvdXQgQm9vbGVhbik7CgogICBwcm9jZWR1cmUgR2V0X1Jvb3RfT3JpZ2luCiAgICAg KFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFggICAgICA6IG91dCBHaW50OwogICAgICBZICAg ICAgOiBvdXQgR2ludCk7CgogICBwcm9jZWR1cmUgR2V0X1BvaW50ZXIKICAgICAoV2luZG93IDog R2RrX1dpbmRvdzsKICAgICAgWCAgICAgIDogb3V0IEdpbnQ7CiAgICAgIFkgICAgICA6IG91dCBH aW50OwogICAgICBNYXNrICAgOiBvdXQgR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlOwogICAg ICBSZXN1bHQgOiBvdXQgR2RrX1dpbmRvdyk7CgogICBmdW5jdGlvbiBHZXRfUGFyZW50IChXaW5k b3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrX1dpbmRvdzsKCiAgIGZ1bmN0aW9uIEdldF9Ub3Bs ZXZlbCAoV2luZG93IDogR2RrX1dpbmRvdykgcmV0dXJuIEdka19XaW5kb3c7CgogICBmdW5jdGlv biBHZXRfRXZlbnRzIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrLlR5cGVzLkdka19F dmVudF9NYXNrOwoKICAgcHJvY2VkdXJlIFNldF9FdmVudHMKICAgICAoV2luZG93IDogR2RrX1dp bmRvdzsgRXZlbnRfTWFzayA6IEdkay5UeXBlcy5HZGtfRXZlbnRfTWFzayk7CgogICBwcm9jZWR1 cmUgU2V0X0ljb24KICAgICAoV2luZG93ICAgICAgOiBHZGtfV2luZG93OwogICAgICBJY29uX1dp bmRvdyA6IEdka19XaW5kb3c7CiAgICAgIFBpeG1hcCAgICAgIDogR2RrX1BpeG1hcDsKICAgICAg TWFzayAgICAgICAgOiBHZGtfQml0bWFwKTsKCiAgIHByb2NlZHVyZSBTZXRfSWNvbl9OYW1lCiAg ICAgKFdpbmRvdyA6IEdka19XaW5kb3c7CiAgICAgIE5hbWUgICA6IFN0cmluZyk7CgogICBwcm9j ZWR1cmUgU2V0X0dyb3VwIChXaW5kb3cgOiBHZGtfV2luZG93OyBMZWFkZXIgOiBHZGtfV2luZG93 KTsKCiAgIHByb2NlZHVyZSBTZXRfRGVjb3JhdGlvbnMKICAgICAoV2luZG93ICAgICAgOiBHZGtf V2luZG93OwogICAgICBEZWNvcmF0aW9ucyA6IEdkay5UeXBlcy5HZGtfV21fRGVjb3JhdGlvbik7 CgogICBwcm9jZWR1cmUgU2V0X0Z1bmN0aW9ucwogICAgIChXaW5kb3cgICAgOiBHZGtfV2luZG93 OwogICAgICBGdW5jdGlvbnMgOiBHZGsuVHlwZXMuR2RrX1dtX0Z1bmN0aW9uKTsKCiAgIC0tICBH ZGtfV2luZG93X0xpc3QKICAgLS0KICAgZnVuY3Rpb24gQ29udmVydCBpcyBuZXcgVW5jaGVja2Vk X0NvbnZlcnNpb24gKEdka19XaW5kb3csIFN5c3RlbS5BZGRyZXNzKTsKICAgZnVuY3Rpb24gQ29u dmVydCBpcyBuZXcgVW5jaGVja2VkX0NvbnZlcnNpb24gKFN5c3RlbS5BZGRyZXNzLCBHZGtfV2lu ZG93KTsKCiAgIHBhY2thZ2UgR2RrX1dpbmRvd19MaXN0IGlzIG5ldwogICAgIEdsaWIuR2xpc3Qu R2VuZXJpY19MaXN0IChHcG9pbnRlciA9PiBHZGtfV2luZG93KTsKCiAgIGZ1bmN0aW9uIEdldF9D aGlsZHJlbgogICAgIChXaW5kb3cgOiBHZGtfV2luZG93KSByZXR1cm4gR2RrX1dpbmRvd19MaXN0 LkdsaXN0OwoKICAgZnVuY3Rpb24gR2V0X1RvcGxldmVscyByZXR1cm4gR2RrX1dpbmRvd19MaXN0 LkdsaXN0OwoKcHJpdmF0ZQoKICAgTnVsbF9XaW5kb3cgOiBjb25zdGFudCBHZGtfV2luZG93IDo9 IG51bGw7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENsZWFyLCAiZ2RrX3dpbmRvd19jbGVhciIpOwog ICBwcmFnbWEgSW1wb3J0IChDLCBDbGVhcl9BcmVhLCAiZ2RrX3dpbmRvd19jbGVhcl9hcmVhIik7 CiAgIHByYWdtYSBJbXBvcnQgKEMsIENsZWFyX0FyZWFfRSwgImdka193aW5kb3dfY2xlYXJfYXJl YV9lIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENvcHlfQXJlYSwgImdka193aW5kb3dfY29weV9h cmVhIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9FdmVudHMsICJnZGtfd2luZG93X2dldF9l dmVudHMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0dlb21ldHJ5LCAiZ2RrX3dpbmRvd19n ZXRfZ2VvbWV0cnkiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1BhcmVudCwgImdka193aW5k b3dfZ2V0X3BhcmVudCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfUG9zaXRpb24sICJnZGtf d2luZG93X2dldF9wb3NpdGlvbiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfUm9vdF9Pcmln aW4sICJnZGtfd2luZG93X2dldF9yb290X29yaWdpbiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBH ZXRfU2l6ZSwgImdka193aW5kb3dfZ2V0X3NpemUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0 X1RvcGxldmVsLCAiZ2RrX3dpbmRvd19nZXRfdG9wbGV2ZWwiKTsKICAgcHJhZ21hIEltcG9ydCAo QywgR2V0X1R5cGUsICJnZGtfd2luZG93X2dldF90eXBlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMs IEhpZGUsICJnZGtfd2luZG93X2hpZGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgTG93ZXIsICJn ZGtfd2luZG93X2xvd2VyIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIE1lcmdlX0NoaWxkX1NoYXBl cywgImdka193aW5kb3dfbWVyZ2VfY2hpbGRfc2hhcGVzIik7CiAgIHByYWdtYSBJbXBvcnQgKEMs IE1vdmUsICJnZGtfd2luZG93X21vdmUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgTW92ZV9SZXNp emUsICJnZGtfd2luZG93X21vdmVfcmVzaXplIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdka19S YWlzZSwgImdka193aW5kb3dfcmFpc2UiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVmLCAiZ2Rr X3dpbmRvd19yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUmVwYXJlbnQsICJnZGtfd2luZG93 X3JlcGFyZW50Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlc2l6ZSwgImdka193aW5kb3dfcmVz aXplIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9DaGlsZF9TaGFwZXMsICJnZGtfd2luZG93 X3NldF9jaGlsZF9zaGFwZXMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0RlY29yYXRpb25z LCAiZ2RrX3dpbmRvd19zZXRfZGVjb3JhdGlvbnMiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0 X0V2ZW50cywgImdka193aW5kb3dfc2V0X2V2ZW50cyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBT ZXRfRnVuY3Rpb25zLCAiZ2RrX3dpbmRvd19zZXRfZnVuY3Rpb25zIik7CiAgIHByYWdtYSBJbXBv cnQgKEMsIFNldF9HZW9tZXRyeV9IaW50cywgImdka193aW5kb3dfc2V0X2dlb21ldHJ5X2hpbnRz Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Hcm91cCwgImdka193aW5kb3dfc2V0X2dyb3Vw Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9IaW50cywgImdka193aW5kb3dfc2V0X2hpbnRz Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9UcmFuc2llbnRfRm9yLCAiZ2RrX3dpbmRvd19z ZXRfdHJhbnNpZW50X2ZvciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTaG93LCAiZ2RrX3dpbmRv d19zaG93Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFVucmVmLCAiZ2RrX3dpbmRvd191bnJlZiIp OwogICBwcmFnbWEgSW1wb3J0IChDLCBXaXRoZHJhdywgImdka193aW5kb3dfd2l0aGRyYXciKTsK ICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0N1cnNvciwgImdka193aW5kb3dfc2V0X2N1cnNvciIp OwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfQ29sb3JtYXAsICJnZGtfd2luZG93X2dldF9jb2xv cm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVmlzdWFsLCAiZ2RrX3dpbmRvd19nZXRf dmlzdWFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9Db2xvcm1hcCwgImdka193aW5kb3df c2V0X2NvbG9ybWFwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9JY29uLCAiZ2RrX3dpbmRv d19zZXRfaWNvbiIpOwplbmQgR2RrLldpbmRvdzsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAg R3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5 OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90 LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0g TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0K LS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUg ICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUg Z2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0 aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5p dCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0 YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhp cyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIg cmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVk IGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCndpdGgg R2RrLkNvbG9yOwp3aXRoIEdkay5DdXJzb3I7CndpdGggR2RrLlR5cGVzOwp3aXRoIEdkay5WaXN1 YWw7CndpdGggR2xpYjsKCnBhY2thZ2UgR2RrLldpbmRvd19BdHRyIGlzCgogICB0eXBlIEdka19X aW5kb3dfQXR0ciBpcyBuZXcgQ19Qcm94eTsKICAgTnVsbF9XaW5kb3dfQXR0ciA6IGNvbnN0YW50 IEdka19XaW5kb3dfQXR0cjsKCiAgIHByb2NlZHVyZSBHZGtfTmV3CiAgICAgKFdpbmRvd19BdHRy ICAgICAgIDogICAgb3V0IEdka19XaW5kb3dfQXR0cjsKICAgICAgVGl0bGUgICAgICAgICAgICAg OiBpbiAgICAgU3RyaW5nIDo9ICIiOwogICAgICBFdmVudF9NYXNrICAgICAgICA6IGluICAgICBH ZGsuVHlwZXMuR2RrX0V2ZW50X01hc2sgOj0KICAgICAgICBHZGsuVHlwZXMuTnVsbF9FdmVudF9N YXNrOwogICAgICBYLCBZICAgICAgICAgICAgICA6IGluICAgICBHbGliLkdpbnQxNiA6PSAwOwog ICAgICBXaWR0aCAgICAgICAgICAgICA6IGluICAgICBHbGliLkdpbnQxNiA6PSAwOwogICAgICBI ZWlnaHQgICAgICAgICAgICA6IGluICAgICBHbGliLkdpbnQxNiA6PSAwOwogICAgICBXY2xhc3Mg ICAgICAgICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX1dpbmRvd19DbGFzcyA6PQogICAgICAg IEdkay5UeXBlcy5JbnB1dF9PdXRwdXQ7CiAgICAgIFZpc3VhbCAgICAgICAgICAgIDogaW4gICAg IEdkay5WaXN1YWwuR2RrX1Zpc3VhbCA6PQogICAgICAgIEdkay5WaXN1YWwuTnVsbF9WaXN1YWw7 CiAgICAgIENvbG9ybWFwICAgICAgICAgIDogaW4gICAgIEdkay5Db2xvci5HZGtfQ29sb3JtYXAg Oj0KICAgICAgICBHZGsuQ29sb3IuTnVsbF9Db2xvcm1hcDsKICAgICAgV2luZG93X1R5cGUgICAg ICAgOiBpbiAgICAgR2RrLlR5cGVzLkdka19XaW5kb3dfVHlwZSA6PQogICAgICAgIEdkay5UeXBl cy5XaW5kb3dfUm9vdDsKICAgICAgQ3Vyc29yICAgICAgICAgICAgOiBpbiAgICAgR2RrLkN1cnNv ci5HZGtfQ3Vyc29yIDo9CiAgICAgICAgR2RrLkN1cnNvci5OdWxsX0N1cnNvcjsKICAgICAgV21j bGFzc19OYW1lICAgICAgOiBpbiAgICAgU3RyaW5nIDo9ICIiOwogICAgICBXbWNsYXNzX0NsYXNz ICAgICA6IGluICAgICBTdHJpbmcgOj0gIiI7CiAgICAgIE92ZXJyaWRlX1JlZGlyZWN0IDogaW4g ICAgIEJvb2xlYW4gOj0gVHJ1ZSk7CgogICBwcm9jZWR1cmUgRGVzdHJveSAoV2luZG93X0F0dHIg OiBpbiBvdXQgR2RrX1dpbmRvd19BdHRyKTsKCiAgIHByb2NlZHVyZSBTZXRfVGl0bGUKICAgICAo V2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFRpdGxlICAgICAgIDogaW4g U3RyaW5nKTsKCiAgIGZ1bmN0aW9uIEdldF9UaXRsZSAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2lu ZG93X0F0dHIpIHJldHVybiBTdHJpbmc7CgogICBwcm9jZWR1cmUgU2V0X0V2ZW50X01hc2sKICAg ICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIEV2ZW50X01hc2sgIDog aW4gR2RrLlR5cGVzLkdka19FdmVudF9NYXNrKTsKCiAgIGZ1bmN0aW9uIEdldF9FdmVudF9NYXNr CiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKQogICAgICByZXR1cm4gR2Rr LlR5cGVzLkdka19FdmVudF9NYXNrOwoKICAgcHJvY2VkdXJlIFNldF9YCiAgICAgKFdpbmRvd19B dHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBYICAgICAgICAgICA6IGluIEdsaWIuR2lu dDE2KTsKCiAgIGZ1bmN0aW9uIEdldF9YIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0 cikgcmV0dXJuIEdsaWIuR2ludDE2OwoKCiAgIHByb2NlZHVyZSBTZXRfWQogICAgIChXaW5kb3df QXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgWSAgICAgICAgICAgOiBpbiBHbGliLkdp bnQxNik7CgogICBmdW5jdGlvbiBHZXRfWSAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0 dHIpIHJldHVybiBHbGliLkdpbnQxNjsKCiAgIHByb2NlZHVyZSBTZXRfV2lkdGgKICAgICAoV2lu ZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIFdpZHRoICAgICAgIDogaW4gR2xp Yi5HaW50MTYpOwoKICAgZnVuY3Rpb24gR2V0X1dpZHRoIChXaW5kb3dfQXR0ciA6IGluIEdka19X aW5kb3dfQXR0cikgcmV0dXJuIEdsaWIuR2ludDE2OwoKICAgcHJvY2VkdXJlIFNldF9IZWlnaHQK ICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHI7CiAgICAgIEhlaWdodCAgICAg IDogaW4gR2xpYi5HaW50MTYpOwoKICAgZnVuY3Rpb24gR2V0X0hlaWdodCAoV2luZG93X0F0dHIg OiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBHbGliLkdpbnQxNjsKCiAgIHByb2NlZHVyZSBT ZXRfV2luZG93X0NsYXNzCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwog ICAgICBXY2xhc3MgICAgICA6IGluIEdkay5UeXBlcy5HZGtfV2luZG93X0NsYXNzKTsKCiAgIGZ1 bmN0aW9uIEdldF9XaW5kb3dfQ2xhc3MKICAgICAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93 X0F0dHIpIHJldHVybiBHZGsuVHlwZXMuR2RrX1dpbmRvd19DbGFzczsKCiAgIHByb2NlZHVyZSBT ZXRfVmlzdWFsCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyOwogICAgICBW aXN1YWwgICAgICA6IGluIEdkay5WaXN1YWwuR2RrX1Zpc3VhbCk7CgogICBmdW5jdGlvbiBHZXRf VmlzdWFsCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4gR2Rr LlZpc3VhbC5HZGtfVmlzdWFsOwoKICAgcHJvY2VkdXJlIFNldF9Db2xvcm1hcAogICAgIChXaW5k b3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgQ29sb3JtYXAgICAgOiBpbiBHZGsu Q29sb3IuR2RrX0NvbG9ybWFwKTsKCiAgIGZ1bmN0aW9uIEdldF9Db2xvcm1hcAogICAgIChXaW5k b3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3Jt YXA7CgogICBwcm9jZWR1cmUgU2V0X1dpbmRvd19UeXBlCiAgICAgKFdpbmRvd19BdHRyIDogaW4g R2RrX1dpbmRvd19BdHRyOwogICAgICBXaW5kb3dfVHlwZSA6IGluIEdkay5UeXBlcy5HZGtfV2lu ZG93X1R5cGUpOwoKICAgZnVuY3Rpb24gR2V0X1dpbmRvd19UeXBlCiAgICAgKFdpbmRvd19BdHRy IDogaW4gR2RrX1dpbmRvd19BdHRyKSByZXR1cm4gR2RrLlR5cGVzLkdka19XaW5kb3dfVHlwZTsK CiAgIHByb2NlZHVyZSBTZXRfQ3Vyc29yCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRv d19BdHRyOwogICAgICBDdXJzb3IgICAgICA6IGluIEdkay5DdXJzb3IuR2RrX0N1cnNvcik7Cgog ICBmdW5jdGlvbiBHZXRfQ3Vyc29yCiAgICAgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19B dHRyKQogICAgICByZXR1cm4gR2RrLkN1cnNvci5HZGtfQ3Vyc29yOwoKICAgcHJvY2VkdXJlIFNl dF9XbWNsYXNzX05hbWUKICAgICAoV2luZG93X0F0dHIgIDogaW4gR2RrX1dpbmRvd19BdHRyOwog ICAgICBXbWNsYXNzX05hbWUgOiBpbiBTdHJpbmcpOwoKICAgZnVuY3Rpb24gR2V0X1dtY2xhc3Nf TmFtZSAoV2luZG93X0F0dHIgOiBpbiBHZGtfV2luZG93X0F0dHIpIHJldHVybiBTdHJpbmc7CgoK ICAgcHJvY2VkdXJlIFNldF9XbWNsYXNzX0NsYXNzCiAgICAgKFdpbmRvd19BdHRyICAgOiBpbiBH ZGtfV2luZG93X0F0dHI7CiAgICAgIFdtY2xhc3NfQ2xhc3MgOiBpbiBTdHJpbmcpOwoKICAgZnVu Y3Rpb24gR2V0X1dtY2xhc3NfQ2xhc3MgKFdpbmRvd19BdHRyIDogaW4gR2RrX1dpbmRvd19BdHRy KSByZXR1cm4gU3RyaW5nOwoKICAgcHJvY2VkdXJlIFNldF9PdmVycmlkZV9SZWRpcmVjdAogICAg IChXaW5kb3dfQXR0ciAgICAgICA6IGluIEdka19XaW5kb3dfQXR0cjsKICAgICAgT3ZlcnJpZGVf UmVkaXJlY3QgOiBpbiBCb29sZWFuKTsKCiAgIGZ1bmN0aW9uIEdldF9PdmVycmlkZV9SZWRpcmVj dAogICAgIChXaW5kb3dfQXR0ciA6IGluIEdka19XaW5kb3dfQXR0cikgcmV0dXJuIEJvb2xlYW47 Cgpwcml2YXRlCiAgIE51bGxfV2luZG93X0F0dHIgOiBjb25zdGFudCBHZGtfV2luZG93X0F0dHIg Oj0gbnVsbDsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0NvbG9ybWFwLCAiYWRhX2dka193aW5k b3dfYXR0cl9nZXRfY29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0N1cnNvciwg ImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X2N1cnNvciIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBH ZXRfRXZlbnRfTWFzaywgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X2V2ZW50X21hc2siKTsKICAg cHJhZ21hIEltcG9ydCAoQywgR2V0X0hlaWdodCwgImFkYV9nZGtfd2luZG93X2F0dHJfZ2V0X2hl aWdodCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfVmlzdWFsLCAiYWRhX2dka193aW5kb3df YXR0cl9nZXRfdmlzdWFsIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9XaWR0aCwgImFkYV9n ZGtfd2luZG93X2F0dHJfZ2V0X3dpZHRoIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9XaW5k b3dfQ2xhc3MsICJhZGFfZ2RrX3dpbmRvd19hdHRyX2dldF93Y2xhc3MiKTsKICAgcHJhZ21hIElt cG9ydCAoQywgR2V0X1dpbmRvd19UeXBlLCAiYWRhX2dka193aW5kb3dfYXR0cl9nZXRfd2luZG93 X3R5cGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1gsICJhZGFfZ2RrX3dpbmRvd19hdHRy X2dldF94Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9ZLCAiYWRhX2dka193aW5kb3dfYXR0 cl9nZXRfeSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ29sb3JtYXAsICJhZGFfZ2RrX3dp bmRvd19hdHRyX3NldF9jb2xvcm1hcCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfQ3Vyc29y LCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRfY3Vyc29yIik7CiAgIHByYWdtYSBJbXBvcnQgKEMs IFNldF9FdmVudF9NYXNrLCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRfZXZlbnRfbWFzayIpOwog ICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfSGVpZ2h0LCAiYWRhX2dka193aW5kb3dfYXR0cl9zZXRf aGVpZ2h0Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9WaXN1YWwsICJhZGFfZ2RrX3dpbmRv d19hdHRyX3NldF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1dpZHRoLCAiYWRh X2dka193aW5kb3dfYXR0cl9zZXRfd2lkdGgiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1dp bmRvd19DbGFzcywgImFkYV9nZGtfd2luZG93X2F0dHJfc2V0X3djbGFzcyIpOwogICBwcmFnbWEg SW1wb3J0IChDLCBTZXRfV2luZG93X1R5cGUsICJhZGFfZ2RrX3dpbmRvd19hdHRyX3NldF93aW5k b3dfdHlwZSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBTZXRfWCwgImFkYV9nZGtfd2luZG93X2F0 dHJfc2V0X3giKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X1ksICJhZGFfZ2RrX3dpbmRvd19h dHRyX3NldF95Iik7CmVuZCBHZGsuV2luZG93X0F0dHI7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAg ICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAg ICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChD KSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBC cmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0t IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0t Ci0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAg IC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRp YXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0 IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMg IHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4 ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Uu IFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90 aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292 ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgot LSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBpcyB0aGUgdG9wIGxldmVsIHBhY2thZ2Ugb2Yg dGhlIEdkayBoaWVyYXJjaHkuCi0tICBJdCBwcm92aWRlcyB0aGUgdHlwZSBkZWZpbml0aW9ucyB1 c2VkIHRvIGFjY2VzcyB1bmRlcmx5aW5nIEMgc3RydWN0dXJlcy4KLS0KLS0gIDwvZGVzY3JpcHRp b24+Cgp3aXRoIEdsaWI7CgpwYWNrYWdlIEdkayBpcwogICBwcmFnbWEgUHJlZWxhYm9yYXRlOwoK ICAgc3VidHlwZSBDX1Byb3h5IGlzIEdsaWIuQ19Qcm94eTsKICAgdHlwZSBHZGtfR0MgaXMgbmV3 IENfUHJveHk7CiAgIHR5cGUgR2RrX1dpbmRvdyBpcyBuZXcgQ19Qcm94eTsKICAgc3VidHlwZSBH ZGtfRHJhd2FibGUgaXMgR2RrX1dpbmRvdzsKICAgc3VidHlwZSBHZGtfUGl4bWFwIGlzIEdka19E cmF3YWJsZTsKICAgc3VidHlwZSBHZGtfQml0bWFwIGlzIEdka19EcmF3YWJsZTsKCmVuZCBHZGs7 Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRo ZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBD aGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAg ICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0t Ci0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s IGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5p dCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAg IC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2Ug IHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBo b3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1 dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4g ICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwYWNrYWdlIGJvZHkgR2xpYi5HbGlzdCBpcwoKICAgdXNl IHR5cGUgU3lzdGVtLkFkZHJlc3M7CgogICBwYWNrYWdlIGJvZHkgR2VuZXJpY19MaXN0IGlzCiAg ICAgIC0tLS0tLS0tLS0tCiAgICAgIC0tIEFsbG9jIC0tCiAgICAgIC0tLS0tLS0tLS0tCgogICAg ICBwcm9jZWR1cmUgQWxsb2MgKExpc3QgOiBvdXQgR2xpc3QpIGlzCiAgICAgICAgIGZ1bmN0aW9u IEludGVybmFsIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJnX2xpc3RfYWxsb2MiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09i amVjdCAoTGlzdCwgSW50ZXJuYWwpOwogICAgICBlbmQgQWxsb2M7CgogICAgICAtLS0tLS0tLS0t LS0KICAgICAgLS0gQXBwZW5kIC0tCiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJl IEFwcGVuZAogICAgICAgIChMaXN0IDogaW4gb3V0IEdsaXN0OwogICAgICAgICBEYXRhIDogaW4g R3BvaW50ZXIpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lz dGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFk ZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X2FwcGVuZCIpOwog ICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVj dCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChE YXRhKSkpOwogICAgICBlbmQgQXBwZW5kOwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIENv bmNhdCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIENvbmNhdAogICAgICAg IChMaXN0MSA6IGluIEdsaXN0OwogICAgICAgICBMaXN0MiA6IGluIEdsaXN0KQogICAgICAgICBy ZXR1cm4gR2xpc3QKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QxIDog U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0MiA6IFN5c3Rl bS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRy ZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9hcHBlbmQi KTsKICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3Qg KFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QxKSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgR2V0X09iamVjdCAoTGlzdDIpKSk7CiAgICAgICAgIHJldHVybiBUbXA7 CiAgICAgIGVuZCBDb25jYXQ7CgogICAgICAtLS0tLS0tLS0tLS0KICAgICAgLS0gSW5zZXJ0IC0t CiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIEluc2VydAogICAgICAgIChMaXN0 ICAgICA6IGluIG91dCBHbGlzdDsKICAgICAgICAgRGF0YSAgICAgOiBpbiAgICAgR3BvaW50ZXI7 CiAgICAgICAgIFBvc2l0aW9uIDogaW4gICAgIEdpbnQpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0 aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQb3MgIDogR2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0u QWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfaW5z ZXJ0Iik7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKExpc3QsIEludGVybmFsIChH ZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENv bnZlcnQgKERhdGEpLCBQb3NpdGlvbikpOwogICAgICBlbmQgSW5zZXJ0OwoKICAgICAgLS0tLS0t LS0tLQogICAgICAtLSBGaW5kIC0tCiAgICAgIC0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEZp bmQKICAgICAgICAoTGlzdCA6IGluIEdsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIp CiAgICAgICAgIHJldHVybiBHbGlzdAogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5h bCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0 YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlz dF9maW5kIik7CiAgICAgICAgIFRtcCA6IEdsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRf T2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgICAgcmV0dXJuIFRt cDsKICAgICAgZW5kIEZpbmQ7CgogICAgICAtLS0tLS0tLS0tLQogICAgICAtLSBGaXJzdCAtLQog ICAgICAtLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gRmlyc3QgKExpc3QgOiBpbiBHbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHbGlzdAogICAgICBpcwogICAgICAgICBmdW5j dGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImdfbGlzdF9maXJzdCIpOwogICAgICAgICBUbXAgOiBHbGlzdDsKICAgICAg YmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlz dCkpKTsKICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIEZpcnN0OwoKICAgICAgLS0tLS0t LS0tLQogICAgICAtLSBGcmVlIC0tCiAgICAgIC0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBG cmVlIChMaXN0IDogaW4gb3V0IEdsaXN0KSBpcwogICAgICAgICBwcm9jZWR1cmUgSW50ZXJuYWwg KExpc3QgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVy bmFsLCAiZ19saXN0X2ZyZWUiKTsKICAgICAgYmVnaW4KICAgICAgICAgSW50ZXJuYWwgKEdldF9P YmplY3QgKExpc3QpKTsKICAgICAgZW5kIEZyZWU7CgogICAgICAtLS0tLS0tLS0tLS0tLQogICAg ICAtLSBHZXRfRGF0YSAtLQogICAgICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0 X0RhdGEgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdwb2ludGVyIGlzCiAgICAgICAgIGZ1bmN0 aW9uIEludGVybmFsIChMaXN0IDogaW4gU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiYWRhX2xpc3RfZ2V0X2RhdGEiKTsKICAgICAgYmVnaW4KICAgICAgICAg cmV0dXJuIENvbnZlcnQgKEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICBlbmQg R2V0X0RhdGE7CgogICAgICAtLS0tLS0tLS0tLS0tLQogICAgICAtLSBHZXRfRGF0YSAtLQogICAg ICAtLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0X0RhdGFfQWRkcmVzcyAoTGlzdCA6 IGluIEdsaXN0KSByZXR1cm4gU3lzdGVtLkFkZHJlc3MgaXMKICAgICAgICAgZnVuY3Rpb24gSW50 ZXJuYWwgKExpc3QgOiBpbiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50 ZXJuYWwsICJhZGFfbGlzdF9nZXRfZGF0YSIpOwogICAgICBiZWdpbgogICAgICAgICByZXR1cm4g SW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKTsKICAgICAgZW5kIEdldF9EYXRhX0FkZHJlc3M7 CgogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAtLSAgR2V0X0dwb2ludGVyICAtLQog ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0X0dwb2ludGVyIChM aXN0IDogaW4gR2xpc3QpIHJldHVybiBHcG9pbnRlciBpcwogICAgICBiZWdpbgogICAgICAgICBy ZXR1cm4gQ29udmVydCAoR2V0X09iamVjdCAoTGlzdCkpOwogICAgICBlbmQgR2V0X0dwb2ludGVy OwoKICAgICAgLS0tLS0tLS0tLS0tLS0tLQogICAgICAtLSBHZXRfT2JqZWN0IC0tCiAgICAgIC0t LS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIEdldF9PYmplY3QgKE9iaiA6IGluIEdsaXN0 KQogICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3MgaXMKICAg ICAgYmVnaW4KICAgICAgICAgcmV0dXJuIE9iai5QdHI7CiAgICAgIGVuZCBHZXRfT2JqZWN0OwoK ICAgICAgLS0tLS0tLS0tLS0KICAgICAgLS0gSW5kZXggLS0KICAgICAgLS0tLS0tLS0tLS0KCiAg ICAgIGZ1bmN0aW9uIEluZGV4CiAgICAgICAgKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgRGF0 YSA6IGluIEdwb2ludGVyKQogICAgICAgICByZXR1cm4gR2ludAogICAgICBpcwogICAgICAgICBm dW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEdpbnQ7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAi Z19saXN0X2luZGV4Iik7CiAgICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0 X09iamVjdCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkp OwogICAgICBlbmQgSW5kZXg7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gIElz X0NyZWF0ZWQgIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gSXNf Q3JlYXRlZCAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gQm9vbGVhbiBpcwogICAgICBiZWdpbgog ICAgICAgICByZXR1cm4gR2V0X09iamVjdCAoTGlzdCkgLz0gU3lzdGVtLk51bGxfQWRkcmVzczsK ICAgICAgZW5kIElzX0NyZWF0ZWQ7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIExhc3QgLS0K ICAgICAgLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTGFzdCAoTGlzdCA6IGluIEdsaXN0KSBy ZXR1cm4gR2xpc3QgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0u QWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVz czsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfbGFzdCIpOwog ICAgICAgICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoVG1w LCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsKICAgICAgICAgcmV0dXJuIFRtcDsKICAg ICAgZW5kIExhc3Q7CgogICAgICAtLS0tLS0tLS0tLS0KICAgICAgLS0gTGVuZ3RoIC0tCiAgICAg IC0tLS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gTGVuZ3RoIChMaXN0IDogaW4gR2xpc3QpIHJl dHVybiBHdWludCBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5B ZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEd1aW50OwogICAgICAg ICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9sZW5ndGgiKTsKICAgICAgYmVn aW4KICAgICAgICAgcmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSk7CiAgICAgIGVu ZCBMZW5ndGg7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gTGlzdF9SZXZlcnNl IC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIExpc3RfUmV2ZXJz ZSAoTGlzdCA6IGluIG91dCBHbGlzdCkgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExp c3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBT eXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xp c3RfcmV2ZXJzZSIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRl cm5hbCAoR2V0X09iamVjdCAoTGlzdCkpKTsKICAgICAgZW5kIExpc3RfUmV2ZXJzZTsKCiAgICAg IC0tLS0tLS0tLS0KICAgICAgLS0gTmV4dCAtLQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5j dGlvbiBOZXh0IChMaXN0IDogaW4gR2xpc3QpIHJldHVybiBHbGlzdCBpcwogICAgICAgICBmdW5j dGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImFkYV9saXN0X25leHQiKTsKICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAg IGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExp c3QpKSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBOZXh0OwoKICAgICAgLS0tLS0t LS0tCiAgICAgIC0tIE50aCAtLQogICAgICAtLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE50aAog ICAgICAgIChMaXN0IDogaW4gR2xpc3Q7CiAgICAgICAgIE4gICAgOiBpbiBHdWludCkKICAgICAg ICAgcmV0dXJuIEdsaXN0CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0 IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOICAgIDogR3Vp bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAg ICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X250aCIpOwogICAgICAg ICBUbXAgOiBHbGlzdDsKICAgICAgYmVnaW4KICAgICAgICAgU2V0X09iamVjdCAoVG1wLCBJbnRl cm5hbCAoR2V0X09iamVjdCAoTGlzdCksIE4pKTsKICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAg ZW5kIE50aDsKCiAgICAgIC0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIE50aF9EYXRhIC0tCiAgICAg IC0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBOdGhfRGF0YQogICAgICAgIChMaXN0IDog aW4gR2xpc3Q7CiAgICAgICAgIE4gICAgOiBpbiBHdWludCkKICAgICAgICAgcmV0dXJuIEdwb2lu dGVyCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFk ZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOICAgIDogR3VpbnQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdt YSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X250aF9kYXRhIik7CiAgICAgIGJlZ2luCiAg ICAgICAgIHJldHVybiBDb252ZXJ0IChJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksIE4pKTsK ICAgICAgZW5kIE50aF9EYXRhOwoKICAgICAgLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gUG9zaXRp b24gLS0KICAgICAgLS0tLS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIFBvc2l0aW9uCiAgICAg ICAgKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgTGluayA6IGluIEdsaXN0KQogICAgICAgICBy ZXR1cm4gR2ludAogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayA6IFN5c3RlbS5B ZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgICAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19saXN0X3Bvc2l0aW9uIik7CiAgICAgIGJl Z2luCiAgICAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksIEdldF9PYmpl Y3QgKExpbmspKTsKICAgICAgZW5kIFBvc2l0aW9uOwoKICAgICAgLS0tLS0tLS0tLS0tLQogICAg ICAtLSBQcmVwZW5kIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBQcmVw ZW5kCiAgICAgICAgKExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgIERhdGEgOiBpbiBHcG9p bnRlcikKICAgICAgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0u QWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVz cykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX2xpc3RfcHJlcGVuZCIpOwogICAg ICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAo TGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChEYXRh KSkpOwogICAgICBlbmQgUHJlcGVuZDsKCiAgICAgIC0tLS0tLS0tLS0KICAgICAgLS0gUHJldiAt LQogICAgICAtLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBQcmV2IChMaXN0IDogaW4gR2xpc3Qp IHJldHVybiBHbGlzdCBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3Rl bS5BZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRy ZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9saXN0X3ByZXYi KTsKICAgICAgICAgVG1wIDogR2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3Qg KFRtcCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpKSk7CiAgICAgICAgIHJldHVybiBUbXA7 CiAgICAgIGVuZCBQcmV2OwoKICAgICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIFJlbW92ZSAtLQog ICAgICAtLS0tLS0tLS0tLS0KCiAgICAgIHByb2NlZHVyZSBSZW1vdmUKICAgICAgICAoTGlzdCA6 IGluIG91dCBHbGlzdDsKICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKQogICAgICBpcwogICAg ICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImdfbGlzdF9yZW1vdmUiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0 X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgZW5kIFJlbW92 ZTsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFJlbW92ZV9MaW5rIC0tCiAgICAg IC0tLS0tLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlX0xpbmsKICAgICAgICAo TGlzdCA6IGluIG91dCBHbGlzdDsKICAgICAgICAgTGluayA6IGluIEdsaXN0KQogICAgICBpcwog ICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGluayA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1w b3J0IChDLCBJbnRlcm5hbCwgImdfbGlzdF9yZW1vdmVfbGluayIpOwogICAgICBiZWdpbgogICAg ICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRfT2JqZWN0IChMaW5rKSkpOwogICAg ICBlbmQgUmVtb3ZlX0xpbms7CgogICAgICAtLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFNldF9P YmplY3QgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIFNldF9PYmpl Y3QgKE9iaiAgIDogaW4gb3V0IEdsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFs dWUgOiBpbiAgICAgU3lzdGVtLkFkZHJlc3MpIGlzCiAgICAgIGJlZ2luCiAgICAgICAgIE9iai5Q dHIgOj0gVmFsdWU7CiAgICAgIGVuZCBTZXRfT2JqZWN0OwoKICAgZW5kIEdlbmVyaWNfTGlzdDsK ZW5kIEdsaWIuR2xpc3Q7CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5 NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0yMDAwICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVj a2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y ICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQot LSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFs b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAt LQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNw ZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9t ICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVz IHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAg YnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNv dmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNl cHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0 aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUg UHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0gIDxkZXNjcmlwdGlvbj4K LS0KLS0gIFRoaXMgcGFja2FnZSBpbXBsZW1lbnRzIGEgZ2VuZXJpYyBkb3VibGUtbGlua2VkIGxp c3QuCi0tICBTdWNoIGxpc3RzIGFyZSB1c2VkIHRocm91Z2hvdXQgR3RrQWRhIHRvIGNvbnRhaW4g bGlzdHMgb2Ygd2lkZ2V0cwotLSAgKGZvciB0aGUgY2hpbGRyZW4gb2YgY29udGFpbmVycywgb3Ig Zm9yIHRoZSBsaXN0IG9mIHNlbGVjdGVkIHdpZGdldHMKLS0gIGluIGEgR3RrX0NsaXN0IGZvciBp bnN0YW5jZSksIGxpc3Qgb2Ygc3RyaW5ncyAoZm9yIEd0a19Db21ib19Cb3gpLC4uLgotLQotLSAg VGhleSBwcm92aWRlIGEgY29tbW9uIGludGVyZmFjZSB0byB0cmF2ZXJzZSB0aGVzZSBsaXN0cy4K LS0KLS0gIE9uZSB1c2VmdWwgbm90ZTogeW91IHNob3VsZCBvbmx5IEZyZWUgdGhlIGxpc3RzIHRo YXQgeW91IGhhdmUgYWxsb2NhdGVkCi0tICB5b3Vyc2VsZiwgYW5kIG5vdCB0aGUgbGlzdHMgdGhh dCBhcmUgcmV0dXJuZWQgYnkgdGhlIHN1YnByb2dyYW1zIGluCi0tICBHdGtBZGEgYW5kIHNob3Vs ZCBiZSBsZWZ0IHVuZGVyIEd0a0FkYSdzIGNvbnRyb2wuCi0tCi0tICBTZWUgdGhlIGV4YW1wbGUg YmVsb3cgZm9yIGFuIGV4YW1wbGUgb24gaG93IHRvIHRyYXZlcnNlIGEgbGlzdC4KLS0KLS0gIElu c3RhbnRpYXRpbmcgdGhlIHBhY2thZ2UgR2VuZXJpY19MaXN0IHJlcXVpcmVzIHR3byBmdW5jdGlv bnMgdG8gY29udmVydAotLSAgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB5b3VyIGRhdGEgdHlwZSBh bmQgYSBTeXN0ZW0uQWRkcmVzcyB3aGljaCBpcyB0aGUKLS0gIHR5cGUgc3RvcmVkIGF0IHRoZSBD IGxldmVsLgotLSAgTm90ZSB0aGF0IHRoZSBsaXN0cyB1c2VkIGluIEd0a0FkYSBhbHJlYWR5IGhh dmUgYXNzb2NpYXRlZCBwYWNrYWdlcywgbGlrZQotLSAgR3RrLkVudW1zLkdpbnRfTGlzdCwgR3Rr LkVudW1zLlN0cmluZ19MaXN0IG9yIEd0ay5XaWRnZXQuV2lkZ2V0X0xpc3QuCi0tCi0tICA8L2Rl c2NyaXB0aW9uPgotLSAgPGNfc3luY2hybz4xLjIuNjwvY19zeW5jaHJvPgoKd2l0aCBTeXN0ZW07 CgpwYWNrYWdlIEdsaWIuR2xpc3QgaXMKCgogICBnZW5lcmljCiAgICAgIC0tICA8ZG9jX2lnbm9y ZT4KCiAgICAgIHR5cGUgR3BvaW50ZXIgKDw+KSBpcyBwcml2YXRlOwogICAgICB3aXRoIGZ1bmN0 aW9uIENvbnZlcnQgKFAgOiBHcG9pbnRlcikgcmV0dXJuIFN5c3RlbS5BZGRyZXNzIGlzIDw+Owog ICAgICB3aXRoIGZ1bmN0aW9uIENvbnZlcnQgKFMgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEdw b2ludGVyIGlzIDw+OwoKICAgICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHBhY2thZ2UgR2VuZXJp Y19MaXN0IGlzCgogICAgICB0eXBlIEdsaXN0IGlzIHByaXZhdGU7CiAgICAgIC0tICBUaGlzIHR5 cGUgaXMgYm90aCBhIGxpc3QgYW5kIGFuIGl0ZW0gaW4gdGhlIGxpc3QuCiAgICAgIC0tICBFYWNo IGl0ZW0gcG9pbnRzIHRvIGl0cyBzdWNjZXNzb3IuCgogICAgICBOdWxsX0xpc3QgOiBjb25zdGFu dCBHbGlzdDsKCiAgICAgIHByb2NlZHVyZSBBbGxvYyAoTGlzdCA6IG91dCBHbGlzdCk7CiAgICAg IC0tICBBbGxvY2F0ZSBhIG5ldyBpdGVtIGluIHRoZSBsaXN0LgogICAgICAtLSAgVGhpcyBpdGVt IGlzbid0IGFzc29jaWF0ZWQgd2l0aCBhbnkgZGF0YS4KICAgICAgLS0gIFlvdSBwcm9iYWJseSBk b24ndCBoYXZlIHRvIHVzZSB0aGlzIHN1YnByb2dyYW0sIHNpbmNlIEFwcGVuZCwKICAgICAgLS0g IEluc2VydCwgUHJlcGVuZCwgZXRjLiBhbHJlYWR5IGhhbmRsZSB0aGUgYWxsb2NhdGlvbiBmb3Ig eW91IGFuZAogICAgICAtLSAgZ2l2ZSBhIG5ldyB2YWx1ZSB0byB0aGUgaXRlbS4KCiAgICAgIHBy b2NlZHVyZSBBcHBlbmQgKExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAg ICAgIERhdGEgOiBpbiBHcG9pbnRlcik7CiAgICAgIC0tICBBZGQgYSBuZXcgaXRlbSBhdCB0aGUg ZW5kIG9mIHRoZSBsaXN0LCBhbmQgc3RvcmVzIHRoZSBuZXcgbGlzdAogICAgICAtLSAgZGlyZWN0 bHkgYmFjayBpbiBMaXN0LgogICAgICAtLSAgVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBvcGVyYXRp b24gaXMgTyhuKQoKICAgICAgZnVuY3Rpb24gQ29uY2F0IChMaXN0MSA6IGluIEdsaXN0OwogICAg ICAgICAgICAgICAgICAgICAgIExpc3QyIDogaW4gR2xpc3QpCiAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gR2xpc3Q7CiAgICAgIC0tICBDb25jYXRlbmF0ZSB0d28gbGlzdHMsIGFuZCByZXR1 cm4gdGhlIHJlc3VsdC4KICAgICAgLS0gIExpc3QyIGlzIGFkZGVkIGF0IHRoZSBlbmQgb2YgTGlz dDEuCiAgICAgIC0tICBUaGUgY29tcGxleGl0eSBpcyBPKG4xKSAoZGVwZW5kcyBvbiB0aGUgc2l6 ZSBvZiBMaXN0MSkuCgogICAgICBwcm9jZWR1cmUgSW5zZXJ0IChMaXN0IDogaW4gb3V0IEdsaXN0 OwogICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXI7CiAgICAgICAgICAg ICAgICAgICAgICAgIFBvc2l0aW9uIDogaW4gR2ludCk7CiAgICAgIC0tICBJbnNlcnQgYW4gaXRl bSBpbiB0aGUgbWlkZGxlIG9mIGEgbGlzdC4KICAgICAgLS0gIElmIFBvc2l0aW9uIGlzIDAsIHRo ZSBpdGVtIGlzIGFkZGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpc3QsIGlmCiAgICAgIC0t ICBpdCBpcyBuZWdhdGl2ZSB0aGUgaXRlbSBpcyBhZGRlZCBhdCB0aGUgZW5kLgogICAgICAtLSAg VGhlIGNvbXBsZXhpdHkgaXMgTyhQb3NpdGlvbikuCgogICAgICBmdW5jdGlvbiBGaW5kIChMaXN0 IDogaW4gR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAg ICAgICAgICAgICAgICAgICByZXR1cm4gR2xpc3Q7CiAgICAgIC0tICBGaW5kIGEgdmFsdWUgaW4g dGhlIGxpc3QsIGFuZCByZXR1cm4gdGhlIGZpcnN0IGl0ZW0gdGhhdCBjb250YWlucyBpdC4KICAg ICAgLS0gIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgbm90IHdvcmsgaWYgdGhlIGZ1bmN0 aW9uIENvbnZlcnQgZG9lcwogICAgICAtLSAgbm90IHJldHVybiB0aGUgc2FtZSB2YWx1ZSBmb3Ig dHdvIGlkZW50aWNhbCB2YWx1ZXMuCgogICAgICBmdW5jdGlvbiBGaXJzdCAoTGlzdCA6IGluIEds aXN0KSByZXR1cm4gR2xpc3Q7CiAgICAgIC0tICBSZXR1cm4gdGhlIGZpcnN0IGl0ZW0gaW4gdGhl IGxpc3QuCiAgICAgIC0tICBOb3RlIHRoYXQgaWYgTGlzdCBpcyBpbiBmYWN0IGFuIGl0ZW0gb2Yg YSBsYXJnZXIgbGlzdCwgdGhlIHJldHVybgogICAgICAtLSAgdmFsdWUgaXMgdGhlIGZpcnN0IGl0 ZW0gaW4gdGhlIGxhcmdlciBsaXN0IGl0c2VsZi4KCiAgICAgIHByb2NlZHVyZSBGcmVlIChMaXN0 IDogaW4gb3V0IEdsaXN0KTsKICAgICAgLS0gIEZyZWUgdGhlIGxpc3QgKGJ1dCBkb2VzIG5vdCBm cmVlIHRoZSBkYXRhIGluIGVhY2ggb2YgaXRzIGVsZW1lbnRzKS4KICAgICAgLS0gIFRoaXMgb25s eSBmcmVlcyB0aGUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbGlzdCBpdHNlbGYuCiAgICAg IC0tICBZb3Ugc2hvdWxkIG9ubHkgdXNlIHRoaXMgZnVuY3Rpb24gb24gdGhlIGxpc3RzIHRoYXQK ICAgICAgLS0gIHlvdSBoYXZlIGNyZWF0ZWQgeW91cnNlbGYsIG5vdCBvbiB0aGUgbGlzdCB0aGF0 IGFyZSByZXR1cm5lZCBieSBzb21lCiAgICAgIC0tICBmdW5jdGlvbnMgaW4gR3RrQWRhIChsaWtl IEd0ay5DbGlzdC5HZXRfU2VsZWN0aW9uKS4gVGhlc2UgZnVuY3Rpb25zCiAgICAgIC0tICByZXR1 cm4gZGlyZWN0bHkgdGhlIGxpc3QgbWFuYWdlZCBieSB0aGUgdW5kZXJseWluZyBDIHdpZGdldCwg YW5kIHlvdQogICAgICAtLSAgc2hvdWxkIG5ldmVyIGZyZWUgdGhlIHJlc3VsdCB5b3Vyc2VsZi4K ICAgICAgLS0KICAgICAgLS0gIE5vdGUgYWxzbyB0aGF0IHRoZSBtZW1vcnkgbWlnaHQgbm90IGJl IGFjdHVhbGx5IGZyZWVkLiBGb3IgZWZmaWNpZW5jeQogICAgICAtLSAgcmVhc29ucywgR3RrQWRh IHdpbGwga2VlcCB0aGUgbWVtb3J5IGFsbG9jYXRlZCBhbmQgdHJ5IHRvIHJldXNlIGl0IGFzCiAg ICAgIC0tICBtdWNoIGFzIHBvc3NpYmxlLgoKICAgICAgZnVuY3Rpb24gR2V0X0RhdGEgKExpc3Qg OiBpbiBHbGlzdCkgcmV0dXJuIEdwb2ludGVyOwogICAgICAtLSAgUmV0dXJuIHRoZSB2YWx1ZSBw b2ludGVkIHRvIGJ5IExpc3QuCiAgICAgIC0tICBUaGUgU3lzdGVtLkFkZHJlc3MgY29udGFpbmVy IGluIHRoZSBDIGxpc3QgaXMgY29udmVydGVkIHRvIGEgR3BvaW50ZXIKICAgICAgLS0gIHRocm91 Z2ggYSBjYWxsIHRvIENvbnZlcnQuCgogICAgICBmdW5jdGlvbiBHZXRfRGF0YV9BZGRyZXNzIChM aXN0IDogaW4gR2xpc3QpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgLS0gIFJldHVybiBk aXJlY3RseSB0aGUgU3lzdGVtLkFkZHJlc3MgY29udGFpbmVkIGluIHRoZSBDIGxpc3QuCiAgICAg IC0tICBUaGlzIGlzIHVzZWQgbWFpbmx5IGludGVybmFsbHkgaW4gR3RrQWRhIHRvIGltcGxlbWVu dCBTdHJpbmcgbGlzdHMsCiAgICAgIC0tICBhbmQgeW91IHNob3VsZCBub3QgaGF2ZSB0byB1c2Ug dGhpcyBzdWJwcm9ncmFtIHlvdXJzZWxmLgoKICAgICAgLS0gIDxkb2NfaWdub3JlPgogICAgICBm dW5jdGlvbiBHZXRfR3BvaW50ZXIgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdwb2ludGVyOwog ICAgICAtLSAgU29tZXRpbWVzLCB0aGUgZGF0YSBpcyBub3Qgc3RvcmVkIGluIHRoZSAiZGF0YSIg ZmllbGQKICAgICAgLS0gIG9mIGVhY2ggY2VsbCwgYnV0IHJhdGhlciBhdCBlYWNoIGNlbGwuIElu IHN1Y2ggY2FzZXMsCiAgICAgIC0tICB0byByZXRyaWV2ZSB0aGUgYWRkcmVzcyBvZiB0aGUgZGF0 YSwgd2UgbmVlZCB0byByZXR1cm4KICAgICAgLS0gIHRoZSBhZGRyZXNzIG9mIHRoZSBjZWxsIGl0 c2VsZiwgaW5zdGVkIG9mIHRoZSBhZGRyZXNzCiAgICAgIC0tICBwb2ludGVkIHRvIGJ5IGRhdGEu CiAgICAgIC0tCiAgICAgIC0tICBFeDogdGhlIEd0a0NUcmVlIHJvd19saXN0LgogICAgICAtLSAg PC9kb2NfaWdub3JlPgoKICAgICAgZnVuY3Rpb24gSW5kZXggKExpc3QgOiBpbiBHbGlzdDsKICAg ICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcikKICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEdpbnQ7CiAgICAgIC0tICBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBl bGVtZW50IGluIExJU1QgdGhhdCBjb250YWlucyBEYXRhLgogICAgICAtLSAgTm90ZSB0aGF0IHRo aXMgZnVuY3Rpb24gaXMgaXJyZWxldmFudCBpZiBDb252ZXJ0IGRvZXMgbm90IHJldHVybiB0aGUK ICAgICAgLS0gIHNhbWUgdmFsdWUgZm9yIHR3byBpZGVudGljYWwgZGF0YS4KCiAgICAgIGZ1bmN0 aW9uIExhc3QgKExpc3QgOiBpbiBHbGlzdCkgcmV0dXJuIEdsaXN0OwogICAgICAtLSAgUmV0dXJu IHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGxpc3QuCgogICAgICBmdW5jdGlvbiBMZW5ndGggKExp c3QgOiBpbiBHbGlzdCkgcmV0dXJuIEd1aW50OwogICAgICAtLSAgUmV0dXJuIHRoZSBudW1iZXIg b2YgZWxlbWVudHMgaW4gdGhlIGxpc3QuCiAgICAgIC0tICBUaGUgbGFzdCBpdGVtJ3MgaW5kZXgg aXMgTGVuZ3RoIC0gMS4KCiAgICAgIHByb2NlZHVyZSBMaXN0X1JldmVyc2UgKExpc3QgOiBpbiBv dXQgR2xpc3QpOwogICAgICAtLSAgUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGxpc3QgKHRoZSBs YXN0IGl0ZW0gYmVjb21lcyB0aGUgZmlyc3QsIGV0Yy4pCgogICAgICBmdW5jdGlvbiBOZXh0IChM aXN0IDogaW4gR2xpc3QpIHJldHVybiBHbGlzdDsKICAgICAgLS0gIFJldHVybnMgdGhlIEl0ZW0g Zm9sbG93aW5nIExJU1QgaW4gdGhlIGdsb2JhbCBsaXN0IHRoYXQgY29udGFpbnMKICAgICAgLS0g IGJvdGguCiAgICAgIC0tICBJZiB0aGVyZSBpcyBubyBzdWNoIGl0ZW0sIHJldHVybiBOdWxsX0xp c3QuIFRoaXMgaXMgaG93IHlvdQogICAgICAtLSAgc3RvcCBpdGVyYXRpbmcgb3ZlciBhIGxpc3Qu CgogICAgICBmdW5jdGlvbiBOdGggKExpc3QgOiBpbiBHbGlzdDsKICAgICAgICAgICAgICAgICAg ICBOICAgIDogaW4gR3VpbnQpCiAgICAgICAgICAgICAgICAgICByZXR1cm4gR2xpc3Q7CiAgICAg IC0tICBHaXZlIHRoZSBudGggaXRlbSBmb2xsb3dpbmcgTElTVCBpbiB0aGUgZ2xvYmFsIGxpc3Qg dGhhdAogICAgICAtLSAgY29udGFpbnMgYm90aC4KICAgICAgLS0gIElmIHRoZXJlIGlzIG5vIHN1 Y2ggaXRlbSwgcmV0dXJuIE51bGxfTGlzdC4KCiAgICAgIGZ1bmN0aW9uIE50aF9EYXRhIChMaXN0 IDogaW4gR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBOIDogaW4gR3VpbnQpCiAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBHcG9pbnRlcjsKICAgICAgLS0gIFJldHVybiB0aGUg RGF0YSBjb250YWluZWQgaW4gdGhlIE4tdGggaXRlbSBvZiBMaXN0LgogICAgICAtLSAgVGhlIHJl c3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlcmUgaXMgbm8gc3VjaCBpdGVtIGluIHRoZSBsaXN0Lgog ICAgICAtLSAgVGhlIGFjdHVhbCByZXN1bHQgaW4gdGhhdCBjYXNlIGlzIHRoZSByZXN1bHQgb2YK ICAgICAgLS0gICAgICBDb252ZXJ0IChTeXN0ZW0uTnVsbF9BZGRyZXNzKTsKICAgICAgLS0gIHdo aWNoIG1pZ2h0IG5vdCBtZWFuIGFueXRoaW5nLgoKICAgICAgZnVuY3Rpb24gUG9zaXRpb24gKExp c3QgOiBpbiBHbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgOiBpbiBHbGlzdCkK ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgICAgIC0tICBSZXR1cm4gdGhl IHBvc2l0aW9uIG9mIExpbmsgaW4gdGhlIExpc3QuCiAgICAgIC0tICBJZiBMaW5rIGlzIG5vdCBj b250YWluZWQgaW4gdGhlIGxpc3QsIC0xIGlzIHJldHVybmVkLgoKICAgICAgcHJvY2VkdXJlIFBy ZXBlbmQgKExpc3QgOiBpbiBvdXQgR2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICBEYXRh IDogaW4gR3BvaW50ZXIpOwogICAgICAtLSAgQWRkIGFuIGl0ZW0gYXQgdGhlIGJlZ2lubmluZyBv ZiB0aGUgbGlzdC4KICAgICAgLS0gIFRoaXMgb3BlcmF0aW9uIGFsd2F5cyBzdWNjZWVkLgoKICAg ICAgZnVuY3Rpb24gUHJldiAoTGlzdCA6IGluIEdsaXN0KSByZXR1cm4gR2xpc3Q7CiAgICAgIC0t ICBSZXR1cm4gdGhlIGl0ZW0gYmVmb3JlIExpc3QgaW4gdGhlIGdsb2JhbCBsaXN0IHRoYXQgY29u dGFpbnMgYm90aC4KICAgICAgLS0gIFJldHVybiBOdWxsX0xpc3QgaWYgdGhlcmUgaXMgbm8gc3Vj aCBpdGVtLgoKICAgICAgcHJvY2VkdXJlIFJlbW92ZSAoTGlzdCA6IGluIG91dCBHbGlzdDsKICAg ICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgLS0gIFJlbW92 ZSB0aGUgZmlyc3QgaXRlbSBpbiBMaXN0IHRoYXQgY29udGFpbnMgRGF0YS4KICAgICAgLS0gIE5v dGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBjYW4gc3VjY2VlZCBvbmx5IGlmIENvbnZlcnQgYWx3YXlz IHJldHVybgogICAgICAtLSAgdGhlIHNhbWUgYWRkcmVzcyBmb3IgYSBnaXZlbiB2YWx1ZS4KCiAg ICAgIHByb2NlZHVyZSBSZW1vdmVfTGluayAoTGlzdCA6IGluIG91dCBHbGlzdDsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaW5rIDogaW4gR2xpc3QpOwogICAgICAtLSAgUmVtb3ZlIExp bmsgZnJvbSB0aGUgbGlzdCB0byB3aGljaCBpdCBiZWxvbmdzLgogICAgICAtLSAgSWYgdGhhdCBs aXN0IGlzIG5vdCBMaXN0LCBubyBlcnJvciBpcyByZXR1cm5lZCwgYnV0IExpbmsgaXMgcmVtb3Zl ZAogICAgICAtLSAgYW55d2F5LgoKICAgICAgZnVuY3Rpb24gSXNfQ3JlYXRlZCAoTGlzdCA6IGlu IEdsaXN0KSByZXR1cm4gQm9vbGVhbjsKICAgICAgLS0gIFJldHVybiBUcnVlIGlmIHRoZXJlIGlz IGEgQyB3aWRnZXQgYXNzb2NpYXRlZCB3aXRoIExpc3QuCgogICAgICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAgICAgLS0gSW50ZXJuYWwgZnVuY3Rpb25zIC0tCiAgICAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAgICAtLSAgUGxlYXNlIGRvIG5vdCB1c2UgdGhlIGZvbGxvd2luZyBm dW5jdGlvbnMuIFRoZXkgYXJlIHVzZWQgaW50ZXJuYWxseQogICAgICAtLSAgYnkgR3RrQWRhLgog ICAgICAtLSAgPGRvY19pZ25vcmU+CgogICAgICBmdW5jdGlvbiBHZXRfT2JqZWN0IChPYmogOiBp biBHbGlzdCkgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAtLSAgUmV0dXJucyB0aGUgQyBv YmplY3QgY29udGFpbmVkIGluIE9CSi4KICAgICAgcHJhZ21hIElubGluZSAoR2V0X09iamVjdCk7 CgogICAgICBwcm9jZWR1cmUgU2V0X09iamVjdCAoT2JqIDogaW4gb3V0IEdsaXN0OyBWYWx1ZSAg OiBpbiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIC0tICBNb2RpZmllcyB0aGUgQyBvYmplY3QgY29u dGFpbmVkIGluIE9CSi4KICAgICAgcHJhZ21hIElubGluZSAoU2V0X09iamVjdCk7CgogICAgICAt LSAgPC9kb2NfaWdub3JlPgoKICAgcHJpdmF0ZQoKICAgICAgdHlwZSBHbGlzdCBpcwogICAgICAg ICByZWNvcmQKICAgICAgICAgICAgUHRyIDogU3lzdGVtLkFkZHJlc3MgOj0gU3lzdGVtLk51bGxf QWRkcmVzczsKICAgICAgICAgZW5kIHJlY29yZDsKICAgICAgTnVsbF9MaXN0IDogY29uc3RhbnQg R2xpc3QgOj0gKFB0ciA9PiBTeXN0ZW0uTnVsbF9BZGRyZXNzKTsKICAgZW5kIEdlbmVyaWNfTGlz dDsKCmVuZCBHbGliLkdsaXN0OwoKLS0gIDxleGFtcGxlPgotLSAgPGluY2x1ZGU+Li4vZXhhbXBs ZXMvZG9jdW1lbnRhdGlvbi9nbGlzdF90cmF2ZXJzZS5hZGI8L2luY2x1ZGU+Ci0tICA8L2V4YW1w bGU+Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9y IHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1 ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAg ICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAg IC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRp b24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMg dW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBh biAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1 c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5v dCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4 ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5z ZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpwYWNrYWdlIGJvZHkgR2xpYi5HU2xpc3QgaXMKCiAg IHBhY2thZ2UgYm9keSBHZW5lcmljX1NMaXN0IGlzCiAgICAgIC0tLS0tLS0tLS0tCiAgICAgIC0t IEFsbG9jIC0tCiAgICAgIC0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgQWxsb2MgKExpc3Qg OiBvdXQgR1NsaXN0KSBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCByZXR1cm4gU3lzdGVt LkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9h bGxvYyIpOwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCk7 CiAgICAgIGVuZCBBbGxvYzsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBBcHBlbmQgLS0K ICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgQXBwZW5kCiAgICAgICAgKExpc3Qg OiBpbiBvdXQgR1NsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgIGlzCiAg ICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBv cnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9hcHBlbmQiKTsKICAgICAgYmVnaW4KICAgICAgICAg U2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAgICAgZW5kIEFw cGVuZDsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBDb25jYXQgLS0KICAgICAgLS0tLS0t LS0tLS0tCgogICAgICBmdW5jdGlvbiBDb25jYXQKICAgICAgICAoTGlzdDEgOiBpbiBHU2xpc3Q7 CiAgICAgICAgIExpc3QyIDogaW4gR1NsaXN0KQogICAgICAgICByZXR1cm4gR1NsaXN0CiAgICAg IGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0MSA6IFN5c3RlbS5BZGRyZXNzOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdDIgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X2FwcGVuZCIpOwogICAgICAgICBUbXAg OiBHU2xpc3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwg KEdldF9PYmplY3QgKExpc3QxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R2V0X09iamVjdCAoTGlzdDIpKSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBDb25j YXQ7CgogICAgICAtLS0tLS0tLS0tLS0tLQogICAgICAtLSBHZXRfRGF0YSAtLQogICAgICAtLS0t LS0tLS0tLS0tLQoKICAgICAgZnVuY3Rpb24gR2V0X0RhdGEgKExpc3QgOiBpbiBHU2xpc3QpCiAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR3BvaW50ZXIKICAgICAgaXMKICAgICAgICAg ZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIFN5c3RlbS5B ZGRyZXNzOwogICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImFkYV9nc2xpc3Rf Z2V0X2RhdGEiKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0dXJuIENvbnZlcnQgKEludGVybmFs IChHZXRfT2JqZWN0IChMaXN0KSkpOwogICAgICBlbmQgR2V0X0RhdGE7CgogICAgICAtLS0tLS0t LS0tLS0KICAgICAgLS0gSW5zZXJ0IC0tCiAgICAgIC0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2Vk dXJlIEluc2VydAogICAgICAgIChMaXN0ICAgICA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAgIERh dGEgICAgIDogaW4gICAgIEdwb2ludGVyOwogICAgICAgICBQb3NpdGlvbiA6IGluICAgICBHaW50 KQogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRy ZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRyZXNzOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zICA6IEdpbnQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ19zbGlzdF9pbnNlcnQiKTsKICAgICAgYmVnaW4KICAgICAgICAgU2V0 X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSksIFBvc2l0aW9uKSk7CiAgICAg IGVuZCBJbnNlcnQ7CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIEZpbmQgLS0KICAgICAgLS0t LS0tLS0tLQoKICAgICAgZnVuY3Rpb24gRmluZAogICAgICAgIChMaXN0IDogaW4gR1NsaXN0Owog ICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAgICAgIHJldHVybiBHU2xpc3QKICAgICAg aXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzczsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21h IEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X2ZpbmQiKTsKICAgICAgICAgVG1wIDogR1Ns aXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRf T2JqZWN0IChMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVy dCAoRGF0YSkpKTsKICAgICAgICAgcmV0dXJuIFRtcDsKICAgICAgZW5kIEZpbmQ7CgogICAgICAt LS0tLS0tLS0tCiAgICAgIC0tIEZyZWUgLS0KICAgICAgLS0tLS0tLS0tLQoKICAgICAgcHJvY2Vk dXJlIEZyZWUgKExpc3QgOiBpbiBvdXQgR1NsaXN0KSBpcwogICAgICAgICBwcm9jZWR1cmUgSW50 ZXJuYWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMs IEludGVybmFsLCAiZ19zbGlzdF9mcmVlIik7CiAgICAgIGJlZ2luCiAgICAgICAgIEludGVybmFs IChHZXRfT2JqZWN0IChMaXN0KSk7CiAgICAgIGVuZCBGcmVlOwoKICAgICAgLS0tLS0tLS0tLS0t LS0tLQogICAgICAtLSBHZXRfT2JqZWN0IC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgICAg IGZ1bmN0aW9uIEdldF9PYmplY3QgKE9iaiA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzIGlzCiAgICAgIGJlZ2luCiAgICAgICAgIHJl dHVybiBPYmouUHRyOwogICAgICBlbmQgR2V0X09iamVjdDsKCiAgICAgIC0tLS0tLS0tLS0tCiAg ICAgIC0tIEluZGV4IC0tCiAgICAgIC0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBJbmRleAog ICAgICAgIChMaXN0IDogaW4gR1NsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAg ICAgICAgIHJldHVybiBHaW50CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChM aXN0IDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDog U3lzdGVtLkFkZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsK ICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJnX3NsaXN0X2luZGV4Iik7CiAg ICAgIGJlZ2luCiAgICAgICAgIHJldHVybiBJbnRlcm5hbCAoR2V0X09iamVjdCAoTGlzdCksCiAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpOwogICAgICBlbmQgSW5kZXg7 CgogICAgICAtLS0tLS0tLS0tCiAgICAgIC0tIExhc3QgLS0KICAgICAgLS0tLS0tLS0tLQoKICAg ICAgZnVuY3Rpb24gTGFzdCAoTGlzdCA6IGluIEdTbGlzdCkgcmV0dXJuIEdTbGlzdCBpcwogICAg ICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBwcmFnbWEg SW1wb3J0IChDLCBJbnRlcm5hbCwgImdfc2xpc3RfbGFzdCIpOwogICAgICAgICBUbXAgOiBHU2xp c3Q7CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKFRtcCwgSW50ZXJuYWwgKEdldF9P YmplY3QgKExpc3QpKSk7CiAgICAgICAgIHJldHVybiBUbXA7CiAgICAgIGVuZCBMYXN0OwoKICAg ICAgLS0tLS0tLS0tLS0tCiAgICAgIC0tIExlbmd0aCAtLQogICAgICAtLS0tLS0tLS0tLS0KCiAg ICAgIGZ1bmN0aW9uIExlbmd0aCAoTGlzdCA6IGluIEdTbGlzdCkgcmV0dXJuIEd1aW50IGlzCiAg ICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gR3VpbnQ7CiAgICAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ19zbGlzdF9sZW5ndGgiKTsKICAgICAgYmVnaW4KICAgICAgICAgcmV0 dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSk7CiAgICAgIGVuZCBMZW5ndGg7CgogICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gTGlzdF9SZXZlcnNlIC0tCiAgICAgIC0tLS0t LS0tLS0tLS0tLS0tLQoKICAgICAgcHJvY2VkdXJlIExpc3RfUmV2ZXJzZSAoTGlzdCA6IGluIG91 dCBHU2xpc3QpIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFk ZHJlc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9yZXZlcnNlIik7 CiAgICAgIGJlZ2luCiAgICAgICAgIFNldF9PYmplY3QgKExpc3QsIEludGVybmFsIChHZXRfT2Jq ZWN0IChMaXN0KSkpOwogICAgICBlbmQgTGlzdF9SZXZlcnNlOwoKICAgICAgLS0tLS0tLS0tLQog ICAgICAtLSBOZXh0IC0tCiAgICAgIC0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE5leHQgKExp c3QgOiBpbiBHU2xpc3QpIHJldHVybiBHU2xpc3QgaXMKICAgICAgICAgZnVuY3Rpb24gSW50ZXJu YWwgKExpc3QgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJhZGFfZ3NsaXN0X25leHQiKTsKICAgICAgICAgVG1wIDogR1NsaXN0OwogICAgICBiZWdpbgog ICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFsIChHZXRfT2JqZWN0IChMaXN0KSkpOwog ICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQgTmV4dDsKCiAgICAgIC0tLS0tLS0tLQogICAg ICAtLSBOdGggLS0KICAgICAgLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBOdGgKICAgICAgICAo TGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAgTiAgICA6IGluIEd1aW50KQogICAgICAgICByZXR1 cm4gR1NsaXN0CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lz dGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOICAgIDogR3VpbnQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9udGgiKTsKICAgICAgICAgVG1w IDogR1NsaXN0OwogICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChUbXAsIEludGVybmFs IChHZXRfT2JqZWN0IChMaXN0KSwgTikpOwogICAgICAgICByZXR1cm4gVG1wOwogICAgICBlbmQg TnRoOwoKICAgICAgLS0tLS0tLS0tLS0tLS0KICAgICAgLS0gTnRoX0RhdGEgLS0KICAgICAgLS0t LS0tLS0tLS0tLS0KCiAgICAgIGZ1bmN0aW9uIE50aF9EYXRhCiAgICAgICAgKExpc3QgOiBpbiBH U2xpc3Q7CiAgICAgICAgIE4gICAgOiBpbiBHdWludCkKICAgICAgICAgcmV0dXJuIEdwb2ludGVy CiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJl c3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOICAgIDogR3VpbnQpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHByYWdtYSBJ bXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9udGhfZGF0YSIpOwogICAgICBiZWdpbgogICAg ICAgICByZXR1cm4gQ29udmVydCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBOKSk7CiAg ICAgIGVuZCBOdGhfRGF0YTsKCiAgICAgIC0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFBvc2l0aW9u IC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tCgogICAgICBmdW5jdGlvbiBQb3NpdGlvbgogICAgICAg IChMaXN0IDogaW4gR1NsaXN0OwogICAgICAgICBMaW5rIDogaW4gR1NsaXN0KQogICAgICAgICBy ZXR1cm4gR2ludAogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayA6IFN5c3RlbS5B ZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdpbnQ7CiAgICAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9wb3NpdGlvbiIpOwogICAgICBi ZWdpbgogICAgICAgICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLCBHZXRfT2Jq ZWN0IChMaW5rKSk7CiAgICAgIGVuZCBQb3NpdGlvbjsKCiAgICAgIC0tLS0tLS0tLS0tLS0KICAg ICAgLS0gUHJlcGVuZCAtLQogICAgICAtLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUHJl cGVuZAogICAgICAgIChMaXN0IDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgRGF0YSA6IGluIEdw b2ludGVyKQogICAgICBpcwogICAgICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoTGlzdCA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA6IFN5c3RlbS5BZGRy ZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwog ICAgICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImdfc2xpc3RfcHJlcGVuZCIpOwog ICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVj dCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0IChE YXRhKSkpOwogICAgICBlbmQgUHJlcGVuZDsKCiAgICAgIC0tLS0tLS0tLS0tLQogICAgICAtLSBS ZW1vdmUgLS0KICAgICAgLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlCiAgICAg ICAgKExpc3QgOiBpbiBvdXQgR1NsaXN0OwogICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAg ICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogU3lzdGVtLkFkZHJlc3MpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9yZW1vdmUiKTsKICAgICAgYmVnaW4K ICAgICAgICAgU2V0X09iamVjdCAoTGlzdCwgSW50ZXJuYWwgKEdldF9PYmplY3QgKExpc3QpLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydCAoRGF0YSkpKTsKICAg ICAgZW5kIFJlbW92ZTsKCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgICAgIC0tIFJlbW92ZV9M aW5rIC0tCiAgICAgIC0tLS0tLS0tLS0tLS0tLS0tCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlX0xp bmsKICAgICAgICAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAgIExpbmsgOiBpbiBHU2xp c3QpCiAgICAgIGlzCiAgICAgICAgIGZ1bmN0aW9uIEludGVybmFsIChMaXN0IDogU3lzdGVtLkFk ZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIDogU3lzdGVtLkFkZHJlc3Mp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAg ICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ19zbGlzdF9yZW1vdmVfbGluayIpOwog ICAgICBiZWdpbgogICAgICAgICBTZXRfT2JqZWN0IChMaXN0LCBJbnRlcm5hbCAoR2V0X09iamVj dCAoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRfT2JqZWN0 IChMaW5rKSkpOwogICAgICBlbmQgUmVtb3ZlX0xpbms7CgogICAgICAtLS0tLS0tLS0tLS0tLS0t CiAgICAgIC0tIFNldF9PYmplY3QgLS0KICAgICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgcHJv Y2VkdXJlIFNldF9PYmplY3QgKE9iaiAgIDogaW4gb3V0IEdTbGlzdDsKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFZhbHVlIDogaW4gICAgIFN5c3RlbS5BZGRyZXNzKSBpcwogICAgICBiZWdp bgogICAgICAgICBPYmouUHRyIDo9IFZhbHVlOwogICAgICBlbmQgU2V0X09iamVjdDsKCiAgIGVu ZCBHZW5lcmljX1NMaXN0OwplbmQgR2xpYi5HU2xpc3Q7CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAg ICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAg ICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAo QykgMTk5OC0yMDAwICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwg QnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQot LSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAt LQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAg ICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRv IHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50 aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5p dCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlz ICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBl eGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl LiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBv dGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNv dmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK LS0gIDxkZXNjcmlwdGlvbj4KLS0KLS0gIFRoaXMgcGFja2FnZXMgcHJvdmlkZXMgdGhlIGltcGxl bWVudGF0aW9uIG9mIGEgZ2VuZXJpYyBzaW5nbGUtbGlua2VkCi0tICBsaXN0LgotLSAgT25lIGlu c3RhbnRpYXRpb24gaXMgZm91bmQgaW4gR3RrLldpZGdldC5XaWRnZXRfU2xpc3QgZm9yIGEgbGlz dCBvZgotLSAgd2lkZ2V0cy4KLS0KLS0gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBHbGliLkds aXN0IGZvciBtb3JlIGluZm9ybWF0aW9uLCBpdCBwcm92aWRlcwotLSAgdGhlIHNhbWUgQVBJIGFz IHRoaXMgcGFja2FnZS4KLS0gIFNpbmdsZSBsaW5rZWQgbGlzdHMgYXJlIHRyYXZlcnNlZCB0aGUg c2FtZSB3YXkgYXMgZG91YmxlLWxpbmtlZCBsaXN0cywKLS0gIGV2ZW4gdGhvdWdoIG1vc3Qgc3Vi cHJvZ3JhbXMgYXJlIGxlc3MgZWZmaWNpZW50IHRoYW4gdGhlaXIKLS0gIGRvdWJsZS1saW5rZWQg Y291bnRlcnBhcnRzLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxjX3ZlcnNpb24+MS4yLjY8 L2NfdmVyc2lvbj4KCndpdGggU3lzdGVtOwoKcGFja2FnZSBHbGliLkdTbGlzdCBpcwoKICAgLS0g IDxkb2NfaWdub3JlPgoKICAgZ2VuZXJpYwogICAgICB0eXBlIEdwb2ludGVyICg8PikgaXMgcHJp dmF0ZTsKICAgICAgd2l0aCBmdW5jdGlvbiBDb252ZXJ0IChQIDogR3BvaW50ZXIpIHJldHVybiBT eXN0ZW0uQWRkcmVzcyBpcyA8PjsKICAgICAgd2l0aCBmdW5jdGlvbiBDb252ZXJ0IChTIDogU3lz dGVtLkFkZHJlc3MpIHJldHVybiBHcG9pbnRlciBpcyA8PjsKICAgcGFja2FnZSBHZW5lcmljX1NM aXN0IGlzCgogICAgICB0eXBlIEdTbGlzdCBpcyBwcml2YXRlOwogICAgICBOdWxsX0xpc3QgOiBj b25zdGFudCBHU2xpc3Q7CgogICAgICBwcm9jZWR1cmUgQWxsb2MgKExpc3QgOiBvdXQgR1NsaXN0 KTsKICAgICAgcHJvY2VkdXJlIEFwcGVuZCAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAg ICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcik7CiAgICAgIGZ1bmN0aW9uIENvbmNh dCAoTGlzdDEgOiBpbiBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgTGlzdDIgOiBpbiBH U2xpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdTbGlzdDsKICAgICAgcHJvY2Vk dXJlIEluc2VydCAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAg IERhdGEgOiBpbiBHcG9pbnRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gOiBp biBHaW50KTsKICAgICAgZnVuY3Rpb24gRmluZCAoTGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAg ICAgICAgICAgICAgRGF0YSA6IGluIEdwb2ludGVyKQogICAgICAgICAgICAgICAgICAgICByZXR1 cm4gR1NsaXN0OwogICAgICBwcm9jZWR1cmUgRnJlZSAoTGlzdCA6IGluIG91dCBHU2xpc3QpOwog ICAgICBmdW5jdGlvbiBHZXRfRGF0YSAoTGlzdCA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHcG9pbnRlcjsKICAgICAgZnVuY3Rpb24gSW5kZXggKExpc3QgOiBp biBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICBEYXRhIDogaW4gR3BvaW50ZXIpCiAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgICAgZnVuY3Rpb24gTGFzdCAoTGlzdCA6 IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdTbGlzdDsKICAgICAgZnVu Y3Rpb24gTGVuZ3RoIChMaXN0IDogaW4gR1NsaXN0KQogICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBHdWludDsKICAgICAgcHJvY2VkdXJlIExpc3RfUmV2ZXJzZSAoTGlzdCA6IGluIG91dCBH U2xpc3QpOwogICAgICBmdW5jdGlvbiBOZXh0IChMaXN0IDogaW4gR1NsaXN0KQogICAgICAgICAg ICAgICAgICAgICByZXR1cm4gR1NsaXN0OwogICAgICBmdW5jdGlvbiBOdGggKExpc3QgOiBpbiBH U2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgTiAgICA6IGluIEd1aW50KQogICAgICAgICAgICAg ICAgICAgIHJldHVybiBHU2xpc3Q7CiAgICAgIGZ1bmN0aW9uIE50aF9EYXRhIChMaXN0IDogaW4g R1NsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgTiA6IGluIEd1aW50KQogICAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIEdwb2ludGVyOwogICAgICBmdW5jdGlvbiBQb3NpdGlvbiAo TGlzdCA6IGluIEdTbGlzdDsKICAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgOiBpbiBHU2xp c3QpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2ludDsKICAgICAgcHJvY2VkdXJl IFByZXBlbmQgKExpc3QgOiBpbiBvdXQgR1NsaXN0OwogICAgICAgICAgICAgICAgICAgICAgICAg RGF0YSA6IGluIEdwb2ludGVyKTsKICAgICAgcHJvY2VkdXJlIFJlbW92ZSAoTGlzdCA6IGluIG91 dCBHU2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgOiBpbiBHcG9pbnRlcik7CiAg ICAgIHByb2NlZHVyZSBSZW1vdmVfTGluayAoTGlzdCA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgTGluayA6IGluIEdTbGlzdCk7CiAgICAgIGZ1bmN0aW9uIEdl dF9PYmplY3QgKE9iaiA6IGluIEdTbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW5saW5lIChHZXRfT2JqZWN0KTsKICAg ICAgcHJvY2VkdXJlIFNldF9PYmplY3QgKE9iaiAgICA6IGluIG91dCBHU2xpc3Q7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgOiBpbiAgICAgU3lzdGVtLkFkZHJlc3MpOwogICAg ICBwcmFnbWEgSW5saW5lIChTZXRfT2JqZWN0KTsKICAgcHJpdmF0ZQoKICAgICAgdHlwZSBHU2xp c3QgaXMKICAgICAgICAgcmVjb3JkCiAgICAgICAgICAgIFB0ciA6IFN5c3RlbS5BZGRyZXNzIDo9 IFN5c3RlbS5OdWxsX0FkZHJlc3M7CiAgICAgICAgIGVuZCByZWNvcmQ7CiAgICAgIE51bGxfTGlz dCA6IGNvbnN0YW50IEdTbGlzdCA6PSAoUHRyID0+IFN5c3RlbS5OdWxsX0FkZHJlc3MpOwogICBl bmQgR2VuZXJpY19TTGlzdDsKCiAgIC0tICA8L2RvY19pZ25vcmU+CgplbmQgR2xpYi5HU2xpc3Q7 Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRo ZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBD aGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAg ICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRo aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxp YnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0t Ci0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24s IGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5p dCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAg IC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2Ug IHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBo b3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1 dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4g ICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBwYWNr YWdlIHByb3ZpZGVzIGRlZmluaXRpb25zIGZvciB0aGUgYmFzaWMgdHlwZXMgdXNlZCBpbiBHbGli LAotLSAgR2RrIGFuZCBHdGsuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgoKd2l0aCBBZGEuVW5jaGVj a2VkX0RlYWxsb2NhdGlvbjsKd2l0aCBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb247CndpdGggU3lz dGVtOwp3aXRoIEludGVyZmFjZXMuQzsKCnBhY2thZ2UgR2xpYiBpcwogICBwcmFnbWEgUHJlZWxh Ym9yYXRlOwoKICAgcGFja2FnZSBDIHJlbmFtZXMgSW50ZXJmYWNlcy5DOwogICB1c2UgdHlwZSBD LmludDsKICAgdXNlIHR5cGUgQy51bnNpZ25lZDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gVGhlIGJhc2ljIHR5cGVzIGRlZmluZWQgYnkgZ2xpYiAtLQog ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICB0eXBlIEdzaG9ydCBp cyBuZXcgQy5zaG9ydDsKICAgdHlwZSBHbG9uZyAgaXMgbmV3IEMubG9uZzsKICAgdHlwZSBHaW50 ICAgaXMgbmV3IEMuaW50OwogICB0eXBlIEdjaGFyICBpcyBuZXcgQy5jaGFyOwogICB0eXBlIEdi b29sZWFuIGlzIG5ldyBHaW50OwoKICAgdHlwZSBHdXNob3J0IGlzIG5ldyBDLnVuc2lnbmVkX3No b3J0OwogICB0eXBlIEd1bG9uZyAgaXMgbmV3IEMudW5zaWduZWRfbG9uZzsKICAgdHlwZSBHdWlu dCAgIGlzIG5ldyBDLnVuc2lnbmVkOwogICB0eXBlIEd1Y2hhciAgaXMgbmV3IEMudW5zaWduZWRf Y2hhcjsKCiAgIHR5cGUgR2Zsb2F0ICBpcyBuZXcgQy5DX2Zsb2F0OwogICB0eXBlIEdkb3VibGUg aXMgbmV3IEMuZG91YmxlOwoKICAgc3VidHlwZSBHaW50OCAgaXMgR2ludCByYW5nZSAtKDIgKiog NykgLi4gKDIgKiogNyAtIDEpOwogICBzdWJ0eXBlIEdpbnQxNiBpcyBHaW50IHJhbmdlIC0oMiAq KiAxNSkgLi4gKDIgKiogMTUgLSAxKTsKICAgc3VidHlwZSBHaW50MzIgaXMgR2ludCByYW5nZSAt KDIgKiogMzEpIC4uICgyICoqIDMxIC0gMSk7CgogICBzdWJ0eXBlIEd1aW50OCAgaXMgR3VpbnQg cmFuZ2UgR3VpbnQnRmlyc3QgLi4gKDIgKiogOCAtIDEpOwogICBzdWJ0eXBlIEd1aW50MTYgaXMg R3VpbnQgcmFuZ2UgR3VpbnQnRmlyc3QgLi4gKDIgKiogMTYgLSAxKTsKICAgc3VidHlwZSBHdWlu dDMyIGlzIEd1aW50IHJhbmdlIEd1aW50J0ZpcnN0IC4uICgyICoqIDMyIC0gMSk7CgogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNvbWUgQXJyYXkgdHlwZXMgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKICAgdHlwZSBHYm9vbGVhbl9BcnJheSBpcyBhcnJheSAoTmF0dXJhbCBy YW5nZSA8Pikgb2YgR2Jvb2xlYW47CiAgIHR5cGUgR3Nob3J0X0FycmF5ICAgaXMgYXJyYXkgKE5h dHVyYWwgcmFuZ2UgPD4pIG9mIEdzaG9ydDsKICAgdHlwZSBHbG9uZ19BcnJheSAgICBpcyBhcnJh eSAoTmF0dXJhbCByYW5nZSA8Pikgb2YgR2xvbmc7CiAgIHR5cGUgR2ludF9BcnJheSAgICAgaXMg YXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEdpbnQ7CiAgIHR5cGUgR3VpbnRfQXJyYXkgICAg aXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEd1aW50OwogICB0eXBlIEd1aW50MzJfQXJy YXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHdWludDMyOwogICB0eXBlIEd1c2hv cnRfQXJyYXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHdXNob3J0OwogICB0eXBl IEd1bG9uZ19BcnJheSAgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBHdWxvbmc7CiAg IHR5cGUgR2Zsb2F0X0FycmF5ICAgaXMgYXJyYXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEdmbG9h dDsKICAgdHlwZSBHdWNoYXJfQXJyYXkgICBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8Pikgb2Yg R3VjaGFyOwogICB0eXBlIEdkb3VibGVfQXJyYXkgIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+ KSBvZiBHZG91YmxlOwoKICAgdHlwZSBCb29sZWFuX0FycmF5ICBpcyBhcnJheSAoTmF0dXJhbCBy YW5nZSA8Pikgb2YgQm9vbGVhbjsKCiAgIHR5cGUgU2hvcnRfQXJyYXkgICAgaXMgYXJyYXkgKE5h dHVyYWwgcmFuZ2UgPD4pIG9mIEMuc2hvcnQ7CiAgIHR5cGUgTG9uZ19BcnJheSAgICAgaXMgYXJy YXkgKE5hdHVyYWwgcmFuZ2UgPD4pIG9mIEMubG9uZzsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgLS0gQ29udmVyc2lvbiBzZXJ2aWNlcyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCgogICBmdW5jdGlvbiBUb19Cb29sZWFuX0FycmF5IChBIDogaW4gR2Jvb2xlYW5fQXJy YXkpIHJldHVybiBCb29sZWFuX0FycmF5OwogICAtLSAgQ29udmVydCBhIEMtc3R5bGUgYm9vbGVh biBhcnJheSBpbnRvIGFuIEFkYS1zdHlsZSBhcnJheS4KCiAgIGZ1bmN0aW9uIFRvX0Jvb2xlYW4g KFZhbHVlIDogaW4gR2Jvb2xlYW4pIHJldHVybiBCb29sZWFuOwogICAtLSAgQ29udmVydCBhIEMg Ym9vbGVhbiBpbnRvIGFuIEFkYSBib29sZWFuLgoKICAgZnVuY3Rpb24gVG9fQm9vbGVhbiAoVmFs dWUgOiBpbiBHaW50KSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIENvbnZlcnQgYSBDIGludCBpbnRv IGFuIEFkYSBib29sZWFuLgoKICAgZnVuY3Rpb24gVG9fQm9vbGVhbiAoVmFsdWUgOiBpbiBHdWlu dCkgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBDb252ZXJ0IGEgQyB1aW50IGludG8gYW4gQWRhIGJv b2xlYW4uCgogICBmdW5jdGlvbiBUb19HYm9vbGVhbiAoQm9vbCA6IGluIEJvb2xlYW4pIHJldHVy biBHYm9vbGVhbjsKICAgLS0gIENvbnZlcnQgYW4gQWRhIGJvb2xlYW4gaW50byBhIEMgYm9vbGVh bi4KCiAgIGZ1bmN0aW9uIFRvX0dpbnQgKEJvb2wgOiBpbiBCb29sZWFuKSByZXR1cm4gR2ludDsK ICAgLS0gIENvbnZlcnQgYW4gQWRhIGJvb2xlYW4gaW50byBhIEMgaW50LgoKICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gU29tZSBBY2Nlc3MgdHlwZXMgLS0KICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KCiAgIHR5cGUgR3VjaGFyX0FycmF5X0FjY2VzcyBpcyBhY2Nlc3MgR3VjaGFy X0FycmF5OwoKICAgdHlwZSBTdHJpbmdfUHRyIGlzIGFjY2VzcyBhbGwgU3RyaW5nOwoKICAgLS0g IDxkb2NfaWdub3JlPgogICBwcm9jZWR1cmUgRnJlZSBpcyBuZXcgQWRhLlVuY2hlY2tlZF9EZWFs bG9jYXRpb24KICAgICAoT2JqZWN0ID0+IEd1Y2hhcl9BcnJheSwgTmFtZSA9PiBHdWNoYXJfQXJy YXlfQWNjZXNzKTsKCiAgIHByb2NlZHVyZSBGcmVlIGlzIG5ldyBBZGEuVW5jaGVja2VkX0RlYWxs b2NhdGlvbgogICAgIChPYmplY3QgPT4gU3RyaW5nLCBOYW1lID0+IFN0cmluZ19QdHIpOwogICAt LSAgPC9kb2NfaWdub3JlPgoKICAgLS0gIDxkb2NfaWdub3JlPgogICB0eXBlIENfRHVtbXkgaXMg bGltaXRlZCBwcml2YXRlOwogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgdHlwZSBDX1Byb3h5IGlz IGFjY2VzcyBDX0R1bW15OwogICAtLSAgR2VuZXJhbCBwcm94eSBmb3IgQyBzdHJ1Y3R1cmVzLgog ICAtLSAgVGhpcyB0eXBlIGlzIHVzZWQgaW5zdGVhZCBvZiBTeXN0ZW0uQWRkcmVzcyBzbyB0aGF0 IHRoZSB2YXJpYWJsZXMgYXJlCiAgIC0tICBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkIHRvICdu dWxsJy4KICAgLS0gIFRoZSB2YWx1ZSBwb2ludGVkIHRvIGlzIGlycmVsZXZhbnQsIGFuZCBpbiBm YWN0IHNob3VsZCBub3QgYmUgYWNjZXNzZWQuCiAgIC0tICBJdCBoYXMgdGh1cyBiZWVuIG1hZGUg bGltaXRlZCBwcml2YXRlIHdpdGggbm8gc3VicHJvZ3JhbSB0byBhY2Nlc3MgaXQuCiAgIC0tICBD X1Byb3h5IGlzIGEgcHVibGljIHR5cGUgc28gdGhhdCBvbmUgY2FuIGNvbXBhcmUgZGlyZWN0bHkg dGhlIHZhbHVlCiAgIC0tICBvZiB0aGUgdmFyaWFibGVzIHdpdGggJ251bGwnLgoKICAgLS0gIDxk b2NfaWdub3JlPgogICBwcmFnbWEgQ29udmVudGlvbiAoQywgQ19Qcm94eSk7CgogICBmdW5jdGlv biBDb252ZXJ0IGlzIG5ldyBBZGEuVW5jaGVja2VkX0NvbnZlcnNpb24gKFN5c3RlbS5BZGRyZXNz LCBDX1Byb3h5KTsKICAgZnVuY3Rpb24gQ29udmVydCBpcyBuZXcgQWRhLlVuY2hlY2tlZF9Db252 ZXJzaW9uIChDX1Byb3h5LCBTeXN0ZW0uQWRkcmVzcyk7CiAgIC0tICBDb252ZXJ0cyBmcm9tIGEg U3lzdGVtLkFkZHJlc3MgcmV0dXJuZWQgYnkgYSBDIGZ1bmN0aW9uIHRvIGFuCiAgIC0tICBpbnRl cm5hbCBDX1Byb3h5LgoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIC0tLS0tLS0tLS0tLQogICAt LSBRdWFya3MgLS0KICAgLS0tLS0tLS0tLS0tCgogICB0eXBlIEdRdWFyayBpcyBuZXcgR3VpbnQz MjsKICAgLS0gIFJlcHJlc2VudHMgYSBzdHJpbmcgaW50ZXJuYWxseSBpbiBHdGtBZGEuIE9uY2Ug eW91IGtub3cgdGhlCiAgIC0tICBlcXVpdmFsZW50IGZvciBhIHN0cmluZywgeW91IGNhbiBhbHdh eXMgdXNlIGl0IGluc3RlYWQgb2YgdGhlIHN0cmluZywKICAgLS0gIHdoaWNoIHByb3ZpZGVzIGEg ZmFzdGVyIGFjY2VzcyBmb3IgYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCB1c2UgaHRhYmxlcwogICAt LSAgaW4gR3RrQWRhLgogICAtLSAgVGhlcmUgaXMgYSBnbG9iYWwgaHRhYmxlIHRoYXQgY29udGFp bnMgYWxsIHRoZSBxdWFya3MgZGVmaW5lZCBpbgogICAtLSAgeW91ciBhcHBsaWNhdGlvbiBhbmQg R3RrQWRhIGl0c2VsZi4KCiAgIFVua25vd25fUXVhcmsgOiBjb25zdGFudCBHUXVhcmsgOj0gMDsK CiAgIGZ1bmN0aW9uIFF1YXJrX0Zyb21fU3RyaW5nIChJZCA6IGluIFN0cmluZykgcmV0dXJuIEdR dWFyazsKICAgLS0gIFJldHVybiwgb3IgY3JlYXRlIHRoZSBxdWFyayBhc3NvY2lhdGVkIHdpdGgg dGhlIHN0cmluZy4KICAgLS0gIE5vdGUgdGhhdCBpZiB0aGUgcXVhcmsgZG9lcyBub3QgYWxyZWFk eSBleGlzdCwgYW4gZW50cnkgaXMgY3JlYXRlZCBmb3IKICAgLS0gIGl0IGluIHRoZSBnbG9iYWwg aHRhYmxlIGZvciBxdWFya3MuCgogICBmdW5jdGlvbiBRdWFya19UcnlfU3RyaW5nIChJZCA6IGlu IFN0cmluZykgcmV0dXJuIEdRdWFyazsKICAgLS0gIFJldHVybiB0aGUgcXVhcmsgYXNzb2NpYXRl ZCB3aXRoIHRoZSBzdHJpbmcsIGlmIGl0IGV4aXN0cy4KICAgLS0gIElmIGl0IGRvZXMgbm90IGV4 aXN0LCByZXR1cm4gVW5rbm93bl9RdWFyay4KCnByaXZhdGUKICAgdHlwZSBDX0R1bW15IGlzIG51 bGwgcmVjb3JkOwogICAtLSAgVGhpcyBhcnJheSBjYW4gY29udGFpbiBhbnl0aGluZywgc2luY2Ug aXQgaXMgbmV2ZXIgdXNlZCBvbiB0aGUgQWRhIHNpZGUKICAgLS0gIGFueXdheS4KCmVuZCBHbGli OwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAgICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0 aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMTk5OC0xOTk5ICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJpb3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQg Q2hhcmxldCAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2Rp ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAg ICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBU aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQotLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAtLQot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAtLQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAt LQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9u LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVu aXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4g ICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNl ICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBUaGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3Qg aG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVj dXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVyZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2Uu ICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKd2l0aCBHZGs7IHVzZSBHZGs7CndpdGggR2RrLlR5cGVz Owp3aXRoIEd0ay5PYmplY3Q7CgpwYWNrYWdlIEd0ay5BY2NlbF9Hcm91cCBpcwoKICAgdHlwZSBH dGtfQWNjZWxfR3JvdXAgaXMgbmV3IEdkay5DX1Byb3h5OwogICB0eXBlIEd0a19BY2NlbF9FbnRy eSBpcyBuZXcgR2RrLkNfUHJveHk7CgogICB0eXBlIEd0a19BY2NlbF9GbGFncyBpcyBuZXcgR3Vp bnQ7CiAgIEFjY2VsX1Zpc2libGUgICAgICAgIDogY29uc3RhbnQgR3RrX0FjY2VsX0ZsYWdzOwog ICBBY2NlbF9TaWduYWxfVmlzaWJsZSA6IGNvbnN0YW50IEd0a19BY2NlbF9GbGFnczsKICAgQWNj ZWxfTG9ja2VkICAgICAgICAgOiBjb25zdGFudCBHdGtfQWNjZWxfRmxhZ3M7CiAgIEFjY2VsX01h c2sgICAgICAgICAgIDogY29uc3RhbnQgR3RrX0FjY2VsX0ZsYWdzOwoKICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgLS0gIEFjY2VsZXJhdG9yIEdyb3VwcyAgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHdGtfTmV3IChXaWRnZXQgOiBvdXQgR3Rr X0FjY2VsX0dyb3VwKTsKCiAgIGZ1bmN0aW9uIEdldF9EZWZhdWx0IHJldHVybiBHdGtfQWNjZWxf R3JvdXA7CgogICAtLSAgcHJvY2VkdXJlIFJlZgogICAtLSAgcHJvY2VkdXJlIFVucmVmCgogICBm dW5jdGlvbiBBY3RpdmF0ZQogICAgIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91cDsK ICAgICAgQWNjZWxfS2V5ICAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2Nl bF9Nb2RzICA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSkgcmV0dXJuIEJvb2xlYW47 CgogICBmdW5jdGlvbiBBY2NlbF9Hcm91cHNfQWN0aXZhdGUKICAgICAoT2JqZWN0ICAgICA6IGFj Y2VzcyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAgICBBY2NlbF9LZXkg IDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyA6IGluIEdkay5U eXBlcy5HZGtfTW9kaWZpZXJfVHlwZSkgcmV0dXJuIEJvb2xlYW47CgogICBwcm9jZWR1cmUgQXR0 YWNoCiAgICAgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBPYmplY3Qg ICAgICA6IGFjY2VzcyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzKTsKICAgLS0g IE9iamVjdCBzaG91bGQgYmUgYWJsZSB0byBnZXQga2V5X3ByZXNzIGFuZCBrZXlfcmVsZWFzZSBl dmVudHMgKGllCiAgIC0tICB0aGlzIHdvbid0IHdvcmsgaW4gYSBHdGtfQm94IHdoaWNoIGhhcyBu byB3aW5kb3cpLgogICAtLSAgVGhlIHJlY29tbWVuZGVkIHdheSBpcyB0byBhdHRhY2ggdGhlIEFj Y2VsX0dyb3VwIHRvIHRoZSB0b3BsZXZlbCB3aW5kb3cuCgogICBwcm9jZWR1cmUgRGV0YWNoCiAg ICAgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBPYmplY3QgICAgICA6 IGFjY2VzcyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzKTsKCiAgIHByb2NlZHVy ZSBMb2NrIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91cCk7CgogICBwcm9jZWR1cmUg VW5sb2NrIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91cCk7CgogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIEFjY2VsZXJhdG9yIEdyb3VwIEVudHJpZXMg IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0 X0VudHJ5CiAgICAgKEFjY2VsX0dyb3VwIDogaW4gR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2Nl bF9LZXkgICA6IGluIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDog aW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKSByZXR1cm4gR3RrX0FjY2VsX0VudHJ5OwoK ICAgcHJvY2VkdXJlIExvY2tfRW50cnkKICAgICAoQWNjZWxfR3JvdXAgOiBpbiBHdGtfQWNjZWxf R3JvdXA7CiAgICAgIEFjY2VsX0tleSAgIDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAg ICAgQWNjZWxfTW9kcyAgOiBpbiBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGUpOwoKICAgcHJv Y2VkdXJlIFVubG9ja19FbnRyeQogICAgIChBY2NlbF9Hcm91cCA6IGluIEd0a19BY2NlbF9Hcm91 cDsKICAgICAgQWNjZWxfS2V5ICAgOiBpbiBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBB Y2NlbF9Nb2RzICA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSk7CgogICBwcm9jZWR1 cmUgQWRkCiAgICAgKEFjY2VsX0dyb3VwICA6IGluIEd0a19BY2NlbF9Hcm91cDsKICAgICAgQWNj ZWxfS2V5ICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01v ZHMgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX01vZGlmaWVyX1R5cGU7CiAgICAgIEFjY2VsX0Zs YWdzICA6IGluICAgICBHdGtfQWNjZWxfRmxhZ3M7CiAgICAgIE9iamVjdCAgICAgICA6IGFjY2Vz cyBHdGsuT2JqZWN0Lkd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAgICBBY2NlbF9TaWduYWwg OiBpbiAgICAgU3RyaW5nKTsKCiAgIHByb2NlZHVyZSBSZW1vdmUKICAgICAoQWNjZWxfR3JvdXAg OiBpbiBHdGtfQWNjZWxfR3JvdXA7CiAgICAgIEFjY2VsX0tleSAgIDogaW4gICAgIEdkay5UeXBl cy5HZGtfS2V5X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgIDogaW4gICAgIEdkay5UeXBlcy5HZGtf TW9kaWZpZXJfVHlwZTsKICAgICAgT2JqZWN0ICAgICAgOiBhY2Nlc3MgR3RrLk9iamVjdC5HdGtf T2JqZWN0X1JlY29yZCdDbGFzcyk7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg LS0gIEFjY2VsZXJhdG9yIFNpZ25hbHMgIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQoKICAgcHJvY2VkdXJlIEhhbmRsZV9BZGQKICAgICAoT2JqZWN0ICAgICAgICAgIDogYWNjZXNz IEd0ay5PYmplY3QuR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgIEFjY2VsX1NpZ25hbF9J ZCA6IGluICAgICBHdWludDsKICAgICAgQWNjZWxfR3JvdXAgICAgIDogaW4gICAgIEd0a19BY2Nl bF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAgICAgIDogaW4gICAgIEdkay5UeXBlcy5HZGtfS2V5 X1R5cGU7CiAgICAgIEFjY2VsX01vZHMgICAgICA6IGluICAgICBHZGsuVHlwZXMuR2RrX01vZGlm aWVyX1R5cGU7CiAgICAgIEFjY2VsX0ZsYWdzICAgICA6IGluICAgICBHdGtfQWNjZWxfRmxhZ3Mp OwoKICAgcHJvY2VkdXJlIEhhbmRsZV9SZW1vdmUKICAgICAoT2JqZWN0ICAgICAgOiBhY2Nlc3Mg R3RrLk9iamVjdC5HdGtfT2JqZWN0X1JlY29yZCdDbGFzczsKICAgICAgQWNjZWxfR3JvdXAgOiBp biAgICAgR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICA6IGluICAgICBHZGsuVHlw ZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICA6IGluICAgICBHZGsuVHlwZXMuR2Rr X01vZGlmaWVyX1R5cGUpOwoKICAgLS0gIGZ1bmN0aW9uIENyZWF0ZV9BZGQKICAgLS0gIGZ1bmN0 aW9uIENyZWF0ZV9SZW1vdmUKICAgLS0gIHByb2NlZHVyZSBNYXJzaGFsX0FkZAogICAtLSAgcHJv Y2VkdXJlIE1hcnNoYWxfUmVtb3ZlCgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIE1p c2NlbGxhbmVvdXMgIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgLS0gIGZ1bmN0aW9u IEFjY2VsX0dyb3Vwc19Gcm9tX09iamVjdAogICAtLSAgZnVuY3Rpb24gRW50cmllc19Gcm9tX09i amVjdAoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIEFjY2VsZXJhdG9ycyAgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEFjY2VsZXJhdG9yX1ZhbGlkCiAgICAg KEtleXZhbCAgICA6IGluIEdkay5UeXBlcy5HZGtfS2V5X1R5cGU7CiAgICAgIE1vZGlmaWVycyA6 IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSkgcmV0dXJuIEJvb2xlYW47CgogICBwcm9j ZWR1cmUgQWNjZWxlcmF0b3JfUGFyc2UKICAgICAoQWNjZWxlcmF0b3IgICAgICA6IGluICAgICBT dHJpbmc7CiAgICAgIEFjY2VsZXJhdG9yX0tleSAgOiAgICBvdXQgR2RrLlR5cGVzLkdka19LZXlf VHlwZTsKICAgICAgQWNjZWxlcmF0b3JfTW9kcyA6ICAgIG91dCBHZGsuVHlwZXMuR2RrX01vZGlm aWVyX1R5cGUpOwoKICAgZnVuY3Rpb24gQWNjZWxlcmF0b3JfTmFtZQogICAgIChBY2NlbGVyYXRv cl9LZXkgIDogaW4gR2RrLlR5cGVzLkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxlcmF0b3JfTW9k cyA6IGluIEdkay5UeXBlcy5HZGtfTW9kaWZpZXJfVHlwZSkgcmV0dXJuIFN0cmluZzsKCiAgIHBy b2NlZHVyZSBBY2NlbGVyYXRvcl9TZXRfRGVmYXVsdF9Nb2RfTWFzawogICAgIChEZWZhdWx0X01v ZF9NYXNrIDogaW4gR2RrLlR5cGVzLkdka19Nb2RpZmllcl9UeXBlKTsKCiAgIGZ1bmN0aW9uIEFj Y2VsZXJhdG9yX0dldF9EZWZhdWx0X01vZF9NYXNrCiAgICAgcmV0dXJuIEdkay5UeXBlcy5HZGtf TW9kaWZpZXJfVHlwZTsKCnByaXZhdGUKCiAgIEFjY2VsX1Zpc2libGUgICAgICAgIDogY29uc3Rh bnQgR3RrX0FjY2VsX0ZsYWdzIDo9IDIgKiogMDsKICAgQWNjZWxfU2lnbmFsX1Zpc2libGUgOiBj b25zdGFudCBHdGtfQWNjZWxfRmxhZ3MgOj0gMiAqKiAxOwogICBBY2NlbF9Mb2NrZWQgICAgICAg ICA6IGNvbnN0YW50IEd0a19BY2NlbF9GbGFncyA6PSAyICoqIDI7CiAgIEFjY2VsX01hc2sgICAg ICAgICAgIDogY29uc3RhbnQgR3RrX0FjY2VsX0ZsYWdzIDo9IDE2IzA3IzsKCiAgIHByYWdtYSBJ bXBvcnQgKEMsIEFjY2VsZXJhdG9yX1NldF9EZWZhdWx0X01vZF9NYXNrLAogICAgICAgICAgICAg ICAgICAiZ3RrX2FjY2VsZXJhdG9yX3NldF9kZWZhdWx0X21vZF9tYXNrIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIEFjY2VsZXJhdG9yX0dldF9EZWZhdWx0X01vZF9NYXNrLAogICAgICAgICAgICAg ICAgICAiZ3RrX2FjY2VsZXJhdG9yX2dldF9kZWZhdWx0X21vZF9tYXNrIik7CiAgIHByYWdtYSBJ bXBvcnQgKEMsIEdldF9EZWZhdWx0LCAiZ3RrX2FjY2VsX2dyb3VwX2dldF9kZWZhdWx0Iik7CiAg IHByYWdtYSBJbXBvcnQgKEMsIExvY2ssICJndGtfYWNjZWxfZ3JvdXBfbG9jayIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBVbmxvY2ssICJndGtfYWNjZWxfZ3JvdXBfdW5sb2NrIik7CmVuZCBHdGsu QWNjZWxfR3JvdXA7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJp bmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIg YW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAg IC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcg d2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0t IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lh bCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0t Ci0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8g cHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBp dHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJl ZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlv biBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAg IC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJs aWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQot LSAgVGhpcyBvYmplY3QgcmVwcmVzZW50cyBhbiBhZGp1c3RhYmxlIGJvdW5kZWQgdmFsdWUuCi0t ICBJdCBpcyB1c2VkIGluIG1hbnkgb3RoZXIgd2lkZ2V0cyB0aGF0IGhhdmUgc3VjaCBpbnRlcm5h bCB2YWx1ZXMsCi0tICBsaWtlIEd0a19TY3JvbGxiYXIsIEd0a19TcGluX0J1dHRvbiwgR3RrX1Jh bmdlLCAuLi4KLS0gIE1vZGlmeWluZyB0aGUgdmFsdWUgb2YgdGhlc2Ugd2lkZ2V0cyBpcyBkb25l IHRocm91Z2ggdGhlaXIKLS0gIGFzc29jaWF0ZWQgYWRqdXN0bWVudHMuCi0tCi0tICBUaGUgbW9k aWZpY2F0aW9uIG9mIHRoZSB2YWx1ZSBpcyBsZWZ0IHRvIHRoZSB1c2VyLCB3aG8gc2hvdWxkCi0t ICBjYWxsIFZhbHVlX0NoYW5nZWQgb3IgQ2hhbmdlZCB0byBlbWl0IHRoZSByZWxldmFudCBzaWdu YWxzLgotLQotLSAgPC9kZXNjcmlwdGlvbj4KLS0gIDxleGFtcGxlPgotLQotLSAgVGhlIG1lYW5p bmcgb2YgdGhlIG1vc3QgaW1wb3J0YW50IGZpZWxkcyBjYW4gYmUgZXhwbGFpbmVkIG9uIHRoZQot LSAgZm9sbG93aW5nIGZpZ3VyZSAoaW1hZ2luZSB0aGlzIGlzIGEgc2Nyb2xsYmFyKToKLS0KLS0g ICAgIFstLS0tLS0tfD09PT09PT09PT09PT09PT09fC0tLS0tLS0tLS0tLS0tLS0tLS1dCi0tICAg IGxvd2VyICAgIHZhbHVlICAgICAgICB2YWx1ZSArIHBhZ2Vfc2l6ZSAgICAgICB1cHBlcgotLQot LSAgPC9leGFtcGxlPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHdGsu RGF0YTsKCnBhY2thZ2UgR3RrLkFkanVzdG1lbnQgaXMKCiAgIHR5cGUgR3RrX0FkanVzdG1lbnRf UmVjb3JkIGlzIG5ldyBEYXRhLkd0a19EYXRhX1JlY29yZCB3aXRoIHByaXZhdGU7CiAgIHR5cGUg R3RrX0FkanVzdG1lbnQgaXMgYWNjZXNzIGFsbCBHdGtfQWRqdXN0bWVudF9SZWNvcmQnQ2xhc3M7 CgogICBOdWxsX0FkanVzdG1lbnQgOiBjb25zdGFudCBHdGtfQWRqdXN0bWVudDsKCiAgIHByb2Nl ZHVyZSBHdGtfTmV3IChBZGp1c3RtZW50ICAgICA6IG91dCBHdGtfQWRqdXN0bWVudDsKICAgICAg ICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAg ICAgICAgICAgICAgIExvd2VyICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAg ICAgICAgICAgIFVwcGVyICAgICAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAg ICAgICAgIFN0ZXBfSW5jcmVtZW50IDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAg ICAgIFBhZ2VfSW5jcmVtZW50IDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAg IFBhZ2VfU2l6ZSAgICAgIDogaW4gICAgIEdmbG9hdCk7CiAgIC0tICBDcmVhdGUgYSBuZXcgYWRq dXN0bWVudC4KICAgLS0gIFZhbHVlIGlzIHRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBhZGp1c3Rt ZW50LiBJdCBtdXN0IGJlIGluIHRoZQogICAtLSAgcmFuZ2UgKExvd2VyIC4uIFVwcGVyKSBhbmQg dGhlIGFkanVzdG1lbnQncyB2YWx1ZSB3aWxsIG5ldmVyIGJlCiAgIC0tICBvdXRzaWRlIHRoaXMg cmFuZ2UuCiAgIC0tICBTdGVwX0luY3JlbWVudCBpcyB0aGUgdmFsdWUgdXNlZCB0byBtYWtlIG1p bm9yIGFkanVzdG1lbnRzLCBzdWNoCiAgIC0tICBhcyB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiB0 aGUgYXJyb3dzIG9mIGEgc2Nyb2xsYmFyLgogICAtLSAgUGFnZV9JbmNyZW1lbnQgaXMgdXNlZCB0 byBtYWtlIG1ham9yIGFkanVzdG1lbnRzLCBzdWNoIGFzIHdoZW4KICAgLS0gIHRoZSB1c2VyIGNs aWNrcyBpbiB0aGUgdGhyb3VnaCBvbiBhIHNjcm9sbGJhci4KICAgLS0gIFBhZ2VfU2l6ZSBpcyB0 aGUgc2l6ZSBvZiB0aGUgYXJlYSB0aGF0IGlzIGN1cnJlbnRseSB2aXNpYmxlCiAgIC0tICAoZm9y IGluc3RhbmNlIGluIGEgR3RrX1Njcm9sbGVkX1dpbmRvdykuCgogICBwcm9jZWR1cmUgSW5pdGlh bGl6ZSAoQWRqdXN0bWVudCAgICAgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0NsYXNz OwogICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0 OwogICAgICAgICAgICAgICAgICAgICAgICAgTG93ZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0 OwogICAgICAgICAgICAgICAgICAgICAgICAgVXBwZXIgICAgICAgICAgOiBpbiAgICAgR2Zsb2F0 OwogICAgICAgICAgICAgICAgICAgICAgICAgU3RlcF9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0 OwogICAgICAgICAgICAgICAgICAgICAgICAgUGFnZV9JbmNyZW1lbnQgOiBpbiAgICAgR2Zsb2F0 OwogICAgICAgICAgICAgICAgICAgICAgICAgUGFnZV9TaXplICAgICAgOiBpbiAgICAgR2Zsb2F0 KTsKICAgLS0gIEludGVybmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLgogICAtLSAgU2VlIHRo ZSBzZWN0aW9uICJDcmVhdGluZyB5b3VyIG93biB3aWRnZXRzIiBpbiB0aGUgZG9jdW1lbnRhdGlv bi4KCiAgIGZ1bmN0aW9uIEdldF9UeXBlIHJldHVybiBHdGsuR3RrX1R5cGU7CiAgIC0tICBSZXR1 cm4gdGhlIGludGVybmFsIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIEd0a19BZGp1c3RtZW50LgoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gUmVhZCBmdW5jdGlvbnMgLS0KICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9WYWx1ZSAoQWRqdXN0bWVudCA6IGFjY2Vz cyBHdGtfQWRqdXN0bWVudF9SZWNvcmQpCiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR2Zs b2F0OwogICAtLSAgUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBhZGp1c3RtZW50LgoK ICAgZnVuY3Rpb24gR2V0X0xvd2VyIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50 X1JlY29yZCkKICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1 cm4gdGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1Vw cGVyIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHVwcGVyIGJvdW5k IG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1N0ZXBfSW5jcmVtZW50IChBZGp1 c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHN0ZXAgaW5jcmVt ZW50IG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfSW5jcmVtZW50IChB ZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBHZmxvYXQ7CiAgIC0tICBSZXR1cm4gdGhlIHBhZ2UgaW5j cmVtZW50IG9mIHRoZSBhZGp1c3RtZW50LgoKICAgZnVuY3Rpb24gR2V0X1BhZ2VfU2l6ZSAoQWRq dXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNvcmQpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEdmbG9hdDsKICAgLS0gIFJldHVybiB0aGUgcGFnZSBzaXplIG9mIHRo ZSBhZGp1c3RtZW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFdyaXRlIGZ1bmN0 aW9ucyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfVXBwZXIg KEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAg ICAgICAgICAgICBVcHBlciAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgdXBw ZXIgYm91bmQgb2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdl ZCBhZnRlciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfTG93ZXIgKEFk anVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAg ICAgICAgICBMb3dlciAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgbG93ZXIg Ym91bmQgb2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBh ZnRlciBtb2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfVmFsdWUgKEFkanVz dG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkOwogICAgICAgICAgICAgICAgICAg ICAgICBWYWx1ZSAgICAgIDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgY3VycmVudCB2 YWx1ZSBvZiB0aGUgYWRqdXN0bWVudC4KICAgLS0gIFlvdSBkbyBub3QgbmVlZCB0byBjYWxsIFZh bHVlX0NoYW5nZWQgYWZ0ZXIgbW9kaWZ5aW5nIHRoaXMgdmFsdWUsCiAgIC0tICB0aGlzIGlzIGRv bmUgYXV0b21hdGljYWxseS4KCiAgIHByb2NlZHVyZSBTZXRfUGFnZV9TaXplIChBZGp1c3RtZW50 IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZDsKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFBhZ2VfU2l6ZSAgOiBpbiBHZmxvYXQpOwogICAtLSAgTW9kaWZ5IHRoZSBwYWdlIHNpemUg b2YgdGhlIGFkanVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBt b2RpZnlpbmcgdGhpcyB2YWx1ZS4KCiAgIHByb2NlZHVyZSBTZXRfUGFnZV9JbmNyZW1lbnQgKEFk anVzdG1lbnQgICAgIDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZDsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUGFnZV9JbmNyZW1lbnQgOiBpbiBHZmxvYXQpOwogICAtLSAg TW9kaWZ5IHRoZSBwYWdlIGluY3JlbWVudCBvZiB0aGUgYWRqdXN0bWVudC4KICAgLS0gIFlvdSBz aG91bGQgY2FsbCBDaGFuZ2VkIGFmdGVyIG1vZGlmeWluZyB0aGlzIHZhbHVlLgoKICAgcHJvY2Vk dXJlIFNldF9TdGVwX0luY3JlbWVudCAoQWRqdXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVu dF9SZWNvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZXBfSW5jcmVtZW50 IDogaW4gR2Zsb2F0KTsKICAgLS0gIE1vZGlmeSB0aGUgc3RlcCBpbmNyZW1lbnQgb2YgdGhlIGFk anVzdG1lbnQuCiAgIC0tICBZb3Ugc2hvdWxkIGNhbGwgQ2hhbmdlZCBhZnRlciBtb2RpZnlpbmcg dGhpcyB2YWx1ZS4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIE1pc2MgZnVuY3Rpb25z IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgQ2xhbXBfUGFnZSAoQWRq dXN0bWVudCA6IGFjY2VzcyBHdGtfQWRqdXN0bWVudF9SZWNvcmQ7CiAgICAgICAgICAgICAgICAg ICAgICAgICBMb3dlciAgICAgIDogaW4gICAgIEdmbG9hdDsKICAgICAgICAgICAgICAgICAgICAg ICAgIFVwcGVyICAgICAgOiBpbiAgICAgR2Zsb2F0KTsKICAgLS0gIFVwZGF0ZSB0aGUgQWRqdXN0 bWVudCB2YWx1ZSB0byBlbnN1cmUgdGhhdCB0aGUgcmFuZ2UgYmV0d2VlbiBMb3dlciBhbmQKICAg LS0gIFVwcGVyIGlzIGluIHRoZSBjdXJyZW50IHBhZ2UgKGkuZS4gYmV0d2VlbiB2YWx1ZSBhbmQg dmFsdWUgKwogICAtLSAgcGFnZV9zaXplKS4gSWYgdGhlIHJhbmdlIGlzIGxhcmdlciB0aGFuIHRo ZSBwYWdlIHNpemUsIHRoZW4gb25seSB0aGUKICAgLS0gIHN0YXJ0IG9mIGl0IHdpbGwgYmUgaW4g dGhlIGN1cnJlbnQgcGFnZS4KICAgLS0gIEEgInZhbHVlX2NoYW5nZWQiIHNpZ25hbCB3aWxsIGJl IGVtaXR0ZWQgaWYgdGhlIHZhbHVlIGlzIGNoYW5nZWQuCgogICAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgIC0tIFNpZ25hbHMgZW1pc3Npb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICAgcHJvY2VkdXJlIENoYW5nZWQgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRf UmVjb3JkKTsKICAgLS0gIEVtaXQgdGhlICJjaGFuZ2VkIiBzaWduYWwgb24gQWRqdXN0bWVudC4K ICAgLS0gIFRoaXMgd2FybnMgYW55IGxpc3RlbmVyIHRoYXQgc29tZSBmaWVsZCBvdGhlciB0aGFu IHRoZSB2YWx1ZSBoYXMgYmVlbgogICAtLSAgY2hhbmdlZC4KCiAgIHByb2NlZHVyZSBWYWx1ZV9D aGFuZ2VkIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCk7CiAgIC0t ICBFbWl0IHRoZSAidmFsdWVfY2hhbmdlZCIgc2lnbmFsIG9uIEFkanVzdG1lbnQuCiAgIC0tICBU aGlzIHdhcm5zIGFueSBsaXN0ZW5lciB0aGF0IHRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkLgoK ICAgLS0tLS0tLS0tLS0tLQogICAtLSBTaWduYWxzIC0tCiAgIC0tLS0tLS0tLS0tLS0KCiAgIC0t ICA8c2lnbmFscz4KICAgLS0gIFRoZSBmb2xsb3dpbmcgbmV3IHNpZ25hbHMgYXJlIGRlZmluZWQg Zm9yIHRoaXMgd2lkZ2V0OgogICAtLQogICAtLSAgLSAiY2hhbmdlZCIKICAgLS0gICAgcHJvY2Vk dXJlIEhhbmRsZXIgKEFkanVzdG1lbnQgOiBhY2Nlc3MgR3RrX0FkanVzdG1lbnRfUmVjb3JkJ0Ns YXNzKTsKICAgLS0KICAgLS0gICAgVGhpcyBzaWduYWwgaXMgZW1pdHRlZCBldmVyeSB0aW1lIG9u ZSBvZiB0aGUgcGFyYW1ldGVycyBpcyBtb2RpZmllZCwKICAgLS0gICAgZXhjZXB0IHRoZSB2YWx1 ZS4KICAgLS0KICAgLS0gIC0gInZhbHVlX2NoYW5nZWQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5k bGVyIChBZGp1c3RtZW50IDogYWNjZXNzIEd0a19BZGp1c3RtZW50X1JlY29yZCdDbGFzcyk7CiAg IC0tCiAgIC0tICAgIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgZXZlcnkgdGltZSB0aGUgdmFsdWUg b2YgdGhlIGFkanVzdG1lbnQgaXMKICAgLS0gICAgbW9kaWZpZWQKICAgLS0gIDwvc2lnbmFscz4K CnByaXZhdGUKCiAgIHR5cGUgR3RrX0FkanVzdG1lbnRfUmVjb3JkIGlzIG5ldyBEYXRhLkd0a19E YXRhX1JlY29yZCB3aXRoIG51bGwgcmVjb3JkOwoKICAgTnVsbF9BZGp1c3RtZW50IDogY29uc3Rh bnQgR3RrX0FkanVzdG1lbnQgOj0gbnVsbDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBl LCAiZ3RrX2FkanVzdG1lbnRfZ2V0X3R5cGUiKTsKZW5kIEd0ay5BZGp1c3RtZW50OwoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAg VG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMTk5OSAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0K LS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAg LS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg aWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3Ro ZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5 b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0g ZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJl c3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIg aW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBm aWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0K LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBBYnN0cmFjdCBjbGFzcyBm b3Igb2JqZWN0cyBjb250YWluaW5nIGRhdGEKLS0gIFRoaXMgb2JqZWN0IGlzIGN1cnJlbnRseSBu b3QgdmVyeSB1c2VmdWwgc2luY2UgaXQgb25seSBwcm92aWRlcwotLSAgYSBzaW5nbGUgImRpc2Nv bm5lY3QiIHNpZ25hbC4KLS0KLS0gIFRoaXMgaXMgdGhlICJNb2RlbCIgaW4gdGhlIE1vZGVsL1Zp ZXcvQ29udHJvbGxlciBmcmFtZXdvcmsuCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lv bj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBHdGsuT2JqZWN0OwoKcGFja2FnZSBHdGsuRGF0YSBp cwoKICAgdHlwZSBHdGtfRGF0YV9SZWNvcmQgaXMgbmV3IE9iamVjdC5HdGtfT2JqZWN0X1JlY29y ZCB3aXRoIHByaXZhdGU7CiAgIHR5cGUgR3RrX0RhdGEgaXMgYWNjZXNzIGFsbCBHdGtfRGF0YV9S ZWNvcmQnQ2xhc3M7CgogICBmdW5jdGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwog ICAtLSAgUmV0dXJuIHRoZSBpbnRlcm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfRGF0 YS4KCiAgIC0tLS0tLS0tLS0tLS0KICAgLS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgog ICAtLSAgPHNpZ25hbHM+CiAgIC0tICBUaGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZp bmVkIGZvciB0aGlzIHdpZGdldDoKICAgLS0KICAgLS0gIC0gImRpc2Nvbm5lY3QiCiAgIC0tICAg IHByb2NlZHVyZSBIYW5kbGVyIChEYXRhIDogYWNjZXNzIEd0a19EYXRhX1JlY29yZCdDbGFzcyk7 CiAgIC0tCiAgIC0tICAgIEVtaXR0ZWQganVzdCBiZWZvcmUgRGF0YSBpcyBkZXN0cm95ZWQuCiAg IC0tICA8L3NpZ25hbHM+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX0RhdGFfUmVjb3JkIGlzIG5ldyBP YmplY3QuR3RrX09iamVjdF9SZWNvcmQgd2l0aCBudWxsIHJlY29yZDsKICAgcHJhZ21hIEltcG9y dCAoQywgR2V0X1R5cGUsICJndGtfZGF0YV9nZXRfdHlwZSIpOwplbmQgR3RrLkRhdGE7Ci0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1w IFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTE5OTkgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t ICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0 ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGli cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAg IC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7 IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJv c3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90 aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3Ig eW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0t IGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSBy ZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVy IGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUg ZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0t Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdsaWI7CndpdGggR2xpYi5HbGlzdDsKcHJhZ21hIEVsYWJv cmF0ZV9BbGwgKEdsaWIuR2xpc3QpOwoKd2l0aCBTeXN0ZW07CgpwYWNrYWdlIEd0ay5FbnVtcyBp cwoKICAgdHlwZSBHdGtfU3RhdGVfVHlwZSBpcwogICAgIChTdGF0ZV9Ob3JtYWwsCiAgICAgIFN0 YXRlX0FjdGl2ZSwKICAgICAgU3RhdGVfUHJlbGlnaHQsCiAgICAgIFN0YXRlX1NlbGVjdGVkLAog ICAgICBTdGF0ZV9JbnNlbnNpdGl2ZSk7CgogICB0eXBlIEd0a19XaW5kb3dfVHlwZSBpcyAoV2lu ZG93X1RvcGxldmVsLCBXaW5kb3dfRGlhbG9nLCBXaW5kb3dfUG9wdXApOwoKICAgdHlwZSBHdGtf QnV0dG9uX0FjdGlvbiBpcyBuZXcgR3VpbnQ7CiAgIEJ1dHRvbl9JZ25vcmVkIDogY29uc3RhbnQg R3RrX0J1dHRvbl9BY3Rpb24gOj0gMDsKICAgQnV0dG9uX1NlbGVjdHMgOiBjb25zdGFudCBHdGtf QnV0dG9uX0FjdGlvbiA6PSAxICoqIDA7CiAgIEJ1dHRvbl9EcmFncyAgIDogY29uc3RhbnQgR3Rr X0J1dHRvbl9BY3Rpb24gOj0gMSAqKiAxOwogICBCdXR0b25fRXhwYW5kcyA6IGNvbnN0YW50IEd0 a19CdXR0b25fQWN0aW9uIDo9IDEgKiogMjsKCiAgIHR5cGUgR3RrX0J1dHRvbl9Cb3hfU3R5bGUg aXMKICAgICAoQnV0dG9uYm94X0RlZmF1bHRfU3R5bGUsCiAgICAgIEJ1dHRvbmJveF9TcHJlYWQs CiAgICAgIEJ1dHRvbmJveF9FZGdlLAogICAgICBCdXR0b25ib3hfU3RhcnQsCiAgICAgIEJ1dHRv bmJveF9FbmQpOwoKICAgdHlwZSBHdGtfRGlyZWN0aW9uX1R5cGUgaXMKICAgICAoRGlyX1RhYl9G b3J3YXJkLAogICAgICBEaXJfVGFiX0JhY2t3YXJkLAogICAgICBEaXJfVXAsCiAgICAgIERpcl9E b3duLAogICAgICBEaXJfTGVmdCwKICAgICAgRGlyX1JpZ2h0KTsKCiAgIHR5cGUgR3RrX1NoYWRv d19UeXBlIGlzCiAgICAgKFNoYWRvd19Ob25lLAogICAgICBTaGFkb3dfSW4sCiAgICAgIFNoYWRv d19PdXQsCiAgICAgIFNoYWRvd19FdGNoZWRfSW4sCiAgICAgIFNoYWRvd19FdGNoZWRfT3V0KTsK CiAgIHR5cGUgR3RrX0Fycm93X1R5cGUgaXMgKEFycm93X1VwLCBBcnJvd19Eb3duLCBBcnJvd19M ZWZ0LCBBcnJvd19SaWdodCk7CgogICB0eXBlIEd0a19DZWxsX1R5cGUgaXMKICAgICAoQ2VsbF9F bXB0eSwKICAgICAgQ2VsbF9UZXh0LAogICAgICBDZWxsX1BpeG1hcCwKICAgICAgQ2VsbF9QaXh0 ZXh0LAogICAgICBDZWxsX1dpZGdldCk7CgogICB0eXBlIEd0a19QYWNrX1R5cGUgaXMgKFBhY2tf U3RhcnQsIFBhY2tfRW5kKTsKCiAgIHR5cGUgR3RrX1BvbGljeV9UeXBlIGlzIChQb2xpY3lfQWx3 YXlzLCBQb2xpY3lfQXV0b21hdGljLCBQb2xpY3lfTmV2ZXIpOwoKICAgdHlwZSBHdGtfVXBkYXRl X1R5cGUgaXMKICAgICAoVXBkYXRlX0NvbnRpbnVvdXMsCiAgICAgIFVwZGF0ZV9EaXNjb250aW51 b3VzLAogICAgICBVcGRhdGVfRGVsYXllZCk7CgogICB0eXBlIEd0a19SZWxpZWZfU3R5bGUgaXMg KFJlbGllZl9Ob3JtYWwsIFJlbGllZl9IYWxmLCBSZWxpZWZfTm9uZSk7CgogICB0eXBlIEd0a19B dHRhY2hfT3B0aW9ucyBpcyBuZXcgR2xpYi5HdWludDMyOwogICBFeHBhbmQgOiBjb25zdGFudCBH dGtfQXR0YWNoX09wdGlvbnMgOj0gMTsKICAgU2hyaW5rIDogY29uc3RhbnQgR3RrX0F0dGFjaF9P cHRpb25zIDo9IDI7CiAgIEZpbGwgICA6IGNvbnN0YW50IEd0a19BdHRhY2hfT3B0aW9ucyA6PSA0 OwoKICAgdHlwZSBHdGtfV2luZG93X1Bvc2l0aW9uIGlzCiAgICAgKFdpbl9Qb3NfTm9uZSwKICAg ICAgV2luX1Bvc19DZW50ZXIsCiAgICAgIFdpbl9Qb3NfTW91c2UsCiAgICAgIFdpbl9Qb3NfQ2Vu dGVyX0Fsd2F5cyk7CgogICB0eXBlIEd0a19TdWJtZW51X0RpcmVjdGlvbiBpcyAoRGlyZWN0aW9u X0xlZnQsIERpcmVjdGlvbl9SaWdodCk7CgogICB0eXBlIEd0a19TdWJtZW51X1BsYWNlbWVudCBp cyAoVG9wX0JvdHRvbSwgTGVmdF9SaWdodCk7CgogICB0eXBlIEd0a19SZXNpemVfTW9kZSBpcwog ICAgIChSZXNpemVfUGFyZW50LCAgICAgLS0gIFBhc3MgcmVxdWVzdCB0byB0aGUgcGFyZW50CiAg ICAgIFJlc2l6ZV9RdWV1ZSwgICAgICAtLSAgUXVldWUgcmVzaXplcyBvbiB0aGlzIHdpZGdldAog ICAgICBSZXNpemVfSW1tZWRpYXRlKTsgLS0gIFBlcmZvcm0gdGhlIHJlc2l6ZXMgbm93CgogICB0 eXBlIEd0a19NZXRyaWNfVHlwZSBpcyAoUGl4ZWxzLCBJbmNoZXMsIENlbnRpbWV0ZXJzKTsKCiAg IHR5cGUgR3RrX1Njcm9sbF9UeXBlIGlzCiAgICAgKFNjcm9sbF9Ob25lLAogICAgICBTY3JvbGxf U3RlcF9CYWNrd2FyZCwKICAgICAgU2Nyb2xsX1N0ZXBfRm9yd2FyZCwKICAgICAgU2Nyb2xsX1Bh Z2VfQmFja3dhcmQsCiAgICAgIFNjcm9sbF9QYWdlX0ZvcndhcmQsCiAgICAgIFNjcm9sbF9KdW1w KTsKCiAgIHR5cGUgR3RrX1Ryb3VnaF9UeXBlIGlzCiAgICAgKFRyb3VnaF9Ob25lLAogICAgICBU cm91Z2hfU3RhcnQsCiAgICAgIFRyb3VnaF9FbmQsCiAgICAgIFRyb3VnaF9KdW1wKTsKCiAgIHR5 cGUgR3RrX1Bvc2l0aW9uX1R5cGUgaXMKICAgICAoUG9zX0xlZnQsCiAgICAgIFBvc19SaWdodCwK ICAgICAgUG9zX1RvcCwKICAgICAgUG9zX0JvdHRvbSk7CgogICB0eXBlIEd0a19QcmV2aWV3X1R5 cGUgaXMgKFByZXZpZXdfQ29sb3IsIFByZXZpZXdfR3JheXNjYWxlKTsKCiAgIHR5cGUgR3RrX0p1 c3RpZmljYXRpb24gaXMKICAgICAoSnVzdGlmeV9MZWZ0LAogICAgICBKdXN0aWZ5X1JpZ2h0LAog ICAgICBKdXN0aWZ5X0NlbnRlciwKICAgICAgSnVzdGlmeV9GaWxsKTsKCiAgIHR5cGUgR3RrX1Nl bGVjdGlvbl9Nb2RlIGlzCiAgICAgKFNlbGVjdGlvbl9TaW5nbGUsCiAgICAgIFNlbGVjdGlvbl9C cm93c2UsCiAgICAgIFNlbGVjdGlvbl9NdWx0aXBsZSwKICAgICAgU2VsZWN0aW9uX0V4dGVuZGVk KTsKCiAgIHR5cGUgR3RrX09yaWVudGF0aW9uIGlzIChPcmllbnRhdGlvbl9Ib3Jpem9udGFsLCBP cmllbnRhdGlvbl9WZXJ0aWNhbCk7CgogICB0eXBlIEd0a19TcGluX0J1dHRvbl9VcGRhdGVfUG9s aWN5IGlzIChVcGRhdGVfQWx3YXlzLCBVcGRhdGVfSWZfVmFsaWQpOwoKICAgdHlwZSBHdGtfVG9v bGJhcl9DaGlsZF9UeXBlIGlzCiAgICAgKFRvb2xiYXJfQ2hpbGRfU3BhY2UsCiAgICAgIFRvb2xi YXJfQ2hpbGRfQnV0dG9uLAogICAgICBUb29sYmFyX0NoaWxkX1RvZ2dsZWJ1dHRvbiwKICAgICAg VG9vbGJhcl9DaGlsZF9SYWRpb2J1dHRvbiwKICAgICAgVG9vbGJhcl9DaGlsZF9XaWRnZXQpOwoK ICAgdHlwZSBHdGtfVG9vbGJhcl9TdHlsZSBpcyAoVG9vbGJhcl9JY29ucywgVG9vbGJhcl9UZXh0 LCBUb29sYmFyX0JvdGgpOwoKICAgdHlwZSBHdGtfVG9vbGJhcl9TcGFjZV9TdHlsZSBpcyAoVG9v bGJhcl9TcGFjZV9FbXB0eSwgVG9vbGJhcl9TcGFjZV9MaW5lKTsKCiAgIHR5cGUgR3RrX1RyZWVf Vmlld19Nb2RlIGlzIChUcmVlX1ZpZXdfTGluZSwgVHJlZV9WaWV3X0l0ZW0pOwoKICAgdHlwZSBH dGtfVmlzaWJpbGl0eSBpcwogICAgIChWaXNpYmlsaXR5X05vbmUsIFZpc2liaWxpdHlfUGFydGlh bCwgVmlzaWJpbGl0eV9GdWxsKTsKCiAgIHR5cGUgR3RrX1Byb2dyZXNzX0Jhcl9TdHlsZSBpcwog ICAgIChQcm9ncmVzc19Db250aW51b3VzLCBQcm9ncmVzc19EaXNjcmV0ZSk7CgogICB0eXBlIEd0 a19Qcm9ncmVzc19CYXJfT3JpZW50YXRpb24gaXMKICAgICAoUHJvZ3Jlc3NfTGVmdF9Ub19SaWdo dCwKICAgICAgUHJvZ3Jlc3NfUmlnaHRfVG9fTGVmdCwKICAgICAgUHJvZ3Jlc3NfQm90dG9tX1Rv X1RvcCwKICAgICAgUHJvZ3Jlc3NfVG9wX1RvX0JvdHRvbSk7CgogICB0eXBlIEd0a19DdHJlZV9M aW5lX1N0eWxlIGlzCiAgICAgKEN0cmVlX0xpbmVzX05vbmUsCiAgICAgIC0tICBObyBsaW5lIHdp bGwgYmUgZHJhd24gaW4gdGhlIEN0cmVlCgogICAgICBDdHJlZV9MaW5lc19Tb2xpZCwKICAgICAg LS0gIFNvbGlkIGxpbmVzIHdpbGwgYmUgZHJhd24KCiAgICAgIEN0cmVlX0xpbmVzX0RvdHRlZCwK ICAgICAgLS0gIERvdHRlZCBsaW5lcyB3aWxsIGJlIGRyYXduCgogICAgICBDdHJlZV9MaW5lc19U YWJiZWQKICAgICAgLS0gIFRoZSB0cmVlIHdvbid0IGJlIGhpZ2hsaWdodGVkIGJ5IGxpbmVzIGJ1 dCBieSB0YWJzIHN1cnJvdW5kaW5nIG5vZGVzCiAgICAgKTsKICAgLS0gIFNlZSBHdGsuQ3RyZWUu U2V0X0xpbmVfU3R5bGUgZm9yIG1vcmUgZGV0YWlscy4KCiAgIHR5cGUgR3RrX0N0cmVlX0V4cGFu ZGVyX1N0eWxlIGlzCiAgICAgKEN0cmVlX0V4cGFuZGVyX05vbmUsCiAgICAgIC0tICBObyBwaXht YXAgd2lsbCBiZSBkcmF3biwgeW91IHdpbGwgaGF2ZSB0byBkb3VibGUtY2xpY2sgb24gdGhlIG5v ZGUgdG8KICAgICAgLS0gIGV4cGFuZCBpdC4KCiAgICAgIEN0cmVlX0V4cGFuZGVyX1NxdWFyZSwK ICAgICAgLS0gIFRoZSBwaXhtYXAgd2lsbCBiZSBhIHNxdWFyZQoKICAgICAgQ3RyZWVfRXhwYW5k ZXJfVHJpYW5nbGUsCiAgICAgIC0tICBUaGUgcGl4bWFwIHdpbGwgYmUgYSB0cmlhbmdsZQoKICAg ICAgQ3RyZWVfRXhwYW5kZXJfQ2lyY3VsYXIKICAgICAgLS0gIFRoZSBwaXhtYXAgd2lsbCBiZSBh IGNpcmNsZQogICAgICk7CiAgIC0tICBTZWUgR3RrLkN0cmVlLlNldF9FeHBhbmRlcl9TdHlsZSBm b3IgbW9yZSBkZXRhaWxzLgoKICAgLS0gIFNvbWUgR2xpYiBpbnN0YW50aWF0aW9ucwoKICAgZnVu Y3Rpb24gQ29udmVydCAoUyA6IFN0cmluZykgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICBmdW5j dGlvbiBDb252ZXJ0IChTIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBTdHJpbmc7CiAgIGZ1bmN0 aW9uIENvbnZlcnRfSSAoSSA6IEdpbnQpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rp b24gQ29udmVydF9BIChTIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICBwcmFnbWEg SW1wb3J0IChDLCBDb252ZXJ0X0ksICJjb252ZXJ0X2kiKTsKICAgcHJhZ21hIEltcG9ydCAoQywg Q29udmVydF9BLCAiY29udmVydF9hIik7CgogICBwYWNrYWdlIFN0cmluZ19MaXN0IGlzIG5ldyBH bGliLkdsaXN0LkdlbmVyaWNfTGlzdCAoU3RyaW5nKTsKICAgLS0gIFdhcm5pbmc6IHdoZW4geW91 IGNyZWF0ZSB0aGlzIGxpc3QsIG5ldyBtZW1vcnkgZ2V0cyBhbGxvY2F0ZWQgZm9yCiAgIC0tICBh bGwgdGhlIHN0cmluZ3MuIFlvdSBzaG91bGQgdXNlIHRoZSBmdW5jdGlvbiBGcmVlX1N0cmluZ19M aXN0CiAgIC0tICBpbnN0ZWFkIG9mIEdsaWIuR2xpc3QuRnJlZSB0byBiZSBzdXJlIHRvIGZyZWUg dGhpcyBtZW1vcnkuCgogICBwcm9jZWR1cmUgRnJlZV9TdHJpbmdfTGlzdCAoTGlzdCA6IGluIG91 dCBTdHJpbmdfTGlzdC5HbGlzdCk7CiAgIC0tICBGcmVlIHRoZSBtZW1vcnkgb2NjdXBpZWQgYnkg YWxsIHRoZSBzdHJpbmdzIGluIHRoZSBsaXN0LCBhcyB3ZWxsCiAgIC0tICBhcyB0aGUgbWVtb3J5 IG9jY3VwaWVkIGJ5IHRoZSBsaXN0IGl0c2VsZi4KCiAgIHBhY2thZ2UgR2ludF9MaXN0IGlzIG5l dwogICAgIEdsaWIuR2xpc3QuR2VuZXJpY19MaXN0IChHaW50LCBDb252ZXJ0X0ksIENvbnZlcnRf QSk7CgogICBmdW5jdGlvbiBDb252ZXJ0X1VJIChJIDogR3VpbnQpIHJldHVybiBTeXN0ZW0uQWRk cmVzczsKICAgZnVuY3Rpb24gQ29udmVydF9VQSAoUyA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4g R3VpbnQ7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENvbnZlcnRfVUksICJjb252ZXJ0X3VpIik7CiAg IHByYWdtYSBJbXBvcnQgKEMsIENvbnZlcnRfVUEsICJjb252ZXJ0X3VhIik7CiAgIHBhY2thZ2Ug R3VpbnRfTGlzdCBpcyBuZXcKICAgICBHbGliLkdsaXN0LkdlbmVyaWNfTGlzdCAoR3VpbnQsIENv bnZlcnRfVUksIENvbnZlcnRfVUEpOwoKZW5kIEd0ay5FbnVtczsKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0g ICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmln aHQgKEMpIDIwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFu dWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAg LS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Yg ICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAg ICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5z dGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlz IHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwg dGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0K LS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBh bnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBi ZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCndpdGggR2xpYjsgICAgICAgICB1c2UgR2xpYjsKd2l0aCBHdGsuV2lkZ2V0OyAgIHVzZSBH dGsuV2lkZ2V0Owp3aXRoIEd0a2FkYS5UeXBlczsgdXNlIEd0a2FkYS5UeXBlczsKd2l0aCBHZGsu Q29sb3I7ICAgIHVzZSBHZGsuQ29sb3I7CndpdGggSW50ZXJmYWNlcy5DOyB1c2UgSW50ZXJmYWNl cy5DOwoKcGFja2FnZSBib2R5IEd0ay5FeHRyYS5QbG90X0RhdGEgaXMKCiAgIC0tLS0tLS0tLS0t LS0KICAgLS0gR3RrX05ldyAtLQogICAtLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR3RrX05l dwogICAgIChEYXRhIDogb3V0IEd0a19QbG90X0RhdGE7IEZ1bmMgOiBQbG90X0Z1bmN0aW9uIDo9 IG51bGwpIGlzCiAgIGJlZ2luCiAgICAgIERhdGEgOj0gbmV3IEd0a19QbG90X0RhdGFfUmVjb3Jk OwogICAgICBJbml0aWFsaXplIChEYXRhLCBGdW5jKTsKICAgZW5kIEd0a19OZXc7CgogICAtLS0t LS0tLS0tLS0tLS0tCiAgIC0tIEluaXRpYWxpemUgLS0KICAgLS0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIEluaXRpYWxpemUKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCdDbGFzczsgRnVuYyA6IFBsb3RfRnVuY3Rpb24gOj0gbnVsbCkKICAgaXMKICAgICAgZnVu Y3Rpb24gSW50ZXJuYWwgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfbmV3Iik7CgogICAgICBmdW5jdGlvbiBJbnRl cm5hbDIgKEZ1bmMgOiBQbG90X0Z1bmN0aW9uKSByZXR1cm4gU3lzdGVtLkFkZHJlc3M7CiAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsMiwgImd0a19wbG90X2RhdGFfbmV3X2Z1bmN0aW9u Iik7CiAgIGJlZ2luCiAgICAgIGlmIEZ1bmMgPSBudWxsIHRoZW4KICAgICAgICAgU2V0X09iamVj dCAoRGF0YSwgSW50ZXJuYWwpOwogICAgICBlbHNlCiAgICAgICAgIFNldF9PYmplY3QgKERhdGEs IEludGVybmFsMiAoRnVuYykpOwogICAgICBlbmQgaWY7CiAgICAgIEluaXRpYWxpemVfVXNlcl9E YXRhIChEYXRhKTsKICAgZW5kIEluaXRpYWxpemU7CgogICAtLS0tLS0tLS0tLS0tLQogICAtLSBT ZXRfTmFtZSAtLQogICAtLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9OYW1lIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBOYW1lIDogU3RyaW5nKSBpcwogICAgICBw cm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgTmFtZSA6IGluIFN0cmlu Zyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRf bmFtZSIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE5hbWUg JiBBU0NJSS5OVUwpOwogICBlbmQgU2V0X05hbWU7CgogICAtLS0tLS0tLS0tLQogICAtLSBQYWlu dCAtLQogICAtLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFBhaW50IChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkKSBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBT eXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bs b3RfZGF0YV9wYWludCIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0 YSkpOwogICBlbmQgUGFpbnQ7CgogICAtLS0tLS0tLS0tLS0tLS0tLQogICAtLSBEcmF3X1BvaW50 cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIERyYXdfUG9pbnRzIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBOIDogR2ludCkgaXMKICAgICAgcHJvY2Vk dXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE4gOiBHaW50KTsKICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2RyYXdfcG9pbnRzIik7CiAg IGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTik7CiAgIGVuZCBEcmF3 X1BvaW50czsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIERyYXdfU3ltYm9sIC0tCiAgIC0t LS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgRHJhd19TeW1ib2wKICAgICAoRGF0YSA6IGFj Y2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgWCwgWSA6IEdkb3VibGUpCiAgIGlzCiAgICAgIHBy b2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBYLCBZIDogR2RvdWJsZSk7 CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9kcmF3X3N5 bWJvbCIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFgsIFkp OwogICBlbmQgRHJhd19TeW1ib2w7CgogICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9Qb2lu dHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9Qb2ludHMKICAgICAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgWCAgICA6IEdkb3VibGVf QXJyYXlfQWNjZXNzOwogICAgICBZICAgIDogR2RvdWJsZV9BcnJheV9BY2Nlc3M7CiAgICAgIER4 ICAgOiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgRHkgICA6IEdkb3VibGVfQXJyYXlfQWNj ZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgICAgICAgOiBpbiBTeXN0 ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICBYICAgICAgICAgIDogaW4gU3lz dGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgWSAgICAgICAgICA6IGluIFN5 c3RlbS5BZGRyZXNzOwogICAgICAgICAgICAgICAgICAgICAgICAgIER4ICAgICAgICAgOiBpbiBT eXN0ZW0uQWRkcmVzczsKICAgICAgICAgICAgICAgICAgICAgICAgICBEeSAgICAgICAgIDogaW4g U3lzdGVtLkFkZHJlc3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtX1BvaW50cyA6IGlu IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFf c2V0X3BvaW50cyIpOwogICAgICBYYSwgWWEsIER4YSwgRHlhIDogU3lzdGVtLkFkZHJlc3MgOj0g U3lzdGVtLk51bGxfQWRkcmVzczsKICAgYmVnaW4KICAgICAgaWYgWCAvPSBudWxsIHRoZW4KICAg ICAgICAgWGEgOj0gWCAoWCdGaXJzdCknQWRkcmVzczsKICAgICAgZW5kIGlmOwoKICAgICAgaWYg WSAvPSBudWxsIHRoZW4KICAgICAgICAgWWEgOj0gWSAoWSdGaXJzdCknQWRkcmVzczsKICAgICAg ZW5kIGlmOwoKICAgICAgaWYgRHggLz0gbnVsbCB0aGVuCiAgICAgICAgIER4YSA6PSBEeCAoRHgn Rmlyc3QpJ0FkZHJlc3M7CiAgICAgIGVuZCBpZjsKCiAgICAgIGlmIER5IC89IG51bGwgdGhlbgog ICAgICAgICBEeWEgOj0gRHkgKER5J0ZpcnN0KSdBZGRyZXNzOwogICAgICBlbmQgaWY7CgogICAg ICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFhhLCBZYSwgRHhhLCBEeWEsIFgnTGVuZ3Ro KTsKICAgZW5kIFNldF9Qb2ludHM7CgogICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9Qb2lu dHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdldF9Qb2ludHMKICAgICAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgWCAgICA6IG91dCBQb2lu dHNfQXJyYXk7CiAgICAgIFkgICAgOiBvdXQgUG9pbnRzX0FycmF5OwogICAgICBEeCAgIDogb3V0 IFBvaW50c19BcnJheTsKICAgICAgRHkgICA6IG91dCBQb2ludHNfQXJyYXkpCiAgIGlzCiAgICAg IHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSAgICAgICA6IGluIFN5c3RlbS5BZGRyZXNzOwogICAg ICAgICAgICAgICAgICAgICAgICAgIFggICAgICAgICAgOiBvdXQgU3lzdGVtLkFkZHJlc3M7CiAg ICAgICAgICAgICAgICAgICAgICAgICAgWSAgICAgICAgICA6IG91dCBTeXN0ZW0uQWRkcmVzczsK ICAgICAgICAgICAgICAgICAgICAgICAgICBEeCAgICAgICAgIDogb3V0IFN5c3RlbS5BZGRyZXNz OwogICAgICAgICAgICAgICAgICAgICAgICAgIER5ICAgICAgICAgOiBvdXQgU3lzdGVtLkFkZHJl c3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtX1BvaW50cyA6IG91dCBHaW50KTsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9wb2ludHMi KTsKICAgICAgTnVtX1BvaW50cyA6IEdpbnQ7CiAgICAgIFgxLCBZMSwgRHgxLCBEeTEgOiBTeXN0 ZW0uQWRkcmVzczsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBY MSwgWTEsIER4MSwgRHkxLCBOdW1fUG9pbnRzKTsKICAgICAgWCAgOj0gKFBvaW50cyA9PiBUb19E b3VibGVfQXJyYXkgKFgxKSwgIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgICAgIFkgIDo9 IChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChZMSksICBOdW1fUG9pbnRzID0+IE51bV9Qb2lu dHMpOwogICAgICBEeCA6PSAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoRHgxKSwgTnVtX1Bv aW50cyA9PiBOdW1fUG9pbnRzKTsKICAgICAgRHkgOj0gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJy YXkgKER5MSksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRfUG9pbnRzOwoK ICAgLS0tLS0tLS0tLS0KICAgLS0gU2V0X1ggLS0KICAgLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVy ZSBTZXRfWAogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBYIDogR2Rv dWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6 IFN5c3RlbS5BZGRyZXNzOyBYIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X3giKTsKICAgYmVnaW4KICAgICAgcHJh Z21hIEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0YSkgPSBYJ0xlbmd0aCk7CiAgICAgIEludGVy bmFsIChHZXRfT2JqZWN0IChEYXRhKSwgWCAoWCdGaXJzdCknQWRkcmVzcyk7CiAgIGVuZCBTZXRf WDsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIFNldF9ZIC0tCiAgIC0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgU2V0X1kKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgWSA6 IEdkb3VibGVfQXJyYXlfQWNjZXNzKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERh dGEgOiBTeXN0ZW0uQWRkcmVzczsgWSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIElt cG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF95Iik7CiAgIGJlZ2luCiAgICAg IHByYWdtYSBBc3NlcnQgKEdldF9OdW1wb2ludHMgKERhdGEpID0gWSdMZW5ndGgpOwogICAgICBJ bnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFkgKFknRmlyc3QpJ0FkZHJlc3MpOwogICBlbmQg U2V0X1k7CgogICAtLS0tLS0tLS0tLQogICAtLSBTZXRfWiAtLQogICAtLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIFNldF9aCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 IFogOiBHZG91YmxlX0FycmF5X0FjY2VzcykKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IFogOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdt YSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfeiIpOwogICBiZWdpbgog ICAgICBwcmFnbWEgQXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9IFonTGVuZ3RoKTsKICAg ICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBaIChaJ0ZpcnN0KSdBZGRyZXNzKTsKICAg ZW5kIFNldF9aOwoKICAgLS0tLS0tLS0tLS0KICAgLS0gU2V0X0EgLS0KICAgLS0tLS0tLS0tLS0K CiAgIHByb2NlZHVyZSBTZXRfQQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVj b3JkOyBBIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRl cm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBBIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBw cmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2EiKTsKICAgYmVn aW4KICAgICAgcHJhZ21hIEFzc2VydCAoR2V0X051bXBvaW50cyAoRGF0YSkgPSBBJ0xlbmd0aCk7 CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgQSAoQSdGaXJzdCknQWRkcmVzcyk7 CiAgIGVuZCBTZXRfQTsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBTZXRfRHggLS0KICAgLS0tLS0t LS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0R4CiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7IER4IDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHByb2Nl ZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBEeCA6IFN5c3RlbS5BZGRyZXNz KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9k eCIpOwogICBiZWdpbgogICAgICBwcmFnbWEgQXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9 IER4J0xlbmd0aCk7CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgRHggKER4J0Zp cnN0KSdBZGRyZXNzKTsKICAgZW5kIFNldF9EeDsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBTZXRf RHkgLS0KICAgLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0R5CiAgICAgKERhdGEgOiBh Y2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IER5IDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAg IGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBEeSA6 IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtf cGxvdF9kYXRhX3NldF9keSIpOwogICBiZWdpbgogICAgICBwcmFnbWEgQXNzZXJ0IChHZXRfTnVt cG9pbnRzIChEYXRhKSA9IER5J0xlbmd0aCk7CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChE YXRhKSwgRHkgKER5J0ZpcnN0KSdBZGRyZXNzKTsKICAgZW5kIFNldF9EeTsKCiAgIC0tLS0tLS0t LS0tLQogICAtLSBTZXRfRHogLS0KICAgLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0R6 CiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IER6IDogR2RvdWJsZV9B cnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3Rl bS5BZGRyZXNzOyBEeiA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywg SW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9keiIpOwogICBiZWdpbgogICAgICBwcmFnbWEg QXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9IER6J0xlbmd0aCk7CiAgICAgIEludGVybmFs IChHZXRfT2JqZWN0IChEYXRhKSwgRHogKER6J0ZpcnN0KSdBZGRyZXNzKTsKICAgZW5kIFNldF9E ejsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBTZXRfRGEgLS0KICAgLS0tLS0tLS0tLS0tCgogICBw cm9jZWR1cmUgU2V0X0RhCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 IERhIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5h bCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBEYSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9kYSIpOwogICBiZWdp bgogICAgICBwcmFnbWEgQXNzZXJ0IChHZXRfTnVtcG9pbnRzIChEYXRhKSA9IERhJ0xlbmd0aCk7 CiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgRGEgKERhJ0ZpcnN0KSdBZGRyZXNz KTsKICAgZW5kIFNldF9EYTsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIEdldF9YIC0tCiAgIC0tLS0t LS0tLS0tCgogICBmdW5jdGlvbiBHZXRfWCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCkgcmV0dXJuIFBvaW50c19BcnJheSBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0 YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9pbnRzIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAg IHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJndGtfcGxvdF9kYXRhX2dldF94Iik7CgogICAgICBOdW1fUG9pbnRzIDogYWxpYXNlZCBHaW50 OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEp LCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdpbgogICAgICByZXR1cm4gKFBvaW50cyA9PiBU b19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBlbmQgR2V0 X1g7CgogICAtLS0tLS0tLS0tLQogICAtLSBHZXRfWSAtLQogICAtLS0tLS0tLS0tLQoKICAgZnVu Y3Rpb24gR2V0X1kgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQ b2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICByZXR1cm4gU3lzdGVt LkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0 YV9nZXRfeSIpOwoKICAgICAgTnVtX1BvaW50cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5 c3RlbS5BZGRyZXNzIDo9IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydB ZGRyZXNzKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5 IChTKSwgTnVtX1BvaW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9ZOwoKICAgLS0tLS0t LS0tLS0KICAgLS0gR2V0X1ogLS0KICAgLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9aIChE YXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlz CiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2lu dHMgOiBTeXN0ZW0uQWRkcmVzcykKICAgICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAg ICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X3oiKTsKCiAg ICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7CiAgICAgIFMgOiBTeXN0ZW0uQWRkcmVzcyA6 PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE51bV9Qb2ludHMnQWRkcmVzcyk7CiAgIGJl Z2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRvX0RvdWJsZV9BcnJheSAoUyksIE51bV9Qb2lu dHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRfWjsKCiAgIC0tLS0tLS0tLS0tCiAgIC0tIEdl dF9BIC0tCiAgIC0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBHZXRfQSAoRGF0YSA6IGFjY2VzcyBH dGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheSBpcwogICAgICBmdW5jdGlv biBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9pbnRzIDogU3lzdGVtLkFk ZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJhZ21hIEltcG9y dCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9hIik7CgogICAgICBOdW1fUG9pbnRz IDogYWxpYXNlZCBHaW50OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdl dF9PYmplY3QgKERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdpbgogICAgICByZXR1 cm4gKFBvaW50cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2lu dHMpOwogICBlbmQgR2V0X0E7CgogICAtLS0tLS0tLS0tLS0KICAgLS0gR2V0X0R4IC0tCiAgIC0t LS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0R4IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkKSByZXR1cm4gUG9pbnRzX0FycmF5IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFs IChEYXRhIDogU3lzdGVtLkFkZHJlc3M7IE51bV9Qb2ludHMgOiBTeXN0ZW0uQWRkcmVzcykKICAg ICAgICAgcmV0dXJuIFN5c3RlbS5BZGRyZXNzOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2R4Iik7CgogICAgICBOdW1fUG9pbnRzIDogYWxpYXNl ZCBHaW50OwogICAgICBTIDogU3lzdGVtLkFkZHJlc3MgOj0gSW50ZXJuYWwgKEdldF9PYmplY3Qg KERhdGEpLCBOdW1fUG9pbnRzJ0FkZHJlc3MpOwogICBiZWdpbgogICAgICByZXR1cm4gKFBvaW50 cyA9PiBUb19Eb3VibGVfQXJyYXkgKFMpLCBOdW1fUG9pbnRzID0+IE51bV9Qb2ludHMpOwogICBl bmQgR2V0X0R4OwoKICAgLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9EeSAtLQogICAtLS0tLS0tLS0t LS0KCiAgIGZ1bmN0aW9uIEdldF9EeSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZCkgcmV0dXJuIFBvaW50c19BcnJheSBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6 IFN5c3RlbS5BZGRyZXNzOyBOdW1fUG9pbnRzIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgIHJl dHVybiBTeXN0ZW0uQWRkcmVzczsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJn dGtfcGxvdF9kYXRhX2dldF9keSIpOwoKICAgICAgTnVtX1BvaW50cyA6IGFsaWFzZWQgR2ludDsK ICAgICAgUyA6IFN5c3RlbS5BZGRyZXNzIDo9IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwg TnVtX1BvaW50cydBZGRyZXNzKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIChQb2ludHMgPT4gVG9f RG91YmxlX0FycmF5IChTKSwgTnVtX1BvaW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9E eTsKCiAgIC0tLS0tLS0tLS0tLQogICAtLSBHZXRfRHogLS0KICAgLS0tLS0tLS0tLS0tCgogICBm dW5jdGlvbiBHZXRfRHogKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVy biBQb2ludHNfQXJyYXkgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0u QWRkcmVzczsgTnVtX1BvaW50cyA6IFN5c3RlbS5BZGRyZXNzKQogICAgICAgICByZXR1cm4gU3lz dGVtLkFkZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3Rf ZGF0YV9nZXRfZHoiKTsKCiAgICAgIE51bV9Qb2ludHMgOiBhbGlhc2VkIEdpbnQ7CiAgICAgIFMg OiBTeXN0ZW0uQWRkcmVzcyA6PSBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE51bV9Qb2lu dHMnQWRkcmVzcyk7CiAgIGJlZ2luCiAgICAgIHJldHVybiAoUG9pbnRzID0+IFRvX0RvdWJsZV9B cnJheSAoUyksIE51bV9Qb2ludHMgPT4gTnVtX1BvaW50cyk7CiAgIGVuZCBHZXRfRHo7CgogICAt LS0tLS0tLS0tLS0KICAgLS0gR2V0X0RhIC0tCiAgIC0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24g R2V0X0RhICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50 c19BcnJheSBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNz OyBOdW1fUG9pbnRzIDogU3lzdGVtLkFkZHJlc3MpCiAgICAgICAgIHJldHVybiBTeXN0ZW0uQWRk cmVzczsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dl dF9kYSIpOwoKICAgICAgTnVtX1BvaW50cyA6IGFsaWFzZWQgR2ludDsKICAgICAgUyA6IFN5c3Rl bS5BZGRyZXNzIDo9IEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTnVtX1BvaW50cydBZGRy ZXNzKTsKICAgYmVnaW4KICAgICAgcmV0dXJuIChQb2ludHMgPT4gVG9fRG91YmxlX0FycmF5IChT KSwgTnVtX1BvaW50cyA9PiBOdW1fUG9pbnRzKTsKICAgZW5kIEdldF9EYTsKCiAgIC0tLS0tLS0t LS0tLS0tLS0tLS0KICAgLS0gU2V0X051bXBvaW50cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0t CgogICBwcm9jZWR1cmUgU2V0X051bXBvaW50cyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRh X1JlY29yZDsgTnVtIDogR2ludCkgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDog U3lzdGVtLkFkZHJlc3M7IE51bSA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImd0a19wbG90X2RhdGFfc2V0X251bXBvaW50cyIpOwogICBiZWdpbgogICAgICBJbnRl cm5hbCAoR2V0X09iamVjdCAoRGF0YSksIE51bSk7CiAgIGVuZCBTZXRfTnVtcG9pbnRzOwoKICAg LS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfTnVtcG9pbnRzIC0tCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9OdW1wb2ludHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQpIHJldHVybiBHaW50IGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICAgICBwcmFnbWEgSW1wb3J0IChD LCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X251bXBvaW50cyIpOwogICBiZWdpbgogICAg ICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIEdldF9OdW1wb2lu dHM7CgogICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9MYWJlbHMgLS0KICAgLS0tLS0tLS0t LS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9MYWJlbHMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtf UGxvdF9EYXRhX1JlY29yZDsKICAgICAgTGFiZWxzIDogR3RrYWRhLlR5cGVzLkNoYXJzX1B0cl9B cnJheSkKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJl c3M7IExhYmVscyA6IENoYXJzX1B0cl9BcnJheSk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIElu dGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfbGFiZWxzIik7CiAgIGJlZ2luCiAgICAgIEludGVy bmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTGFiZWxzKTsKICAgZW5kIFNldF9MYWJlbHM7CgogICAt LS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9MYWJlbHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLQoK ICAgZnVuY3Rpb24gR2V0X0xhYmVscyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZCkKICAgICAgcmV0dXJuIEd0a2FkYS5UeXBlcy5DaGFyc19QdHJfQXJyYXkKICAgaXMKICAgICAg dHlwZSBTdHJfQXJyYXkgaXMgYXJyYXkgKE5hdHVyYWwpIG9mIENoYXJzX1B0cjsKICAgICAgZnVu Y3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIFN0cl9BcnJheTsK ICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9sYWJl bHMiKTsKCiAgICAgIE4gOiBjb25zdGFudCBzaXplX3QgOj0gc2l6ZV90IChHZXRfTnVtcG9pbnRz IChEYXRhKSk7CiAgIGJlZ2luCiAgICAgIHJldHVybiBDaGFyc19QdHJfQXJyYXkKICAgICAgICAo SW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKSgwIC4uIEludGVnZXIgKE4pIC0gMSkpOwogICBl bmQgR2V0X0xhYmVsczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNob3dfTGFiZWxzIC0t CiAgIC0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2hvd19MYWJlbHMKICAgICAoRGF0 YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgU2hvdyA6IEJvb2xlYW4pCiAgIGlzCiAg ICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzOyBTaG93IDogR2lu dCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zaG93 X2xhYmVscyIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIEJv b2xlYW4nUG9zIChTaG93KSk7CiAgIGVuZCBTaG93X0xhYmVsczsKCiAgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSBMYWJlbHNfU2V0X0F0dHJpYnV0ZXMgLS0KICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgTGFiZWxzX1NldF9BdHRyaWJ1dGVzCiAg ICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIEZvbnQgOiBTdHJp bmc7CiAgICAgIEhlaWdodCA6IEdpbnQ7CiAgICAgIEFuZ2xlICA6IEdpbnQ7CiAgICAgIEZvcmVn cm91bmQgOiBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBCYWNrZ3JvdW5kIDogR2RrLkNvbG9y Lkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsCiAgICAgICAgKERhdGEg OiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgRm9udCA6IFN0cmluZzsKICAgICAgICAgSGVpZ2h0 LCBBbmdsZSA6IEdpbnQ7CiAgICAgICAgIEZvcmVncm91bmQsIEJhY2tncm91bmQgOiBTeXN0ZW0u QWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0 YV9sYWJlbHNfc2V0X2F0dHJpYnV0ZXMiKTsKCiAgICAgIEYgOiBhbGlhc2VkIEdka19Db2xvciA6 PSBGb3JlZ3JvdW5kOwogICAgICBCIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQmFja2dyb3VuZDsK ICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBGb250ICYgQVNDSUku TlVMLCBIZWlnaHQsIEFuZ2xlLAogICAgICAgICAgICAgICAgRidBZGRyZXNzLCBCJ0FkZHJlc3Mp OwogICBlbmQgTGFiZWxzX1NldF9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0tLS0tLS0tLQogICAt LSBTZXRfU3ltYm9sIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfU3lt Ym9sCiAgICAgKERhdGEgICAgICAgICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAg ICAgVGhlX1R5cGUgICAgIDogUGxvdF9TeW1ib2xfVHlwZTsKICAgICAgU3R5bGUgICAgICAgIDog UGxvdF9TeW1ib2xfU3R5bGU7CiAgICAgIFNpemUgICAgICAgICA6IEdpbnQ7CiAgICAgIExpbmVf V2lkdGggICA6IEdmbG9hdDsKICAgICAgQ29sb3IgICAgICAgIDogR2RrLkNvbG9yLkdka19Db2xv cjsKICAgICAgQm9yZGVyX0NvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAg cHJvY2VkdXJlIEludGVybmFsCiAgICAgICAgKERhdGEgICAgICAgICAgICAgICAgICA6IFN5c3Rl bS5BZGRyZXNzOwogICAgICAgICBUaGVfVHlwZSwgU3R5bGUsIFNpemUgOiBHaW50OwogICAgICAg ICBMaW5lX1dpZHRoICAgICAgICAgICAgOiBHZmxvYXQ7CiAgICAgICAgIENvbG9yLCBCb3JkZXJf Q29sb3IgICA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJu YWwsICJndGtfcGxvdF9kYXRhX3NldF9zeW1ib2wiKTsKICAgICAgQyA6IGFsaWFzZWQgR2RrX0Nv bG9yIDo9IENvbG9yOwogICAgICBCIDogYWxpYXNlZCBHZGtfQ29sb3IgOj0gQm9yZGVyX0NvbG9y OwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFBsb3RfU3ltYm9s X1R5cGUnUG9zIChUaGVfVHlwZSksCiAgICAgICAgICAgICAgICBQbG90X1N5bWJvbF9TdHlsZSdQ b3MgKFN0eWxlKSwgU2l6ZSwgTGluZV9XaWR0aCwKICAgICAgICAgICAgICAgIEMnQWRkcmVzcywg QidBZGRyZXNzKTsKICAgZW5kIFNldF9TeW1ib2w7CgogICAtLS0tLS0tLS0tLS0tLS0tCiAgIC0t IEdldF9TeW1ib2wgLS0KICAgLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdldF9TeW1i b2wKICAgICAoRGF0YSAgICAgICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAg ICBUaGVfVHlwZSAgICAgOiBvdXQgUGxvdF9TeW1ib2xfVHlwZTsKICAgICAgU3R5bGUgICAgICAg IDogb3V0IFBsb3RfU3ltYm9sX1N0eWxlOwogICAgICBTaXplICAgICAgICAgOiBvdXQgR2ludDsK ICAgICAgTGluZV9XaWR0aCAgIDogb3V0IEdpbnQ7CiAgICAgIENvbG9yICAgICAgICA6IG91dCBH ZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBCb3JkZXJfQ29sb3IgOiBvdXQgR2RrLkNvbG9yLkdk a19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsCiAgICAgICAgKERhdGEgICAg ICAgICA6IFN5c3RlbS5BZGRyZXNzOwogICAgICAgICBUaGVfVHlwZSAgICAgOiBvdXQgUGxvdF9T eW1ib2xfVHlwZTsKICAgICAgICAgU3R5bGUgICAgICAgIDogb3V0IFBsb3RfU3ltYm9sX1N0eWxl OwogICAgICAgICBTaXplICAgICAgICAgOiBvdXQgR2ludDsKICAgICAgICAgTGluZV9XaWR0aCAg IDogb3V0IEdpbnQ7CiAgICAgICAgIENvbG9yICAgICAgICA6IFN5c3RlbS5BZGRyZXNzOwogICAg ICAgICBCb3JkZXJfQ29sb3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAgIHByYWdtYSBJbXBvcnQg KEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfc3ltYm9sIik7CiAgICAgIEMsIEIgOiBh bGlhc2VkIEdka19Db2xvcjsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERh dGEpLCBUaGVfVHlwZSwgU3R5bGUsIFNpemUsIExpbmVfV2lkdGgsCiAgICAgICAgICAgICAgICBD J0FkZHJlc3MsIEInQWRkcmVzcyk7CiAgICAgIENvbG9yIDo9IEM7CiAgICAgIEJvcmRlcl9Db2xv ciA6PSBCOwogICBlbmQgR2V0X1N5bWJvbDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0g U2V0X0Nvbm5lY3RvciAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0 X0Nvbm5lY3RvcgogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBDb25u ZWN0b3IgOiBQbG90X0Nvbm5lY3RvcikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChE YXRhIDogU3lzdGVtLkFkZHJlc3M7IENvbm5lY3RvciA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1w b3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfc2V0X2Nvbm5lY3RvciIpOwogICBiZWdp bgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFBsb3RfQ29ubmVjdG9yJ1BvcyAo Q29ubmVjdG9yKSk7CiAgIGVuZCBTZXRfQ29ubmVjdG9yOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0t LQogICAtLSBHZXRfQ29ubmVjdG9yIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0 aW9uIEdldF9Db25uZWN0b3IgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpCiAg ICAgIHJldHVybiBQbG90X0Nvbm5lY3RvcgogICBpcwogICAgICBmdW5jdGlvbiBJbnRlcm5hbCAo RGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAgICAgcHJhZ21hIEltcG9ydCAo QywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2dldF9jb25uZWN0b3IiKTsKICAgYmVnaW4KICAg ICAgcmV0dXJuIFBsb3RfQ29ubmVjdG9yJ1ZhbCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEp KSk7CiAgIGVuZCBHZXRfQ29ubmVjdG9yOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAtLSBTZXRfTGluZV9BdHRyaWJ1dGVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K CiAgIHByb2NlZHVyZSBTZXRfTGluZV9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAg V2lkdGggOiBHZmxvYXQ7CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMK ICAgICAgcHJvY2VkdXJlIEludGVybmFsCiAgICAgICAgKERhdGEgIDogU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgIFN0eWxlIDogR2ludDsKICAgICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgICAg IENvbG9yIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5h bCwgImd0a19wbG90X2RhdGFfc2V0X2xpbmVfYXR0cmlidXRlcyIpOwogICAgICBDIDogYWxpYXNl ZCBHZGtfQ29sb3IgOj0gQ29sb3I7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0 IChEYXRhKSwgUGxvdF9MaW5lX1N0eWxlJ1BvcyAoU3R5bGUpLCBXaWR0aCwKICAgICAgICAgICAg ICAgIEMnQWRkcmVzcyk7CiAgIGVuZCBTZXRfTGluZV9BdHRyaWJ1dGVzOwoKICAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfTGluZV9BdHRyaWJ1dGVzIC0tCiAgIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHZXRfTGluZV9BdHRyaWJ1dGVzCiAgICAg KERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IG91dCBQ bG90X0xpbmVfU3R5bGU7CiAgICAgIFdpZHRoIDogb3V0IEdmbG9hdDsKICAgICAgQ29sb3IgOiBv dXQgR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsCiAg ICAgICAgKERhdGEgIDogU3lzdGVtLkFkZHJlc3M7CiAgICAgICAgIFN0eWxlIDogb3V0IFBsb3Rf TGluZV9TdHlsZTsKICAgICAgICAgV2lkdGggOiBvdXQgR2Zsb2F0OwogICAgICAgICBDb2xvciA6 IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtf cGxvdF9kYXRhX2dldF9saW5lX2F0dHJpYnV0ZXMiKTsKICAgICAgQyA6IGFsaWFzZWQgR2RrX0Nv bG9yOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFN0eWxlLCBX aWR0aCwgQydBZGRyZXNzKTsKICAgICAgQ29sb3IgOj0gQzsKICAgZW5kIEdldF9MaW5lX0F0dHJp YnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9YX0F0dHJpYnV0ZXMg LS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9YX0F0dHJpYnV0 ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxl IDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBH ZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAg ICAoRGF0YSAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgU3R5bGUgOiBHaW50OwogICAgICAg ICBXaWR0aCA6IEdmbG9hdDsKICAgICAgICAgQ29sb3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfeF9hdHRyaWJ1 dGVzIik7CiAgICAgIEMgOiBhbGlhc2VkIEdka19Db2xvciA6PSBDb2xvcjsKICAgYmVnaW4KICAg ICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90X0xpbmVfU3R5bGUnUG9zIChTdHls ZSksIFdpZHRoLAogICAgICAgICAgICAgICAgQydBZGRyZXNzKTsKICAgZW5kIFNldF9YX0F0dHJp YnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9ZX0F0dHJpYnV0ZXMg LS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9ZX0F0dHJpYnV0 ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxl IDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBH ZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAg ICAoRGF0YSAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgU3R5bGUgOiBHaW50OwogICAgICAg ICBXaWR0aCA6IEdmbG9hdDsKICAgICAgICAgQ29sb3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfeV9hdHRyaWJ1 dGVzIik7CiAgICAgIEMgOiBhbGlhc2VkIEdka19Db2xvciA6PSBDb2xvcjsKICAgYmVnaW4KICAg ICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90X0xpbmVfU3R5bGUnUG9zIChTdHls ZSksIFdpZHRoLAogICAgICAgICAgICAgICAgQydBZGRyZXNzKTsKICAgZW5kIFNldF9ZX0F0dHJp YnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9aX0F0dHJpYnV0ZXMg LS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNldF9aX0F0dHJpYnV0 ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0eWxl IDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3IgOiBH ZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwKICAgICAg ICAoRGF0YSAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgICAgU3R5bGUgOiBHaW50OwogICAgICAg ICBXaWR0aCA6IEdmbG9hdDsKICAgICAgICAgQ29sb3IgOiBTeXN0ZW0uQWRkcmVzcyk7CiAgICAg IHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfel9hdHRyaWJ1 dGVzIik7CiAgICAgIEMgOiBhbGlhc2VkIEdka19Db2xvciA6PSBDb2xvcjsKICAgYmVnaW4KICAg ICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQbG90X0xpbmVfU3R5bGUnUG9zIChTdHls ZSksIFdpZHRoLAogICAgICAgICAgICAgICAgQydBZGRyZXNzKTsKICAgZW5kIFNldF9aX0F0dHJp YnV0ZXM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNob3dfWGVycmJhcnMgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNob3dfWGVycmJhcnMgKERhdGEgOiBh Y2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAo RGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJndGtfcGxvdF9kYXRhX3Nob3dfeGVycmJhcnMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwg KEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIFNob3dfWGVycmJhcnM7CgogICAtLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tIFNob3dfWWVycmJhcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoK ICAgcHJvY2VkdXJlIFNob3dfWWVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNz KTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3Nob3df eWVycmJhcnMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsK ICAgZW5kIFNob3dfWWVycmJhcnM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNob3df WmVycmJhcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIFNob3dfWmVy cmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2Nl ZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9y dCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3Nob3dfemVycmJhcnMiKTsKICAgYmVnaW4K ICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIFNob3dfWmVycmJhcnM7 CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEhpZGVfWGVycmJhcnMgLS0KICAgLS0tLS0t LS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEhpZGVfWGVycmJhcnMgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6 IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtf cGxvdF9kYXRhX2hpZGVfeGVycmJhcnMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9P YmplY3QgKERhdGEpKTsKICAgZW5kIEhpZGVfWGVycmJhcnM7CgogICAtLS0tLS0tLS0tLS0tLS0t LS0tCiAgIC0tIEhpZGVfWWVycmJhcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJv Y2VkdXJlIEhpZGVfWWVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQp IGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2hpZGVfeWVycmJh cnMiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5k IEhpZGVfWWVycmJhcnM7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEhpZGVfWmVycmJh cnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEhpZGVfWmVycmJhcnMg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJ bnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywg SW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2hpZGVfemVycmJhcnMiKTsKICAgYmVnaW4KICAgICAg SW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIEhpZGVfWmVycmJhcnM7CgogICAt LS0tLS0tLS0tLS0tLS0KICAgLS0gRmlsbF9BcmVhIC0tCiAgIC0tLS0tLS0tLS0tLS0tLQoKICAg cHJvY2VkdXJlIEZpbGxfQXJlYSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsg RmlsbCA6IEJvb2xlYW4pIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3Rl bS5BZGRyZXNzOyBGaWxsIDogR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFs LCAiZ3RrX3Bsb3RfZGF0YV9maWxsX2FyZWEiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdl dF9PYmplY3QgKERhdGEpLCBCb29sZWFuJ1BvcyAoRmlsbCkpOwogICBlbmQgRmlsbF9BcmVhOwoK ICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQXJlYV9Jc19GaWxsZWQgLS0KICAgLS0tLS0t LS0tLS0tLS0tLS0tLS0KCiAgIGZ1bmN0aW9uIEFyZWFfSXNfRmlsbGVkIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gQm9vbGVhbgogICBpcwogICAgICBm dW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR2ludDsKICAg ICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2FyZWFfaXNfZmls bGVkIik7CiAgIGJlZ2luCiAgICAgIHJldHVybiBCb29sZWFuJ1ZhbCAoSW50ZXJuYWwgKEdldF9P YmplY3QgKERhdGEpKSk7CiAgIGVuZCBBcmVhX0lzX0ZpbGxlZDsKCiAgIC0tLS0tLS0tLS0tLS0t LS0KICAgLS0gU2V0X0xlZ2VuZCAtLQogICAtLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUg U2V0X0xlZ2VuZCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTGVnZW5kIDog U3RyaW5nKQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzczsgTGVnZW5kIDogU3RyaW5nKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWws ICJndGtfcGxvdF9kYXRhX3NldF9sZWdlbmQiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdl dF9PYmplY3QgKERhdGEpLCBMZWdlbmQgJiBBU0NJSS5OVUwpOwogICBlbmQgU2V0X0xlZ2VuZDsK CiAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNob3dfTGVnZW5kIC0tCiAgIC0tLS0tLS0tLS0t LS0tLS0tCgogICBwcm9jZWR1cmUgU2hvd19MZWdlbmQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5B ZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRh X3Nob3dfbGVnZW5kIik7CiAgIGJlZ2luCiAgICAgIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRh KSk7CiAgIGVuZCBTaG93X0xlZ2VuZDsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEhpZGVf TGVnZW5kIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgSGlkZV9MZWdlbmQg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpIGlzCiAgICAgIHByb2NlZHVyZSBJ bnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJhZ21hIEltcG9ydCAoQywg SW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX2hpZGVfbGVnZW5kIik7CiAgIGJlZ2luCiAgICAgIElu dGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBIaWRlX0xlZ2VuZDsKCiAgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9MZWdlbmRfUHJlY2lzaW9uIC0tCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0xlZ2VuZF9QcmVjaXNp b24KICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgUHJlY2lzaW9uIDog R2ludCkKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJl c3M7IFByZWNpc2lvbiA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwg Imd0a19wbG90X2RhdGFfc2V0X2xlZ2VuZF9wcmVjaXNpb24iKTsKICAgYmVnaW4KICAgICAgSW50 ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBQcmVjaXNpb24pOwogICBlbmQgU2V0X0xlZ2VuZF9Q cmVjaXNpb247CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfTGVnZW5k X1ByZWNpc2lvbiAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24g R2V0X0xlZ2VuZF9QcmVjaXNpb24gKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQp CiAgICAgIHJldHVybiBHaW50CiAgIGlzCiAgICAgIGZ1bmN0aW9uIEludGVybmFsIChEYXRhIDog U3lzdGVtLkFkZHJlc3MpIHJldHVybiBHaW50OwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2xlZ2VuZF9wcmVjaXNpb24iKTsKICAgYmVnaW4KICAg ICAgcmV0dXJuIEludGVybmFsIChHZXRfT2JqZWN0IChEYXRhKSk7CiAgIGVuZCBHZXRfTGVnZW5k X1ByZWNpc2lvbjsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9HcmFkaWVu dF9NYXNrIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0dy YWRpZW50X01hc2sKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTWFz ayA6IFBsb3RfR3JhZGllbnQpCiAgIGlzCiAgICAgIHByb2NlZHVyZSBJbnRlcm5hbCAoRGF0YSA6 IFN5c3RlbS5BZGRyZXNzOyBNYXNrIDogR2ludCk7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIElu dGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfZ3JhZGllbnRfbWFzayIpOwogICBiZWdpbgogICAg ICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIFBsb3RfR3JhZGllbnQnUG9zIChNYXNrKSk7 CiAgIGVuZCBTZXRfR3JhZGllbnRfTWFzazsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg IC0tIEdldF9HcmFkaWVudF9NYXNrIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBm dW5jdGlvbiBHZXRfR3JhZGllbnRfTWFzayAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCkKICAgICAgcmV0dXJuIFBsb3RfR3JhZGllbnQKICAgaXMKICAgICAgZnVuY3Rpb24gSW50 ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzcykgcmV0dXJuIEdpbnQ7CiAgICAgIHByYWdtYSBJ bXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfZ3JhZGllbnRfbWFzayIpOwog ICBiZWdpbgogICAgICByZXR1cm4gUGxvdF9HcmFkaWVudCdWYWwgKEludGVybmFsIChHZXRfT2Jq ZWN0IChEYXRhKSkpOwogICBlbmQgR2V0X0dyYWRpZW50X01hc2s7CgogICAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSBHcmFkaWVudF9TZXRfVmlzaWJsZSAtLQogICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdyYWRpZW50X1NldF9WaXNpYmxlCiAgICAg KERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFZpc2libGUgOiBCb29sZWFuKQog ICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRkcmVzczsgVmlz aWJsZSA6IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90 X2RhdGFfZ3JhZGllbnRfc2V0X3Zpc2libGUiKTsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdl dF9PYmplY3QgKERhdGEpLCBCb29sZWFuJ1BvcyAoVmlzaWJsZSkpOwogICBlbmQgR3JhZGllbnRf U2V0X1Zpc2libGU7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdyYWRpZW50X1Zp c2libGUgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR3JhZGllbnRf VmlzaWJsZSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJu IEJvb2xlYW4KICAgaXMKICAgICAgZnVuY3Rpb24gSW50ZXJuYWwgKERhdGEgOiBTeXN0ZW0uQWRk cmVzcykgcmV0dXJuIEdpbnQ7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3Rr X3Bsb3RfZGF0YV9ncmFkaWVudF92aXNpYmxlIik7CiAgIGJlZ2luCiAgICAgIHJldHVybiBCb29s ZWFuJ1ZhbCAoSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKSk7CiAgIGVuZCBHcmFkaWVudF9W aXNpYmxlOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBTZXRfR3JhZGllbnRf Q29sb3JzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRf R3JhZGllbnRfQ29sb3JzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 CiAgICAgIE1pbiwgTWF4IDogR2RrLkNvbG9yLkdka19Db2xvcikKICAgaXMKICAgICAgcHJvY2Vk dXJlIEludGVybmFsIChEYXRhLCBNaW4sIE1heCA6IFN5c3RlbS5BZGRyZXNzKTsKICAgICAgcHJh Z21hIEltcG9ydCAoQywgSW50ZXJuYWwsICJndGtfcGxvdF9kYXRhX3NldF9ncmFkaWVudF9jb2xv cnMiKTsKICAgICAgTWkgOiBhbGlhc2VkIEdka19Db2xvciA6PSBNaW47CiAgICAgIE1hIDogYWxp YXNlZCBHZGtfQ29sb3IgOj0gTWF4OwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVj dCAoRGF0YSksIE1pJ0FkZHJlc3MsIE1hJ0FkZHJlc3MpOwogICBlbmQgU2V0X0dyYWRpZW50X0Nv bG9yczsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gR2V0X0dyYWRpZW50X0Nv bG9ycyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgR2V0X0dy YWRpZW50X0NvbG9ycwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwog ICAgICBNaW4sIE1heCA6IG91dCBHZGsuQ29sb3IuR2RrX0NvbG9yKQogICBpcwogICAgICBwcm9j ZWR1cmUgSW50ZXJuYWwgKERhdGEsIE1pbiwgTWF4IDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBw cmFnbWEgSW1wb3J0IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2dyYWRpZW50X2Nv bG9ycyIpOwogICAgICBNaSwgTWEgOiBhbGlhc2VkIEdka19Db2xvcjsKICAgYmVnaW4KICAgICAg SW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBNaSdBZGRyZXNzLCBNYSdBZGRyZXNzKTsKICAg ICAgTWluIDo9IE1pOwogICAgICBNYXggOj0gTWE7CiAgIGVuZCBHZXRfR3JhZGllbnRfQ29sb3Jz OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9HcmFkaWVudCAtLQogICAtLS0tLS0t LS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfR3JhZGllbnQKICAgICAoRGF0YSAgICAgOiBh Y2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIE1pbiwgTWF4IDogR2RvdWJsZTsKICAg ICAgTmxldmVscyAgOiBHaW50KQogICBpcwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEg OiBTeXN0ZW0uQWRkcmVzczsgTWluLCBNYXggOiBHZG91YmxlOyBOIDogR2ludCk7CiAgICAgIHBy YWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfZ3JhZGllbnQiKTsK ICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpLCBNaW4sIE1heCwgTmxl dmVscyk7CiAgIGVuZCBTZXRfR3JhZGllbnQ7CgogICAtLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0g R2V0X0dyYWRpZW50IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgcHJvY2VkdXJlIEdldF9H cmFkaWVudAogICAgIChEYXRhICAgICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAg ICAgTWluLCBNYXggOiBvdXQgR2RvdWJsZTsKICAgICAgTmxldmVscyAgOiBvdXQgR2ludCkKICAg aXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgTWluLCBNYXggOiBvdXQgR2RvdWJsZTsKICAgICAgICAgICAg ICAgICAgICAgICAgICBOIDogb3V0IEdpbnQpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJbnRl cm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2dyYWRpZW50Iik7CiAgIGJlZ2luCiAgICAgIEludGVy bmFsIChHZXRfT2JqZWN0IChEYXRhKSwgTWluLCBNYXgsIE5sZXZlbHMpOwogICBlbmQgR2V0X0dy YWRpZW50OwoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIEdldF9HcmFkaWVudF9M ZXZlbCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBHZXRfR3Jh ZGllbnRfTGV2ZWwKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAg ICAgIExldmVsIDogR2RvdWJsZTsKICAgICAgQ29sb3IgOiBvdXQgR2RrLkNvbG9yLkdka19Db2xv cikKICAgaXMKICAgICAgcHJvY2VkdXJlIEludGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3M7 CiAgICAgICAgICAgICAgICAgICAgICAgICAgTGV2ZWwgOiBHZG91YmxlOwogICAgICAgICAgICAg ICAgICAgICAgICAgIENvbG9yIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0 IChDLCBJbnRlcm5hbCwgImd0a19wbG90X2RhdGFfZ2V0X2dyYWRpZW50X2xldmVsIik7CiAgICAg IEMgOiBhbGlhc2VkIEdka19Db2xvcjsKICAgYmVnaW4KICAgICAgSW50ZXJuYWwgKEdldF9PYmpl Y3QgKERhdGEpLCBMZXZlbCwgQydBZGRyZXNzKTsKICAgICAgQ29sb3IgOj0gQzsKICAgZW5kIEdl dF9HcmFkaWVudF9MZXZlbDsKCiAgIC0tLS0tLS0tLS0tLS0tCiAgIC0tIFNldF9MaW5rIC0tCiAg IC0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X0xpbmsKICAgICAoRGF0YSA6IGFjY2Vz cyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTGluayA6IFN5c3RlbS5BZGRyZXNzKQogICBp cwogICAgICBwcm9jZWR1cmUgSW50ZXJuYWwgKERhdGEsIExpbmsgOiBTeXN0ZW0uQWRkcmVzcyk7 CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9zZXRfbGlu ayIpOwogICBiZWdpbgogICAgICBJbnRlcm5hbCAoR2V0X09iamVjdCAoRGF0YSksIExpbmspOwog ICBlbmQgU2V0X0xpbms7CgogICAtLS0tLS0tLS0tLS0tLQogICAtLSBHZXRfTGluayAtLQogICAt LS0tLS0tLS0tLS0tLQoKICAgZnVuY3Rpb24gR2V0X0xpbmsgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzcwogICBpcwogICAgICBm dW5jdGlvbiBJbnRlcm5hbCAoRGF0YSA6IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gU3lzdGVtLkFk ZHJlc3M7CiAgICAgIHByYWdtYSBJbXBvcnQgKEMsIEludGVybmFsLCAiZ3RrX3Bsb3RfZGF0YV9n ZXRfbGluayIpOwogICBiZWdpbgogICAgICByZXR1cm4gSW50ZXJuYWwgKEdldF9PYmplY3QgKERh dGEpKTsKICAgZW5kIEdldF9MaW5rOwoKICAgLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gUmVtb3Zl X0xpbmsgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBSZW1vdmVfTGluayAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgaXMKICAgICAgcHJvY2VkdXJlIElu dGVybmFsIChEYXRhIDogU3lzdGVtLkFkZHJlc3MpOwogICAgICBwcmFnbWEgSW1wb3J0IChDLCBJ bnRlcm5hbCwgImd0a19wbG90X2RhdGFfcmVtb3ZlX2xpbmsiKTsKICAgYmVnaW4KICAgICAgSW50 ZXJuYWwgKEdldF9PYmplY3QgKERhdGEpKTsKICAgZW5kIFJlbW92ZV9MaW5rOwplbmQgR3RrLkV4 dHJhLlBsb3RfRGF0YTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUg YmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tl ciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAg ICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0g R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9u ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0K LS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVj aWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAg LS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0 byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5 IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3Zl cmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0 aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhl ICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1 YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0t ICBUaGlzIHBhY2thZ2UgZGVmaW5lcyB0aGUgcm9vdCBvZiB0aGUgcGxvdCBoaWVyYXJjaHkuIEl0 IGRlZmluZXMgc2V2ZXJhbAotLSAgZGlzcGxheSBzdHJhdGVnaWVzIHRoYXQgY2FuIGJlIHVzZWQg dG8gc2hvdyBzY2llbnRpZmljIGRhdGEgb24gdGhlCi0tICBzY3JlZW4gKHNlZSB0aGUgY2hpbGRy ZW4gZm9yIDNELCBwb2xhciwgYmFycywuLi4pCi0tCi0tICBBbGwgY29vcmRpbmF0ZXMgYXJlIGlu IHBlcmNlbnQgb2YgdGhlIHRvdGFsIHNpemUgYWxsb2NhdGVzIGZvciB0aGUgZGF0YQotLSAgc2V0 IChpZSB0aGUgYWN0dWFsIHBvc2l0aW9uIGlzICh4ICogd2lkdGgsIHkgKiBoZWlnaHQpLCB3aGVy ZSAoeCwgeSkgaXMKLS0gIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlIGRhdGEgc2V0IGFuZCAod2lk dGgsIGhlaWdodCkgaXRzIGFsbG9jYXRlZCBzY3JlZW4KLS0gIHNpemUuCi0tICA8L2Rlc2NyaXB0 aW9uPgotLSAgPGNfdmVyc2lvbj5ndGsrZXh0cmEgMC45OS4xNDxjX3ZlcnNpb24+Cgp3aXRoIEds aWI7IHVzZSBHbGliOwp3aXRoIEd0ay5XaWRnZXQ7CndpdGggR3RrYWRhLlR5cGVzOwp3aXRoIEdk ay5Db2xvcjsKd2l0aCBVbmNoZWNrZWRfQ29udmVyc2lvbjsKCnBhY2thZ2UgR3RrLkV4dHJhLlBs b3RfRGF0YSBpcwoKICAgdHlwZSBHdGtfUGxvdF9EYXRhX1JlY29yZCBpcyBuZXcgR3RrLldpZGdl dC5HdGtfV2lkZ2V0X1JlY29yZCB3aXRoIHByaXZhdGU7CiAgIHR5cGUgR3RrX1Bsb3RfRGF0YSBp cyBhY2Nlc3MgYWxsIEd0a19QbG90X0RhdGFfUmVjb3JkJ0NsYXNzOwogICAtLSAgQSBzZXQgb2Yg dmFsdWVzIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIG9uIHRoZSBzY3JlZW4uIFRoZXJlIGFyZQog ICAtLSAgc2V2ZXJhbCBzdHJhdGVnaWVzIHRvIHNldCB0aGUgdmFsdWVzLCBlaXRoZXIgZXhwbGlj aXRlbHkgaW4geW91cgogICAtLSAgYXBwbGljYXRpb24sIG9yIGJ5IGhhdmluZyB0aGVtIGF1dG9t YXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGEgZnVuY3Rpb24uCgogICAtLS0tLS0tLS0tLQogICAtLSBU eXBlcyAtLQogICAtLS0tLS0tLS0tLQoKICAgdHlwZSBOb19SYW5nZV9HZG91YmxlX0FycmF5IGlz IGFycmF5IChOYXR1cmFsKSBvZiBHZG91YmxlOwogICAtLSAgQW4gYXJyYXkgb2YgdmFsdWVzLgog ICAtLSAgVGhpcyBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSB2YWx1ZXMgZGlzcGxheWVk IGluIHRoZSBwbG90LgogICAtLSAgVGhpcyBhcnJheSBkb2VzIG5vdCBoYXZlIGFueSByYW5nZSBp bmZvcm1hdGlvbiAoc28gdGhhdCBpdCBjYW4gYmUKICAgLS0gIGVhc2lseSByZXR1cm5lZCBmcm9t IGEgQyBmdW5jdGlvbiwgd2l0aG91dCByZXF1aXJpbmcgYW4gZXh0cmEKICAgLS0gIGNvcHkgb2Yg dGhlIHRhYmxlKS4gWW91IGNhbiBub3QgdXNlICdSYW5nZSBvbiB0aGlzIGFycmF5LgoKICAgdHlw ZSBOb19SYW5nZV9HZG91YmxlX0FycmF5X0FjY2VzcyBpcyBhY2Nlc3MgYWxsIE5vX1JhbmdlX0dk b3VibGVfQXJyYXk7CiAgIC0tICBBbiBhY2Nlc3MgdG8gYSBmbGF0IGFycmF5LgoKICAgdHlwZSBH ZG91YmxlX0FycmF5X0FjY2VzcyBpcyBhY2Nlc3MgYWxsIEdsaWIuR2RvdWJsZV9BcnJheTsKICAg LS0gIFRoZSByZWFzb24gd2UgdXNlIHRoaXMgdHlwZSBpbiB0aGUgZnVuY3Rpb25zIGJlbG93IGlz IGJlY2F1c2UKICAgLS0gIGd0aystZXh0cmEgZG9lcyBub3Qga2VlcCBhIGNvcHkgb2YgdGhlIGFy cmF5cywgYnV0IHBvaW50cyB0byB0aGUgb25lCiAgIC0tICBnaXZlbiBpbiBhcmd1bWVudC4gVGh1 cywgdGhlIEFkYSBhcnJheXMgc2hvdWxkIG5vdCBiZSBhbGxvY2F0ZWQgb24gdGhlCiAgIC0tICBz dGFjaywgb3IgYXQgbGVhc3QgdGhleSBzaG91bGQgYmUgYXQgbGlicmFyeSBsZXZlbC4gVXNpbmcg dGhpcyAnQWNjZXNzCiAgIC0tICB3aWxsIGZvcmNlIHRoZSBjb21waWxlciB0byBkbyB0aGUgY2hl Y2sgZm9yIHVzLgoKICAgdHlwZSBQb2ludHNfQXJyYXkgaXMgcmVjb3JkCiAgICAgIFBvaW50cyAg ICAgOiBOb19SYW5nZV9HZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgTnVtX1BvaW50cyA6IEdp bnQgOj0gMDsKICAgZW5kIHJlY29yZDsKICAgLS0gIFRoZSBwb2ludHMgYXJlIGluZGV4ZWQgZnJv bSAwIHRvIE51bV9Qb2ludHMtMS4KICAgLS0gIE5vdGUgdGhhdCB5b3UgY2FuJ3QgdXNlICdSYW5n ZSwgJ0ZpcnN0IG9yICdMYXN0IG9uIFBvaW50cy4KCgogICB0eXBlIFBsb3RfQ29ubmVjdG9yIGlz IChDb25uZWN0X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tICBObyBjb25uZWN0 aW9uCgogICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0X1N0cmFpZ2h0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAtLSAgc3RyYWlnaHQgbGluZQoKICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ29ubmVjdF9TcGxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tICBz cGxpbmUgb3IgQmV6aWVyIGN1cnZlCgogICAgICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0 X0h2X1N0ZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tICBIb3Jpem9udGFsIHRoZW4g dmVydGljYWwKCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RfVmhfU3RlcCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0gIFZlcnRpY2FsIHRoZW4gaG9yaXpvbnRhbAoKICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdF9NaWRkbGVfU3RlcAogICAgICAgICAgICAg ICAgICAgICAgICAgICAtLSAgU3BsaXQgaW4gdGhlIG1pZGRsZQogICAgICAgICAgICAgICAgICAg ICAgICAgICApOwogICAtLSAgVGhlIHR5cGUgb2YgY29ubmVjdGlvbiBiZXR3ZWVuIHR3byBhZGph Y2VudCBwb2ludHMgaW4gYSBncmFwaC4KCiAgIHR5cGUgUGxvdF9HcmFkaWVudCBpcyBuZXcgSW50 ZWdlcjsKICAgLS0gIEluZGljYXRlIHdoaWNoIGNvbG9yIGNvbXBvbmVudHMgdmFyeSBhbG9uZyB0 aGUgZ3JhZGllbnQKCiAgIEdyYWRpZW50X0ggOiBjb25zdGFudCBQbG90X0dyYWRpZW50OyAtLSAg SHVlCiAgIEdyYWRpZW50X1YgOiBjb25zdGFudCBQbG90X0dyYWRpZW50OyAtLSAgVmFsdWUKICAg R3JhZGllbnRfUyA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQ7IC0tICBTYXR1cmF0aW9uCgogICB0 eXBlIFBsb3RfU3ltYm9sX1R5cGUgaXMgKFN5bWJvbF9Ob25lLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFN5bWJvbF9TcXVhcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lt Ym9sX0NpcmNsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xfVXBfVHJpYW5n bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX0Rvd25fVHJpYW5nbGUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX1JpZ2h0X1RyaWFuZ2xlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9MZWZ0X1RyaWFuZ2xlLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFN5bWJvbF9EaWFtb25kLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFN5bWJvbF9QbHVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bWJvbF9Dcm9z cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW1ib2xfU3RhciwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTeW1ib2xfRG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IFN5bWJvbF9JbXB1bHNlKTsKICAgLS0gIFR5cGUgb2Ygc3ltYm9sIHVzZWQgdG8gcmVwcmVzZW50 IHRoZSBwb2ludHMgaW4gYSBncmFwaC4KCiAgIHR5cGUgUGxvdF9TeW1ib2xfU3R5bGUgaXMgKFN5 bWJvbF9FbXB0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX0ZpbGxlZCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sX09wYXF1ZSk7CiAgIC0tICBTdHls ZSB1c2VkIHRvIGRyYXcgdGhlIHBvaW50cyBpbiBhIGdyYXBoLgoKICAgdHlwZSBQbG90X0xpbmVf U3R5bGUgaXMgKExpbmVfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfU29s aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lX0RvdHRlZCwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpbmVfRGFzaGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg TGluZV9Eb3RfRGFzaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpbmVfRG90X0RvdF9E YXNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZV9Eb3RfRGFzaF9EYXNoKTsKICAg LS0gIExpbmVzIHVzZWQgdG8gY29ubmVjdCB0d28gYWRqYWNlbnQgcG9pbnRzIGluIGEgZ3JhcGgu CgogICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBQbG90IGZ1bmN0aW9ucyAtLQogICAtLS0t LS0tLS0tLS0tLS0tLS0tLQogICAtLSAgUGxvdCBmdW5jdGlvbnMgc2hvdWxkIGdlbmVyYXRlIGEg dW5pcXVlIFkgdmFsdWUgZ2l2ZW4gYSBwYXJhbWV0ZXIuCiAgIC0tICBUaGVzZSBjYW4gYmUgdXNl ZCBmb3IgaW5zdGFuY2UgdG8gcmVwcmVzZW50IGV4YWN0bHkgbWF0aGVtYXRpY2FsCiAgIC0tICBm dW5jdGlvbnMuCiAgIC0tICBOb3RlIHRoYXQgZHVlIHRvIHRoZSBDIGludGVyZmFjZSwgdGhlIHN1 YnByb2dyYW1zIGluIEd0ay5FeHRyYS5QbG90IGFuZAogICAtLSAgaW4gdGhpcyBwYWNrYWdlIGV4 cGVjdCBmdW5jdGlvbnMgdGhhdCB0YWtlIGEgU3lzdGVtLkFkZHJlc3MgYXMgYQogICAtLSAgcGFy YW1ldGVyLiBIb3dldmVyLCBzaW5jZSBpdCBpcyBtdWNoIG1vcmUgY29udmVuaWVudCBpbiB5b3Vy IGFwcGxpY2F0aW9uCiAgIC0tICB0byBnZXQgYSBHdGtfUGxvdF9SZWNvcmQgZGlyZWN0bHksIEd0 a0FkYSBpbmNsdWRlcyBhIGdlbmVyaWMgZnVuY3Rpb24KICAgLS0gIHRoYXQgYXV0b21hdGljYWxs eSBkb2VzIHRoZSBjb252ZXJzaW9uIGZvciB5b3UgKHNlZQogICAtLSAgR3RrLlBsb3QuR2VuZXJp Y19QbG90X0Z1bmN0aW9uKS4KCiAgIHR5cGUgUGxvdF9GdW5jdGlvbiBpcyBhY2Nlc3MgZnVuY3Rp b24KICAgICAoUGxvdCAgOiBTeXN0ZW0uQWRkcmVzczsKICAgICAgU2V0ICAgOiBHdGtfUGxvdF9E YXRhOwogICAgICBYICAgICA6IEdkb3VibGU7CiAgICAgIEVycm9yIDogYWNjZXNzIEdib29sZWFu KQogICAgIHJldHVybiBHZG91YmxlOwogICAtLSAgRnVuY3Rpb24gdXNlZCBmb3IgcGxvdHRpbmcu CiAgIC0tICBJdCBzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggWCBpbiBp dHMgZ3JhcGgsIGFuZCBzZXQKICAgLS0gIEVycm9yIHRvIFRydWUgaWYgdGhlcmUgd2FzIGFuIGVy cm9yIHdoaWxlIGNhbGN1bGF0aW5nIHRoZSB2YWx1ZS4KCiAgIHByYWdtYSBDb252ZW50aW9uIChD LCBQbG90X0Z1bmN0aW9uKTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gQ3Jl YXRpbmcgYSBEYXRhIHNldCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgR3RrX05ldyAoRGF0YSA6IG91dCBHdGtfUGxvdF9EYXRhOyBGdW5jIDogUGxvdF9GdW5j dGlvbiA6PSBudWxsKTsKICAgLS0gIENyZWF0ZXMgYSBuZXcgZGF0YSBzZXQuIEl0cyB2YWx1ZXMg Y2FuIGVpdGhlciBiZSBnZW5lcmF0ZWQgYXV0b21hdGljYWxseQogICAtLSAgZnJvbSBGdW5jLCBv ciB3aWxsIGhhdmUgdG8gYmUgc2V0IGV4cGxpY2l0ZWx5IHVzaW5nIHRoZSBvdGhlcgogICAtLSAg c3VicHJvZ3JhbXMgaW4gdGhpcyBwYWNrYWdlLgoKICAgcHJvY2VkdXJlIEluaXRpYWxpemUKICAg ICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCdDbGFzczsgRnVuYyA6IFBsb3Rf RnVuY3Rpb24gOj0gbnVsbCk7CiAgIC0tICBJbnRlcm5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlv bi4KICAgLS0gIFNlZSB0aGUgc2VjdGlvbiAiQ3JlYXRpbmcgeW91ciBvd24gd2lkZ2V0cyIgaW4g dGhlIGRvY3VtZW50YXRpb24uCgogICBmdW5jdGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19U eXBlOwogICAtLSAgUmV0dXJuIHRoZSBpbnRlcm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBH dGtfUGxvdF9EYXRhLgoKICAgcHJvY2VkdXJlIFNldF9OYW1lIChEYXRhIDogYWNjZXNzIEd0a19Q bG90X0RhdGFfUmVjb3JkOyBOYW1lIDogU3RyaW5nKTsKICAgLS0gIFNldCB0aGUgbmFtZSB1c2Vk IGludGVybmFsbHkgZm9yIHRoYXQgZGF0YXNldC4KICAgLS0gIFRoaXMgbmFtZSBkb2VzIG5vdCBh cHBlYXIgYW55d2hlcmUgb24gdGhlIHNjcmVlbiwgYnV0IGl0IGlzIGVhc2llciB0bwogICAtLSAg ZmluZCB0aGUgZGF0YXNldCBhZnRlcndhcmQgYnkgdXNpbmcgdGhpcyBuYW1lLgoKICAgLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSBEcmF3aW5nIGEgc2V0IC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0KICAgLS0gIEFsdGhvdWdoIGEgc2V0IGlzIGJhc2ljYWxseSBhIGxpc3Qgb2YgdmFsdWVzLCBp dCBpcyBjbG9zZWx5IGFzc29jaWF0ZWQKICAgLS0gIHdpdGggaXRzIHJlcHJlc2VudGF0aW9uIG9u IHRoZSBzY3JlZW4gKHNlZSB0aGUgY2hpbGRyZW4gb2YgR3RrX1Bsb3RfRGF0YQogICAtLSAgZm9y IHZhcmlvdXMgcG9zc2libGUgcmVwcmVzZW50YXRpb25zKS4KICAgLS0gIFRoZSBHdGsuRXh0cmEg cGFja2FnZXMgYXJlIGRlc2lnbmVkIHNvIHRoYXQgdGhlIGRyYXdpbmcgY2FuIGJlIGRvbmUKICAg LS0gIGVpdGhlciB0byB0aGUgc2NyZWVuICh0aHJvdWdoIGEgR2RrIGFkYXB0ZXIpLCB0byBhIHBv c3RzY3JpcHQgZmlsZSBmb3IKICAgLS0gIGVhc3kgcHJpbnRpbmcsIG9yIHRvIGFueSBvdGhlciBt ZWRpYS4KCiAgIHByb2NlZHVyZSBQYWludCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCk7CiAgIC0tICBFbWl0cyB0aGUgImRyYXdfZGF0YSIgc2lnbmFsIHRvIHJlcXVlc3QgYSBy ZWRyYXdpbmcgb2YgdGhlIGRhdGEgc2V0LgoKICAgcHJvY2VkdXJlIERyYXdfUG9pbnRzIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBOIDogR2ludCk7CiAgIC0tICBEcmF3IGF0 IG1vc3QgTiB2YWx1ZXMgb2YgdGhlIERhdGEgc2V0IG9uIHRoZSBzY3JlZW4uIElmIE4gaXMgZ3Jl YXRlcgogICAtLSAgdGhhbiB0aGUgYWN0dWFsIG51bWJlciBvZiB2YWx1ZXMgaW4gRGF0YSwgdGhl biB0aGV5IGFyZSBhbGwgZGlzcGxheWVkLgoKICAgcHJvY2VkdXJlIERyYXdfU3ltYm9sIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBYLCBZIDogR2RvdWJsZSk7CiAgIC0tICBE cmF3IHRoZSBjdXJyZW50IHN5bWJvbCAoc2VlIFNldF9TeW1ib2wpIGF0IHNwZWNpZmljIGNvb3Jk aW5hdGVzIG9uCiAgIC0tICB0aGUgc2NyZWVuLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICAtLSBNYW5pcHVsYXRpbmcgdmFsdWVzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KCiAgIHByb2NlZHVyZSBTZXRfUG9pbnRzCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7CiAgICAgIFggICAgOiBHZG91YmxlX0FycmF5X0FjY2VzczsKICAgICAgWSAg ICA6IEdkb3VibGVfQXJyYXlfQWNjZXNzOwogICAgICBEeCAgIDogR2RvdWJsZV9BcnJheV9BY2Nl c3M7CiAgICAgIER5ICAgOiBHZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIC0tICBTZXQgc29tZSBl eHBsaWNpdCBwb2ludHMgaW4gdGhlIHNldC4KICAgLS0gIE5vdGUgdGhhdCB0aGUgc2V0IG11c3Qg bm90IGJlIGFzc29jaWF0ZWQgd2l0aCBhIGZ1bmN0aW9uLCBvciB0aGUgcG9pbnRzCiAgIC0tICB3 aWxsIHNpbXBseSBiZSBpZ25vcmVkLgogICAtLSAgQWxsIG9mIHRoZSBhcnJheXMgbXVzdCBoYXZl IHRoZSBzYW1lIGxlbmd0aCwgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZAogICAtLSAgb3RoZXJ3 aXNlLgogICAtLSAgWCBhbmQgWSBhcmUgdGhlIGxpc3Qgb2YgY29vcmRpbmF0ZXMgb2YgdGhlIHBv aW50cy4KICAgLS0gIER4IGFuZCBEeSBhcmUgdGhlIGxpc3Qgb2Ygc2l6ZSAocHJlY2lzaW9uKSBv ZiB0aGVzZSBwb2ludHMuIEEgYmlnZ2VyCiAgIC0tICBzeW1ib2wgd2lsbCBiZSBkaXNwbGF5ZWQg Zm9yIHRoZSBwb2ludCB3aG9zZSAoRHgsIER5KSB2YWx1ZSBpcyBiaWdnZXIuCgogICBwcm9jZWR1 cmUgR2V0X1BvaW50cwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwog ICAgICBYICAgIDogb3V0IFBvaW50c19BcnJheTsKICAgICAgWSAgICA6IG91dCBQb2ludHNfQXJy YXk7CiAgICAgIER4ICAgOiBvdXQgUG9pbnRzX0FycmF5OwogICAgICBEeSAgIDogb3V0IFBvaW50 c19BcnJheSk7CiAgIC0tICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwb2ludHMgaW4gdGhlIHNl dC4KICAgLS0gIE51bGwtbGVuZ3RoIGFycmF5cyBhcmUgcmV0dXJuZWQgaWYgdGhlIHNldCBpcyBh c3NvY2lhdGVkIHdpdGggYQogICAtLSAgZnVuY3Rpb24sIHNpbmNlIG5vIGV4cGxpY2l0IHBvaW50 IGhhcyBiZWVuIHNldC4KICAgLS0gIFNlZSBTZXRfUG9pbnRzIGZvciBhIGRlZmluaXRpb24gb2Yg WCwgWSwgRHggYW5kIER5LgoKICAgcHJvY2VkdXJlIFNldF9YCiAgICAgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IFggOiBHZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIHByb2Nl ZHVyZSBTZXRfWQogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBZIDog R2RvdWJsZV9BcnJheV9BY2Nlc3MpOwogICBwcm9jZWR1cmUgU2V0X1oKICAgICAoRGF0YSA6IGFj Y2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgWiA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAg cHJvY2VkdXJlIFNldF9BCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 IEEgOiBHZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIC0tICBTZXQgdGhlIHZhbHVlcyBmb3Igb25l IHNwZWNpZmljIGNvb3JkaW5hdGUgaW4gdGhlIHNldC4KICAgLS0gIFRoZSBhcnJheSBtdXN0IGhh dmUgYSBsZW5ndGggb2YgR2V0X051bXBvaW50cyAoaWYgR3RrQWRhIHdhcwogICAtLSAgY29tcGls ZWQgd2l0aCBhc3NlcnRpb25zIGVuYWJsZWQsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBp ZiB0aGUKICAgLS0gIGxlbmd0aCBhcmUgZGlmZmVyZW50KS4KICAgLS0gIE5vIGNvcHkgb2YgdGhl IGFycmF5IGlzIG1hZGUgZm9yIGVmZmljaWVuY3kgcmVhc29ucywgdGh1cyBtb2RpZnlpbmcKICAg LS0gIHRoZSBhcnJheSBjb250ZW50IGxhdGVyIG9uIHdpbGwgYWxzbyBtb2RpZnkgdGhlIHBsb3Qu CiAgIC0tCiAgIC0tICAiQSIgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBzeW1i b2xzLiBXaGVuIHBsb3R0aW5nIGJveGVzIGluCiAgIC0tICB0d28gZGltZW5zaW9ucywgIloiIGlz IHVzZWQgdG8gc3BlY2lmeSB0aGUgc2l6ZSBvZiB0aGUgYm94LgoKICAgcHJvY2VkdXJlIFNldF9E eAogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeCA6IEdkb3VibGVf QXJyYXlfQWNjZXNzKTsKICAgcHJvY2VkdXJlIFNldF9EeQogICAgIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOyBEeSA6IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgcHJvY2Vk dXJlIFNldF9EegogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBEeiA6 IEdkb3VibGVfQXJyYXlfQWNjZXNzKTsKICAgLS0gIFNldCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBw b2ludHMgaW4gdGhlIHNldC4gQSBiaWdnZXIgc3ltYm9sIGlzIGRpc3BsYXllZAogICAtLSAgZm9y IHRoZSBwb2ludHMgd2hvc2UgKER4LCBEeSwgRHopIGlzIGJpZ2dlci4KICAgLS0gIFRoZSBhcnJh eSBtdXN0IGhhdmUgYSBsZW5ndGggb2YgR2V0X051bXBvaW50cyAoaWYgR3RrQWRhIHdhcwogICAt LSAgY29tcGlsZWQgd2l0aCBhc3NlcnRpb25zIGVuYWJsZWQsIGFuIGV4Y2VwdGlvbiB3aWxsIGJl IHJhaXNlZCBpZiB0aGUKICAgLS0gIGxlbmd0aCBhcmUgZGlmZmVyZW50KS4KICAgLS0gIE5vIGNv cHkgb2YgdGhlIGFycmF5IGlzIG1hZGUgZm9yIGVmZmljaWVuY3kgcmVhc29ucywgdGh1cyBtb2Rp ZnlpbmcKICAgLS0gIHRoZSBhcnJheSBjb250ZW50IGxhdGVyIG9uIHdpbGwgYWxzbyBtb2RpZnkg dGhlIHBsb3QuCgogICBwcm9jZWR1cmUgU2V0X0RhCiAgICAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQ7IERhIDogR2RvdWJsZV9BcnJheV9BY2Nlc3MpOwogICAtLSAgU3BlY2lm aWVzIHRoZSBjb2xvcnMgdG8gdXNlIGZvciB0aGUgcG9pbnRzLgogICAtLSAgVGhlIGNvbG9yIG9m IHRoZSBzeW1ib2xzIGlzIGRldGVtaW5lZCB1c2luZyB0aGUgZ3JhZGllbnQuIHRoZSBncmFkaWVu dAogICAtLSAgaGFzIChtaW4sIG1heCkgdmFsdWVzLCBhbmQgY29ycmVzcG9uZGluZyBjb2xvcnMu IFRoZSBzeW1ib2wncyBjb2xvciBpcwogICAtLSAgaW50ZXJwb2xhdGVkIGJldHdlZW4gdGhlc2Ug dmFsdWVzIHVzaW5nIGh1ZS9zYXR1cmF0aW9uL3ZhbHVlIGRlcGVuZGluZwogICAtLSAgb24gdGhl IGdyYWRpZW50X21hc2suCgogICBmdW5jdGlvbiBHZXRfWCAgKERhdGEgOiBhY2Nlc3MgR3RrX1Bs b3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9ZICAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJheTsK ICAgZnVuY3Rpb24gR2V0X1ogIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKSBy ZXR1cm4gUG9pbnRzX0FycmF5OwogICBmdW5jdGlvbiBHZXRfQSAgKERhdGEgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdldF9E eCAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19BcnJh eTsKICAgZnVuY3Rpb24gR2V0X0R5IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3Jk KSByZXR1cm4gUG9pbnRzX0FycmF5OwogICBmdW5jdGlvbiBHZXRfRHogKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpIHJldHVybiBQb2ludHNfQXJyYXk7CiAgIGZ1bmN0aW9uIEdl dF9EYSAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIFBvaW50c19B cnJheTsKICAgLS0gIFJldHVybiB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBwb2ludHMgaW4gdGhl IHNldC4KICAgLS0gIFRoaXMgaXMgYSBkaXJlY3QgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIEMg YXJyYXksIHRodXMgbW9kaWZ5aW5nIHRoaXMKICAgLS0gIGFycmF5J3MgY29udGVudHMgYWxzbyBt b2RpZmllcyB0aGUgZ3JhcGguCiAgIC0tICBTZWUgdGhlIGNvcnJlc3BvbmRpbmcgU2V0XyogZnVu Y3Rpb25zIGZvciBhIGRlZmluaXRpb24gb2YgdGhlCiAgIC0tICBjb29yZGluYXRlcwoKICAgcHJv Y2VkdXJlIFNldF9OdW1wb2ludHMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7 IE51bSA6IEdpbnQpOwogICAtLSAgU2V0IHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgc2hvdWxk IGJlIGV4cGVjdGVkIGluIHRoZSBncmFwaC4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90 IGF1dG9tYXRpY2FsbHkgcmVzaXplIGFsbCB0aGUgaW50ZXJuYWwgc3RydWN0dXJlLAogICAtLSAg aXQganVzdCBpbmRpY2F0ZXMgd2hhdCBzaXplIHRoZSBwYXJhbWV0ZXJzIHRvIFNldF9YLCBTZXRf WSwuLi4gc2hvdWxkCiAgIC0tICBoYXZlLgoKICAgZnVuY3Rpb24gR2V0X051bXBvaW50cyAoRGF0 YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1 cm4gdGhlIG51bWJlciBvZiBwb2ludHMgZXhwZWN0ZWQgaW4gdGhlIGdyYXBoLgoKICAgLS0tLS0t LS0tLS0tCiAgIC0tIExhYmVscyAtLQogICAtLS0tLS0tLS0tLS0KICAgLS0gIEVhY2ggcG9pbnQg aW4gdGhlIGRhdGEgc2V0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSBsYWJlbCB0aGF0IGRlc2Ny aWJlcwogICAtLSAgaXQuIFRoaXMgaXMgb25seSByZWxldmFudCBmb3IgZGF0YSBzZXRzIHdoZXJl IHlvdSBleHBsaWNpdGVseSBnaXZlCiAgIC0tICB2YWx1ZXMsIG5vdCB3aGVuIHRoZSB2YWx1ZXMg YXJlIGdlbmVyYXRlZCBieSBhIGZ1bmN0aW9uLgoKICAgcHJvY2VkdXJlIFNldF9MYWJlbHMKICAg ICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTGFiZWxzIDogR3Rr YWRhLlR5cGVzLkNoYXJzX1B0cl9BcnJheSk7CiAgIC0tICBTZXQgdGhlIGxhYmVscyBhc3NvY2lh dGVkIHdoaWNoIGVhY2ggcG9pbnQgaW4gdGhlIGNhbnZhcy4KICAgLS0gIFRoZXJlIG11c3QgYmUg YXQgbGVhc3QgR2V0X051bXBvaW50cyBlbGVtZW50cyBpbiBMYWJlbHMsIG9yIHRoZQogICAtLSAg YmVoYXZpb3IgaXMgdW5kZWZpbmVkCgogICBmdW5jdGlvbiBHZXRfTGFiZWxzIChEYXRhIDogYWNj ZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gR3RrYWRhLlR5cGVzLkNoYXJz X1B0cl9BcnJheTsKICAgLS0gIFJldHVybiB0aGUgbGFiZWxzIGFzc29jaWF0ZWQgd2l0aCB0aGUg cG9pbnRzIGluIHRoZSBkYXRhIHNldC4KICAgLS0gIE5vdGUgdGhhdCB0aGlzIHJldHVybnMgYSAq Y29weSogb2YgdGhlIGFjdHVhbCBhcnJheSwgYW5kIHRodXMgbWlnaHQKICAgLS0gIGJlIGV4cGVu c2l2ZSB0byBjYWxsLgoKICAgcHJvY2VkdXJlIFNob3dfTGFiZWxzIChEYXRhIDogYWNjZXNzIEd0 a19QbG90X0RhdGFfUmVjb3JkOyBTaG93IDogQm9vbGVhbik7CiAgIC0tICBJbmRpY2F0ZSB3aGV0 aGVyIHRoZSBsYWJlbHMgc2hvdWxkIGJlIGRpc3BsYXllZCBuZXh0IHRvIGVhY2ggcG9pbnQgaW4K ICAgLS0gIHRoZSBkYXRhIHNldC4gVGhpcyBoYXMgbm8gZWZmZWN0IGlmIG5vIGxhYmVscyB3ZXJl IHNwZWNpZmllZC4KCiAgIHByb2NlZHVyZSBMYWJlbHNfU2V0X0F0dHJpYnV0ZXMKICAgICAoRGF0 YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgRm9udCA6IFN0cmluZzsKICAg ICAgSGVpZ2h0IDogR2ludDsKICAgICAgQW5nbGUgIDogR2ludDsKICAgICAgRm9yZWdyb3VuZCA6 IEdkay5Db2xvci5HZGtfQ29sb3I7CiAgICAgIEJhY2tncm91bmQgOiBHZGsuQ29sb3IuR2RrX0Nv bG9yKTsKICAgLS0gIFNldCB0aGUgcHJvcGVydGllcyBvZiB0aGUgbGFiZWxzCgogICAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tIFN5bWJvbHMgYW5kIENvbm5lY3RvcnMgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSAgRWFjaCBwb2ludCB0aGF0IGlzIGV4 cGxpY2l0ZWx5IHNldCBpbiB0aGUgZGF0YSBzZXQgdGhyb3VnaCB0aGUKICAgLS0gIFNldF9YLCBT ZXRfWSwuLi4gc3VicHJvZ3JhbXMgaXMgdmlzdWFsbHkgYXNzb2NpYXRlZCB3aXRoIGEgc3ltYm9s LiBUaGVyZQogICAtLSAgYXJlIHNldmVyYWwgcmVwcmVzZW50YXRpb25zIGZvciB0aGUgc3ltYm9s cy4KICAgLS0KICAgLS0gIEFsbCB0aGVzZSBzeW1ib2xzIGFyZSB0aGVuIGNvbm5lY3RlZCBieSBh IGxpbmUsIGEgY3VydmUgb3IgYW55IG90aGVyCiAgIC0tICBsaW5rLiBUaGVzZSBhcmUgY2FsbGVk IGNvbm5lY3RvcnMuCiAgIC0tCiAgIC0tICBFYWNoIHN5bWJvbCwgaW4gYWRkaXRpb24gdG8gYmVp bmcgY29ubmVjdGVkIHRvIHRoZSBuZXh0IG9uZSB3aXRoIGEKICAgLS0gIGNvbm5lY3RvciwgY2Fu IGFsc28gYmUgbGlua2VkIHRvIHRoZSBheGlzIFg9MCwgWT0wIG9yIFo9MCBzbyB0aGF0IGl0IGlz CiAgIC0tICBlYXNpZXIgdG8gcmVhZCBpdHMgY29vcmRpbmF0ZXMuIFRoZXNlIGFyZSBjYWxsZWQg ZXJyYmFycywgYW5kIHRoZXkgbXVzdAogICAtLSAgYmUgZXhwbGljaXRlbHkgc2hvd24uCgogICBw cm9jZWR1cmUgU2V0X1N5bWJvbAogICAgIChEYXRhICAgICAgICAgOiBhY2Nlc3MgR3RrX1Bsb3Rf RGF0YV9SZWNvcmQ7CiAgICAgIFRoZV9UeXBlICAgICA6IFBsb3RfU3ltYm9sX1R5cGU7CiAgICAg IFN0eWxlICAgICAgICA6IFBsb3RfU3ltYm9sX1N0eWxlOwogICAgICBTaXplICAgICAgICAgOiBH aW50OwogICAgICBMaW5lX1dpZHRoICAgOiBHZmxvYXQ7CiAgICAgIENvbG9yICAgICAgICA6IEdk ay5Db2xvci5HZGtfQ29sb3I7CiAgICAgIEJvcmRlcl9Db2xvciA6IEdkay5Db2xvci5HZGtfQ29s b3IpOwogICAtLSAgU2V0IHRoZSB2aXN1YWwgYXNwZWN0IG9mIHRoZSBzeW1ib2xzLgoKICAgcHJv Y2VkdXJlIEdldF9TeW1ib2wKICAgICAoRGF0YSAgICAgICAgIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkOwogICAgICBUaGVfVHlwZSAgICAgOiBvdXQgUGxvdF9TeW1ib2xfVHlwZTsKICAg ICAgU3R5bGUgICAgICAgIDogb3V0IFBsb3RfU3ltYm9sX1N0eWxlOwogICAgICBTaXplICAgICAg ICAgOiBvdXQgR2ludDsKICAgICAgTGluZV9XaWR0aCAgIDogb3V0IEdpbnQ7CiAgICAgIENvbG9y ICAgICAgICA6IG91dCBHZGsuQ29sb3IuR2RrX0NvbG9yOwogICAgICBCb3JkZXJfQ29sb3IgOiBv dXQgR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBSZXR1cm4gdGhlIHZpc3VhbCBjaGFyYWN0 ZXJpc3RpY3Mgb2YgdGhlIHN5bWJvbHMuCgogICBwcm9jZWR1cmUgU2V0X0Nvbm5lY3RvcgogICAg IChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBDb25uZWN0b3IgOiBQbG90X0Nv bm5lY3Rvcik7CiAgIC0tICBTZXQgdGhlIHN0eWxlIG9mIHRoZSBjb25uZWN0b3JzLgoKICAgZnVu Y3Rpb24gR2V0X0Nvbm5lY3RvciAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCkK ICAgICAgcmV0dXJuIFBsb3RfQ29ubmVjdG9yOwogICAtLSAgUmV0dXJuIHRoZSBjb25uZWN0b3Ig c3R5bGUgdXNlZCBmb3IgdGhlIGRhdGEgc2V0LgoKICAgcHJvY2VkdXJlIFNldF9MaW5lX0F0dHJp YnV0ZXMKICAgICAoRGF0YSAgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7CiAgICAgIFN0 eWxlIDogUGxvdF9MaW5lX1N0eWxlOwogICAgICBXaWR0aCA6IEdmbG9hdDsKICAgICAgQ29sb3Ig OiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFNldCB0aGUgbGluZSBzdHlsZSB1c2VkIGZv ciB0aGUgY29ubmVjdG9ycy4KCiAgIHByb2NlZHVyZSBHZXRfTGluZV9BdHRyaWJ1dGVzCiAgICAg KERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6IG91dCBQ bG90X0xpbmVfU3R5bGU7CiAgICAgIFdpZHRoIDogb3V0IEdmbG9hdDsKICAgICAgQ29sb3IgOiBv dXQgR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBSZXR1cm4gdGhlIGxpbmUgYXR0cmlidXRl cyB1c2VkIGZvciB0aGUgY29ubmVjdG9ycy4KCiAgIHByb2NlZHVyZSBTZXRfWF9BdHRyaWJ1dGVz CiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBTdHlsZSA6 IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAgIENvbG9yIDogR2Rr LkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQgdGhlIHN0eWxlIG9mIHRoZSBsaW5lcyB1c2Vk IHRvIGNvbm5lY3QgdGhlIHN5bWJvbHMgdG8gdGhlIFggYXhpcy4KCiAgIHByb2NlZHVyZSBTZXRf WV9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwog ICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBHZmxvYXQ7CiAgICAg IENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQgdGhlIHN0eWxlIG9mIHRo ZSBsaW5lcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHN5bWJvbHMgdG8gdGhlIFkgYXhpcy4KCiAgIHBy b2NlZHVyZSBTZXRfWl9BdHRyaWJ1dGVzCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90X0Rh dGFfUmVjb3JkOwogICAgICBTdHlsZSA6IFBsb3RfTGluZV9TdHlsZTsKICAgICAgV2lkdGggOiBH ZmxvYXQ7CiAgICAgIENvbG9yIDogR2RrLkNvbG9yLkdka19Db2xvcik7CiAgIC0tICBTZXQgdGhl IHN0eWxlIG9mIHRoZSBsaW5lcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHN5bWJvbHMgdG8gdGhlIFog YXhpcy4KCiAgIHByb2NlZHVyZSBTaG93X1hlcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkKTsKICAgcHJvY2VkdXJlIFNob3dfWWVycmJhcnMgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwogICBwcm9jZWR1cmUgU2hvd19aZXJyYmFycyAoRGF0YSA6 IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZCk7CiAgIC0tICBJbmRpY2F0ZSB0aGF0IGVhY2gg c3ltYm9sIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8gdGhlIHZhcmlvdXMgYXhpcwoKICAgcHJvY2Vk dXJlIEhpZGVfWGVycmJhcnMgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwog ICBwcm9jZWR1cmUgSGlkZV9ZZXJyYmFycyAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1Jl Y29yZCk7CiAgIHByb2NlZHVyZSBIaWRlX1plcnJiYXJzIChEYXRhIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkKTsKICAgLS0gIEluZGljYXRlIHRoZSB0aGUgc3ltYm9sIHNob3VsZCBub3Qg YmUgY29ubmVjdGVkIHRvIHRoZSBheGlzLgoKICAgcHJvY2VkdXJlIEZpbGxfQXJlYSAoRGF0YSA6 IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgRmlsbCA6IEJvb2xlYW4pOwogICAtLSAgSW5k aWNhdGUgd2hldGhlciB0aGUgYXJlYSBiZXR3ZWVuIHR3byBwb2ludHMgc2hvdWxkIGJlIGZpbGxl ZCBvciBub3QuCgogICBmdW5jdGlvbiBBcmVhX0lzX0ZpbGxlZCAoRGF0YSA6IGFjY2VzcyBHdGtf UGxvdF9EYXRhX1JlY29yZCkKICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBJbmRpY2F0ZSB3 aGV0aGVyIHRoZSBhcmVhIGJldHdlZW4gdHdvIHBvaW50cyBpcyBmaWxsZWQuCgogICAtLS0tLS0t LS0tLS0tCiAgIC0tIExlZ2VuZHMgLS0KICAgLS0tLS0tLS0tLS0tLQogICAtLSAgSW4gYWRkaXRp b24gdG8gdGhlIGRyYXdpbmcgY29ycmVzcG9uZGluZyB0byB0aGUgZGF0YSBzZXQsIGl0IGlzIHBv c3NpYmxlCiAgIC0tICB0byBkaXNwbGF5IGEgYm94IHRoYXQgY29udGFpbnMgYSBsZWdlbmQuIFRo aXMgaXMgcGFydGljdWxhcnkgdXNlZnVsIHdoZW4KICAgLS0gIG11bHRpcGxlIGRhdGEgc2V0cyBh cmUgZGlzcGxheWVkIG9uIHRoZSBzYW1lIHBsb3QuCgogICBwcm9jZWR1cmUgU2V0X0xlZ2VuZCAo RGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsgTGVnZW5kIDogU3RyaW5nKTsKICAg LS0gIFNldCB0aGUgc3RyaW5nIHByaW50ZWQgaW4gdGhlIGxlZ2VuZCBmb3IgdGhhdCBkYXRhIHNl dC4KICAgLS0gIE5vdGUgdGhhdCBhbiBlbnRyeSBjYW4gZXhpc3QgaW4gdGhlIGxlZ2VuZCBldmVu IGlmIHRoZXJlIGlzIG5vIG5hbWUKICAgLS0gIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ3JhcGguCgog ICBwcm9jZWR1cmUgU2hvd19MZWdlbmQgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNv cmQpOwogICAtLSAgQW4gZW50cnkgd2lsbCBiZSBtYWRlIGluIHRoZSBwbG90J3MgbGVnZW5kIGZv ciB0aGF0IGRhdGFzZXQuCgogICBwcm9jZWR1cmUgSGlkZV9MZWdlbmQgKERhdGEgOiBhY2Nlc3Mg R3RrX1Bsb3RfRGF0YV9SZWNvcmQpOwogICAtLSAgTm8gZW50cnkgd2lsbCBhcHBlYXIgaW4gdGhl IHBsb3QncyBsZWdlbmQgZm9yIHRoYXQgZGF0YXNldC4KCiAgIHByb2NlZHVyZSBTZXRfTGVnZW5k X1ByZWNpc2lvbgogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOyBQcmVj aXNpb24gOiBHaW50KTsKICAgLS0gIE51bWJlciBvZiBkaWdpdHMgdG8gZGlzcGxheSB3aGVuIHRo ZSBsZWdlbmRzIGlzIGFzc29jaWF0ZWQgd2l0aCB2YWx1ZXMsCiAgIC0tICBhcyBpcyB0aGUgY2Fz ZSBmb3IgZ3JhZGllbnRzLgoKICAgZnVuY3Rpb24gR2V0X0xlZ2VuZF9QcmVjaXNpb24gKERhdGEg OiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQpCiAgICAgIHJldHVybiBHaW50OwogICAtLSAg UmV0dXJuIHRoZSBudW1iZXIgb2YgZGlnaXRzIHVzZWQgZm9yIHZhbHVlcyBpbiB0aGUgbGVnZW5k CgogICAtLS0tLS0tLS0tLS0tLS0KICAgLS0gR3JhZGllbnRzIC0tCiAgIC0tLS0tLS0tLS0tLS0t LQogICAtLSAgVGhlIHN5bWJvbHMgZGlzcGxheWVkIGluIHRoZSBwbG90IGNhbiBiZSBhc3NpZ25l ZCBzcGVjaWZpYyBjb2xvcnMuIEJ1dAogICAtLSAgdGhleSBjYW4gYWxzbyBjb21wdXRlIHRoZWly IG93biBjb2xvciBieSBwaWNraW5nIGl0IGluIGEgZ3JhZGllbnQsCiAgIC0tICBkZXBlbmRpbmcg b24gdGhlIHZhbHVlLgoKICAgcHJvY2VkdXJlIFNldF9HcmFkaWVudF9NYXNrCiAgICAgKERhdGEg OiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9SZWNvcmQ7IE1hc2sgOiBQbG90X0dyYWRpZW50KTsKICAg LS0gIEluZGljYXRlcyB3aGljaCBjb21wb25lbnQgb2YgdGhlIGNvbG9ycyB2YXJ5IGFsb25nIHRo ZSBncmFkaWVudC4KCiAgIGZ1bmN0aW9uIEdldF9HcmFkaWVudF9NYXNrIChEYXRhIDogYWNjZXNz IEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gUGxvdF9HcmFkaWVudDsKICAgLS0g IFJldHVybiB0aGUgbWFzayB1c2VkIGZvciB0aGUgZ3JhZGllbnQuCgogICBwcm9jZWR1cmUgR3Jh ZGllbnRfU2V0X1Zpc2libGUKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZDsgVmlzaWJsZSA6IEJvb2xlYW4pOwogICAtLSAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGdyYWRp ZW50IHNob3VsZCBiZSB2aXNpYmxlCgogICBmdW5jdGlvbiBHcmFkaWVudF9WaXNpYmxlIChEYXRh IDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkKQogICAgICByZXR1cm4gQm9vbGVhbjsKICAg LS0gIFJldHVybiBUcnVlIGlmIHRoZSBncmFkaWVudCBpcyBjdXJyZW50bHkgdmlzaWJsZQoKICAg cHJvY2VkdXJlIFNldF9HcmFkaWVudF9Db2xvcnMKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxv dF9EYXRhX1JlY29yZDsKICAgICAgTWluLCBNYXggOiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAg LS0gIFNldCB0aGUgY29sb3JzIHRoYXQgZGVmaW5lIHRoZSBncmFkaWVudC4gVGhlIGNvbG9ycyB3 aWxsIHZhcnkgZnJvbQogICAtLSAgTWluIHRvIE1heCBhbG9uZyB0aGUgY29tcG9uZW50cyBzcGVj aWZpZWQgaW4gU2V0X0dyYWRpZW50X01hc2suCgogICBwcm9jZWR1cmUgR2V0X0dyYWRpZW50X0Nv bG9ycwogICAgIChEYXRhIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4s IE1heCA6IG91dCBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKICAgLS0gIFJldHVybiB0aGUgY29sb3Jz IHRoYXQgZGVmaW5lIHRoZSByYW5nZQoKICAgcHJvY2VkdXJlIFNldF9HcmFkaWVudAogICAgIChE YXRhICAgICA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29yZDsKICAgICAgTWluLCBNYXggOiBH ZG91YmxlOwogICAgICBObGV2ZWxzICA6IEdpbnQpOwogICAtLSAgRGVmaW5lIHRoZSB2YWx1ZXMg YXNzb2NpYXRlZCB3aXRoIHRoZSBtaW5pbWFsIGNvbG9yIGFuZCB0aGUgbWF4aW1hbAogICAtLSAg Y29sb3IuIEFueSB2YWx1ZSBpbiBiZXR3ZWVuIHdpbGwgaGF2ZSBhIGNvbG9yIGNvbXB1dGVkIGlu IGJldHdlZW4uCiAgIC0tICBObGV2ZWxzIGlzIHRoZSBudW1iZXIgb2YgdGlja3MgdG8gZGlzcGxh eSBpbiB0aGUgZ3JhZGllbnQuCgogICBwcm9jZWR1cmUgR2V0X0dyYWRpZW50CiAgICAgKERhdGEg ICAgIDogYWNjZXNzIEd0a19QbG90X0RhdGFfUmVjb3JkOwogICAgICBNaW4sIE1heCA6IG91dCBH ZG91YmxlOwogICAgICBObGV2ZWxzICA6IG91dCBHaW50KTsKICAgLS0gIFJldHVybiB0aGUgdmFs dWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbWluaW1hbCBhbmQgbWF4aW1hbCBjb2xvcnMuCgogICBw cm9jZWR1cmUgR2V0X0dyYWRpZW50X0xldmVsCiAgICAgKERhdGEgIDogYWNjZXNzIEd0a19QbG90 X0RhdGFfUmVjb3JkOwogICAgICBMZXZlbCA6IEdkb3VibGU7CiAgICAgIENvbG9yIDogb3V0IEdk ay5Db2xvci5HZGtfQ29sb3IpOwogICAtLSAgUmV0dXJuIHRoZSBjb2xvciBhc3NvY2lhdGVkIHdp dGggYSBzcGVjaWZpYyBsZXZlbC4KICAgLS0gIFRoZSBjb2xvciBkZXBlbmRzIG9uIHRoZSBwYXJh bWV0ZXJzIHRvIFNldF9HcmFkaWVudCBhbmQKICAgLS0gIFNldF9HcmFkaWVudF9Db2xvcnMuCgog ICAtLS0tLS0tLS0tLS0tLS0KICAgLS0gVXNlciBEYXRhIC0tCiAgIC0tLS0tLS0tLS0tLS0tLQog ICAtLSAgSXQgaXMgcG9zc2libGUgdG8gYXNzb2NpYXRlZCB5b3VyIG93biB1c2VyIGRhdGEgd2l0 aCBhIHBsb3QuIFRoaXMgaXMKICAgLS0gIHRoZSBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIEMg dmVyc2lvbiBvZiBndGtleHRyYS4gSG93ZXZlciwgdGhlIGJlc3QKICAgLS0gIHdheSB0byBkbyB0 aGlzIGluIEFkYSBpcyB0byBpbmhlcml0IGZyb20gR3RrX1Bsb3RfRGF0YV9SZWNvcmQgKG9yIG9u ZQogICAtLSAgb2YgaXRzIGNoaWxkcmVuKSwgYW5kIGFkZCB5b3VyIG93biBmaWVsZHMuCgogICBw cm9jZWR1cmUgU2V0X0xpbmsKICAgICAoRGF0YSA6IGFjY2VzcyBHdGtfUGxvdF9EYXRhX1JlY29y ZDsKICAgICAgTGluayA6IFN5c3RlbS5BZGRyZXNzKTsKICAgLS0gIEFzc29jaWF0ZSBzb21lIHVz ZXIgZGF0YSB3aXRoIERhdGEuCiAgIC0tICBJdCBpcyB0aGUgcmVzcG9uc2FiaWxpdHkgb2YgdGhl IHVzZXIgdG8gZG8gc29tZSBjb252ZXJ0IGNvbnZlcnNpb24gdG8KICAgLS0gIFN5c3RlbS5BZGRy ZXNzLgoKICAgZnVuY3Rpb24gR2V0X0xpbmsgKERhdGEgOiBhY2Nlc3MgR3RrX1Bsb3RfRGF0YV9S ZWNvcmQpCiAgICAgIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgLS0gIFJldHVybiB0aGUgdXNl ciBkYXRhIGFzc29jaWF0ZWQgd2l0aCBEYXRhLCBvciBOdWxsX0FkZHJlc3MgaWYgdGhlcmUgaXMK ICAgLS0gIG5vbmUuCgogICBwcm9jZWR1cmUgUmVtb3ZlX0xpbmsgKERhdGEgOiBhY2Nlc3MgR3Rr X1Bsb3RfRGF0YV9SZWNvcmQpOwogICAtLSAgUmVtb3ZlIHRoZSB1c2VyIGRhdGEgYXNzb2NpYXRl ZCB3aXRoIERhdGEuCgoKICAgLS0gIDxkb2NfaWdub3JlPgogICBmdW5jdGlvbiBUb19Eb3VibGVf QXJyYXkgaXMgbmV3IFVuY2hlY2tlZF9Db252ZXJzaW9uCiAgICAgKFN5c3RlbS5BZGRyZXNzLCBO b19SYW5nZV9HZG91YmxlX0FycmF5X0FjY2Vzcyk7CiAgIC0tICA8L2RvY19pZ25vcmU+Cgpwcml2 YXRlCiAgIHR5cGUgR3RrX1Bsb3RfRGF0YV9SZWNvcmQgaXMgbmV3IEd0ay5XaWRnZXQuR3RrX1dp ZGdldF9SZWNvcmQgd2l0aAogICAgIG51bGwgcmVjb3JkOwoKICAgR3JhZGllbnRfSCA6IGNvbnN0 YW50IFBsb3RfR3JhZGllbnQgOj0gMTsKICAgR3JhZGllbnRfViA6IGNvbnN0YW50IFBsb3RfR3Jh ZGllbnQgOj0gMjsKICAgR3JhZGllbnRfUyA6IGNvbnN0YW50IFBsb3RfR3JhZGllbnQgOj0gNDsK CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX3Bsb3RfZGF0YV9nZXRfdHlwZSIp OwplbmQgR3RrLkV4dHJhLlBsb3RfRGF0YTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3Rr QWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBK b2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0g TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAg ICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0K LS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2Vu ZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBv dGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAg ZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJs ZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAg LS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVh c29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5 IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVz Y3JpcHRpb24+Ci0tICBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSBvZiB0aGUgR3RrLkV4 dHJhIHdpZGdldCBoaWVyYXJjaHkuCi0tICA8L2Rlc2NyaXB0aW9uPgoKcGFja2FnZSBHdGsuRXh0 cmEgaXMKZW5kIEd0ay5FeHRyYTsKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0g QWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAgVG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJy b2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljICAgICAgICAgICAgICAgLS0KLS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0K LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAgLS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg LS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAg ICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5z ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAg ICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMg YSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3Mg ZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBm aWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0gZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBu b3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJlc3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBi ZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0g ZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIgaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3 aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBmaWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAg R05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRp b24+Ci0tICBUaGlzIGlzIHRoZSBiYXNlIGNsYXNzIG9mIHRoZSB3aWRnZXQgaGllcmFyY2h5Lgot LSAgRXZlcnl0aGluZyBpbiBHdGtBZGEgaW5oZXJpdHMgZnJvbSB0aGlzIGNsYXNzIEd0a19PYmpl Y3QsIGV4Y2VwdCBmb3IgYSBmZXcKLS0gIHN0cnVjdHVyZXMgaW4gdGhlIEdkay4qIHBhY2thZ2Vz IChsb3ctbGV2ZWwgZHJhd2luZyByb3V0aW5lcykuCi0tCi0tICBUaGlzIGNsYXNzIHByb3ZpZGVz IGEgc2V0IG9mIGhhbmRmdWwgZmVhdHVyZXMgdGhhdCB5b3UgY2FuIGNob29zZSB0byByZXVzZQot LSAgaW4geW91ciBhcHBsaWNhdGlvbnM6Ci0tCi0tICAtIFJlZmVyZW5jZSBjb3VudGluZzogYW4g b2JqZWN0IGlzIG5vdCBkZWxldGVkIHdoaWxlIHRoZXJlIGV4aXN0cyBhdCBsZWFzdAotLSAgICBv bmUgcmVmZXJlbmNlIHRvIGl0LiBBbHRob3VnaCBHdGtBZGEgbW9zdGx5IHRha2VzIGNhcmUgb2Yg dGhhdCBhc3BlY3QKLS0gICAgdHJhbnNwYXJlbnRseSwgeW91IG1pZ2h0IG5lZWQgaW4gc29tZSBv YnNjdXJlIGNhc2VzIHRvIGluY3JlbWVudCBvcgotLSAgICBkZWNyZW1lbnQgdGhlIHJlZmVyZW5j ZSBjb3VudGluZyBmb3IgYSB3aWRnZXQgbWFudWFsbHksIHNvIHRoYXQgaXQgaXMgbm90Ci0tICAg IHJlbW92ZWQgZnJvbSBtZW1vcnkgd2hpbGUgeW91IHN0aWxsIG5lZWQgaXQuCi0tCi0tICAtIFVz ZXIgZGF0YTogYW55IG51bWJlciBvZiBkYXRhIGNhbiBiZSBhdHRhY2hlZCB0byBhIEd0a19PYmpl Y3Qgb3Igb25lIG9mCi0tICAgIGl0cyBjaGlsZHJlbi4gVGhlc2VzIGRhdGEgYXJlIHJlZmVyZW5j ZXMgYnkgYSBTdHJpbmcsIGluIGEgaGFzaC10YWJsZS4KLS0gICAgR3RrQWRhIGl0c2VsZiB1c2Vz IHRoaXMgZmVhdHVyZSB0byBwcm92aWRlIGFuIGVhc3kgY29udmVyc2lvbiBiZXR3ZWVuIEMKLS0g ICAgYW5kIEFkYSB3aWRnZXRzLgotLSAgICBBbHRob3VnaCB5b3UgbWlnaHQgcHJlZmVyIHRvIGhh dmUgYSBjb21wbGV0ZWx5IG9iamVjdC1vcmllbnRlZAotLSAgICBhcHBsaWNhdGlvbiAoYW5kIHRo dXMgYXNzb2NpYXRlIGRhdGEgdGhyb3VnaCBjbGFzcyBpbmhlcml0YW5jZSksIGl0Ci0tICAgIG1p Z2h0IGJlIGNvbnZlbmllbnQgdG8gZGlyZWN0bHkgYXR0YWNoIHNvbWUgZGF0YSB0byB5b3VyIG9i amVjdHMuCi0tCi0tICAtIEl0IGFsc28gY29udGFpbnMgdGhlIGJhc2ljIHN0cnVjdHVyZXMgYW5k IHN1YnByb2dyYW1zIHJlcXVpcmVkIGZvciBzaWduYWwKLS0gICAgZW1pc3Npb24uIFRoaXMgaXMg b2YgY291cnNlIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBzaWduYWwgbWVjaGFuaXNtIGluCi0tICAg IEd0a0FkYSBpdHNlbGYsIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIHRvIGltcGxlbWVudCBhIE1vZGVs L1ZpZXcvQ29udHJvbGxlcgotLSAgICBmcmFtZXdvcmsuCi0tCi0tICBOb3RlIHRoYXQgYSBsb3Qg b2YgZnVuY3Rpb25zIHByb3ZpZGVkIGluIHRoZSBDIGludGVyZmFjZSBhcmUgbm90IHByb3ZpZGVk Ci0tICBoZXJlLiBUaGV5IGFyZSB1c2VkIHRvIGVtdWxhdGUgYW4gb2JqZWN0LW9yaWVudGVkIGxh bmd1YWdlIGluIEMsIHdoaWNoIGNhbgotLSAgb2YgY291cnNlIGJlIGRvbmUgbXVjaCBtb3JlIGNv bnZlbmllbnRseSBpbiBBZGEuIFRoZXJlZm9yZSBtb3N0IG9mIHRoZXNlCi0tICBmdW5jdGlvbnMg YXJlIG5vdCBuZWVkZWQuCi0tCi0tICBIZXJlIGlzIGEgYnJpZWYgZXhwbGFuYXRpb24gb24gaG93 IHRoZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIGRlc3RydWN0aW9uCi0tICBwcm9jZXNzIHdvcmsu IFlvdSBzaG91bGQgbm90IGhhdmUgdG8gdW5kZXJzdGFuZCBhbGwgdGhpcyB0byB1c2UgR3RrQWRh LCBidXQKLS0gIGl0IG1pZ2h0IGhlbHAgYW55d2F5LgotLQotLSAgV2hlbiBhbiBvYmplY3QgKGRl c2NlbmRhbnQgb2YgR3RrLk9iamVjdCkgaXMgY3JlYXRlZCwgaXQgaGFzIGluaXRpYWxseSBhCi0t ICByZWZfY291bnQgb2YgMS4gQSBmbGFnIGlzIHNldCB0byBzYXkgdGhlIG9iamVjdCBpcyAiZmxv YXRpbmciLiAgU2VlIHRoZQotLSAgRmxhZ3MgZnVuY3Rpb25zIGluIHRoaXMgcGFja2FnZSBmb3Ig aG93IHRvIHJldHJpZXZlIHRoZSBzdGF0dXMgb2YgdGhpcwotLSAgZmxhZy4KLS0KLS0gIFdoZW4g dGhlIG9iamVjdCBnZXRzIGEgcGFyZW50IChpZSBHdGsuV2lkZ2V0LlNldF9QYXJlbnQgaXMgY2Fs bGVkLCBwb3NzaWJseQotLSAgZnJvbSBvdGhlciBzdWJwcm9ncmFtcyBsaWtlIEd0ay5Db250YWlu ZXIuQWRkLCBHdGsuQm94LlBhY2tfU3RhcnQsIC4uLiksCi0tICB0aGUgcmVmX2NvdW50IG9mIHRo ZSBvYmplY3QgaXMgaW5jcmVtZW50ZWQgdG8gMi4KLS0gIElmIHRoZSBvYmplY3Qgd2FzIHN0aWxs ICJmbG9hdGluZyIsIGl0IGlzIGFsc28gInNpbmtlZCIsIGllIGl0cyByZWZfY291bnQKLS0gIGlz IGRlY3JlbWVudGVkIHRvIDEsIGFuZCB0aGUgImZsb2F0aW5nIiBmbGFnIGlzIGNsZWFyZWQuCi0t Ci0tICBUaGUgc2FtZSBiZWhhdmlvciBhcyBhYm92ZSBoYXBwZW5zIHdoZW4gdGhlIG9iamVjdCBp cyByZWdpc3RlcmVkIGFzIGEKLS0gIHRvcC1sZXZlbCB3aWRnZXQgKGkuZS4gd2Uga25vdyBpdCB3 b24ndCBoYXZlIGFueSBwYXJlbnQpLgotLQotLSAgVGh1cyB0aGUgbm9ybWFsIGxpZmUgY3ljbGUg b2YgYW4gb2JqZWN0IGlzIHRvIGhhdmUgYSByZWZfY291bnQgdG8gMSwgYW5kCi0tICBub3QgYmUg YSAiZmxvYXRpbmciIG9iamVjdC4KLS0KLS0gIFdoZW4gdGhlIG9iamVjdCBpcyBkZXN0cm95ZWQs IHRoZSBmb2xsb3dpbmcgaGFwcGVuczoKLS0gICAgIEEgdGVtcG9yYXJ5IHJlZmVyZW5jZSB0byB0 aGUgb2JqZWN0IGlzIGNyZWF0ZWQgKGNhbGwgdG8gUmVmKSwgYW5kCi0tICAgICAgICByZWZfY291 bnQgdG8gMi4KLS0gICAgIFRoZSBvYmplY3QgaXMgc2h1dGRvd246Ci0tICAgICAgICBJdCBpcyBy ZW1vdmVkIGZyb20gaXRzIHBhcmVudCAoaWYgYW55KSwgYW5kIGl0cyByZWZfY291bnQgaXMKLS0g ICAgICAgICAgZGVjcmVtZW50ZWQgdG8gMS4KLS0gICAgICAgIFRoZSAiZGVzdHJveSIgc2lnbmFs IGlzIGVtaXR0ZWQsIHRoZSB1c2VyJ3MgaGFuZGxlcnMgYXJlIGNhbGxlZCwKLS0gICAgICAgICAg YW5kIHRoZW4gYWxsIHRoZSBoYW5kbGVycyBjb25uZWN0ZWQgdG8gdGhlIG9iamVjdCBhcmUgZGVz dHJveWVkLgotLSAgICAgVGhlIG9iamVjdCBpcyB1bnJlZi1lZC4gSWYgaXRzIHJlZl9jb3VudCBn b2VzIGRvd24gdG8gMCAobm9ybWFsIGNhc2UpLAotLSAgICAgICAgdGhlIG1lbW9yeSB1c2VkIGJ5 IHRoZSBvYmplY3QgYW5kIGl0cyB1c2VyX2RhdGEgaXMgZnJlZWQuCi0tCi0tICA8L2Rlc2NyaXB0 aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNjwvY192ZXJzaW9uPgoKd2l0aCBTeXN0ZW07CndpdGgg R3RrYWRhLlR5cGVzOwoKcGFja2FnZSBHdGsuT2JqZWN0IGlzCgogICB0eXBlIEd0a19PYmplY3Rf UmVjb3JkIGlzIG5ldyBHdGsuUm9vdF9UeXBlIHdpdGggcHJpdmF0ZTsKICAgdHlwZSBHdGtfT2Jq ZWN0IGlzIGFjY2VzcyBhbGwgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CgogICBwcm9jZWR1cmUg UmVmIChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQpOwogICAtLSAgSW5jcmVtZW50 IHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC4KICAgLS0gIFNpbmNlIGFuIG9iamVj dCBpcyBub3QgZGVsZXRlZCB3aGlsZSBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG5vdCBudWxsLAog ICAtLSAgdGhpcyBpcyBhIHdheSB0byBrZWVwIGFuIG9iamVjdCBpbiBtZW1vcnkuCiAgIC0tICBH dGtBZGEgbW9zdGx5IHRha2VzIGNhcmUgb2YgZXZlcnl0aGluZywgYW5kIHlvdSBzaG91bGQgbm90 IG5lZWQgdGhpcwogICAtLSAgZnVuY3Rpb24gZXhjZXB0IGluIHNwZWNpYWwgY2FzZXMuCgogICBw cm9jZWR1cmUgVW5yZWYgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0t ICBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYW4gb2JqZWN0LgogICAtLSAgSWYg aXQgcGFzc2VkIGZyb20gMSB0byAwLCB0aGVuIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUg b2JqZWN0IGlzCiAgIC0tICBmcmVlZCwgYW5kIHRoZSBvYmplY3Qgbm8gbG9uZ2VyIHVzYWJsZS4K ICAgLS0gIEl0IGlzIGJldHRlciB0byB1c2UgRGVzdHJveSB0aGFuIFVucmVmIHRvIGRlc3Ryb3kg YW4gb2JqZWN0LCBhbHRob3VnaAogICAtLSAgYm90aCBtaWdodCBiZSBhY2NlcHRhYmxlLgoKICAg cHJvY2VkdXJlIFNpbmsgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0t ICBTaW5rIHRoZSBvYmplY3QuCiAgIC0tICBJZiB0aGUgb2JqZWN0IGlzIGZsb2F0aW5nIChkb2Vz IG5vdCBoYXZlIGEgcGFyZW50IHlldCksIGl0IGlzIHVucmVmLWVkCiAgIC0tICBvbmNlIGFuZCB0 aGUgZmxvYXRpbmcgZmxhZyBpcyBjbGVhcmVkLgoKICAgcHJvY2VkdXJlIERlc3Ryb3kgKE9iamVj dCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCk7CiAgIC0tICBEZXN0cm95IHRoZSBvYmplY3Qu CiAgIC0tICBUaGlzIGVtaXRzIGEgImRlc3Ryb3kiIHNpZ25hbCwgY2FsbHMgYWxsIHlvdXIgaGFu ZGxlcnMsIGFuZCB0aGVuCiAgIC0tICB1bmNvbm5lY3RzIHRoZW0gYWxsLiBUaGUgb2JqZWN0IGlz IHRoZW4gdW5yZWYtZWQsIGFuZCBpZiBpdHMgcmVmZXJlbmNlCiAgIC0tICBjb3VudCBnb2VzIGRv d24gdG8gMCwgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggdGhlIG9iamVjdCBhbmQgaXRzCiAg IC0tICB1c2VyIGRhdGEgaXMgZnJlZWQuCiAgIC0tICBOb3RlIHRoYXQgd2hlbiB5b3UgZGVzdHJv eSBoYW5kbGVycyBhcmUgY2FsbGVkLCB0aGUgdXNlcl9kYXRhIGlzIHN0aWxsCiAgIC0tICBhdmFp bGFibGUuCgogICBmdW5jdGlvbiBHZXRfVHlwZSByZXR1cm4gR3RrLkd0a19UeXBlOwogICAtLSAg UmV0dXJuIHRoZSBpbnRlcm5hbCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBHdGtfT2JqZWN0IGlu dGVybmFsbHkuCiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX29iamVjdF9nZXRf dHlwZSIpOwoKICAgZnVuY3Rpb24gR2V0X1R5cGUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0 X1JlY29yZCkgcmV0dXJuIEd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSB0eXBlIG9mIE9iamVj dC4KICAgLS0gIFRoaXMgZnVuY3Rpb24gaXMgbW9zdGx5IHVzZWQgaW50ZXJuYWxseSwgc2luY2Ug aW4gQWRhIHlvdSBjYW4gc2ltcGx5CiAgIC0tICB0ZXN0IHdoZXRoZXIgYW4gb2JqZWN0IGJlbG9u ZyB0byBhIGNsYXNzIHdpdGggYSBzdGF0ZW1lbnQgbGlrZToKICAgLS0KICAgLS0gICAgIGlmIE9i amVjdCBpbiBHdGtfQnV0dG9uX1JlY29yZCdDbGFzcyB0aGVuIC4uLgogICAtLQogICAtLSAgd2hp Y2ggaXMgZWFzaWVyLgoKICAgLS0tLS0tLS0tLS0tLQogICAtLSAgRmxhZ3MgIC0tCiAgIC0tLS0t LS0tLS0tLS0KICAgLS0gIEVhY2ggb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNldCBvZiBm bGFncywgdGhhdCByZXBvcnRzIHRoZSBzdGF0ZQogICAtLSAgb2YgdGhlIG9iamVjdC4KICAgLS0g IFRoZSBmb2xsb3dpbmcgZmxhZ3MgYXJlIGtub3duIGJ5IGFsbCBvYmplY3RzOgogICAtLQogICAt LSAgLSAiRGVzdHJveWVkIjoKICAgLS0gICAgIFNldCBpZiB0aGUgb2JqZWN0IGlzIG1hcmtlZCBh cyBkZXN0cm95ZWQgKGlmIGl0cyByZWZlcmVuY2UgY291bnQgaXMKICAgLS0gICAgIG5vdCB5ZXQg MCwgdGhlIG1lbW9yeSBoYXMgbm90IGJlZW4gZnJlZWQsIGJ1dCB5b3Ugc2hvdWxkIG5vdCB1c2Ug aXQKICAgLS0gICAgIGFueXdheSkuCiAgIC0tCiAgIC0tICAtICJGbG9hdGluZyI6CiAgIC0tICAg ICBUaGUgb2JqZWN0IGhhcyBubyBwYXJlbnQgeWV0LCBzaW5jZSBpdCB3YXMganVzdCBjcmVhdGVk LiBJdHMKICAgLS0gICAgIHJlZmVyZW5jZSBjb3VudCBpcyBzdGlsbCAxIChhcyBpdCB3YXMgaW5p dGlhbGx5KS4gVGhpcyBmbGFnIGlzCiAgIC0tICAgICBjbGVhcmVkIGFzIHNvb24gYXMgU2V0X1Bh cmVudCBpcyBjYWxsZWQgb24gdGhlIHdpZGdldCBvciB0aGUgd2lkZ2V0CiAgIC0tICAgICBpcyBx dWFsaWZpZWQgYXMgYSB0b3BsZXZlbCB3aWRnZXQgKHNlZQogICAtLSAgICAgR3RrLkNvbnRhaW5l ci5SZWdpc3Rlcl9Ub3BsZXZlbCkuCiAgIC0tCiAgIC0tICAtICJDb25uZWN0ZWQiOgogICAtLSAg ICAgU2V0IGlmIHRoZSBvYmplY3QgaXMgY29ubmVjdGVkIHRvIGF0IGxlYXN0IG9uZSBoYW5kbGVy CiAgIC0tCiAgIC0tICAtICJDb25zdHJ1Y3RlZCI6CiAgIC0tICAgICBTZXQgaWYgdGhlIG9iamVj dCBoYXMgYmVlbiBmdWxseSBjb25zdHJ1Y3RlZCwgYW5kIGlzIG5vdyB1c2FibGUuCiAgIC0tICAg ICBFdmVyeSB0aW1lIHlvdSBjcmVhdGUgYW4gb2JqZWN0IGF0IHRoZSBHdGtBZGEgbGV2ZWwsIHRo ZSBvYmplY3Qgd2lsbAogICAtLSAgICAgYmUgZnVsbHkgY29uc3RydWN0ZWQsIGFuZCB5b3Ugc2hv dWxkbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhhdAogICAtLSAgICAgZmxhZy4KCiAgIERlc3Ry b3llZCAgIDogY29uc3RhbnQgOj0gMiAqKiAwOwogICBGbG9hdGluZyAgICA6IGNvbnN0YW50IDo9 IDIgKiogMTsKICAgQ29ubmVjdGVkICAgOiBjb25zdGFudCA6PSAyICoqIDI7CiAgIENvbnN0cnVj dGVkIDogY29uc3RhbnQgOj0gMiAqKiAzOwoKICAgZnVuY3Rpb24gRmxhZ3MgKE9iamVjdCA6IGFj Y2VzcyBHdGtfT2JqZWN0X1JlY29yZCkgcmV0dXJuIEd1aW50MzI7CiAgIC0tICBSZXR1cm4gdGhl IGZsYWdzIHRoYXQgYXJlIHNldCBmb3IgdGhlIG9iamVjdCwgYXMgYSBiaW5hcnkgbWFzay4KCiAg IHByb2NlZHVyZSBTZXRfRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZDsK ICAgICAgICAgICAgICAgICAgICAgICAgRmxhZ3MgIDogaW4gICAgIEd1aW50MzIpOwogICAtLSAg U2V0IHNvbWUgc3BlY2lmaWMgZmxhZ3MgZm9yIHRoZSBvYmplY3QuCiAgIC0tICBGbGFncyBpcyBh IG1hc2sgdGhhdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjdXJyZW50IGZsYWdzIG9mIHRoZSBvYmpl Y3QuCgogICBwcm9jZWR1cmUgVW5zZXRfRmxhZ3MgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0 X1JlY29yZDsKICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFncyAgOiBpbiAgICAgR3VpbnQz Mik7CiAgIC0tICBVbnNldCBzb21lIHNwZWNpZmljIGZsYWdzIGZvciB0aGUgb2JqZWN0LgogICAt LSAgRmxhZ3MgaXMgYSBtYXNrIHRoYXQgd2lsbCBiZSBkZWxldGVkIGZyb20gdGhlIGN1cnJlbnQg ZmxhZ3Mgb2YgdGhlCiAgIC0tICBvYmplY3QuCgogICBmdW5jdGlvbiBGbGFnX0lzX1NldCAoT2Jq ZWN0IDogYWNjZXNzIEd0a19PYmplY3RfUmVjb3JkOwogICAgICAgICAgICAgICAgICAgICAgICAg RmxhZyAgIDogaW4gICAgIEd1aW50MzIpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC b29sZWFuOwogICAtLSAgUmV0dXJuIFRydWUgaWYgdGhlIHNwZWNpZmljIGZsYWcgRmxhZyBpcyBz ZXQgZm9yIHRoZSBvYmplY3QuCgogICBmdW5jdGlvbiBEZXN0cm95ZWRfSXNfU2V0IChPYmplY3Qg OiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IGlmIHRoZSBEZXN0cm95ZWQgZmxhZyBp cyBzZXQgZm9yIHRoZSBvYmplY3QuCgogICBmdW5jdGlvbiBGbG9hdGluZ19Jc19TZXQgKE9iamVj dCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgRmxvYXRpbmcgZmxhZyBp cyBzZXQgZm9yIHRoZSBvYmplY3QuCgogICBmdW5jdGlvbiBDb25uZWN0ZWRfSXNfU2V0IChPYmpl Y3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IGlmIHRoZSBDb25uZWN0ZWQgZmxh ZyBpcyBzZXQgZm9yIHRoZSBvYmplY3QuCgogICBmdW5jdGlvbiBDb25zdHJ1Y3RlZF9Jc19TZXQg KE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFzcykKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCBpZiB0aGUgQ29uc3Ry dWN0ZWQgZmxhZyBpcyBzZXQgZm9yIHRoZSBvYmplY3QKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgIC0tIENyZWF0aW5nIG5ldyB3aWRnZXRzIC0tCiAgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgIC0tICBUaGVzZSB0eXBlcyBhbmQgZnVuY3Rpb25zIGFyZSB1c2VkIG9ubHkg d2hlbiBjcmVhdGluZyBuZXcgd2lkZ2V0IHR5cGVzCiAgIC0tICBkaXJlY3RseSBpbiBBZGEuIFRo ZXNlIGZ1bmN0aW9ucyBpbml0aWFsaXplIHRoZSBjbGFzc2VzIHNvIHRoYXQgdGhleSBhcmUKICAg LS0gIGNvcnJlY3RseSByZWNvZ25pemVkIGJ5IGd0aysgaXRzZWxmCiAgIC0tICBTZWUgdGhlIEd0 a0FkYSB1c2VyJ3MgZ3VpZGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIGNyZWF0ZSB5 b3VyCiAgIC0tICBvd24gd2lkZ2V0IHR5cGVzIGluIEFkYS4KCiAgIHR5cGUgU2lnbmFsX1BhcmFt ZXRlcl9UeXBlcyBpcyBhcnJheSAoTmF0dXJhbCByYW5nZSA8PiwgTmF0dXJhbCByYW5nZSA8PikK ICAgICBvZiBHdGtfVHlwZTsKICAgLS0gIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcGFyYW1ldGVy cyBmb3IgZWFjaCBldmVudC4KICAgLS0gIEVhY2ggZXZlbnQgZGVmaW5lZCB3aXRoIEluaXRpYWxp emVfQ2xhc3NfUmVjb3JkIGJlbG93IHNob3VsZCBoYXZlIGFuCiAgIC0tICBlbnRyeSBpbiB0aGlz IHRhYmxlLiBJZiBHdGtfVHlwZV9Ob25lIGlzIGZvdW5kIGluIHRoZSB0YWJsZSwgaXQgaXMKICAg LS0gIGlnbm9yZWQuIEZvciBpbnN0YW5jZSwgYSBTaWduYWxfUGFyYW1ldGVyX1R5cGUgbGlrZToK ICAgLS0gICAgKDEgPT4gKDEgPT4gR2RrX1R5cGVfR2RrX0V2ZW50LCAyID0+IEdka19UeXBlX05v bmRlKSwKICAgLS0gICAgIDIgPT4gKDEgPT4gR2RrX1R5cGVfSW50LCAgICAgICAyID0+IEdka19U eXBlX0ludCkpOwogICAtLSAgZGVmaW5lcyB0d28gc2lnbmFscywgdGhlIGZpcnN0IHdpdGggYSBz aW5nbGUgR2RrX0V2ZW50IHBhcmFtZXRlciwgdGhlCiAgIC0tICBzZWNvbmQgd2l0aCB0d28gaW50 cyBwYXJhbWV0ZXJzLgoKICAgTnVsbF9QYXJhbWV0ZXJfVHlwZXMgOiBjb25zdGFudCBTaWduYWxf UGFyYW1ldGVyX1R5cGVzICgxIC4uIDAsIDEgLi4gMCkgOj0KICAgICAob3RoZXJzID0+IChvdGhl cnMgPT4gR3RrX1R5cGVfTm9uZSkpOwogICAtLSAgQW4gZW1wdHkgYXJyYXksIHVzZWQgYXMgYSBk ZWZhdWx0IHBhcmFtZXRlciBpbiBJbml0aWFsaXplX0NsYXNzX1JlY29yZC4KCiAgIHByb2NlZHVy ZSBJbml0aWFsaXplX0NsYXNzX1JlY29yZAogICAgIChPYmplY3QgICAgICAgICAgICAgICAgICAg IDogYWNjZXNzIEd0a19PYmplY3RfUmVjb3JkJ0NsYXNzOwogICAgICBTaWduYWxzICAgICAgICAg ICAgICAgICAgIDogR3RrYWRhLlR5cGVzLkNoYXJzX1B0cl9BcnJheTsKICAgICAgQ2xhc3NfUmVj b3JkICAgICAgICAgICAgICA6IGluIG91dCBTeXN0ZW0uQWRkcmVzczsKICAgICAgUGFyYW1ldGVy cyAgICAgICAgICAgICAgICA6IFNpZ25hbF9QYXJhbWV0ZXJfVHlwZXMgOj0KICAgICAgICBOdWxs X1BhcmFtZXRlcl9UeXBlczsKICAgICAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCA6IEd1aW50 IDo9IDApOwogICAtLSAgQ3JlYXRlIHRoZSBjbGFzcyByZWNvcmQgZm9yIGEgbmV3IHdpZGdldCB0 eXBlLgogICAtLSAgSXQgaXMgYXNzb2NpYXRlZCB3aXRoIFNpZ25hbHMnTGVuZ3RoIG5ldyBzaWdu YWxzLiBBIHBvaW50ZXIgdG8gdGhlCiAgIC0tICBuZXdseSBjcmVhdGVkIHN0cnVjdHVyZSBpcyBh bHNvIHJldHVybmVkIGluIENsYXNzX1JlY29yZC4KICAgLS0gIElmIENsYXNzX1JlY29yZCAvPSBT eXN0ZW0uTnVsbF9BZGRyZXNzLCBubyBtZW1vcnkgYWxsb2NhdGlvbiBpcwogICAtLSAgcGVyZm9y bWVkLCB3ZSBqdXN0IHJldXNlIGl0LgogICAtLSAgTm90ZTogVGhlIHVuZGVybHlpbmcgQyB3aWRn ZXQgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiBpbml0aWFsaXplZAogICAtLSAgYnkgYSBjYWxsIHRv IGl0cyBwYXJlbnQncyBJbml0aWFsaXplIGZ1bmN0aW9uLgogICAtLSAgUGFyYW1ldGVycydMZW5n dGggc2hvdWxkIGJlIHRoZSBzYW1lIGFzIFNpZ25hbHMnTGVuZ3RoLCBvciB0aGUgcmVzdWx0CiAg IC0tICBpcyB1bmRlZmluZWQuCiAgIC0tICBBcyBhIHNwZWNpYWwgY2FzZSwgaWYgUGFyYW1ldGVy cyBoYXMgaXRzIGRlZmF1bHQgdmFsdWUsIGFsbCBzaWduYWxzIGFyZQogICAtLSAgY3JlYXRlZCB3 aXRoIG5vIGFyZ3VtZW50LiBUaGlzIGlzIGRvbmUgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkK ICAgLS0gIG1haW5seSwgYW5kIHlvdSBzaG91bGQgaW5zdGVhZCBnaXZlIGl0IGFuIGV4cGxpY2l0 IHZhbHVlLgogICAtLQogICAtLSAgU2Nyb2xsX0FkanVzdG1lbnRzX1NpZ25hbCBpcyB0aGUgaW5k ZXggb2YgdGhlIG5ldyBzaWduYWwgdGhhdCB3aWxsIGJlCiAgIC0tICBlbWl0dGVkIHdoZW4gR3Rr LldpZGdldC5TZXRfU2Nyb2xsX0FkanVzdG1lbnRzIGlzIGNhbGxlZC4gSWYgaXQgaXMgMCwKICAg LS0gIG5vIHNpZ25hbCBpcyBlbWl0dGVkLiBUaGUgZmlyc3Qgc2lnbmFsIGluIFNpZ25hbHMgaGFz IGluZGV4IDEuIE5vdGUKICAgLS0gIHRoYXQgdGhlIGhhbmRsZXJzIGZvciB0aGlzIHNpZ25hbCB0 YWtlIHR3byBhcmd1bWVudHMgaW4gYWRkaXRpb24gdG8gdGhlCiAgIC0tICB3aWRnZXQgKHRoZSBo b3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBhZGp1c3RtZW50cyB0byBiZSB1c2VkKS4gU2VlCiAgIC0t ICBHdGsuU2Nyb2xsZWRfV2luZG93IGFuZCBHdGsuV2lkZ2V0LlNldF9TY3JvbGxfQWR1c3RtZW50 IGZvciBtb3JlCiAgIC0tICBpbmZvcm1hdGlvbiBvbiB0aGlzIHNpZ25hbC4KICAgLS0KICAgLS0g IE9ubHkgdGhlIHNpZ25hbHMgd2l0aCBubyBwYXJhbWV0ZXIgY2FuIGJlIGNvbm5lY3RlZCBmcm9t IEMuIEhvd2V2ZXIsCiAgIC0tICBhbnkgc2lnbmFsIGNhbiBiZSBjb25uZWN0ZWQgZnJvbSBBZGEu IFRoaXMgaXMgZHVlIHRvIHRoZSB3YXkgd2UgZGVmaW5lCiAgIC0tICBkZWZhdWx0IG1hcnNoYWxs ZXJzIGZvciB0aGUgc2lnbmFscy4KCiAgIC0tLS0tLS0tLS0tLS0tLQogICAtLSBVc2VyX0RhdGEg LS0KICAgLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBUaGlzIHBhY2thZ2UgYWxsb3cgeW91IHRvIGFz c29jaWF0ZSB5b3VyIG93biBEYXRhIHRvIHRoZSBDIHdpZGdldHMuIE5vCiAgIC0tICB0eXBlIHZl cmlmaWNhdGlvbiBpcyBtYWRlIHRvIGNoZWNrIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QK ICAgLS0gIG1hdGNoaW5nIEdldCBmdW5jdGlvbi4gVGhpcyBpcyB5b3VyIG93biByZXNwb25zYWJp bGl0eS4KICAgLS0KICAgLS0gIFdlIHJlY29tbWVuZCB1c2luZyB0aGlzIHBhY2thZ2Ugb25seSBp ZiB5b3Ugd2FudCB5b3VyIGRhdGEgdG8gYmUKICAgLS0gIGF2YWlsYWJsZSBmcm9tIHlvdXIgb3du IEMgY29kZS4gSWYgeW91IGp1c3Qgd2FudCB0byBhY2Nlc3MgaXQgZnJvbSBBZGEsCiAgIC0tICB5 b3Ugc2hvdWxkIGNvbnNpZGVyIGNyZWF0aW5nIGEgbmV3IHRhZ2dlZCB0eXBlIGluc3RlYWQuCgog ICAtLSAgPGRvY19pZ25vcmU+CgogICBnZW5lcmljCiAgICAgIHR5cGUgRGF0YV9UeXBlICg8Pikg aXMgcHJpdmF0ZTsKICAgcGFja2FnZSBVc2VyX0RhdGEgaXMKICAgICAgZnVuY3Rpb24gR2V0IChP YmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAg ICAgSWQgICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKSByZXR1cm4gRGF0YV9UeXBlOwog ICAgICAtLSAgR2V0IHRoZSBpbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGtleSBJRC4K ICAgICAgLS0gIFJhaXNlIEd0a2FkYS5UeXBlcy5EYXRhX0Vycm9yIGlmIHRoZXJlIGlzIG5vbmUu CgogICAgICBwcm9jZWR1cmUgU2V0IChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQn Q2xhc3M7CiAgICAgICAgICAgICAgICAgICAgIERhdGEgICA6IGluIERhdGFfVHlwZTsKICAgICAg ICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3RyaW5nIDo9ICJ1c2VyX2RhdGEiKTsKICAgICAg LS0gIEFzc29jaWF0ZSBzb21lIG5ldyB1c2VyIGRhdGEgd2l0aCB0aGUgb2JqZWN0LgogICAgICAt LSAgVGhlIHN0cmluZ3Mgc3RhcnRpbmcgd2l0aCAiZ3RrYWRhXyIgYXJlIHJlc2VydmVkIGZvciBH dGtBZGEncwogICAgICAtLSAgaW50ZXJuYWwgdXNlLCBwbGVhc2UgYXZvaWQgdXNpbmcgdGhlbS4K CiAgICAgIHByb2NlZHVyZSBSZW1vdmUgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29y ZCdDbGFzczsKICAgICAgICAgICAgICAgICAgICAgICAgSWQgICAgIDogaW4gU3RyaW5nIDo9ICJ1 c2VyX2RhdGEiKTsKICAgICAgLS0gIFJlbW92ZSBzb21lIGRhdGEgZnJvbSB0aGUgb2JqZWN0Cgog ICAgICBmdW5jdGlvbiBHZXQgKE9iamVjdCA6IGFjY2VzcyBHdGtfT2JqZWN0X1JlY29yZCdDbGFz czsKICAgICAgICAgICAgICAgICAgICBJZCAgICAgOiBpbiBHbGliLkdRdWFyaykKICAgICAgICAg ICAgICAgICAgIHJldHVybiBEYXRhX1R5cGU7CiAgICAgIC0tICBTYW1lIGZ1bmN0aW9uIGFzIEdl dCBhYm92ZSwgYnV0IHVzZXMgZGlyZWN0bHkgdGhlIFF1YXJrIGFzc29jaWF0ZWQKICAgICAgLS0g IHdpdGggdGhlIHN0cmluZywgd2hpY2ggc3BlZWRzIHVwIHRoZSBhY2Nlc3MgdGltZSBzaWduaWZp Y2FudGx5LgoKICAgICAgcHJvY2VkdXJlIFNldCAoT2JqZWN0IDogYWNjZXNzIEd0a19PYmplY3Rf UmVjb3JkJ0NsYXNzOwogICAgICAgICAgICAgICAgICAgICBEYXRhICAgOiBpbiBEYXRhX1R5cGU7 CiAgICAgICAgICAgICAgICAgICAgIElkICAgICA6IGluIEdsaWIuR1F1YXJrKTsKICAgICAgLS0g IFNhbWUgZnVuY3Rpb24gYXMgU2V0IGFib3ZlLCBidXQgdXNlcyBkaXJlY3RseSB0aGUgUXVhcmsg YXNzb2NpYXRlZAogICAgICAtLSAgd2l0aCB0aGUgc3RyaW5nLCB3aGljaCBzcGVlZHMgdXAgdGhl IGFjY2VzcyB0aW1lIHNpZ25pZmljYW50bHkuCgogICAgICBwcm9jZWR1cmUgUmVtb3ZlIChPYmpl Y3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3M7CiAgICAgICAgICAgICAgICAgICAg ICAgIElkICAgICA6IGluIEdsaWIuR1F1YXJrKTsKICAgICAgLS0gIFNhbWUgZnVuY3Rpb24gYXMg UmVtb3ZlIGFib3ZlLCBidXQgdXNlcyBkaXJlY3RseSB0aGUgUXVhcmsgYXNzb2NpYXRlZAogICAg ICAtLSAgd2l0aCB0aGUgc3RyaW5nLCB3aGljaCBzcGVlZHMgdXAgdGhlIGFjY2VzcyB0aW1lIHNp Z25pZmljYW50bHkuCgogICBlbmQgVXNlcl9EYXRhOwoKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAg IC0tLS0tLS0tLS0tLS0KICAgLS0gU2lnbmFscyAtLQogICAtLS0tLS0tLS0tLS0tCgogICAtLSAg PHNpZ25hbHM+CiAgIC0tICBUaGUgZm9sbG93aW5nIG5ldyBzaWduYWxzIGFyZSBkZWZpbmVkIGZv ciB0aGlzIHdpZGdldDoKICAgLS0KICAgLS0gIC0gImRlc3Ryb3kiCiAgIC0tICAgIHByb2NlZHVy ZSBIYW5kbGVyIChPYmplY3QgOiBhY2Nlc3MgR3RrX09iamVjdF9SZWNvcmQnQ2xhc3MpOwogICAt LQogICAtLSAgICBSYWlzZWQgd2hlbiB0aGUgb2JqZWN0IGlzIGFib3V0IHRvIGJlIGRlc3Ryb3ll ZC4gVGhlICJkZXN0cm95ZWQiCiAgIC0tICAgIGZsYWcgaGFzIGJlZW4gc2V0IG9uIHRoZSBvYmpl Y3QgZmlyc3QuIEhhbmRsZXJzIHNob3VsZCBub3Qga2VlcAogICAtLSAgICBhIHJlZmVyZW5jZSBv biB0aGUgb2JqZWN0LgogICAtLSAgICBOb3RlIHRoYXQgd2hlbiB5b3VyIGRlc3Ryb3kgaGFuZGxl cnMgYXJlIGNhbGxlZCwgdGhlIHVzZXJfZGF0YSBpcwogICAtLSAgICBzdGlsbCBhdmFpbGFibGUu CiAgIC0tICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlc3Ryb3lzIGFsbCB0aGUgaGFu ZGxlcnMuCiAgIC0tICA8L3NpZ25hbHM+Cgpwcml2YXRlCiAgIHR5cGUgR3RrX09iamVjdF9SZWNv cmQgaXMgbmV3IEd0ay5Sb290X1R5cGUgd2l0aCBudWxsIHJlY29yZDsKCiAgIHByYWdtYSBJbmxp bmUgKERlc3Ryb3llZF9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChGbG9hdGluZ19Jc19TZXQp OwogICBwcmFnbWEgSW5saW5lIChDb25uZWN0ZWRfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAo Q29uc3RydWN0ZWRfSXNfU2V0KTsKCmVuZCBHdGsuT2JqZWN0OwoKLS0gIEZ1bmN0aW9ucyB0aGF0 IGhhdmUgbm8gQWRhIGVxdWl2YWxlbnQ6Ci0tICAtIGd0a19vYmplY3RfY2xhc3NfdXNlcl9zaWdu YWxfbmV3Ci0tICAtIGd0a19vYmplY3RfY2xhc3NfdXNlcl9zaWduYWxfbmV3dgotLSAgLSBndGtf b2JqZWN0X25ldwotLSAgLSBndGtfb2JqZWN0X25ld3YKLS0gIC0gZ3RrX29iamVjdF9kZWZhdWx0 X2NvbnN0cnVjdAotLSAgLSBndGtfb2JqZWN0X2NvbnN0cnVjdGVkCi0tICAtIGd0a19vYmplY3Rf d2Vha3JlZgotLSAgLSBndGtfb2JqZWN0X3dlYWt1bnJlZgotLSAgLSBndGtfb2JqZWN0X2dldHYK LS0gIC0gZ3RrX29iamVjdF9nZXQKLS0gIC0gZ3RrX29iamVjdF9zZXQKLS0gIC0gZ3RrX29iamVj dF9zZXR2Ci0tICAtIGd0a19vYmplY3RfcXVlcnlfYXJncwotLSAgLSBndGtfb2JqZWN0X2NsYXNz X2FkZF9zaWduYWxzID0+IGluIEluaXRpYWxpemVfQ2xhc3NfUmVjb3JkCi0tICAtIGd0a19vYmpl Y3RfYWRkX2FyZ190eXBlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1 IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNr ZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMg bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig ICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0t IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAg ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxv bmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0t Ci0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3Bl Y2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20g IC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMg dG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBi eSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292 ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2Vw dGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRo ZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQ dWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgp3aXRoIEdkazsgdXNlIEdkazsK d2l0aCBHZGsuQ29sb3I7CndpdGggR2RrLkdDOwp3aXRoIEdkay5Gb250Owp3aXRoIEdkay5UeXBl czsKd2l0aCBHZGsuUGl4bWFwOwp3aXRoIEdkay5XaW5kb3c7CndpdGggR3RrLkVudW1zOwoKcGFj a2FnZSBHdGsuU3R5bGUgaXMKCiAgIHR5cGUgR3RrX1N0eWxlIGlzIG5ldyBHZGsuQ19Qcm94eTsK ICAgLS0gIFR5cGUgdXNlZCB0byBoYW5kbGUgc3R5bGVzLgogICAtLSAgQHB4cmVme1BhY2thZ2Vf R3RrLldpZGdldH0gZm9yIHN0eWxlIGhhbmRsaW5nLgoKICAgTnVsbF9TdHlsZSA6IGNvbnN0YW50 IEd0a19TdHlsZSA6PSBudWxsOwoKICAgcHJvY2VkdXJlIEd0a19OZXcgKFN0eWxlIDogb3V0IEd0 a19TdHlsZSk7CgogICBmdW5jdGlvbiBDb3B5IChTb3VyY2UgOiBpbiBHdGtfU3R5bGUpIHJldHVy biBHdGtfU3R5bGU7CgogICBmdW5jdGlvbiBBdHRhY2gKICAgICAoU3R5bGUgIDogaW4gR3RrX1N0 eWxlOwogICAgICBXaW5kb3cgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3cpIHJldHVybiBHdGtf U3R5bGU7CgogICBwcm9jZWR1cmUgRGV0YWNoIChTdHlsZSA6IGluIEd0a19TdHlsZSk7CgogICBw cm9jZWR1cmUgU2V0X0JhY2tncm91bmQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsK ICAgICAgV2luZG93ICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgU3RhdGVf VHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKTsKCiAgIHByb2NlZHVyZSBTZXRfRm9yZWdy b3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDog aW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3Iu R2RrX0NvbG9yKTsKCiAgIHByb2NlZHVyZSBTZXRfRmcKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAg ICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcikgcmVuYW1lcyBTZXRfRm9yZWdy b3VuZDsKCiAgIGZ1bmN0aW9uIEdldF9Gb3JlZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBH dGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0 dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBmdW5jdGlvbiBHZXRfRmcKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0 ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcgogICAgICByZW5hbWVzIEdldF9Gb3Jl Z3JvdW5kOwoKICAgcHJvY2VkdXJlIFNldF9CYWNrZ3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBp biBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsK ICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwoKICAgcHJvY2VkdXJl IFNldF9CZwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBl IDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29s b3IuR2RrX0NvbG9yKSByZW5hbWVzIFNldF9CYWNrZ3JvdW5kOwoKICAgZnVuY3Rpb24gR2V0X0Jh Y2tncm91bmQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkNvbG9yLkdka19Db2xvcjsK CiAgIGZ1bmN0aW9uIEdldF9CZwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAg ICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuQ29sb3Iu R2RrX0NvbG9yCiAgICAgIHJlbmFtZXMgR2V0X0JhY2tncm91bmQ7CgogICBwcm9jZWR1cmUgU2V0 X0xpZ2h0CiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xv ci5HZGtfQ29sb3IpOwoKICAgZnVuY3Rpb24gR2V0X0xpZ2h0CiAgICAgKFN0eWxlICAgICAgOiBp biBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkg cmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBwcm9jZWR1cmUgU2V0X0RhcmsKICAgICAo U3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0 a19TdGF0ZV9UeXBlOwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7 CgogICBmdW5jdGlvbiBHZXRfRGFyawogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuQ29s b3IuR2RrX0NvbG9yOwoKICAgcHJvY2VkdXJlIFNldF9NaWRkbGUKICAgICAoU3R5bGUgICAgICA6 IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBl OwogICAgICBDb2xvciAgICAgIDogaW4gR2RrLkNvbG9yLkdka19Db2xvcik7CgogICBwcm9jZWR1 cmUgU2V0X01pZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsu Q29sb3IuR2RrX0NvbG9yKSByZW5hbWVzIFNldF9NaWRkbGU7CgogICBmdW5jdGlvbiBHZXRfTWlk ZGxlCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBp biBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7CgogICBm dW5jdGlvbiBHZXRfTWlkCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0 YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5Db2xvci5HZGtf Q29sb3IKICAgICAgcmVuYW1lcyBHZXRfTWlkZGxlOwoKICAgcHJvY2VkdXJlIFNldF9UZXh0CiAg ICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVt cy5HdGtfU3RhdGVfVHlwZTsKICAgICAgQ29sb3IgICAgICA6IGluIEdkay5Db2xvci5HZGtfQ29s b3IpOwoKICAgZnVuY3Rpb24gR2V0X1RleHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHls ZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2Rr LkNvbG9yLkdka19Db2xvcjsKCiAgIHByb2NlZHVyZSBTZXRfQmFzZQogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIENvbG9yICAgICAgOiBpbiBHZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAgIGZ1bmN0 aW9uIEdldF9CYXNlCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29s b3I7CgogICBwcm9jZWR1cmUgU2V0X0JsYWNrCiAgICAgKFN0eWxlIDogaW4gR3RrX1N0eWxlOwog ICAgICBDb2xvciA6IGluIEdkay5Db2xvci5HZGtfQ29sb3IpOwoKICAgZnVuY3Rpb24gR2V0X0Js YWNrIChTdHlsZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5Db2xvci5HZGtfQ29sb3I7Cgog ICBwcm9jZWR1cmUgU2V0X1doaXRlIChTdHlsZSA6IGluIEd0a19TdHlsZTsgQ29sb3IgOiBpbiBH ZGsuQ29sb3IuR2RrX0NvbG9yKTsKCiAgIGZ1bmN0aW9uIEdldF9XaGl0ZSAoU3R5bGUgOiBpbiBH dGtfU3R5bGUpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9yOwoKICAgcHJvY2VkdXJlIFNldF9G b250IChTdHlsZSA6IGluIEd0a19TdHlsZTsgRm9udCA6IGluIEdkay5Gb250Lkdka19Gb250KTsK CiAgIGZ1bmN0aW9uIEdldF9Gb250IChTdHlsZSA6IGluIEd0a19TdHlsZSkgcmV0dXJuIEdkay5G b250Lkdka19Gb250OwoKICAgcHJvY2VkdXJlIFNldF9CbGFja19HQyAoU3R5bGUgOiBpbiBHdGtf U3R5bGU7IEdDIDogaW4gR2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfQmxhY2tfR0Mg KFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVy ZSBTZXRfQmxhY2sKICAgICAoU3R5bGUgOiBpbiBHdGtfU3R5bGU7IEdDIDogaW4gR2RrLkdDLkdk a19HQykgcmVuYW1lcyBTZXRfQmxhY2tfR0M7CgogICBmdW5jdGlvbiBHZXRfQmxhY2sKICAgICAo U3R5bGUgOiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDIHJlbmFtZXMgR2V0X0Js YWNrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9XaGl0ZV9HQyAoU3R5bGUgOiBpbiBHdGtfU3R5bGU7 IEdDIDogaW4gR2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfV2hpdGVfR0MgKFN0eWxl IDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRf V2hpdGUKICAgICAoU3R5bGUgOiBpbiBHdGtfU3R5bGU7IEdDIDogaW4gR2RrLkdDLkdka19HQykg cmVuYW1lcyBTZXRfV2hpdGVfR0M7CgogICBmdW5jdGlvbiBHZXRfV2hpdGUKICAgICAoU3R5bGUg OiBpbiBHdGtfU3R5bGUpIHJldHVybiBHZGsuR0MuR2RrX0dDIHJlbmFtZXMgR2V0X1doaXRlX0dD OwoKICAgcHJvY2VkdXJlIFNldF9Gb3JlZ3JvdW5kX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBH dGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAg ICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpOwoKICAgZnVuY3Rpb24gR2V0X0ZvcmVn cm91bmRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19HQzsKCiAgIHBy b2NlZHVyZSBTZXRfRm9yZWdyb3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAg ICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9Gb3JlZ3JvdW5kX0dDOwoKICAgZnVu Y3Rpb24gR2V0X0ZvcmVncm91bmQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAg ICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdk a19HQwogICAgICByZW5hbWVzIEdldF9Gb3JlZ3JvdW5kX0dDOwoKICAgcHJvY2VkdXJlIFNldF9G ZwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4g RW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dD KSByZW5hbWVzIFNldF9Gb3JlZ3JvdW5kX0dDOwoKICAgZnVuY3Rpb24gR2V0X0ZnCiAgICAgKFN0 eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtf U3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfRm9yZWdy b3VuZF9HQzsKCiAgIHByb2NlZHVyZSBTZXRfRmdfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAg ICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfRm9yZWdyb3VuZF9H QzsKCiAgIGZ1bmN0aW9uIEdldF9GZ19HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxl OwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsu R0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X0ZvcmVncm91bmRfR0M7CgogICBwcm9jZWR1cmUg U2V0X0JhY2tncm91bmRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAg U3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDog aW4gR2RrLkdDLkdka19HQyk7CgogICBmdW5jdGlvbiBHZXRfQmFja2dyb3VuZF9HQwogICAgIChT dHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3Rr X1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9CYWNr Z3JvdW5kCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5H ZGtfR0MpIHJlbmFtZXMgU2V0X0JhY2tncm91bmRfR0M7CgogICBmdW5jdGlvbiBHZXRfQmFja2dy b3VuZAogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDog aW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVybiBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFt ZXMgR2V0X0JhY2tncm91bmRfR0M7CgogICBwcm9jZWR1cmUgU2V0X0JnCiAgICAgKFN0eWxlICAg ICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVf VHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X0Jh Y2tncm91bmRfR0M7CgogICBmdW5jdGlvbiBHZXRfQmcKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1 cm4gR2RrLkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9CYWNrZ3JvdW5kX0dDOwoKICAgcHJv Y2VkdXJlIFNldF9CZ19HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBT dGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBp biBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9CYWNrZ3JvdW5kX0dDOwoKICAgZnVuY3Rpb24g R2V0X0JnX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5 cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5HZGtfR0MKICAgICAg cmVuYW1lcyBHZXRfQmFja2dyb3VuZF9HQzsKCiAgIHByb2NlZHVyZSBTZXRfTGlnaHRfR0MKICAg ICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1z Lkd0a19TdGF0ZV9UeXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQyk7Cgog ICBmdW5jdGlvbiBHZXRfTGlnaHRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsK ICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdD Lkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRfTGlnaHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAg ICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfTGlnaHRfR0M7Cgog ICBmdW5jdGlvbiBHZXRfTGlnaHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAg ICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdk a19HQwogICAgICByZW5hbWVzIEdldF9MaWdodF9HQzsKCiAgIHByb2NlZHVyZSBTZXRfRGFya19H QwogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4g RW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dD KTsKCiAgIGZ1bmN0aW9uIEdldF9EYXJrX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5 bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdk ay5HQy5HZGtfR0M7CgogICBwcm9jZWR1cmUgU2V0X0RhcmsKICAgICAoU3R5bGUgICAgICA6IGlu IEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwog ICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfRGFya19HQzsK CiAgIGZ1bmN0aW9uIEdldF9EYXJrCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAg ICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5HQy5H ZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfRGFya19HQzsKCiAgIHByb2NlZHVyZSBTZXRfTWlkZGxl X0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUgOiBp biBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5HZGtf R0MpOwoKICAgZnVuY3Rpb24gR2V0X01pZGRsZV9HQwogICAgIChTdHlsZSAgICAgIDogaW4gR3Rr X1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVy biBHZGsuR0MuR2RrX0dDOwoKICAgcHJvY2VkdXJlIFNldF9NaWRkbGUKICAgICAoU3R5bGUgICAg ICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9U eXBlOwogICAgICBHQyAgICAgICAgIDogaW4gR2RrLkdDLkdka19HQykgcmVuYW1lcyBTZXRfTWlk ZGxlX0dDOwoKICAgZnVuY3Rpb24gR2V0X01pZGRsZQogICAgIChTdHlsZSAgICAgIDogaW4gR3Rr X1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpIHJldHVy biBHZGsuR0MuR2RrX0dDCiAgICAgIHJlbmFtZXMgR2V0X01pZGRsZV9HQzsKCiAgIHByb2NlZHVy ZSBTZXRfTWlkX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRl X1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdk ay5HQy5HZGtfR0MpIHJlbmFtZXMgU2V0X01pZGRsZV9HQzsKCiAgIGZ1bmN0aW9uIEdldF9NaWRf R0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGlu IEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2RrLkdDLkdka19HQwogICAgICByZW5hbWVz IEdldF9NaWRkbGVfR0M7CgogICBwcm9jZWR1cmUgU2V0X01pZAogICAgIChTdHlsZSAgICAgIDog aW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7 CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9NaWRkbGVf R0M7CgogICBmdW5jdGlvbiBHZXRfTWlkCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7 CiAgICAgIFN0YXRlX1R5cGUgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZSkgcmV0dXJuIEdkay5H Qy5HZGtfR0MKICAgICAgcmVuYW1lcyBHZXRfTWlkZGxlX0dDOwoKICAgcHJvY2VkdXJlIFNldF9U ZXh0X0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5H ZGtfR0MpOwoKICAgZnVuY3Rpb24gR2V0X1RleHRfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1 cm4gR2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRfVGV4dAogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9UZXh0 X0dDOwoKICAgZnVuY3Rpb24gR2V0X1RleHQKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHls ZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2Rr LkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9UZXh0X0dDOwoKICAgcHJvY2VkdXJlIFNldF9C YXNlX0dDCiAgICAgKFN0eWxlICAgICAgOiBpbiBHdGtfU3R5bGU7CiAgICAgIFN0YXRlX1R5cGUg OiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgR0MgICAgICAgICA6IGluIEdkay5HQy5H ZGtfR0MpOwoKICAgZnVuY3Rpb24gR2V0X0Jhc2VfR0MKICAgICAoU3R5bGUgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1 cm4gR2RrLkdDLkdka19HQzsKCiAgIHByb2NlZHVyZSBTZXRfQmFzZQogICAgIChTdHlsZSAgICAg IDogaW4gR3RrX1N0eWxlOwogICAgICBTdGF0ZV9UeXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5 cGU7CiAgICAgIEdDICAgICAgICAgOiBpbiBHZGsuR0MuR2RrX0dDKSByZW5hbWVzIFNldF9CYXNl X0dDOwoKICAgZnVuY3Rpb24gR2V0X0Jhc2UKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHls ZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlKSByZXR1cm4gR2Rr LkdDLkdka19HQwogICAgICByZW5hbWVzIEdldF9CYXNlX0dDOwoKICAgcHJvY2VkdXJlIFNldF9C Z19QaXhtYXAKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlw ZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBQaXhtYXAgICAgIDogaW4gR2RrLlBp eG1hcC5HZGtfUGl4bWFwKTsKCiAgIGZ1bmN0aW9uIEdldF9CZ19QaXhtYXAKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0 ZV9UeXBlKSByZXR1cm4gR2RrLlBpeG1hcC5HZGtfUGl4bWFwOwoKICAgZnVuY3Rpb24gWF9UaGlj a25lc3MgKFN0eWxlIDogaW4gR3RrX1N0eWxlKSByZXR1cm4gR2ludDsKICAgLS0gIFdpZHRoIG9m IHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXJzIGFuZCByYW5nZXMgd2hlbiBTdHlsZSBpcyBhcHBsaWVk LgogICAtLSAgSW4gZmFjdCwgdGhpcyB0aGlja25lc3MgaXMgdXNlZCBmb3IgYSBsb3Qgb2Ygd2lk Z2V0cyB3aG9zZSB3aWR0aAogICAtLSAgZG9lcyBub3QgZGVwZW5kIG9uIHRoZWlyIGNvbnRlbnQs IHN1Y2ggYXMgcnVsZXJzLC4uLgoKICAgZnVuY3Rpb24gWV9UaGlja25lc3MgKFN0eWxlIDogaW4g R3RrX1N0eWxlKSByZXR1cm4gR2ludDsKICAgLS0gIEhlaWdodCBvZiB0aGUgaG9yaXpvbnRhbCBz Y3JvbGxiYXJzIGFuZCByYW5nZXMgd2hlbiBTdHlsZSBpcyBhcHBsaWVkLgoKICAgcHJvY2VkdXJl IERyYXdfSGxpbmUKICAgICAoU3R5bGUgICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgV2luZG93 ICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVu dW1zLkd0a19TdGF0ZV9UeXBlOwogICAgICBYMSwgWDIgICAgIDogaW4gR2ludDsKICAgICAgWSAg ICAgICAgICA6IGluIEdpbnQpOwoKICAgcHJvY2VkdXJlIERyYXdfVmxpbmUKICAgICAoU3R5bGUg ICAgICA6IGluIEd0a19TdHlsZTsKICAgICAgV2luZG93ICAgICA6IGluIEdkay5XaW5kb3cuR2Rr X1dpbmRvdzsKICAgICAgU3RhdGVfVHlwZSA6IGluIEVudW1zLkd0a19TdGF0ZV9UeXBlOwogICAg ICBZMSwgWTIgICAgIDogaW4gR2ludDsKICAgICAgWCAgICAgICAgICA6IGluIEdpbnQpOwoKICAg cHJvY2VkdXJlIERyYXdfU2hhZG93CiAgICAgKFN0eWxlICAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgU3RhdGVf VHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93X1R5cGUgOiBpbiBF bnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFgsIFkgICAgICAgIDogaW4gR2ludDsKICAgICAg V2lkdGggICAgICAgOiBpbiBHaW50OwogICAgICBIZWlnaHQgICAgICA6IGluIEdpbnQpOwoKICAg cHJvY2VkdXJlIERyYXdfUG9seWdvbgogICAgIChTdHlsZSAgICAgIDogaW4gR3RrX1N0eWxlOwog ICAgICBXaW5kb3cgICAgIDogaW4gR2RrLldpbmRvdy5HZGtfV2luZG93OwogICAgICBTdGF0ZV9U eXBlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFNoYWRvd19UeXBlIDogaW4gRW51 bXMuR3RrX1NoYWRvd19UeXBlOwogICAgICBQb2ludHMgICAgIDogaW4gR2RrLlR5cGVzLkdka19Q b2ludHNfQXJyYXk7CiAgICAgIEZpbGwgICAgICAgOiBpbiBCb29sZWFuKTsKCiAgIHByb2NlZHVy ZSBEcmF3X0Fycm93CiAgICAgKFN0eWxlICAgICAgIDogaW4gR3RrX1N0eWxlOwogICAgICBXaW5k b3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsKICAgICAgU3RhdGVfVHlwZSAgOiBp biBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93X1R5cGUgOiBpbiBFbnVtcy5HdGtf U2hhZG93X1R5cGU7CiAgICAgIEFycm93X1R5cGUgIDogaW4gRW51bXMuR3RrX0Fycm93X1R5cGU7 CiAgICAgIEZpbGwgICAgICAgIDogaW4gQm9vbGVhbjsKICAgICAgWCwgWSAgICAgICAgOiBpbiBH aW50OwogICAgICBXaWR0aCAgICAgICA6IGluIEdpbnQ7CiAgICAgIEhlaWdodCAgICAgIDogaW4g R2ludCk7CgogICBwcm9jZWR1cmUgRHJhd19EaWFtb25kCiAgICAgKFN0eWxlICAgICAgIDogaW4g R3RrX1N0eWxlOwogICAgICBXaW5kb3cgICAgICA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdzsK ICAgICAgU3RhdGVfVHlwZSAgOiBpbiBFbnVtcy5HdGtfU3RhdGVfVHlwZTsKICAgICAgU2hhZG93 X1R5cGUgOiBpbiBFbnVtcy5HdGtfU2hhZG93X1R5cGU7CiAgICAgIFgsIFkgICAgICAgIDogaW4g R2ludDsKICAgICAgV2lkdGggICAgICAgOiBpbiBHaW50OwogICAgICBIZWlnaHQgICAgICA6IGlu IEdpbnQpOwoKICAgcHJvY2VkdXJlIERyYXdfT3ZhbAogICAgIChTdHlsZSAgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgV2luZG93ICAgICAgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAg ICAgIFN0YXRlX1R5cGUgIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFNoYWRvd19U eXBlIDogaW4gRW51bXMuR3RrX1NoYWRvd19UeXBlOwogICAgICBYLCBZICAgICAgICA6IGluIEdp bnQ7CiAgICAgIFdpZHRoICAgICAgIDogaW4gR2ludDsKICAgICAgSGVpZ2h0ICAgICAgOiBpbiBH aW50KTsKCiAgIHByb2NlZHVyZSBEcmF3X1N0cmluZwogICAgIChTdHlsZSAgICAgICA6IGluIEd0 a19TdHlsZTsKICAgICAgV2luZG93ICAgICAgOiBpbiBHZGsuV2luZG93Lkdka19XaW5kb3c7CiAg ICAgIFN0YXRlX1R5cGUgIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgICAgIFgsIFkgICAg ICAgIDogaW4gR2ludDsKICAgICAgU3RyICAgICAgICAgOiBpbiBTdHJpbmcpOwoKICAgcHJvY2Vk dXJlIFJlZiAoT2JqZWN0IDogaW4gR3RrX1N0eWxlKTsKICAgcHJvY2VkdXJlIFVucmVmIChPYmpl Y3QgOiBpbiBHdGtfU3R5bGUpOwoKcHJpdmF0ZQogICBwcmFnbWEgSW1wb3J0IChDLCBBdHRhY2gs ICJndGtfc3R5bGVfYXR0YWNoIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIENvcHksICJndGtfc3R5 bGVfY29weSIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBEZXRhY2gsICJndGtfc3R5bGVfZGV0YWNo Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFJlZiwgImd0a19zdHlsZV9yZWYiKTsKICAgcHJhZ21h IEltcG9ydCAoQywgVW5yZWYsICJndGtfc3R5bGVfdW5yZWYiKTsKICAgcHJhZ21hIEltcG9ydCAo QywgRHJhd19EaWFtb25kLCAiZ3RrX2RyYXdfZGlhbW9uZCIpOwogICBwcmFnbWEgSW1wb3J0IChD LCBEcmF3X0hsaW5lLCAiZ3RrX2RyYXdfaGxpbmUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgRHJh d19PdmFsLCAiZ3RrX2RyYXdfb3ZhbCIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBEcmF3X1NoYWRv dywgImd0a19kcmF3X3NoYWRvdyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBEcmF3X1ZsaW5lLCAi Z3RrX2RyYXdfdmxpbmUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0ZvbnQsICJhZGFfc3R5 bGVfc2V0X2ZvbnQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0ZvbnQsICJhZGFfc3R5bGVf Z2V0X2ZvbnQiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0JsYWNrX0dDLCAiYWRhX3N0eWxl X3NldF9ibGFja19nYyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfQmxhY2tfR0MsICJhZGFf c3R5bGVfZ2V0X2JsYWNrX2djIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9XaGl0ZV9HQywg ImFkYV9zdHlsZV9zZXRfd2hpdGVfZ2MiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X1doaXRl X0dDLCAiYWRhX3N0eWxlX2dldF93aGl0ZV9nYyIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBYX1Ro aWNrbmVzcywgImFkYV9zdHlsZV9nZXRfeF90aGlja25lc3MiKTsKICAgcHJhZ21hIEltcG9ydCAo QywgWV9UaGlja25lc3MsICJhZGFfc3R5bGVfZ2V0X3lfdGhpY2tuZXNzIik7CmVuZCBHdGsuU3R5 bGU7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAgIEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9y IHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAxOTk4LTIwMDAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlvdCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1 ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1v ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAg ICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4gIC0tCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0t IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0tIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgIC0t Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0tCi0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlz IGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAg IC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRp b24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlIGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMg dW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBh biAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVuaXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1 c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoaXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5v dCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4 ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJlZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5z ZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAgPGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyB3 aWRnZXQgaXMgdGhlIGJhc2Ugb2YgdGhlIHRyZWUgZm9yIGRpc3BsYXlhYmxlIG9iamVjdHMuCi0t ICAoQSBkaXNwbGF5YWJsZSBvYmplY3QgaXMgb25lIHdoaWNoIHRha2VzIHVwIHNvbWUgYW1vdW50 Ci0tICBvZiBzY3JlZW4gcmVhbCBlc3RhdGUpLiBJdCBwcm92aWRlcyBhIGNvbW1vbiBiYXNlIGFu ZCBpbnRlcmZhY2UKLS0gIHdoaWNoIGFjdHVhbCB3aWRnZXRzIG11c3QgYWRoZXJlIHRvLgotLQot LSAgVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHNvbWUgc2VydmljZXMgd2hpY2ggbWlnaHQgaGF2ZSBi ZWVuIG1vcmUgYXBwcm9wcmlhdGUKLS0gIGluIHNvbWUgb3RoZXIgcGFja2FnZXMsIGJ1dCBjb3Vs ZCBub3QgYmVjYXVzZSBvZiBkZXBlbmRlbmN5IGNpcmN1bGFyaXRpZXMKLS0gICh0aGVyZSBhcmUg Zm9yIGluc3RhbmNlIHNvbWUgZnVuY3Rpb25zIHJlbGF0aW5nIHRvIGNvbG9ycyBhbmQgY29sb3Jt YXBzKS4KLS0gIFdlIGhhdmUgdHJpZWQgdG8gcmVmZXJlbmNlIHRoZXNlIGZ1bmN0aW9ucyBpbiB0 aGUgb3RoZXIgcGFja2FnZXMgYXMgd2VsbC4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Ci0tICA8Y192 ZXJzaW9uPjEuMi42PC9jX3ZlcnNpb24+Cgp3aXRoIEdkay5Db2xvcjsKd2l0aCBHZGsuRXZlbnQ7 CndpdGggR2RrLkJpdG1hcDsKd2l0aCBHZGsuUmVjdGFuZ2xlOwp3aXRoIEdkay5UeXBlczsKd2l0 aCBHZGsuVmlzdWFsOwp3aXRoIEdkay5XaW5kb3c7CndpdGggR3RrLkFjY2VsX0dyb3VwOwp3aXRo IEd0ay5BZGp1c3RtZW50Owp3aXRoIEd0ay5FbnVtczsKd2l0aCBHdGsuT2JqZWN0Owp3aXRoIEd0 ay5TdHlsZTsKd2l0aCBHbGliLkdsaXN0Owp3aXRoIEdsaWIuR1NsaXN0Owp3aXRoIFN5c3RlbTsK cHJhZ21hIEVsYWJvcmF0ZV9BbGwgKEdsaWIuR1NsaXN0KTsKCnBhY2thZ2UgR3RrLldpZGdldCBp cwoKICAgdHlwZSBHdGtfV2lkZ2V0X1JlY29yZCBpcyBuZXcgT2JqZWN0Lkd0a19PYmplY3RfUmVj b3JkIHdpdGggcHJpdmF0ZTsKICAgdHlwZSBHdGtfV2lkZ2V0IGlzIGFjY2VzcyBhbGwgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3M7CgogICB0eXBlIEd0a19SZXF1aXNpdGlvbiBpcyByZWNvcmQKICAg ICAgV2lkdGggIDogR2ludDE2OwogICAgICBIZWlnaHQgOiBHaW50MTY7CiAgIGVuZCByZWNvcmQ7 CiAgIC0tICBHdGtfUmVxdWlzaXRpb24gaXMgdGhlIGRlc2lyZWQgYW1vdW50IG9mIHNjcmVlbiBy ZWFsLWVzdGF0ZSBhIHdpZGdldAogICAtLSAgcmVxdWVzdHMgdG8gdGhlIHNlcnZlci4gSXRzIHJl YWwgYWxsb2NhdGVkIHNpemUgbWlnaHQgYmUgZGlmZmVyZW50LgogICAtLSAgU2VlIHRoZSBzZWN0 aW9uIGluIHRoZSBHdGtBZGEgdXNlciBndWlkZSBvbiBob3cgdG8gY3JlYXRlIG5ldyB3aWRnZXRz CiAgIC0tICBpbiBBZGEsIGFuZCB0aGUgZXhhbXBsZXMvYmFzZV93aWRnZXQgZGlyZWN0b3J5IGZv ciBhbiBleGFtcGxlIG9uIGhvdyB0bwogICAtLSAgdXNlIHRoaXMuCiAgIHByYWdtYSBQYWNrIChH dGtfUmVxdWlzaXRpb24pOwoKICAgdHlwZSBHdGtfUmVxdWlzaXRpb25fQWNjZXNzIGlzIGFjY2Vz cyBhbGwgR3RrX1JlcXVpc2l0aW9uOwogICAtLSAgVGhpcyB0eXBlIGlzIHVzZWQgdG8gY3JlYXRl IG5ldyB3aWRnZXRzLgoKICAgdHlwZSBHdGtfQWxsb2NhdGlvbiBpcyByZWNvcmQKICAgICAgWCAg ICAgIDogR2ludDE2OwogICAgICBZICAgICAgOiBHaW50MTY7CiAgICAgIFdpZHRoICA6IEd1aW50 MTY7CiAgICAgIEhlaWdodCA6IEd1aW50MTY7CiAgIGVuZCByZWNvcmQ7CiAgIC0tICBHdGtfQWxs b2NhdGlvbiBpbmRpY2F0ZXMgYSBzaXplIGFuZCBwb3NpdGlvbiBhIHdpZGdldCB3YXMgYWxsb2Nh dGVkLgogICAtLSAgU2VlIHRoZSBzZWN0aW9uIGluIHRoZSB1c2VyIGd1aWRlIG9uIGhvdyB0byBj cmVhdGUgbmV3IHdpZGdldHMgZm9yIG1vcmUKICAgLS0gIGluZm9ybWF0aW9uLgogICBwcmFnbWEg UGFjayAoR3RrX0FsbG9jYXRpb24pOwoKICAgdHlwZSBHdGtfQWxsb2NhdGlvbl9BY2Nlc3MgaXMg YWNjZXNzIGFsbCBHdGtfQWxsb2NhdGlvbjsKICAgLS0gIFRoaXMgdHlwZSBpcyB1c2VkIHRvIGNy ZWF0ZSBuZXcgd2lkZ2V0cy4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gV2lk Z2V0cycgbGlmZSBjeWNsZSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9j ZWR1cmUgSW5pdGlhbGl6ZV9XaWRnZXQgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzcyk7CiAgIC0tICBJbnRlcm5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KICAgLS0g IFNlZSB0aGUgc2VjdGlvbiAiQ3JlYXRpbmcgeW91ciBvd24gd2lkZ2V0cyIgaW4gdGhlIGRvY3Vt ZW50YXRpb24uCgogICBwcm9jZWR1cmUgRGVzdHJveV9DYiAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQg YXMgYSBjYWxsYmFjayB0byBkZXN0cm95IGEgd2lkZ2V0LgogICAtLSAgQWxsIGl0IGRvZXMgaXMg Y2FsbCBEZXN0cm95IG9uIGl0cyBhcmd1bWVudCwgYnV0IGl0cyBwcm9maWxlIGlzCiAgIC0tICBj b21wYXRpYmxlIHdpdGggdGhlIGhhbmRsZXJzIGZvdW5kIGluIEd0ay5IYW5kbGVycy4KCiAgIHBy b2NlZHVyZSBVbnBhcmVudCAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz KTsKICAgLS0gIERldGFjaCB0aGUgd2lkZ2V0IGZyb20gaXRzIHBhcmVudC4KICAgLS0gIEFzIGEg c2lkZSBlZmZlY3QsIHRoZSB3aWRnZXQgd2lsbCBiZSBlcmFzZWQgZnJvbSB0aGUgc2NyZWVuLgog ICAtLSAgTm90ZSB0aGF0IFdpZGdldCB3aWxsIGJlIGRlc3Ryb3llZCBpZiBpdHMgcmVmZXJlbmNl IGNvdW50IHJlYWNoZXMgMC4KICAgLS0gIFRodXMsIGlmIHlvdSB3YW50IHRvIHJldXNlIGl0LCB5 b3Ugc2hvdWxkIGZpcnN0IEd0ay5PYmplY3QuUmVmIGl0LAogICAtLSAgYmVmb3JlIGNhbGxpbmcg VW5wYXJlbnQuCgogICBwcm9jZWR1cmUgU2hvdyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkKTsKICAgLS0gIFNjaGVkdWxlIHRoZSB3aWRnZXQgdG8gYmUgZGlzcGxheWVkIG9uIHRo ZSBzY3JlZW4gd2hlbiBpdHMgcGFyZW50IGlzCiAgIC0tICBhbHNvIHNob3duIChlbWl0cyB0aGUg InNob3ciIHNpZ25hbCkuCiAgIC0tICBJZiBpdHMgYW5jZXN0b3JzIGFyZSBhbHJlYWR5IG1hcHBl ZCB0byB0aGUgc2NyZWVuLCB0aGVuIHRoZSB3aWRnZXQgaXMKICAgLS0gIGltbWVkaWF0ZWx5IGRp c3BsYXllZCB0aHJvdWdoIGEgY2FsbCB0byBNYXAgYmVsb3cuCgogICBwcm9jZWR1cmUgU2hvd19O b3cgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBTaG93IHRoZSB3 aWRnZXQuCiAgIC0tICBJZiBpdCBpcyBhbiB1bm1hcHBlZCB0b3BsZXZlbCB3aWRnZXQsIHdhaXQg Zm9yIGl0IHRvIGJlIG1hcHBlZC4gVGhpcwogICAtLSAgY3JlYXRlcyBhIHJlY3Vyc2l2ZSBtYWlu X2xvb3AuCgogICBwcm9jZWR1cmUgSGlkZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkKTsKICAgLS0gIEhpZGUgdGhlIHdpZGdldCBmcm9tIHRoZSBzY3JlZW4gKGVtaXRzIHRoZSAi aGlkZSIgc2lnbmFsKS4KICAgLS0gIElmIFdpZGdldCB3YXMgdmlzaWJsZSwgaXQgaXMgaW1tZWRp YXRlbHkgaGlkZGVuLgogICAtLSAgSWYgb25lIG9mIGl0cyBhbmNlc3RvciBpcyBsYXRlciBzaG93 biBvbiB0aGUgc2NyZWVuLCBXaWRnZXQgd29uJ3QKICAgLS0gIGFwcGVhci4KCiAgIHByb2NlZHVy ZSBTaG93X0FsbCAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIFNo b3cgV2lkZ2V0IGFuZCBhbGwgaXRzIGNoaWxkcmVuIHJlY3Vyc2l2ZWx5LgoKICAgcHJvY2VkdXJl IEhpZGVfQWxsIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgSGlk ZSBXaWRnZXQgYW5kIGFsbCBpdHMgY2hpbGRyZW4uCiAgIC0tICBOb3RlIHRoYXQgaWYgeW91IHNp bXBseSB3YW50IHRvIGRlbGV0ZSBXaWRnZXQgZnJvbSB0aGUgc2NyZWVuLCB5b3UgY2FuCiAgIC0t ICBzaW1wbHkgY2FsbCB0aGUgSGlkZSBzdWJwcm9ncmFtIG9uIGl0LiBUaGlzIHByb2NlZHVyZSBI aWRlX0FsbCBzaG91bGQKICAgLS0gIG9ubHkgYmUgdXNlZCBpZiB5b3Ugd2FudCB0byB1bnNjaGVk dWxlIGEgd2lkZ2V0IHRvIGJlIGRpc3BsYXllZCBsYXRlciwKICAgLS0gIG5vdCB0byByZW1vdmUg YW4gYWN0dWFsIHdpZGdldCBmcm9tIHRoZSBzY3JlZW4uCgogICBwcm9jZWR1cmUgTWFwIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgTWFwIGEgd2lkZ2V0IHRvIHRo ZSBzY3JlZW4uCiAgIC0tICBBIHdpbmRvdyBpcyBjcmVhdGVkIGZvciBpdCBvbiB0aGUgc2NyZWVu ICh0aHJvdWdoIGEgY2FsbCB0byBSZWFsaXplKSBhbmQKICAgLS0gIFdpZGdldCBpcyB0aGVuIGRy YXduIG9uIHRoZSBzY3JlZW4gKGlmIGl0cyBhbmNlc3RvcnMgYXJlIGFsc28gbWFwcGVkKS4KICAg LS0gIFRoaXMgZnVuY3Rpb24gaXMgcmVjdXJzaXZlIGFuZCB3aWxsIGFsc28gbWFwIGFsbCB0aGUg Y2hpbGRyZW4gb2YgV2lkZ2V0LgogICAtLQogICAtLSAgSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNl IHRoZSBoaWdoZXItbGV2ZWwgU2hvdyBpbnN0ZWFkLgoKICAgcHJvY2VkdXJlIFVubWFwIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgVW5tYXAgYSB3aWRnZXQgZnJv bSB0aGUgc2NyZWVuLgogICAtLSAgVGhpcyByZXN1bHRzIGluIHRoZSB3aWRnZXQgYmVpbmcgaGlk ZGVuLCBidXQgbm90IGRlc3Ryb3llZC4gSXQgY2FuIGJlCiAgIC0tICBzaG93biBhZ2FpbiBhbnkg dGltZSB0aHJvdWdoIGEgY2FsbCB0byBNYXAgKHByb3ZpZGVkIGl0cyBhbmNlc3RvcnMgYXJlCiAg IC0tICBhbHNvIG1hcHBlZCkuCiAgIC0tCiAgIC0tICBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2Ug dGhlIGhpZ2hlci1sZXZlbCBIaWRlIGluc3RlYWQuCgogICBwcm9jZWR1cmUgUmVhbGl6ZSAoV2lk Z2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIENyZWF0ZSBhIHdpbmRvdyBm b3IgV2lkZ2V0IGFuZCBpdHMgYW5jZXN0b3JzIChlbWl0IHRoZSAicmVhbGl6ZSIgc2lnbmFsKQog ICAtLSAgVGhpcyBkb2VzIG5vdCBtZWFuIHRoYXQgdGhlIHdpZGdldCB3aWxsIGFwcGVhciBvbiB0 aGUgc2NyZWVuLCBidXQKICAgLS0gIHJlc291cmNlcyBzdWNoIGFzIGNvbG9ybWFwcywgZXRjLiBi ZWNvbWUgYXZhaWxhYmxlLgogICAtLSAgU29tZSByb3V0aW5lcyByZXF1aXJlIHRoYXQgdGhlIHdp ZGdldCBpcyByZWFsaXplZCBiZWZvcmUgYW55IGNhbGwuCiAgIC0tICBZb3UgbXVzdCBzZXQgdGhl IEV2ZW50X01hc2sgYmVmb3JlIGNhbGxpbmcgdGhpcyByb3V0aW5lIGlmIHlvdSB3YW50IHRvCiAg IC0tICBjaGFuZ2UgaXQgZnJvbSBpdHMgZGVmYXVsdCB2YWx1ZS4KCiAgIHByb2NlZHVyZSBVbnJl YWxpemUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBIaWRlIHRo ZSB3aWRnZXQgZnJvbSB0aGUgc2NyZWVuIGFuZCBkZWxldGVzIHRoZSBhc3NvY2lhdGVkIHdpbmRv dy4KICAgLS0gIFRoaXMgZG9lcyBub3QgZGVzdHJveSB0aGUgd2lkZ2V0IGl0c2VsZiwgb25seSBp dHMgc2VydmVyLXNpZGUKICAgLS0gIHJlc291cmNlcy4KCiAgIGdlbmVyaWMKICAgICAgdHlwZSBX aWRnZXRfVHlwZSBpcyBuZXcgR3RrX1dpZGdldF9SZWNvcmQgd2l0aCBwcml2YXRlOwogICAgICB3 aXRoIHByb2NlZHVyZSBSZWFsaXplX1Byb2MgKFdpZGdldCA6IGFjY2VzcyBXaWRnZXRfVHlwZSdD bGFzcyk7CiAgIHBhY2thZ2UgUmVhbGl6ZV9IYW5kbGluZyBpcwoKICAgICAgcHJvY2VkdXJlIFNl dF9SZWFsaXplIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAg ICAtLSAgU2V0IHRoZSByZWFsaXplIGhhbmRsZXIgYXQgdGhlIGxvdyBsZXZlbC4KICAgICAgLS0g IFRoaXMgaXMgbmVlZGVkIHRvIHJlcGxhY2UgdGhlIGRlZmF1bHQgcmVhbGl6ZSBpbiBuZXcgd2lk Z2V0cy4KCiAgIGVuZCBSZWFsaXplX0hhbmRsaW5nOwoKICAgZnVuY3Rpb24gR2V0X1R5cGUgcmV0 dXJuIEd0ay5HdGtfVHlwZTsKICAgLS0gIFJldHVybiB0aGUgaW50ZXJuYWwgdmFsdWUgYXNzb2Np YXRlZCB3aXRoIGEgR3RrX1dpZGdldC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0g RHJhd2luZyBhIHdpZGdldCAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1 cmUgUXVldWVfRHJhdyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0g IEFkZCBhIGRyYXdpbmcgcmVxdWVzdCB0byB0aGUgZXZlbnQgcXVldWUgZm9yIHRoZSB3aG9sZSB3 aWRnZXQuCiAgIC0tICBUaGlzIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gY2FsbGluZyBEcmF3IGRp cmVjdGx5LCBzaW5jZSBHdGtBZGEgZ3JvdXBzCiAgIC0tICBkcmF3aW5nIHJlcXVlc3RzIGFzIG11 Y2ggYXMgcG9zc2libGUgdG8gc3BlZWQgdXAgdGhlIGRyYXdpbmcgcHJvY2Vzcy4KICAgLS0gIFRo ZSBhY3R1YWwgZHJhd2luZyB3aWxsIHRha2UgcGxhY2UgYXMgc29vbiBhcyBHdGtBZGEgaXMgbm90 IGJ1c3kKICAgLS0gIHByb2Nlc3Npbmcgb3RoZXIgZXZlbnRzLCBidXQgYmVmb3JlIGlkbGUgZXZl bnRzLgoKICAgcHJvY2VkdXJlIFF1ZXVlX0RyYXdfQXJlYQogICAgIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdp bnQ7CiAgICAgIFdpZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwogICAtLSAgQWRk IGEgZHJhd2luZyByZXF1ZXN0IHRvIHRoZSBldmVudCBxdWV1ZSBmb3IgcGFydCBvZiB0aGUgd2lk Z2V0LgogICAtLSAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGF0IGNhbGxpbmcgRHJhdyBkaXJl Y3RseSAoc2VlIFF1ZXVlX0RyYXcpLgoKICAgcHJvY2VkdXJlIFF1ZXVlX0NsZWFyIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgQWRkIGEgY2xlYXIgcmVxdWVzdCB0 byB0aGUgZXZlbnQgcXVldWUgZm9yIHRoZSB3aG9sZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlzIGFk ZGVkIHRvIHRoZSBzYW1lIGxpc3QgYXMgZm9yIFF1ZXVlX0RyYXcsIGFuZCB0aHVzIGlzIGNvYWxl c2NlZAogICAtLSAgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aXRoIG90aGVyIGRyYXdpbmcgcmVxdWVz dHMuCgogICBwcm9jZWR1cmUgUXVldWVfQ2xlYXJfQXJlYQogICAgIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFggICAgICA6IEdpbnQ7CiAgICAgIFkgICAgICA6IEdp bnQ7CiAgICAgIFdpZHRoICA6IEdpbnQ7CiAgICAgIEhlaWdodCA6IEdpbnQpOwogICAtLSAgQWRk IGEgY2xlYXIgcmVxdWVzdCB0byB0aGUgZXZlbnQgcXVldWUgZm9yIHBhcnQgb2YgdGhlIHdpZGdl dC4KICAgLS0gIFRoaXMgaXMgYWRkZWQgdG8gdGhlIHNhbWUgbGlzdCBhcyBmb3IgUXVldWVfRHJh dywgYW5kIHRodXMgaXMgY29hbGVzY2VkCiAgIC0tICBhcyBtdWNoIGFzIHBvc3NpYmxlIHdpdGgg b3RoZXIgZHJhd2luZyByZXF1ZXN0cy4KCiAgIHByb2NlZHVyZSBRdWV1ZV9SZXNpemUgKFdpZGdl dCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBRdWV1ZSBkcmF3aW5nIHJlcXVl c3RzIGFmdGVyIGEgcmVzaXppbmcgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgY2xlYXJzIHRo ZSB3aWRnZXQsIGFuZCBpdHMgcGFyZW50IGlmIGFueSwgc28gdGhhdCBldmVyeXRoaW5nIGlzCiAg IC0tICBjb3JyZWN0bHkgcmVkcmF3bi4KICAgLS0gIFlvdSBzaG91bGQgbm90IGhhdmUgdG8gY2Fs bCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LgoKICAgcHJvY2VkdXJlIERyYXcKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBcmVhICAgOiBpbiBHZGsuUmVjdGFu Z2xlLkdka19SZWN0YW5nbGUgOj0gR2RrLlJlY3RhbmdsZS5GdWxsX0FyZWEpOwogICAtLSAgRW1p dCBhICJkcmF3IiBzaWduYWwgZm9yIGEgc3BlY2lmaWMgYXJlYSBvZiB0aGUgd2lkZ2V0LgogICAt LSAgVGhlIHZpc3VhbCBhc3BlY3QgbWlnaHQgYmUgZGlmZmVyZW50IHdoZXRoZXIgdGhlIHdpZGdl dCBoYXMgdGhlIGZvY3VzCiAgIC0tICBvciBub3QuCgogICBwcm9jZWR1cmUgRHJhd19Gb2N1cyAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKTsKICAgLS0gIEVtaXQgYSAiZHJhd19m b2N1cyIgc2lnbmFsIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhlIHdpZGdldCB3aWxsIGJlIHBh aW50ZWQgYXMgaXQgYXBwZWFycyB3aGVuIGl0IGhhcyB0aGUgZm9jdXMuCgogICBwcm9jZWR1cmUg RHJhd19EZWZhdWx0IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAg RW1pdCBhICJkcmF3X2RlZmF1bHQiIHNpZ25hbCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoZSB3 aWRnZXQgd2lsbCBiZSBwYWludGVkIGFzIGl0IGFwcGVhcnMgd2hlbiBpdCBkb2Vzbid0IGhhdmUg dGhlIGZvY3VzLgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gU2l6ZSBhbmQgcG9z aXRpb24gLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTaXplX1Jl cXVlc3QKICAgICAoV2lkZ2V0ICAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAg IFJlcXVpc2l0aW9uIDogaW4gb3V0IEd0a19SZXF1aXNpdGlvbik7CiAgIC0tICBFbWl0IGEgInNp emVfcmVxdWVzdCIgZXZlbnQgZm9yIHRoZSB3aWRnZXQKCiAgIHByb2NlZHVyZSBTaXplX0FsbG9j YXRlCiAgICAgKFdpZGdldCAgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEFs bG9jYXRpb24gOiBpbiBvdXQgR3RrX0FsbG9jYXRpb24pOwogICAtLSAgRW1pdCBhICJzaXplX2Fs bG9jYXRlIiBldmVudCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIEFsbG9jYXRpb24nc2l6ZSBpcyBm aXJzdCBjb25zdHJhaW5lZCB0byBhIHJhbmdlIGJldHdlZW4gMXgxIGFuZAogICAtLSAgMzI3Njd4 MzI3NjcuCiAgIC0tICBBIGNsZWFyIGFuZCBkcmF3IHJlcXVlc3QgaXMgYWxzbyBxdWV1ZWQgaWYg cmVxdWlyZWQuCgogICBmdW5jdGlvbiBHZXRfQ2hpbGRfUmVxdWlzaXRpb24KICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR3RrX1JlcXVpc2l0aW9uOwogICAt LSAgUmV0dXJuIHRoZSBzaXplIHJlcXVlc3RzIGJ5IHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIGlz IHRoZSBpZGVhbCBzaXplIGZvciB0aGUgd2lkZ2V0LCBub3QgbmVjZXNzYXJpbHkgaXRzIGFjdHVh bCBzaXplLgogICAtLSAgU2VlIHRoZSB1c2VyIGd1aWRlJ3Mgc2VjdGlvbiBvbiBob3cgdG8gY3Jl YXRlIG5ldyB3aWRnZXRzIGZvciBtb3JlCiAgIC0tICBpbmZvcm1hdGlvbiBvbiB0aGUgc2l6ZSBy ZXF1aXNpdGlvbiBhbmQgYWxsb2NhdGlvbi4KCiAgIHByb2NlZHVyZSBTZXRfVVBvc2l0aW9uCiAg ICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgWCwgWSAgIDogaW4g R2ludCk7CiAgIC0tICBNb2RpZnkgdGhlIHBvc2l0aW9uIG9mIHRoZSB3aWRnZXQuCiAgIC0tICBU aGlzIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIHRvcGxldmVsIHdpZGdldHMgKHdpbmRvd3MgYW5k IGRpYWxvZ3MpLAogICAtLSAgc2luY2Ugb3RoZXIgd2lkZ2V0cycgcG9zaXRpb25zIGFyZSBoYW5k bGVkIGJ5IHRoZWlyIHBhcmVudC4KCiAgIHByb2NlZHVyZSBTZXRfVVNpemUKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBXaWR0aCwgSGVpZ2h0IDogaW4gR2lu dCk7CiAgIC0tICBNb2RpZnkgdGhlIHNpemUgb2YgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgc2V0 cyBhbiBhYnNvbHV0ZSBzaXplIGZvciB0aGUgd2lkZ2V0LCBubyBtYXR0ZXIgd2hhdCBpdHMgcmVx dWVzdGVkCiAgIC0tICBzaXplIHdvdWxkIGJlLiBGb3IgR3RrX1dpbmRvd3MsIHlvdSBzaG91bGQg Y29uc2lkZXIgdXNpbmcKICAgLS0gIFNldF9EZWZhdWx0X1NpemUgaW5zdGVhZCwgd2hpY2ggc2V0 cyBhIG1pbmltYWwgc2l6ZSwgYnV0IHVzZSB0aGUKICAgLS0gIHdpZGdldCdzIHJlcXVlc3RlZCBz aXplIGlmIGl0IGlzIGJpZ2dlci4KICAgLS0gIElmIFdpZHRoIG9yIEhlaWdodCBpcyBuZWdhdGl2 ZSwgdGhleSBhcmUgaWdub3JlZCwgYW5kIHRoZSB3aWRnZXQncwogICAtLSAgZGVmYXVsdCB3aWR0 aCBpcyBrZXB0LgoKICAgZnVuY3Rpb24gR2V0X0FsbG9jYXRpb25fV2lkdGgKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4g dGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIHdpZGdldC4KCiAgIGZ1bmN0aW9uIEdldF9BbGxvY2F0 aW9uX0hlaWdodAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVy biBHdWludDsKICAgLS0gIFJldHVybiB0aGUgY3VycmVudCBoZWlnaHQgb2YgdGhlIHdpZGdldC4K CiAgIGZ1bmN0aW9uIEdldF9BbGxvY2F0aW9uX1ggKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0 X1JlY29yZCkgcmV0dXJuIEdpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24g b2YgdGhlIHdpZGdldCwgcmVsYXRpdmUgdG8gaXRzIHBhcmVudC4KCiAgIGZ1bmN0aW9uIEdldF9B bGxvY2F0aW9uX1kgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdp bnQ7CiAgIC0tICBSZXR1cm4gdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIHdpZGdldCwgcmVs YXRpdmUgdG8gaXRzIHBhcmVudC4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBBY2NlbGVy YXRvcnMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgQWRkX0FjY2VsZXJh dG9yCiAgICAgKFdpZGdldCAgICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAg QWNjZWxfU2lnbmFsIDogaW4gU3RyaW5nOwogICAgICBBY2NlbF9Hcm91cCAgOiBpbiBHdGsuQWNj ZWxfR3JvdXAuR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBpbiBHZGsuVHlw ZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICAgOiBpbiBHZGsuVHlwZXMuR2RrX01v ZGlmaWVyX1R5cGU7CiAgICAgIEFjY2VsX0ZsYWdzICA6IGluIEd0ay5BY2NlbF9Hcm91cC5HdGtf QWNjZWxfRmxhZ3MpOwogICAtLSAgQWRkIGEgbmV3IGFjY2VsZXJhdG9yIGZvciB0aGUgd2lkZ2V0 LgogICAtLSAgVGhlIHNpZ25hbCBBY2NlbF9TaWduYWwgd2lsbCBiZSBzZW50IHRvIFdpZGdldCB3 aGVuIHRoZSBtYXRjaGluZwogICAtLSAga2V5IGlzIHByZXNzZWQgYW5kIHRoZSB3aWRnZXQgaGFz IHRoZSBmb2N1cy4KCiAgIHByb2NlZHVyZSBSZW1vdmVfQWNjZWxlcmF0b3IKICAgICAoV2lkZ2V0 ICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBY2NlbF9Hcm91cCAgOiBp biBHdGsuQWNjZWxfR3JvdXAuR3RrX0FjY2VsX0dyb3VwOwogICAgICBBY2NlbF9LZXkgICAgOiBp biBHZGsuVHlwZXMuR2RrX0tleV9UeXBlOwogICAgICBBY2NlbF9Nb2RzICAgOiBpbiBHZGsuVHlw ZXMuR2RrX01vZGlmaWVyX1R5cGUpOwogICAtLSAgUmVtb3ZlIGFuIGFjY2VsZXJhdG9yIGZvciB0 aGUgd2lkZ2V0LgoKICAgcHJvY2VkdXJlIFJlbW92ZV9BY2NlbGVyYXRvcnMKICAgICAoV2lkZ2V0 ICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBY2NlbF9TaWduYWwgOiBp biBTdHJpbmc7CiAgICAgIFZpc2libGVfT25seSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CiAgIC0t ICBSZW1vdmUgYWxsIHRoZSBhY2NlbGVyYXRvcnMgZm9yIHRoZSB3aWRnZXQgdGhhdCBlbWl0cyB0 aGUgQWNjZWxfU2lnbmFsCiAgIC0tICBzaWduYWwgd2hlbiB0aGUga2V5IGlzIHByZXNzZWQuCiAg IC0tICBWaXNpYmxlX09ubHkgaXMgY3VycmVudGx5IHVudXNlZCBpbiB0aGUgY29kZSBvZiBndGsr LgoKICAgZnVuY3Rpb24gQWNjZWxlcmF0b3JfU2lnbmFsCiAgICAgKFdpZGdldCAgICAgICA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQWNjZWxfR3JvdXAgIDogaW4gR3RrLkFjY2Vs X0dyb3VwLkd0a19BY2NlbF9Hcm91cDsKICAgICAgQWNjZWxfS2V5ICAgIDogaW4gR2RrLlR5cGVz Lkdka19LZXlfVHlwZTsKICAgICAgQWNjZWxfTW9kcyAgIDogaW4gR2RrLlR5cGVzLkdka19Nb2Rp Zmllcl9UeXBlKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIHNpZ25hbCBpZCBvZiB0 aGUgc2lnbmFsIGVtaXR0ZWQgd2hlbiBBY2NlbF9LZXkgaXMgcHJlc3NlZAogICAtLSAgaW5zaWRl IHRoZSB3aWRnZXQuCgogICBwcm9jZWR1cmUgTG9ja19BY2NlbGVyYXRvcnMgKFdpZGdldCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBMb2NrIHRoZSBhY2NlbGVyYXRvcnMgZm9y IHRoZSB3aWRnZXQuCiAgIC0tICBObyBuZXcgYWNjZWxlcmF0b3IgY2FuIGJlIGFkZGVkIHRvIFdp ZGdldCAodGhlIGRlZmF1bHQgYmVoYXZpb3IgaXMKICAgLS0gIHRoYXQgdGhlIHVzZXIgY2FuIGR5 bmFtaWNhbGx5IGNyZWF0ZSBuZXcgYWNjZWxlcmF0b3JzLCBmb3IgaW5zdGFuY2UKICAgLS0gIGJ5 IHByZXNzaW5nIGEgbm90LXlldCBhc3NpZ25lZCBrZXkgb24gYW55IG1lbnUgaXRlbS4KICAgLS0g IElmIHlvdSBjYWxsIHRoaXMgZnVuY3Rpb24gb24gdGhlIG1lbnVfaXRlbSwgdGhpcyBiZWhhdmlv ciB3aWxsIG5vdAogICAtLSAgbG9uZ2VyIGJlIGFjdGl2YXRlZC4KCiAgIHByb2NlZHVyZSBVbmxv Y2tfQWNjZWxlcmF0b3JzIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAt LSAgVW5sb2NrIHRoZSBhY2NlbGVyYXRvcnMgZm9yIHRoZSB3aWRnZXQuCiAgIC0tICBJdCBpcyBu b3cgcG9zc2libGUgdG8gYWRkIG5ldyBhY2NlbGVyYXRvcnMgdG8gdGhlIHdpZGdldC4KCiAgIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gIEV2ZW50cyBhbmQgc2lnbmFscyAtLQogICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICBmdW5jdGlvbiBFdmVudAogICAgIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgICAgIEV2ZW50ICA6IEdkay5FdmVu dC5HZGtfRXZlbnQpIHJldHVybiBHaW50OwogICAtLSAgRW1pdCBhIHNpZ25hbCBvbiB0aGUgd2lk Z2V0LgogICAtLSAgVGhlIGV4YWN0IHNpZ25hbCBkZXBlbmRzIG9uIHRoZSBldmVudCB0eXBlIChp LmUuIGlmIHRoZSB0eXBlIGlzCiAgIC0tICBHZGtfQnV0dG9uX1ByZXNzLCB0aGVuIGEgImJ1dHRv bl9wcmVzcyIgc2lnbmFsIGlzIGVtaXR0ZWQpLgoKICAgcHJvY2VkdXJlIEFjdGl2YXRlIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCBhbiBhY3RpdmF0ZSBz aWduYWwgb24gdGhlIHdpZGdldC4KICAgLS0gIFRoZSBleGFjdCBzaWduYWwgZW1pdHRlZCBkZXBl bmRzIG9uIHRoZSB3aWRnZXQgdHlwZSAoaS5lLiBmb3IgYQogICAtLSAgR3RrX0J1dHRvbiB0aGlz IGVtaXRzIGEgImNsaWNrZWQiIHNpZ25hbCwgZm9yIGEgR3RrX0VkaXRhYmxlIHRoaXMgZW1pdHMK ICAgLS0gIHRoZSAiYWN0aXZhdGUiIHNpZ25hbCwgLi4uKS4KCiAgIHByb2NlZHVyZSBHcmFiX0Zv Y3VzIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwogICAtLSAgRW1pdCB0aGUg ImdyYWJfZm9jdXMiIHNpZ25hbCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgc2VudCB3 aGVuIHRoZSB3aWRnZXQgZ2V0cyB0aGUgZm9jdXMuIEl0cyB2aXN1YWwgYXNwZWN0IG1pZ2h0CiAg IC0tICBjaGFuZ2UuCiAgIC0tICBUaGUgIkNhbl9Gb2N1cyIgZmxhZyBtdXN0IGhhdmUgYmVlbiBz ZXQgZmlyc3QuCgogICBwcm9jZWR1cmUgU2V0X0V2ZW50cwogICAgIChXaWRnZXQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIEV2ZW50cyA6IGluICAgICBHZGsuVHlwZXMuR2RrX0V2 ZW50X01hc2spOwogICAtLSAgU2V0cyB0aGUgZXZlbnQgbWFzayBmb3IgdGhlIHdpZGdldC4KICAg LS0gIFdpZGdldCBzaG91bGQgbm90IGhhdmUgYmVlbiByZWFsaXplZCBiZWZvcmUsIG9yIG5vdGhp bmcgaXMgZG9uZS4KICAgLS0gIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHlvdSBjYW4gZXhwbGljaXRs eSBnZXQgbW91c2Ugb3Iga2V5Ym9hcmRzIGV2ZW50cyBvbgogICAtLSAgd2lkZ2V0cyB0aGF0IGRv IG5vdCBhdXRvbWF0aWNhbGx5IGdldCB0aGVtLCBhcyBmb3IgaW5zdGFuY2UgaW4gYQogICAtLSAg R3RrX0RyYXdpbmdfQXJlYS4KCiAgIGZ1bmN0aW9uIEdldF9FdmVudHMKICAgICAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR2RrLlR5cGVzLkdka19FdmVudF9NYXNr OwogICAtLSAgR2V0IHRoZSBldmVudCBtYXNrIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBp bmRpY2F0ZXMgdGhlIGxpc3Qgb2YgZXZlbnRzIHRoYXQgdGhlIHdpZGdldCByZWNlaXZlcy4KCiAg IHByb2NlZHVyZSBBZGRfRXZlbnRzCiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZDsKICAgICAgRXZlbnRzIDogaW4gICAgIEdkay5UeXBlcy5HZGtfRXZlbnRfTWFzayk7CiAg IC0tICBBZGQgc29tZSBldmVudHMgdG8gdGhlIGN1cnJlbnQgZXZlbnQgbWFzayBvZiB0aGUgd2lk Z2V0LgoKICAgcHJvY2VkdXJlIFNldF9FeHRlbnNpb25fRXZlbnRzCiAgICAgKFdpZGdldCA6IGFj Y2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgTW9kZSAgIDogaW4gICAgIEdkay5UeXBlcy5H ZGtfRXh0ZW5zaW9uX01vZGUpOwogICAtLSAgU2V0IHRoZSBleHRlbnNpb24gZXZlbnQgbWFzayBm b3IgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgdXNlZCB0byBhY3RpdmF0ZSBzb21lIHNwZWNp YWwgaW5wdXQgbW9kZXMgZm9yIG90aGVyIGRldmljZXMgdGhhbgogICAtLSAga2V5Ym9hcmQgYW5k IG1vdXNlLgoKICAgZnVuY3Rpb24gR2V0X0V4dGVuc2lvbl9FdmVudHMKICAgICAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gR2RrLlR5cGVzLkdka19FeHRlbnNpb25f TW9kZTsKICAgLS0gIFJldHVybiB0aGUgY3VycmVudCBleHRlbnNpb24gZXZlbnRzIG1hc2suCgog ICBmdW5jdGlvbiBEZWZhdWx0X01vdGlvbl9Ob3RpZnlfRXZlbnQKICAgICAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2Rr X0V2ZW50KSByZXR1cm4gR2ludDsKICAgLS0gIEFjY2VzcyB0byB0aGUgc3RhbmRhcmQgZGVmYXVs dCBjYWxsYmFjayBmb3IgbW90aW9uIGV2ZW50czoKICAgLS0gIFRoaXMgaXMgbWFpbmx5IHVzZWQg Zm9yIHJ1bGVycyBpbiBHdGsuUnVsZXIgKFNlZSB0aGUgZXhhbXBsZSBpbgogICAtLSAgdGVzdGd0 aywgd2l0aCBjcmVhdGVfcnVsZXJzLmFkYikKCiAgIGZ1bmN0aW9uIEhhc19EZWZhdWx0X01vdGlv bl9Ob3RpZnlfSGFuZGxlcgogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgUmV0dXJuIFRydWUgaWYgV2lkZ2V0IGhhcyBh IGRlZmF1bHQgaGFuZGxlciBmb3IgbW90aW9uX25vdGlmeSBldmVudHMuCiAgIC0tICBOb3RlIHRo YXQgdGhlIGZ1bmN0aW9uIERlZmF1bHRfTW90aW9uX05vdGlmeV9FdmVudCBzaG91bGQgbm90IGJl IGNhbGxlZAogICAtLSAgaWYgdGhpcyBvbmUgcmV0dXJucyBGYWxzZSwgc2luY2UgaXQgd291bGQg Y3JlYXRlIGEgc2VnbWVudGF0aW9uIGZhdWx0LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgLS0gQ29sb3JzIGFuZCBjb2xvcm1hcHMgLS0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCiAgIGZ1bmN0aW9uIEdldF9Db2xvcm1hcAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQpIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFwOwogICAtLSAgUmV0 dXJuIHRoZSBjb2xvcm1hcCB1c2VkIGZvciB0aGUgd2lkZ2V0LiBUaGlzIHdpbGwgZ2VuZXJhbGx5 IGJlIHRoZQogICAtLSAgc2FtZSBvbmUgZm9yIGFsbCB3aWRnZXRzLCBidXQgbWlnaHQgYmUgZGlm ZmVyZW50IGlmIGZvciBpbnN0YW5jZSBhCiAgIC0tICBHdGtfRHJhd2luZ19BcmVhIG5lZWRzIHRv IGRpc3BsYXkgc29tZSBkaWZmZXJlbnQgY29sb3JzIG9uIGEgc2NyZWVuCiAgIC0tICB0aGF0IG9u bHkgaGFzIGEgbGltaXRlZCBhbW91bnQgb2YgY29sb3JzLgoKICAgZnVuY3Rpb24gR2V0X1Zpc3Vh bAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBHZGsuVmlz dWFsLkdka19WaXN1YWw7CiAgIC0tICBHZXQgdGhlIHZpc3VhbCB1c2VkIGZvciB0aGUgd2lkZ2V0 LgogICAtLSAgSS5lLiB0aGUgc3RydWN0dXJlIHRoYXQgaW5kaWNhdGVzIHRoZSBkZXB0aCBvZiB0 aGUgd2lkZ2V0IChudW1iZXIgb2YKICAgLS0gIGJpdHMgcGVyIHBpeGVsKSwgYW5kIHNvbWUgaW5m b3JtYXRpb24gdXNlZCBpbnRlcm5hbGx5IGJ5IEd0a0FkYSB0bwogICAtLSAgaGFuZGxlIGNvbG9y cyBhbmQgY29sb3JtYXBzLgoKICAgcHJvY2VkdXJlIFNldF9Db2xvcm1hcAogICAgIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIENtYXAgOiBHZGsuQ29sb3IuR2RrX0Nv bG9ybWFwKTsKICAgLS0gIE1vZGlmeSB0aGUgY29sb3JtYXAgb2YgdGhlIHdpZGdldC4KICAgLS0g IFRoZSB3aWRnZXQgbXVzdCBub3QgaGF2ZSBiZWVuIHJlYWxpemVkLgoKICAgcHJvY2VkdXJlIFNl dF9WaXN1YWwKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBW aXN1YWwgOiBHZGsuVmlzdWFsLkdka19WaXN1YWwpOwogICAtLSAgTW9kaWZ5IHRoZSB2aXN1YWwg b2YgdGhlIHdpZGdldC4KICAgLS0gIFRoZSB3aWRnZXQgbXVzdCBub3QgaGF2ZSBiZWVuIHJlYWxp emVkLgoKICAgcHJvY2VkdXJlIFB1c2hfQ29sb3JtYXAgKENtYXAgOiBHZGsuQ29sb3IuR2RrX0Nv bG9ybWFwKTsKICAgLS0gIE1vZGlmeSB0ZW1wb3JhcmlseSB0aGUgZGVmYXVsdCBjb2xvcm1hcCBz ZXQgZm9yIG5ld2x5IGNyZWF0ZWQgd2lkZ2V0cy4KICAgLS0gIFlvdSBzaG91bGQgdXNlIHRoaXMg aW4gcGFpciB3aXRoIFBvcF9Db2xvcm1hcCBiZWxvdyAoUHVzaCB0aGUgbmV3IHZhbHVlLAogICAt LSAgY3JlYXRlIHRoZSB3aWRnZXQsIGFuZCBwb3AgdGhlIHZhbHVlKS4KCiAgIHByb2NlZHVyZSBQ b3BfQ29sb3JtYXA7CiAgIC0tICBTZWUgUHVzaF9Db2xvcm1hcCBmb3IgbW9yZSBpbmZvcm1hdGlv bi4KCiAgIHByb2NlZHVyZSBQdXNoX1Zpc3VhbCAoVmlzdWFsIDogR2RrLlZpc3VhbC5HZGtfVmlz dWFsKTsKICAgLS0gIE1vZGlmeSB0ZW1wb3JhcmlseSB0aGUgZGVmYXVsdCB2aXN1YWwgc2V0IGZv ciBuZXdseSBjcmVhdGVkIHdpZGdldHMuCiAgIC0tICBZb3Ugc2hvdWxkIHVzZSB0aGlzIGluIHBh aXIgd2l0aCBQb3BfQ29sb3JtYXAgYmVsb3cgKFB1c2ggdGhlIG5ldyB2YWx1ZSwKICAgLS0gIGNy ZWF0ZSB0aGUgd2lkZ2V0LCBhbmQgcG9wIHRoZSB2YWx1ZSkuCgogICBwcm9jZWR1cmUgUG9wX1Zp c3VhbDsKICAgLS0gIFNlZSBQdXNoX1Zpc3VhbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgIGZ1 bmN0aW9uIEdldF9EZWZhdWx0X0NvbG9ybWFwIHJldHVybiBHZGsuQ29sb3IuR2RrX0NvbG9ybWFw OwogICAtLSAgUmV0dXJuIHRoZSBkZWZhdWx0IGNvbG9ybWFwIHVzZWQgd2hlbiBhIHdpZGdldCBp cyBjcmVhdGVkLgoKICAgcHJvY2VkdXJlIFNldF9EZWZhdWx0X0NvbG9ybWFwIChDbWFwIDogR2Rr LkNvbG9yLkdka19Db2xvcm1hcCk7CiAgIC0tICBNb2RpZnkgcGVybWFuZW50bHkgdGhlIGRlZmF1 bHQgY29sb3JtYXAgdXNlZCB3aGVuIGEgd2lkZ2V0IGlzIGNyZWF0ZWQuCiAgIC0tICBJZiB5b3Ug b25seSB3YW50IHRvIG1vZGlmeSB0aGlzIGNvbG9ybWFwIHRlbXBvcmFyaWx5IGZvciBhIGZldyB3 aWRnZXRzLAogICAtLSAgeW91IHNob3VsZCBjb25zaWRlciB1c2luZyBQdXNoX0NvbG9ybWFwIGFu ZCBQb3BfQ29sb3JtYXAgaW5zdGVhZC4KCiAgIGZ1bmN0aW9uIEdldF9EZWZhdWx0X1Zpc3VhbCBy ZXR1cm4gR2RrLlZpc3VhbC5HZGtfVmlzdWFsOwogICAtLSAgUmV0dXJuIHRoZSBkZWZhdWx0IHZp c3VhbCB1c2VkIHdoZW4gYSBuZXcgd2lkZ2V0IGlzIGNyZWF0ZWQuCgogICBwcm9jZWR1cmUgU2V0 X0RlZmF1bHRfVmlzdWFsIChWaXN1YWwgOiBHZGsuVmlzdWFsLkdka19WaXN1YWwpOwogICAtLSAg TW9kaWZ5IHBlcm1hbmVudGx5IHRoZSBkZWZhdWx0IHZpc3VhbCB1c2VkIHdoZW4gYSB3aWRnZXQg aXMgY3JlYXRlZC4KICAgLS0gIElmIHlvdSBvbmx5IHdhbnQgdG8gbW9kaWZ5IHRoaXMgdmlzdWFs IHRlbXBvcmFyaWx5IGZvciBhIGZldyB3aWRnZXRzLAogICAtLSAgeW91IHNob3VsZCBjb25zaWRl ciB1c2luZyBQdXNoX1Zpc3VhbCBhbmQgUG9wX1Zpc3VhbCBpbnN0ZWFkLgoKICAgLS0tLS0tLS0t LS0tCiAgIC0tIFN0eWxlcyAtLQogICAtLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBQdXNoX1N0 eWxlIChTdHlsZSA6IEd0ay5TdHlsZS5HdGtfU3R5bGUpOwogICAtLSAgQ2hhbmdlIHRoZSBkZWZh dWx0IHZhbHVlcyBmb3Igc3R5bGVzLgogICAtLSAgVGhpcyBpcyBnZW5lcmFsbHkgdXNlZCBqdXN0 IGJlZm9yZSBjcmVhdGluZyBhIHdpZGdldC4gWW91IHNob3VsZCB1c2UKICAgLS0gIHRoaXMgcHJv Y2VkdXJlIGluIHBhaXIgd2l0aCBQb3BfU3R5bGUgKFB1c2ggdGhlIG5ldyB2YWx1ZSwgY3JlYXRl IHRoZQogICAtLSAgd2lkZ2V0IHRoZW4gcG9wIHRoZSB2YWx1ZSkKCiAgIHByb2NlZHVyZSBQb3Bf U3R5bGU7CiAgIC0tICBSZXN0b3JlIHRoZSBkZWZhdWx0IHZhbHVlcyBmb3Igc3R5bGVzLgogICAt LSAgVGhpcyBpcyBnZW5lcmFsbHkgdXNlZCBqdXN0IGFmdGVyIGNyZWF0aW5nIGEgd2lkZ2V0LiBZ b3Ugc2hvdWxkIHVzZQogICAtLSAgdGhpcyBwcm9jZWR1cmUgaW4gcGFpciB3aXRoIFB1c2hfU3R5 bGUgKFB1c2ggdGhlIG5ldyB2YWx1ZSwgY3JlYXRlIHRoZQogICAtLSAgd2lkZ2V0IHRoZW4gcG9w IHRoZSB2YWx1ZSkKCiAgIHByb2NlZHVyZSBTZXRfU3R5bGUKICAgICAoV2lkZ2V0IDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBTdHlsZSAgOiBHdGsuU3R5bGUuR3RrX1N0eWxlKTsK ICAgLS0gIFNldCB0aGUgc3R5bGUgZm9yIGEgZ2l2ZW4gd2lkZ2V0LgoKICAgZnVuY3Rpb24gR2V0 X1N0eWxlIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpCiAgICAgcmV0dXJuIEd0 ay5TdHlsZS5HdGtfU3R5bGU7CiAgIC0tICBSZXR1cm4gdGhlIHN0eWxlIG9mIGEgZ2l2ZW4gd2lk Z2V0LgoKICAgcHJvY2VkdXJlIE1vZGlmeV9TdHlsZQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQ7CiAgICAgIFN0eWxlICA6IEd0a19SY19TdHlsZSk7CiAgIC0tICBNb2Rp ZnkgdGhlIGRlZmF1bHQgc3R5bGUgb2YgYSB3aWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X0RlZmF1 bHRfU3R5bGUgKFN0eWxlIDogR3RrLlN0eWxlLkd0a19TdHlsZSk7CiAgIC0tICBTZXQgdGhlIGRl ZmF1bHQgZ2xvYmFsIHN0eWxlLgoKICAgZnVuY3Rpb24gR2V0X0RlZmF1bHRfU3R5bGUgcmV0dXJu IEd0ay5TdHlsZS5HdGtfU3R5bGU7CiAgIC0tICBHZXQgdGhlIGRlZmF1bHQgZ2xvYmFsIHN0eWxl LgoKICAgcHJvY2VkdXJlIFNldF9SY19TdHlsZSAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkKTsKICAgLS0gIFJlc3RvcmUgdGhlIGRlZmF1bHQgc3R5bGUgb2YgYSB3aWRnZXQuCiAg IC0tICBUaGUgZGVmYXVsdCBzdHlsZSBpcyBnaXZlbiBieSB0aGUgY29uZmlndXJhdGlvbiBmaWxl IGluaXRpYWxseSBwYXJzZWQKICAgLS0gIGJ5IEd0a0FkYS4KCiAgIHByb2NlZHVyZSBFbnN1cmVf U3R5bGUgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCk7CiAgIC0tICBNYWtlIHN1 cmUgdGhhdCB0aGUgd2lkZ2V0IGhhcyBhIHN0eWxlIGFzc29jaWF0ZWQgdG8gaXQuCiAgIC0tICBF aXRoZXIgdGhlIGRlZmF1bHQgb25lIGFzIHNldCBieSBTZXRfUmNfU3R5bGUgYWJvdmUgb3Igb25l IHNldCBieSB0aGUKICAgLS0gIHVzZXIgd2l0aCBTZXRfU3R5bGUuCgogICBwcm9jZWR1cmUgUmVz dG9yZV9EZWZhdWx0X1N0eWxlIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwog ICAtLSAgUmVzdG9yZSB0aGUgZGVmYXVsdCBzdHlsZSB0aGF0IHdhcyBzZXQgZm9yIHRoZSB3aWRn ZXQuCiAgIC0tICBUaGUgZGVmYXVsdCBzdHlsZSBpcyB0aGUgZmlyc3Qgb25lIHRoYXQgd2FzIHNl dCBlaXRoZXIgYnkgYSBjYWxsCiAgIC0tICB0byBTZXRfU3R5bGUgb3IgU2V0X1JjX1N0eWxlLgoK ICAgcHJvY2VkdXJlIFJlc2V0X1JjX1N0eWxlcyAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkKTsKICAgLS0gIFJlc3RvcmUgdGhlIFJjIHN0eWxlIHJlY3Vyc2l2ZWx5IGZvciB3aWRn ZXQgYW5kIGl0cyBjaGlsZHJlbi4KCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gV2lkZ2V0 cycgdHJlZSAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tCgogICBwcm9jZWR1cmUgU2V0X05hbWUK ICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBOYW1lICAgOiBp biBTdHJpbmcpOwogICAtLSAgU2V0IHRoZSBuYW1lIGZvciB0aGUgd2lkZ2V0LgogICAtLSAgVGhp cyBuYW1lIGlzIHVzZWQgcHVyZWx5IGludGVybmFsbHkgdG8gaWRlbnRpZnkgdGhlIHdpZGdldCwg YW5kIGRvZXMgbm90CiAgIC0tICBnaXZlIGFueSB2aXN1YWwgY2x1ZS4KCiAgIGZ1bmN0aW9uIEdl dF9OYW1lIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJldHVybiBTdHJpbmc7 CiAgIC0tICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHdpZGdldCBpZiBpdCB3YXMgc2V0IGJ5IFNl dF9OYW1lLgogICAtLSAgUmV0dXJuIHRoZSBuYW1lIG9mIGl0cyBjbGFzcyBvdGhlcndpc2UuCgog ICBwcm9jZWR1cmUgU2V0X1BhcmVudAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9S ZWNvcmQ7CiAgICAgIFBhcmVudCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAg IC0tICBNb2RpZnkgdGhlIHBhcmVudCBmb3IgdGhlIHdpZGdldC4KICAgLS0gIFRoaXMgaXMgbm90 IHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gZG8gdGhpcywgeW91IHNob3VsZCB1c2UKICAgLS0gIEd0 ay5Db250YWluZXIuQWRkIG9yIEd0ay5Cb3guUGFja19TdGFydCBpbnN0ZWFkLgoKICAgcHJvY2Vk dXJlIFNldF9QYXJlbnRfV2luZG93CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1Jl Y29yZDsKICAgICAgV2luZG93IDogR2RrLldpbmRvdy5HZGtfV2luZG93KTsKICAgLS0gIFNldCB0 aGUgcGFyZW50IHdpbmRvdyBmb3IgdGhlIGFjdHVhbCBHZGtfV2luZG93IG9mIHRoZSB3aWRnZXQu IFRoaXMgc2V0cwogICAtLSAgdXAgcmVxdWlyZWQgaW50ZXJuYWwgZmllbGRzLCBhbmQgc2hvdWxk IGJlIHVzZWQgb25seSB3aGVuIHlvdSBpbXBsZW1lbnQKICAgLS0gIHlvdXIgb3duIGNvbnRhaW5l ciwgYXMgb3Bwb3NlZCB0byB1c2luZyBvbmUgb2YgdGhlIHN0YW5kYXJkIGNvbnRhaW5lcnMuCgog ICBmdW5jdGlvbiBHZXRfUGFyZW50IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQp IHJldHVybiBHdGtfV2lkZ2V0OwogICAtLSAgUmV0dXJuIHRoZSBwYXJlbnQgb2YgdGhlIHdpZGdl dCwgb3IgbnVsbCBpZiBXaWRnZXQgaXMgYSB0b3BsZXZlbAogICAtLSAgd2lkZ2V0LgoKICAgZnVu Y3Rpb24gR2V0X1RvcGxldmVsIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpIHJl dHVybiBHdGtfV2lkZ2V0OwogICAtLSAgUmV0dXJuIHRoZSB0b3BsZXZlbCBhbmNlc3RvciBvZiB0 aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBpcyB0aGUgd2luZG93IG9yIGRpYWxvZyBpbiB3aGljaCB0 aGUgd2lkZ2V0IGlzIGluY2x1ZGVkLgogICAtLSAgVGhlIHdpZGdldCByZXR1cm5lZCBkb2VzIG5v dCBoYXZlIGFueSBwYXJlbnQuCgogICBmdW5jdGlvbiBHZXRfQW5jZXN0b3IKICAgICAoV2lkZ2V0 ICAgICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQW5jZXN0b3JfVHlwZSA6 IGluIEd0a19UeXBlKSByZXR1cm4gR3RrX1dpZGdldDsKICAgLS0gIFJldHVybiB0aGUgY2xvc2Vz dCBhbmNlc3RvciBvZiBXaWRnZXQgd2hpY2ggaXMgb2YgdHlwZSBBbmNlc3Rvcl9UeXBlLgogICAt LSAgUmV0dXJuIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KCiAgIGZ1bmN0aW9uIElzX0FuY2VzdG9y CiAgICAgKFdpZGdldCAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkOwogICAgICBBbmNlc3Rv ciA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0t ICBSZXR1cm4gVHJ1ZSBpZiBBbmNlc3RvciBpcyBpbiB0aGUgYW5jZXN0b3IgdHJlZSBmb3IgV2lk Z2V0LgogICAtLSAgSS5lLiBpZiBXaWRnZXQgaXMgY29udGFpbmVkIHdpdGhpbiBBbmNlc3Rvci4K CiAgIHByb2NlZHVyZSBSZXBhcmVudAogICAgIChXaWRnZXQgICAgIDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkOwogICAgICBOZXdfUGFyZW50IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0Ns YXNzKTsKICAgLS0gIENoYW5nZSB0aGUgcGFyZW50IG9mIHRoZSB3aWRnZXQgZHluYW1pY2FsbHku CiAgIC0tICBJZiBib3RoIHRoZSBuZXcgcGFyZW50IGFuZCB0aGUgd2lkZ2V0IGFyZSBzaG93biwg dGhlbiB0aGUgd2lkZ2V0IGlzCiAgIC0tICB2aXN1YWxseSByZWRyYXduIGluIGl0cyBuZXcgcGFy ZW50LgoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgLS0gTWlzYyBmdW5jdGlvbnMgLS0KICAg LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgIHByb2NlZHVyZSBTZXRfU2Nyb2xsX0FkanVzdG1lbnRz CiAgICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgSGFkaiAgIDog R3RrLkFkanVzdG1lbnQuR3RrX0FkanVzdG1lbnQ7CiAgICAgIFZhZGogICA6IEd0ay5BZGp1c3Rt ZW50Lkd0a19BZGp1c3RtZW50KTsKICAgLS0gIEVtaXQgdGhlICJzZXRfc2Nyb2xsX2FkanVzdG1l bnRzIiBzaWduYWwuCiAgIC0tICBUaGUgZXhhY3Qgc2lnbmFsIGVtaXR0ZWQgZGVwZW5kcyBvbiB0 aGUgd2lkZ2V0IHR5cGUgKHNlZQogICAtLSAgR3RrLk9iamVjdC5Jbml0aWFsaXplX0NsYXNzX1Jl Y29yZCkuCiAgIC0tICBUaGUgaGFuZGxlciBjcmVhdGVzIHRoZSBhZGp1c3RtZW50cyBpZiBudWxs IGlzIHBhc3NlZCBhcyBhcmd1bWVudCwgYW5kCiAgIC0tICBtYWtlcyBzdXJlIGJvdGggYWRqdXN0 bWVudHMgYXJlIGluIHRoZSBjb3JyZWN0IHJhbmdlLgoKICAgcHJvY2VkdXJlIFBvcHVwIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7IFgsIFkgOiBpbiBHaW50KTsKICAgLS0gIFJl YWxpemUgdGhlIHdpZGdldCAoc2VlIFJlYWxpemUgYWJvdmUpLCBtb3ZlcyBpdCB0byB0aGUgc2Ny ZWVuIHBvc2l0aW9uCiAgIC0tICAoWCwgWSksIGFuZCBzaG93cyB0aGUgd2lkZ2V0LgogICAtLSAg VGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciB0b3BsZXZlbCB3aW5kb3dzIGFuZCBkaWFsb2dz LCBhcyB5b3UgY2FuCiAgIC0tICBubyBtb2RpZnkgdGhlIHBvc2l0aW9uIG9mIGEgd2lkZ2V0IHRo YXQgaGFzIGEgcGFyZW50ICh0aGUgcGFyZW50IGlzCiAgIC0tICB0aGVuIHJlc3BvbnNpYmxlIGZv ciBpdHMgcG9zaXRpb24pLgoKICAgZnVuY3Rpb24gSW50ZXJzZWN0CiAgICAgKFdpZGdldCAgICAg ICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQXJlYSAgICAgICAgIDogR2RrLlJl Y3RhbmdsZS5HZGtfUmVjdGFuZ2xlOwogICAgICBJbnRlcnNlY3Rpb24gOiBhY2Nlc3MgR2RrLlJl Y3RhbmdsZS5HZGtfUmVjdGFuZ2xlKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFJldHVybiBUcnVl IGlmIHRoZSB3aWRnZXQgaW50ZXJzZWN0cyB0aGUgc2NyZWVuIGFyZWEgQXJlYS4KICAgLS0gIFRo ZSBpbnRlcnNlY3Rpb24gYXJlYSBpcyByZXR1cm5lZCBpbiBJbnRlcnNlY3Rpb24uCgogICBwcm9j ZWR1cmUgR3JhYl9EZWZhdWx0IChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQpOwog ICAtLSAgVGhlIHdpZGdldCBiZWNvbWVzIHRoZSBkZWZhdWx0IHdpZGdldCBmb3IgaXRzIHBhcmVu dCB3aW5kb3cgb3IgZGlhbG9nLgogICAtLSAgQWxsIGtleWJvYXJkIGV2ZW50cyB3aWxsIGJlIHNl bnQgdG8gaXQgaWYgbm8gb3RoZXIgd2lkZ2V0IGhhcyB0aGUgZm9jdXMuCiAgIC0tICBOb3RlIHRo YXQgdGhlICJDYW5fRGVmYXVsdCIgZmxhZyBtdXN0IGhhdmUgYmVlbiBzZXQgZmlyc3Qgb24gV0lE R0VULgoKICAgcHJvY2VkdXJlIFNldF9TdGF0ZQogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQ7CiAgICAgIFN0YXRlIDogaW4gRW51bXMuR3RrX1N0YXRlX1R5cGUpOwogICAt LSAgTW9kaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgd2lkZ2V0LgogICAtLSAgVGhpcyBtb2RpZmllcyBp dHMgdmlzdWFsIGFzcGVjdCwgYW5kIHRodXMgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UKICAg LS0gIGNoYW5nZSBpdHMgYmVoYXZpb3IgYXQgdGhlIHNhbWUgdGltZSwgc28gYXMgbm90IHRvIGNv bmZ1c2UgdGhlIHVzZXIuCgogICBmdW5jdGlvbiBHZXRfU3RhdGUKICAgICAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkKSByZXR1cm4gRW51bXMuR3RrX1N0YXRlX1R5cGU7CiAgIC0t ICBSZXR1cm4gdGhlIHN0YXRlIG9mIHRoZSB3aWRnZXQuCgogICBwcm9jZWR1cmUgU2V0X1NlbnNp dGl2ZQogICAgIChXaWRnZXQgICAgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFNl bnNpdGl2ZSA6IGluIEJvb2xlYW4gOj0gVHJ1ZSk7CiAgIC0tICBNb2RpZnkgdGhlIHNlbnNpdGl2 aXR5IG9mIHRoZSB3aWRnZXQuCiAgIC0tICBBbiBpbnNlbnNpdGl2ZSB3aWRnZXQgaXMgZ2VuZXJh bGx5IGdyYXllZCBvdXQsIGFuZCBjYW4gbm90IGJlIGFjdGl2YXRlZC4KICAgLS0gIEZvciBpbnN0 YW5jZSwgYW4gaW5zZW5zaXRpdmUgbWVudSBpdGVtIGlzIGdyYXllZCwgYW5kIGNhbiBuZXZlciBi ZQogICAtLSAgc2VsZWN0ZWQuCgogICBwcm9jZWR1cmUgU2V0X0FwcF9QYWludGFibGUKICAgICAo V2lkZ2V0ICAgICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgQXBwX1BhaW50 YWJsZSA6IEJvb2xlYW4pOwogICAtLSAgTW9kaWZ5IHRoZSAiQXBwX1BhaW50YWJsZSIgZmxhZyBm b3IgdGhlIHdpZGdldC4KCiAgIHByb2NlZHVyZSBHZXRfUG9pbnRlcgogICAgIChXaWRnZXQgOiBh Y2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFggICAgICA6IG91dCBHaW50OwogICAgICBZ ICAgICAgOiBvdXQgR2ludCk7CiAgIC0tICBSZXR1cm4gdGhlIGNvb3JkaW5hdGVzIG9mIHRoZSBw b2ludGVyIChpLmUuIG1vdXNlKSByZWxhdGl2ZSB0byBXaWRnZXQuCgogICBwcm9jZWR1cmUgU2V0 X1dpbmRvdwogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQ7CiAgICAgIFdp bmRvdyA6IGluIEdkay5XaW5kb3cuR2RrX1dpbmRvdyk7CiAgIC0tICBTZXQgdGhlIEdkayB3aW5k b3cgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aWRnZXQuCgogICBmdW5jdGlvbiBHZXRfV2luZG93CiAg ICAgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCkgcmV0dXJuIEdkay5XaW5kb3cu R2RrX1dpbmRvdzsKICAgLS0gIEdldCB0aGUgR2RrIHdpbmRvdyBhc3NvY2lhdGVkIHdpdGggdGhl IHdpZGdldC4KICAgLS0gIFlvdSBjYW4gdXNlIHRoaXMgd2luZG93IGlmIHlvdSBuZWVkIHRvIGRy YXcgZGlyZWN0bHkgb24gdGhlIHdpZGdldCB1c2luZwogICAtLSAgdGhlIGZ1bmN0aW9ucyBmb3Vu ZCBpbiB0aGUgR2RrIGhpZXJhcmNoeS4KCiAgIHByb2NlZHVyZSBTaGFwZV9Db21iaW5lX01hc2sK ICAgICAoV2lkZ2V0ICAgICA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZDsKICAgICAgU2hhcGVf TWFzayA6IEdkay5CaXRtYXAuR2RrX0JpdG1hcDsKICAgICAgT2Zmc2V0X1ggICA6IEdpbnQ7CiAg ICAgIE9mZnNldF9ZICAgOiBHaW50KTsKICAgLS0gIE1vZGlmeSB0aGUgc2hhcGUgb2YgdGhlIHdp bmRvdyB0aGF0IGNvbnRhaW5zIHRoZSB3aWRnZXQuCiAgIC0tICBUaGlzIGFsbG93cyBmb3IgdHJh bnNwYXJlbnQgd2luZG93cywgYW5kIHJlcXVpcmVzIHRoZSBYZXh0IGxpYnJhcnkgdG8gYmUKICAg LS0gIGF2YWlsYWJsZSBvbiB5b3VyIHN5c3RlbS4gSWYgdGhpcyBsaWJyYXJ5IGlzIG5vdCBhdmFp bGFibGUsIHlvdXIgcHJvZ3JhbQogICAtLSAgd2lsbCBzdGlsbCB3b3JrLgogICAtLSAgU2VlIHRo ZSBtYW51YWwgcGFnZSBmb3IgWFNoYXBlQ29tYmluZU1hc2soM3gpIGZvciBtb3JlIGluZm9ybWF0 aW9uLgoKICAgLS0tLS0tLS0tLS0KICAgLS0gRmxhZ3MgLS0KICAgLS0tLS0tLS0tLS0KICAgLS0g IFNvbWUgYWRkaXRpb25hbCBmbGFncyBhcmUgZGVmaW5lZCBmb3IgYWxsIHRoZSB2aXN1YWwgb2Jq ZWN0cyAod2lkZ2V0cykuCiAgIC0tICBUaGV5IGFyZSBkZWZpbmVkIGluIGFkZGl0aW9uIHRvIHRo ZSBvbmVzIGRlZmluZWQgaW4gR3RrLk9iamVjdC4KICAgLS0gIFRoZXNlIGZsYWdzIGFyZSBpbXBv cnRhbnQgaW4gdGhhdCB0aGV5IGRlZmluZSBleGFjdGx5IHRoZSBkaWZmZXJlbnQKICAgLS0gIHN0 YXRlcyBhIHdpZGdldCBjYW4gYmUgaW4uCiAgIC0tCiAgIC0tICAtICJUb3BsZXZlbCI6CiAgIC0t ICAgIFNldCBpZiB0aGUgd2lkZ2V0IGlzIGEgdG9wbGV2ZWwgd2lkZ2V0LCBpZSBoYXMgbm8gcGFy ZW50LiBUaGlzIGlzCiAgIC0tICAgIG1vc3RseSB0cnVlIGZvciB3aW5kb3dzIGFuZCBkaWFsb2dz LgogICAtLQogICAtLSAgLSAiTm9fV2luZG93IjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQg ZG9lcyBub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIFgxMSB3aW5kb3csIGllIGNhbiBub3QKICAgLS0g ICAgcmVjZWl2ZSBldmVudHMgZGlyZWN0bHkuIEZvciBpbnN0YW5jZSwgYSBHdGtfVG9vbGJhciBk b2VzIG5vdCBoYXZlCiAgIC0tICAgIGFuIGFzc29jaWF0ZWQgd2luZG93LiBUaGVzZSBvYmplY3Rz IGFyZSBtb3JlIGxpZ2h0d2VpZ2h0LCBidXQgcmVxdWlyZQogICAtLSAgICBtb3JlIHdvcmsgZnJv bSBHdGtBZGEuIFRoaXMgZmxhZyBpcyBvbmx5IHNldCBpZiB0aGUgd2lkZ2V0IHdpbGwgbmV2ZXIK ICAgLS0gICAgaGF2ZSBhIHdpbmRvdywgZXZlbiBhZnRlciBpdCBpcyByZWFsaXplZC4KICAgLS0K ICAgLS0gIC0gIlJlYWxpemVkIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgaGFzIGJlZW4g cmVhbGl6ZWQsIGllIGl0cyBhc3NvY2lhdGVkIFgxMSB3aW5kb3cgaGFzCiAgIC0tICAgIGJlZW4g Y3JlYXRlZCAocHJvdmlkaW5nIHRoZSB3aWRnZXQgZXhjZXB0cyBhIHdpbmRvdywgc2VlIHRoZSBO b19XaW5kb3cKICAgLS0gICAgZmxhZwogICAtLQogICAtLSAgLSAiTWFwcGVkIjoKICAgLS0gICAg U2V0IGlmIHRoZSB3aWRnZXQgaXMgdmlzaWJsZSBvbiB0aGUgc2NyZWVuLiBUaGlzIGlzIG9ubHkg cG9zc2libGUgaWYKICAgLS0gICAgdGhlIFZpc2libGUgZmxhZyBpcyBhbHNvIHNldC4KICAgLS0K ICAgLS0gIC0gIlZpc2libGUiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCB3aWxsIGJlIGRp c3BsYXllZCBvbiB0aGUgc2NyZWVuIHdoZW4gbWFwcGVkIChzZWUgdGhlCiAgIC0tICAgIGZ1bmN0 aW9ucyBTaG93IGFuZCBIaWRlIGluIHRoaXMgcGFja2FnZSkuCiAgIC0tCiAgIC0tICAtICJTZW5z aXRpdmUiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCBpcyBsaXN0ZW5pbmcgdG8gZXZlbnRz LiBTZWUgdGhlIGZ1bmN0aW9uCiAgIC0tICAgIFNldF9TZW5zaXRpdmUgaW4gdGhpcyBwYWNrYWdl LiBBbiBpbnNlbnNpdGl2ZSB3aWRnZXQgd2lsbCBnZW5lcmFsbHkKICAgLS0gICAgaGF2ZSBhIGRp ZmZlcmVudCB2aXN1YWwgYXNwZWN0IHRvIGNsdWUgdGhhdCBpdCBpcyB1bmF2YWlsYWJsZSAoZm9y CiAgIC0tICAgIGluc3RhbmNlIGFuIGluc2Vuc2l0aXZlIGl0ZW0gbWVudSB3aWxsIGJlIGdyYXll ZCkKICAgLS0KICAgLS0gIC0gIlBhcmVudF9TZW5zaXRpdmUiOgogICAtLSAgICBTZXQgaWYgdGhl IHBhcmVudCBpcyBzZW5zaXRpdmUuIEEgd2lkZ2V0IGlzIHNlbnNpdGl2ZSBvbmx5IGlmIGJvdGgK ICAgLS0gICAgdGhlIFNlbnNpdGl2ZSBhbmQgUGFyZW50X1NlbnNpdGl2ZSBhcmUgc2V0LgogICAt LQogICAtLSAgLSAiQ2FuX0ZvY3VzIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQgY2FuIGhh dmUgdGhlIGZvY3VzLCBpZSBnZXQga2V5Ym9hcmQgZXZlbnRzLiBNb3N0CiAgIC0tICAgIHdpZGdl dHMgY2FuIG5vdCBoYXZlIHRoZSBmb2N1cy4KICAgLS0KICAgLS0gIC0gIkhhc19Gb2N1cyI6CiAg IC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IGN1cnJlbnRseSBoYXMgdGhlIGZvY3VzLiBTZWUgdGhl IGZ1bmN0aW9uIEdyYWJfRm9jdXMKICAgLS0gICAgaW4gdGhpcyBwYWNrYWdlLgogICAtLQogICAt LSAgLSAiQ2FuX0RlZmF1bHQiOgogICAtLSAgICBTZXQgaWYgdGhlIHdpZGdldCBjYW4gYmUgdGhl IGRlZmF1bHQgd2lkZ2V0IGluIGEgd2luZG93LCBpZSB0aGUgb25lCiAgIC0tICAgIHRoYXQgd2ls bCBnZXQgdGhlIGtleWJvYXJkIGV2ZW50cyBieSBkZWZhdWx0LiBGb3IgaW5zdGFuY2UsIHRoZQog ICAtLSAgICBkZWZhdWx0IGJ1dHRvbiBpbiBhIGRpYWxvZyBpcyB0aGUgb25lIHRoYXQgZ2V0cyBj bGlja2VkIG9uIHdoZW4gdGhlCiAgIC0tICAgIHVzZXIgcHJlc3NlZCBFbnRlciBhbnl3aGVyZSBp biB0aGUgZGlhbG9nLgogICAtLQogICAtLSAgLSAiSGFzX0RlZmF1bHQiOgogICAtLSAgICBTZXQg aWYgdGhlIHdpZGdldCBpcyBjdXJyZW50bHkgdGhlIGRlZmF1bHQgd2lkZ2V0LiBTZWUgdGhlIGZ1 bmN0aW9uCiAgIC0tICAgIEdyYWJfRGVmYXVsdCBpbiB0aGlzIHBhY2thZ2UuCiAgIC0tCiAgIC0t ICAtICJIYXNfR3JhYiI6CiAgIC0tICAgIFNldCBpZiB0aGUgd2lkZ2V0IGN1cnJlbnRseSBncmFi cyBhbGwgbW91c2UgYW5kIGtleWJvYXJkIGV2ZW50cyBpbgogICAtLSAgICB0aGUgYXBwbGljYXRp b24sIGV2ZW4gaWYgaXQgZG9lcyBub3QgaGF2ZSB0aGUgZm9jdXMuIFRoZXJlIGNhbiBiZSBvbmx5 CiAgIC0tICAgIHN1Y2ggd2lkZ2V0IHBlciBhcHBsaWNhdGlvbiBhdCBhbnkgZ2l2ZW4gdGltZS4K ICAgLS0KICAgLS0gIC0gIlJjX1N0eWxlIjoKICAgLS0gICAgU2V0IGlmIHRoZSB3aWRnZXQncyBz dHlsZSBpcyBlaXRoZXIgdGhlIGRlZmF1bHQgc3R5bGUsIG9yIGluIGEKICAgLS0gICAgY3VzdG9t aXphdGlvbiBmaWxlLiBUaGlzIGlzIHVuc2V0IGlmIHRoZSBzdHlsZSBoYXMgYmVlbiBtb2RpZmll ZCBieQogICAtLSAgICB0aGUgdXNlci4KICAgLS0KICAgLS0gIC0gIkNvbXBvc2l0ZV9DaGlsZCI6 CiAgIC0tICAgID8/PwogICAtLQogICAtLSAgLSAiTm9fUmVwYXJlbnQiOgogICAtLSAgICBUaGlz IGZsYWdzIGlzIG5ldmVyIHVzZWQgaW4gZ3RrKy4KICAgLS0KICAgLS0gIC0gIkFwcF9QYWludGFi bGUiOgogICAtLSAgICBGb3Igc29tZSBjb250YWluZXJzIChpbmNsdWRpbmcgR3RrX1dpbmRvdyBh bmQgR3RrX0xheW91dCksIHRoaXMgaXMKICAgLS0gICAgdW5zZXQgd2hlbiB0aGUgY29udGFpbmVy IGl0c2VsZiBoYXMgc29tZSBzcGVjaWFsIGRyYXdpbmcgcm91dGluZXMuCiAgIC0tCiAgIC0tICAt ICJSZWNlaXZlc19EZWZhdWx0IjoKICAgLS0gICAgU2V0IHdoZW4gdGhlIHdpZGdldCByZWNlaXZl cyB0aGUgZGVmYXVsdCBhdCB0aGUgdGltZSBpdCByZWNlaXZlcyB0aGUKICAgLS0gICAgZm9jdXMu IFRoaXMgaXMgaG93IHRoZSBkZWZhdWx0IGJ1dHRvbiBpbiBhIGRpYWxvZyBpcyBhdXRvbWF0aWNh bGx5CiAgIC0tICAgIGNoYW5nZWQgd2hlbiB5b3UgcHJlc3MgYW5vdGhlciBidXR0b24uCgogICBU b3BsZXZlbCAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiA0OwogICBOb19XaW5kb3cgICAgICAg IDogY29uc3RhbnQgOj0gMiAqKiA1OwogICBSZWFsaXplZCAgICAgICAgIDogY29uc3RhbnQgOj0g MiAqKiA2OwogICBNYXBwZWQgICAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiA3OwogICBWaXNp YmxlICAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiA4OwogICBTZW5zaXRpdmUgICAgICAgIDog Y29uc3RhbnQgOj0gMiAqKiA5OwogICBQYXJlbnRfU2Vuc2l0aXZlIDogY29uc3RhbnQgOj0gMiAq KiAxMDsKICAgQ2FuX0ZvY3VzICAgICAgICA6IGNvbnN0YW50IDo9IDIgKiogMTE7CiAgIEhhc19G b2N1cyAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDEyOwogICBDYW5fRGVmYXVsdCAgICAgIDog Y29uc3RhbnQgOj0gMiAqKiAxMzsKICAgSGFzX0RlZmF1bHQgICAgICA6IGNvbnN0YW50IDo9IDIg KiogMTQ7CiAgIEhhc19HcmFiICAgICAgICAgOiBjb25zdGFudCA6PSAyICoqIDE1OwogICBSY19T dHlsZSAgICAgICAgIDogY29uc3RhbnQgOj0gMiAqKiAxNjsKICAgQ29tcG9zaXRlX0NoaWxkICA6 IGNvbnN0YW50IDo9IDIgKiogMTc7CiAgIE5vX1JlcGFyZW50ICAgICAgOiBjb25zdGFudCA6PSAy ICoqIDE4OwogICBBcHBfUGFpbnRhYmxlICAgIDogY29uc3RhbnQgOj0gMiAqKiAxOTsKICAgUmVj ZWl2ZXNfRGVmYXVsdCA6IGNvbnN0YW50IDo9IDIgKiogMjA7CgogICBmdW5jdGlvbiBUb3BsZXZl bF9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSBy ZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgVG9wbGV2ZWwgZmxhZyBpcyBz ZXQuCgogICBmdW5jdGlvbiBOb19XaW5kb3dfSXNfU2V0CiAgICAgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBUZXN0IHdoZXRo ZXIgdGhlIE5vX1dpbmRvdyBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIFJlYWxpemVkX0lzX1Nl dAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBC b29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVyIHRoZSBSZWFsaXplZCBmbGFnIGlzIHNldC4KCiAg IGZ1bmN0aW9uIE1hcHBlZF9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgTWFw cGVkIGZsYWcgaXMgc2V0LgoKICAgZnVuY3Rpb24gVmlzaWJsZV9Jc19TZXQKICAgICAoV2lkZ2V0 IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0g IFRlc3Qgd2hldGhlciB0aGUgVmlzaWJsZSBmbGFnIGlzIHNldC4KCiAgIGZ1bmN0aW9uIERyYXdh YmxlX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3Mp IHJldHVybiBCb29sZWFuOwogICAtLSAgVHJ1ZSBpZiB0aGUgd2lkZ2V0IGlzIGJvdGggdmlzaWJs ZSBhbmQgbWFwcGVkLgogICAtLSAgSW4gb3RoZXIgd29yZHMsIGlmIGl0IGRvZXMgYXBwZWFyIG9u IHRoZSBzY3JlZW4uCgogICBmdW5jdGlvbiBJc19TZW5zaXRpdmUKICAgICAoV2lkZ2V0IDogYWNj ZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qg d2hldGhlciB0aGUgd2lkZ2V0IGlzIFNlbnNpdGl2ZS4KCiAgIGZ1bmN0aW9uIENhbl9Gb2N1c19J c19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1 cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgQ2FuX0ZvY3VzIGZsYWcgaXMgc2V0 LgoKICAgZnVuY3Rpb24gSGFzX0ZvY3VzX0lzX1NldAogICAgIChXaWRnZXQgOiBhY2Nlc3MgR3Rr X1dpZGdldF9SZWNvcmQnQ2xhc3MpIHJldHVybiBCb29sZWFuOwogICAtLSAgVGVzdCB3aGV0aGVy IHRoZSBIYXNfRm9jdXMgZmxhZyBpcyBzZXQuCgogICBmdW5jdGlvbiBIYXNfRGVmYXVsdF9Jc19T ZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4g Qm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgSGFzX0RlZmF1bHQgZmxhZyBpcyBzZXQu CgogICBmdW5jdGlvbiBIYXNfR3JhYl9Jc19TZXQKICAgICAoV2lkZ2V0IDogYWNjZXNzIEd0a19X aWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVhbjsKICAgLS0gIFRlc3Qgd2hldGhlciB0 aGUgSGFzX0dyYWIgZmxhZyBpcyBzZXQuCgogICBmdW5jdGlvbiBSY19TdHlsZV9Jc19TZXQKICAg ICAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKSByZXR1cm4gQm9vbGVh bjsKICAgLS0gIFRlc3Qgd2hldGhlciB0aGUgUmNfU3R5bGUgZmxhZyBpcyBzZXQuCgogICAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAtLSBEZWZpbml0aW9ucyBmb3Ig bGlzdHMgb2Ygd2lkZ2V0cyAtLQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoKICAgLS0gIDxkb2NfaWdub3JlPgoKICAgZnVuY3Rpb24gQ29udmVydCAoVyA6IGluIEd0 a19XaWRnZXQpIHJldHVybiBTeXN0ZW0uQWRkcmVzczsKICAgZnVuY3Rpb24gQ29udmVydCAoVyA6 IFN5c3RlbS5BZGRyZXNzKSByZXR1cm4gR3RrX1dpZGdldDsKICAgcGFja2FnZSBXaWRnZXRfTGlz dCBpcyBuZXcgR2xpYi5HbGlzdC5HZW5lcmljX0xpc3QgKEd0a19XaWRnZXQpOwogICBwYWNrYWdl IFdpZGdldF9TTGlzdCBpcyBuZXcgR2xpYi5HU2xpc3QuR2VuZXJpY19TTGlzdCAoR3RrX1dpZGdl dCk7CgogICAtLSAgPC9kb2NfaWdub3JlPgoKICAgLS0tLS0tLS0tLS0tLQogICAtLSBTaWduYWxz IC0tCiAgIC0tLS0tLS0tLS0tLS0KCiAgIC0tICA8c2lnbmFscz4KICAgLS0gIFRoZSBmb2xsb3dp bmcgbmV3IHNpZ25hbHMgYXJlIGRlZmluZWQgZm9yIHRoaXMgd2lkZ2V0OgogICAtLQogICAtLSAg LSAic2hvdyIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtf V2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0ZWQgd2hlbiBhIHdpZGdl dCBpcyB0byBiZSBzaG93biAoc2VlIGV4cGxhbmF0aW9uIGZvciB0aGUgU2hvdwogICAtLSAgICBz dWJwcm9nYW0pLiBUaGlzIHNjaGVkdWxlcyB0aGUgd2lkZ2V0IHRvIGJlIGRpc3BsYXllZCBvbiB0 aGUgc2NyZWVuLAogICAtLSAgICBhbmQgaWYgdGhpcyBpcyBhIHRvcGxldmVsIHdpZGdldCBpdCBh Y3R1YWxseSBhcHBlYXJzIG9uIHRoZSBzY3JlZW4KICAgLS0gICAgYW5kIGFsbCBpdHMgY2hpbGRy ZW4gdGhhdCBoYXZlIGJlZW4gc2hvd24uCiAgIC0tCiAgIC0tICAtICJoaWRlIgogICAtLSAgICBw cm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz KTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0IGlzIHRvIGJlIGhpZGRlbiAo c2VlIGV4cGxhbmF0aW9uIGZvciB0aGUgSGlkZQogICAtLSAgICBzdWJwcm9ncmFtKS4gSGlkZXMg dGhlIHdpZGdldCBmcm9tIHRoZSBzY3JlZW4sIGFuZCBpZiBpdHMgcGFyZW50IGlzCiAgIC0tICAg IHNob3duLCB0aGUgd2lkZ2V0IHdpbGwgbm90IGFwcGVhciBvbiB0aGUgc2NyZWVuIGFnYWluLgog ICAtLQogICAtLSAgLSAibWFwIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3 aGVuIGEgd2lkZ2V0IGlzIG1hcHBlZCBvbiB0aGUgc2NyZWVuICh0aGUgZGVmYXVsdCBoYW5kbGVy CiAgIC0tICAgIHNpbXBseSBlbWl0cyB0aGUgInNob3ciIHNpZ25hbCkuCiAgIC0tCiAgIC0tICAt ICJ1bm1hcCIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtf V2lkZ2V0X1JlY29yZCdDbGFzcyk7CiAgIC0tCiAgIC0tICAgIEVtaXR0ZWQgd2hlbiBhIHdpZGdl dCBuZWVkcyB0byBiZSB1bm1hcHBlZCBvbiB0aGUgc2NyZWVuICh0aGUgZGVmYXVsdAogICAtLSAg ICBoYW5kbGVyIHNpbXBseSBlbWl0cyB0aGUgImhpZGUiIHNpZ25hbCkuCiAgIC0tCiAgIC0tICAt ICJyZWFsaXplIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEgd2lk Z2V0IGlzIHJlYWxpemVkLiBUaGUgZGVmYXVsdCBoYW5kbGVyIGNyZWF0ZXMgdGhlCiAgIC0tICAg IEdkayB3aW5kb3cgYXNzb2NpYXRlZCB3aXRoIHRoZSB3aWRnZXQsIGFuZCBpdHMgYW5jZXN0b3Jz LgogICAtLQogICAtLSAgLSAidW5yZWFsaXplIgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0KICAgLS0gICAg RW1pdHRlZCB3aGVuIGEgd2lkZ2V0IGlzIHVucmVhbGl6ZWQuIFRoZSBkZWZhdWx0IGhhbmRsZXIg ZGVzdHJveXMgdGhlCiAgIC0tICAgIEdkayB3aW5kb3dzIG9mIHRoZSB3aWRnZXQgYW5kIGFsbCBp dHMgY2hpbGRyZW4uCiAgIC0tCiAgIC0tICAtICJkcmF3IgogICAtLSAgICBwcm9jZWR1cmUgSGFu ZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAg ICAgICAgICAgICAgICAgICAgQXJlYSAgIDogR2RrLlJlY3RhbmdsZS5HZGtfUmVjdGFuZ2xlKTsK ICAgLS0KICAgLS0gICAgRW1pdHRlZCB3aGVuIGEgd2lkZ2V0IG5lZWRzIHRvIGJlIGRyYXduLiBU aGUgZGVmYXVsdCBoYW5kbGVyIGVtaXRzCiAgIC0tICAgIHRoZSAiZXhwb3NlIiBldmVudC4KICAg LS0KICAgLS0gIC0gImRyYXdfZm9jdXMiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRn ZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0 dGVkIHdoZW4gYSB3aWRnZXQgbmVlZHMgdG8gYmUgZHJhd24gYW5kIGl0IGhhcyB0aGUgZm9jdXMu IFNvbWUKICAgLS0gICAgd2lkZ2V0cyBtaWdodCB3YW50IHRvIHByb3ZpZGUgdmlzdWFsIGNsdWVz IHRoYXQgdGhleSBoYXZlIHRoZSBmb2N1cywKICAgLS0gICAgbGlrZSBhIGJsYWNrIGJvcmRlci4g VGhpcyBpcyBuZXZlciBjYWxsZWQgaWYgdGhlIHdpZGdldCBjYW4gbm90IGhhdmUKICAgLS0gICAg dGhlIGZvY3VzIChpZSB0aGUgIkNhbl9Gb2N1cyIgZmxhZyBpcyB1bnNldCkuCiAgIC0tCiAgIC0t ICAtICJkcmF3X2RlZmF1bHQiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBh Y2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBFbWl0dGVkIHdo ZW4gYSB3aWRnZXQgbmVlZHMgdG8gYmUgZHJhd24gYW5kIGl0IGRvZXMgbm90IGhhdmUgdGhlCiAg IC0tICAgIGZvY3VzLiBUaGlzIGlzIG5ldmVyIGNhbGxlZCBpZiB0aGUgd2lkZ2V0IGNhbiBub3Qg aGF2ZSB0aGUgZm9jdXMKICAgLS0gICAgKGllIHRoZSAiQ2FuX0ZvY3VzIiBmbGFnIGlzIHVuc2V0 KS4KICAgLS0KICAgLS0gIC0gInNpemVfcmVxdWVzdCIKICAgLS0gICAgcHJvY2VkdXJlIEhhbmRs ZXIgKFdpZGdldCAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAg ICAgICAgICAgICAgICAgICAgICAgUmVxdWlzaXRpb24gOiBhY2Nlc3MgR3RrX1JlcXVpc2l0aW9u KTsKICAgLS0KICAgLS0gICAgU2hvdWxkIHJldHVybiAoaW4gUmVxdWlzaXRpb24pIHRoZSBpZGVh bCBzaXplIHRoZSB3aWRnZXQgd291bGQgbGlrZSB0bwogICAtLSAgICBoYXZlLiBJdCBpcyBub3Qg c3VyZSB0aGlzIGlzIHRoZSBzaXplIHRoYXQgd2lsbCBiZSBhc3NpZ25lZCB0byBpdCwKICAgLS0g ICAgc2luY2UgaXQgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBpdHMgcGFyZW50KS4KICAgLS0KICAg LS0gIC0gInNpemVfYWxsb2NhdGUiCiAgIC0tICAgIHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQg ICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAg ICAgICAgICAgQWxsb2NhdGlvbiA6IEd0a19BbGxvY2F0aW9uKTsKICAgLS0KICAgLS0gICAgQSBz aXplIGFuZCBwb3NpdGlvbiB3ZXJlIGFzc2lnbmVkIHRvIHRoZSB3aWRnZXQuIFRoaXMgaXMgY2Fs bGVkIGV2ZXJ5CiAgIC0tICAgIHRpbWUgdGhlIHNpemUgb2YgdGhlIHdpZGdldCBjaGFuZ2VzLgog ICAtLSAgICBUaGUgZGVmYXVsdCBoYW5kbGVyIHRha2VzIGNhcmUgb2YgcmVzaXppbmcgYW5kIG1v dmluZyB0aGUgd2lkZ2V0LgogICAtLQogICAtLSAgLSAic3RhdGVfY2hhbmdlZCIKICAgLS0gICAg cHJvY2VkdXJlIEhhbmRsZXIgKFdpZGdldCAgICAgICAgIDogYWNjZXNzIEd0a19XaWRnZXRfUmVj b3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICAgUHJldmlvdXNfU3RhdGUgOiBH dGsuRW51bXMuR3RrX1N0YXRlX1R5cGUpOwogICAtLQogICAtLSAgICBUaGUgc3RhdGUgb2YgdGhl IHdpZGdldCBoYXMgY2hhbmdlZC4KICAgLS0KICAgLS0gIC0gInBhcmVudF9zZXQiCiAgIC0tICAg IHByb2NlZHVyZSBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xh c3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgICBQcmV2aW91c19QYXJlbnQgOiBhY2Nlc3Mg R3RrX1dpZGdldF9SZWNvcmQnQ2xhc3MpOwogICAtLQogICAtLSAgICBBIG5ldyBwYXJlbnQgaGFz IGJlZW4gc2V0IGZvciB0aGUgd2lkZ2V0LiBUaGUgcHJldmlvdXMgcGFyZW50IGlzCiAgIC0tICAg IGdpdmVuIGluIGFyZ3VtZW50cyAoaWYgdGhlcmUgd2FzIG5vbmUsCiAgIC0tICAgIEdkay5Jc19D cmVhdGVkIChQcmV2aW91c19QYXJlbnQpIHJldHVybnMgRmFsc2UpLgogICAtLQogICAtLSAgLSAi c3R5bGVfc2V0IgogICAtLSAgICBwcm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkJ0NsYXNzKTsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgIFByZXZp b3VzX1N0eWxlIDogR3RrLlN0eWxlLkd0a19TdHlsZSk7CiAgIC0tCiAgIC0tICAgIFRoZSB3aWRn ZXQncyBzdHlsZSBoYXMgYmVlbiBjaGFuZ2VkICh0aGlzIGlzIG5vdCBjYWxsIHdoZW4gc29tZQog ICAtLSAgICBzZXR0aW5ncyBpbiB0aGUgc3R5bGUgYXJlIGNoYW5nZWQsIG9ubHkgd2hlbiB0aGUg c3R5bGUgaXRzZWxmIGlzCiAgIC0tICAgIGNvbXBsZXRlbHkgY2hhbmdlZCB3aXRoIGEgY2FsbCB0 byBTZXRfU3R5bGUgb3IgU2V0X1JjX1N0eWxlKS4KICAgLS0KICAgLS0gIC0gImFkZF9hY2NlbGVy YXRvciIKICAgLS0KICAgLS0gID8/PwogICAtLQogICAtLSAgLSAicmVtb3ZlX2FjY2VsZXJhdG9y IgogICAtLQogICAtLSAgPz8/CiAgIC0tCiAgIC0tICAtICJncmFiX2ZvY3VzIgogICAtLSAgICBw cm9jZWR1cmUgSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz KTsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBoYXMgZ290IHRoZSBmb2N1cywgaWUgd2lsbCBu b3cgZ2V0IHRoZSBrZXlib2FyZCBldmVudHMKICAgLS0gICAgc2VudCB0byBhIHdpbmRvdy4gVGhp cyBpcyBvbmx5IGNhbGxlZCBpZiB0aGUgIkNhbl9Gb2N1cyIgZmxhZyBpcwogICAtLSAgICBzZXQu IFRoZSAiSGFzX0ZvY3VzIiBmbGFnIG1pZ2h0IG5vdCBiZSBzZXQgd2hlbiB0aGlzIHNpZ25hbCBp cwogICAtLSAgICBlbWl0dGVkLgogICAtLQogICAtLSAgLSAiZXZlbnQiCiAgIC0tICAgIGZ1bmN0 aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAg LS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudCkKICAg LS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgU29t ZSBldmVudCB3YXMgc2VudCB0byB0aGUgd2lkZ2V0LiBUaGlzIGNvdmVycyBhbGwgdGhlIGNhc2Vz CiAgIC0tICAgIGJlbG93LCBhbmQgYWN0cyBhcyBhIGdlbmVyYWwgaGFuZGxlci4gVGhpcyBpcyBj YWxsZWQgaW4gYWRkaXRpb24gdG8KICAgLS0gICAgdGhlIHJlbGV2YW50IHNwZWNpZmljIGhhbmRs ZXIgYmVsb3cuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVu dCBtaWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBv dGhlciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAt ICJidXR0b25fcHJlc3NfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6 IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAg ICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9CdXR0b24pCiAgIC0tICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIEEgYnV0dG9uIHdhcyBwcmVz c2VkIHdoaWxlIHRoZSBwb2ludGVyIHdhcyBpbnNpZGUgdGhlIHdpZGdldC4KICAgLS0gICAgVG8g Z2V0IHRoaXMgc2lnbmFsLCBzb21lIHdpZGdldHMgYnkgaGF2ZSB0byB1c2UgdGhlIFNldF9FdmVu dHMKICAgLS0gICAgc3VicHJvZ3JhbSBmaXJzdCB0byBnZXQgdGhpcyBldmVudC4KICAgLS0gICAg SWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8g dGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lk Z2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImJ1dHRvbl9yZWxlYXNlX2V2 ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdl dF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5F dmVudC5HZGtfRXZlbnRfQnV0dG9uKQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC b29sZWFuOwogICAtLQogICAtLSAgICBBIGJ1dHRvbiB3YXMgcmVsZWFzZWQgd2hpbGUgdGhlIHBv aW50ZXIgd2FzIGluc2lkZSB0aGUgd2lkZ2V0LgogICAtLSAgICBOb3RlIHRoYXQgaW4gc29tZSBj YXNlcyAoR3RrX0J1dHRvbnMgZm9yIGluc3RhbmNlKSwgYW5vdGhlciAiY2xpY2tlZCIKICAgLS0g ICAgc2lnbmFsIGNvdWxkIGJlIGVtaXR0ZWQpLiBUaGlzICJidXR0b25fcmVsZWFzZV9ldmVudCIg c2hvdWxkIG1haW5seQogICAtLSAgICBiZSB1c2VkIGZvciB3aWRnZXRzIHRoYXQgZG9uJ3QgYWxy ZWFkeSBoYXZlIHNwZWNpZmljIHNpZ25hbHMgdG8gY292ZXIKICAgLS0gICAgdGhhdCBjYXNlIChH dGtfRHJhd2luZ19BcmVhIGZvciBpbnN0YW5jZSkuCiAgIC0tCiAgIC0tICAgIFRvIGdldCB0aGlz IHNpZ25hbCwgc29tZSB3aWRnZXRzIG1heSBoYXZlIHRvIHVzZSB0aGUgU2V0X0V2ZW50cwogICAt LSAgICBzdWJwcm9ncmFtIGZpcnN0IHRvIGdldCB0aGlzIGV2ZW50LgogICAtLQogICAtLSAgICBJ ZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0 aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRn ZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAibW90aW9uX25vdGlmeV9ldmVu dCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRf UmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZl bnQuR2RrX0V2ZW50X01vdGlvbikKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHBvaW50ZXIgaGFzIG1vdmVkIHdoaWxlIHJlbWFpbmlu ZyBpbnNpZGUgdGhlIHdpZGdldC4KICAgLS0gICAgVGhlIFNldF9FdmVudHMgc3VicHJvZ3JhbSBo YXMgdG8gYmUgY2FsbGVkIGZpcnN0IHRvIGdldCB0aGlzIGV2ZW50LgogICAtLQogICAtLSAgICBJ ZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0 aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRn ZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAiZGVsZXRlX2V2ZW50IgogICAt LSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtf RXZlbnQpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAg IC0tICAgIFRoZSB1c2VyIGhhcyBjbGlja2VkIG9uIHRoZSAiY2xvc2UiIGJ1dHRvbiBpbiB0aGUg d2luZG93J3MgZnJhbWUKICAgLS0gICAgKHRoZSBidXR0b24gdGhhdCBpcyBhdXRvbWF0aWNhbGx5 IHNldCBieSB0aGUgd2luZG93IG1hbmFnZXIpLiBJZiB0aGUKICAgLS0gICAgaGFuZGxlciByZXR1 cm5zIEZhbHNlLCB0aGUgd2lkZ2V0IHdpbGwgYmUgZGVzdHJveWVkIChhbmQgdGhlIHdpbmRvdwog ICAtLSAgICBjbG9zZWQpLCBidXQgaWYgdGhlIGhhbmRsZXIgcmV0dXJucyBUcnVlLCBub3RoaW5n IHdpbGwgYmUgZG9uZS4KICAgLS0gICAgVGhpcyBpcyBhIGdvb2Qgd2F5IHRvIHByZXZlbnQgdGhl IHVzZXIgZnJvbSBjbG9zaW5nIHlvdXIgYXBwbGljYXRpb24ncwogICAtLSAgICB3aW5kb3cgaWYg dGhlcmUgc2hvdWxkIGJlIHNvbWUgY2xlYW4gdXBzIGZpcnN0IChsaWtlIHNhdmluZyB0aGUKICAg LS0gICAgZG9jdW1lbnQpLgogICAtLQogICAtLSAgLSAiZGVzdHJveV9ldmVudCIKICAgLS0gICAg ZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNz OwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50 KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAg ICBUaGlzIHNpZ25hbCBpcyBhcHBhcmVudGx5IG5ldmVyIGVtaXR0ZWQgYnkgR3RrKy4gWW91IG1p Z2h0IHdhbnQgdG8KICAgLS0gICAgdXNlICJkZXN0cm95IiBpbnN0ZWFkLCB3aGljaCBpcyBkb2N1 bWVudGVkIGluIEd0ay5PYmplY3QuCiAgIC0tCiAgIC0tICAtICJleHBvc2VfZXZlbnQiCiAgIC0t ICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdD bGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19F dmVudF9FeHBvc2UpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAg IC0tCiAgIC0tICAgIFRoZSB3aWRnZXQgbmVlZHMgdG8gYmUgcGFydGx5IHJlZHJhd24uIFRoZSBl eGFjdCBhcmVhIHRvIHJlZHJhdyBpcwogICAtLSAgICBmb3VuZCBpbiBFdmVudC4gRm9yIHNvbWUg d2lkZ2V0cywgeW91IHNob3VsZCByYXRoZXIgY29ubmVjdCB0byB0aGUKICAgLS0gICAgImRyYXci IHNpZ25hbC4gSG93ZXZlciwgZm9yIGluc3RhbmNlIGZvciBHdGtfRHJhd2luZ19BcmVhIHdpZGdl dHMsCiAgIC0tICAgIHlvdSBoYXZlIHRvIHVzZSB0aGlzLCBhZnRlciBzZXR0aW5nIHRoZSBjb3Jy ZWN0IGV2ZW50IG1hc2sgd2l0aAogICAtLSAgICBTZXRfRXZlbnRzLgogICAtLSAgICBJZiB0aGUg aGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFy ZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFz IHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAia2V5X3ByZXNzX2V2ZW50IgogICAtLSAg ICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xh c3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZl bnRfS2V5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQog ICAtLSAgICBBIGtleSBoYXMgYmVlbiBwcmVzc2VkIHdoaWxlIFdpZGdldCBoYWQgdGhlIGZvY3Vz LiBOb3RlIHRoYXQgc29tZQogICAtLSAgICB3aWRnZXRzIGxpa2UgR3RrX0VkaXRhYmxlIHByb3Zp ZGUgc29tZSBoaWdoZXItbGV2ZWwgc2lnbmFscyB0byBoYW5kbGUKICAgLS0gICAgdGhpcy4KICAg LS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBh c3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIg b2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImtleV9yZWxlYXNl X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdk ay5FdmVudC5HZGtfRXZlbnRfS2V5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBC b29sZWFuOwogICAtLQogICAtLSAgICBBIGtleSBoYXMgYmVlbiByZWxlYXNlZCB3aGlsZSBXaWRn ZXQgaGFkIHRoZSBmb2N1cy4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwg dGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQg KGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0K ICAgLS0gIC0gImVudGVyX25vdGlmeV9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAo V2lkZ2V0IDogYWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAg ICAgICAgICAgICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X0Nyb3NzaW5nKQogICAtLSAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICBUaGUgcG9p bnRlciBoYXMganVzdCBlbnRlcmVkIHRoZSB3aWRnZXQuIElmIHRoZSAiQ2FuX0ZvY3VzIiBmbGFn IGlzCiAgIC0tICAgIHNldCwgV2lkZ2V0IHdpbGwgZ2FpbiB0aGUgZm9jdXMsIGFuZCB0aGUgd2lk Z2V0IG1pZ2h0IGJlIGRyYXduCiAgIC0tICAgIGRpZmZlcmVudGx5LgogICAtLSAgICBJZiB0aGUg aGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFy ZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFz IHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAibGVhdmVfbm90aWZ5X2V2ZW50IgogICAt LSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQn Q2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtf RXZlbnRfQ3Jvc3NpbmcpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xlYW47 CiAgIC0tCiAgIC0tICAgIFRoZSBwb2ludGVyIGhhcyBqdXN0IGxlYXZlZCB0aGUgd2lkZ2V0LiBJ ZiB0aGUgIkNhbl9Gb2N1cyIgZmxhZyBpcwogICAtLSAgICBzZXQsIFdpZGdldCB3aWxsIGdhaW4g dGhlIGZvY3VzLCBhbmQgdGhlIHdpZGdldCBtaWdodCBiZSBkcmF3bgogICAtLSAgICBkaWZmZXJl bnRseS4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1p Z2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVy IGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gImNv bmZpZ3VyZV9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNz IEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVu dCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X0NvbmZpZ3VyZSkKICAgLS0gICAgICAgICAgICAgICAg ICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgU29tZSBjb25maWd1cmF0aW9uIG9m IHRoZSB3aW5kb3cgaGFzIGNoYW5nZWQgKGl0IGhhcyBiZWVuCiAgIC0tICAgIG1vdmVkIG9yIHJl c2l6ZWQpLgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUgZXZlbnQg bWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYgbm8gb3Ro ZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAtLSAgLSAi Zm9jdXNfaW5fZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2Vz cyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZl bnQgIDogR2RrLkV2ZW50Lkdka19FdmVudF9Gb2N1cykKICAgLS0gICAgICAgICAgICAgICAgICAg ICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBoYXMganVzdCBnYWlu ZWQgdGhlIGZvY3VzLgogICAtLSAgICBJZiB0aGUgaGFuZGxlciByZXR1cm5zIEZhbHNlLCB0aGUg ZXZlbnQgbWlnaHQgYmUgcGFzcyB0byB0aGUgcGFyZW50CiAgIC0tICAgIG9mIHdpZGdldCAoaWYg bm8gb3RoZXIgaGFuZGxlciBvZiB3aWRnZXQgaGFzIHJldHVybmVkIFRydWUpLgogICAtLQogICAt LSAgLSAiZm9jdXNfb3V0X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQg OiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAg ICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfRm9jdXMpCiAgIC0tICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIFRoZSB3aWRnZXQgaGFzIGp1 c3QgbG9zdCB0aGUgZm9jdXMuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2Us IHRoZSBldmVudCBtaWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0 IChpZiBubyBvdGhlciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0t CiAgIC0tICAtICJtYXBfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6 IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAg ICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdka19FdmVudCkKICAgLS0gICAgICAgICAgICAgICAgICAg ICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHdpZGdldCBoYXMganVzdCBiZWVu IG1hcHBlZC4gVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgIm1hcCIKICAgLS0gICAgc2lnbmFs LCB3aGljaCBpcyBjYWxsZWQgKmJlZm9yZSogdGhlIHdpZGdldCBpcyBhY3R1YWxseSBtYXBwZWQu CiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBtaWdodCBi ZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhlciBoYW5k bGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJ1bm1hcF9l dmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsu RXZlbnQuR2RrX0V2ZW50KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFu OwogICAtLQogICAtLSAgICBUaGUgd2lkZ2V0IGhhcyBqdXN0IGJlZW4gdW5tYXBwZWQuIFRoaXMg aXMgZGlmZmVyZW50IGZyb20gdGhlICJ1bm1hcCIKICAgLS0gICAgc2lnbmFsLCB3aGljaCBpcyBj YWxsZWQgKmJlZm9yZSogdGhlIHdpZGdldCBpcyBhY3R1YWxseSB1bm1hcHBlZC4KICAgLS0gICAg SWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8g dGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lk Z2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gInByb3BlcnR5X25vdGlmeV9l dmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0a19XaWRn ZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAgOiBHZGsu RXZlbnQuR2RrX0V2ZW50X1Byb3BlcnR5KQogICAtLSAgICAgICAgICAgICAgICAgICAgIHJldHVy biBCb29sZWFuOwogICAtLQogICAtLSAgICA/Pz8KICAgLS0KICAgLS0gIC0gInNlbGVjdGlvbl9j bGVhcl9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDogYWNjZXNzIEd0 a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAgICBFdmVudCAg OiBHZGsuRXZlbnQuR2RrX0V2ZW50X1NlbGVjdGlvbikKICAgLS0gICAgICAgICAgICAgICAgICAg ICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0tICAtICJzZWxl Y3Rpb25fcmVxdWVzdF9ldmVudCIKICAgLS0gICAgZnVuY3Rpb24gSGFuZGxlciAoV2lkZ2V0IDog YWNjZXNzIEd0a19XaWRnZXRfUmVjb3JkJ0NsYXNzOwogICAtLSAgICAgICAgICAgICAgICAgICAg ICBFdmVudCAgOiBHZGsuRXZlbnQuR2RrX0V2ZW50X1NlbGVjdGlvbikKICAgLS0gICAgICAgICAg ICAgICAgICAgICByZXR1cm4gQm9vbGVhbjsKICAgLS0KICAgLS0gICAgPz8/CiAgIC0tCiAgIC0t ICAtICJzZWxlY3Rpb25fbm90aWZ5X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChX aWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAg ICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5HZGtfRXZlbnRfU2VsZWN0aW9uKQogICAtLSAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBCb29sZWFuOwogICAtLQogICAtLSAgICA/Pz8KICAg LS0KICAgLS0gIC0gInNlbGVjdGlvbl9yZWNlaXZlZCIKICAgLS0gICAgUmVsYXRlZCB0byB0aGUg c2VsZWN0aW9uIG1lY2hhbmlzbSwgc2VlIEd0ay5TZWxlY3Rpb24KICAgLS0KICAgLS0gIC0gInNl bGVjdGlvbl9nZXQiCiAgIC0tICAgIFJlbGF0ZWQgdG8gdGhlIHNlbGVjdGlvbiBtZWNoYW5pc20s IHNlZSBHdGsuU2VsZWN0aW9uCiAgIC0tCiAgIC0tICAtICJwcm94aW1pdHlfaW5fZXZlbnQiCiAg IC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBHdGtfV2lkZ2V0X1JlY29y ZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQgIDogR2RrLkV2ZW50Lkdk a19FdmVudF9Qcm94aW1pdHkpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xl YW47CiAgIC0tCiAgIC0tICAgIFVzZWQgZm9yIHNwZWNpYWwgaW5wdXQgZGV2aWNlcy4gU2VlIHRo ZSBkZXNjcmlwdGlvbiBvZgogICAtLSAgICBHZGsuRXZlbnQuR2RrX0V2ZW50X1Byb3hpbWl0eS4K ICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhlIGV2ZW50IG1pZ2h0IGJl IHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlmIG5vIG90aGVyIGhhbmRs ZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAgLS0gIC0gInByb3hpbWl0 eV9vdXRfZXZlbnQiCiAgIC0tICAgIGZ1bmN0aW9uIEhhbmRsZXIgKFdpZGdldCA6IGFjY2VzcyBH dGtfV2lkZ2V0X1JlY29yZCdDbGFzczsKICAgLS0gICAgICAgICAgICAgICAgICAgICAgRXZlbnQg IDogR2RrLkV2ZW50Lkdka19FdmVudF9Qcm94aW1pdHkpCiAgIC0tICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIEJvb2xlYW47CiAgIC0tCiAgIC0tICAgIFVzZWQgZm9yIHNwZWNpYWwgaW5wdXQg ZGV2aWNlcy4gU2VlIHRoZSBkZXNjcmlwdGlvbiBvZgogICAtLSAgICBHZGsuRXZlbnQuR2RrX0V2 ZW50X1Byb3hpbWl0eS4KICAgLS0gICAgSWYgdGhlIGhhbmRsZXIgcmV0dXJucyBGYWxzZSwgdGhl IGV2ZW50IG1pZ2h0IGJlIHBhc3MgdG8gdGhlIHBhcmVudAogICAtLSAgICBvZiB3aWRnZXQgKGlm IG5vIG90aGVyIGhhbmRsZXIgb2Ygd2lkZ2V0IGhhcyByZXR1cm5lZCBUcnVlKS4KICAgLS0KICAg LS0gIC0gImRyYWdfbGVhdmUiCiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJv cCBzdXBwb3J0LiBTZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0g ImRyYWdfYmVnaW4iCiAgIC0tICAgIEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBw b3J0LiBTZWUgdGhlIEd0ay5EbmQgZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gImRyYWdf ZW5kIgogICAtLSAgICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2Vl IHRoZSBHdGsuRG5kIGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfZGVs ZXRlIgogICAtLSAgICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2Vl IHRoZSBHdGsuRG5kIGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX21vdGlvbiIK ICAgLS0gICAgRXZlbnQgcmVsYXRlZCB0byBkcmFnLWFuZC1kcm9wIHN1cHBvcnQuIFNlZSB0aGUg R3RrLkRuZCBkb2N1bWVudGF0aW9uLgogICAtLQogICAtLSAgLSAiZHJhZ19kcm9wIgogICAtLSAg ICBFdmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5k IGRvY3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfZ2V0IgogICAtLSAgICBF dmVudCByZWxhdGVkIHRvIGRyYWctYW5kLWRyb3Agc3VwcG9ydC4gU2VlIHRoZSBHdGsuRG5kIGRv Y3VtZW50YXRpb24uCiAgIC0tCiAgIC0tICAtICJkcmFnX2RhdGFfcmVjZWl2ZWQiCiAgIC0tICAg IEV2ZW50IHJlbGF0ZWQgdG8gZHJhZy1hbmQtZHJvcCBzdXBwb3J0LiBTZWUgdGhlIEd0ay5EbmQg ZG9jdW1lbnRhdGlvbi4KICAgLS0KICAgLS0gIC0gInZpc2liaWxpdHlfbm90aWZ5X2V2ZW50Igog ICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dpZGdldF9SZWNv cmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdkay5FdmVudC5H ZGtfRXZlbnRfVmlzaWJpbGl0eSkKICAgLS0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gQm9v bGVhbjsKICAgLS0KICAgLS0gICAgVGhlIHZpc2liaWxpdHkgc3RhdGUgb2YgdGhlIHdpZGdldCBo YXMgY2hhbmdlZCAocGFydGlhbGx5IHZpc2libGUsCiAgIC0tICAgIGZ1bGx5IHZpc2libGUsIC4u LikuIFlvdSBtaWdodCB3YW50IHRvIHVzZSB0aGUgImV4cG9zZSIgc2lnbmFsCiAgIC0tICAgIGlu c3RlYWQuCiAgIC0tICAgIElmIHRoZSBoYW5kbGVyIHJldHVybnMgRmFsc2UsIHRoZSBldmVudCBt aWdodCBiZSBwYXNzIHRvIHRoZSBwYXJlbnQKICAgLS0gICAgb2Ygd2lkZ2V0IChpZiBubyBvdGhl ciBoYW5kbGVyIG9mIHdpZGdldCBoYXMgcmV0dXJuZWQgVHJ1ZSkuCiAgIC0tCiAgIC0tICAtICJj bGllbnRfZXZlbnQiCiAgIC0tCiAgIC0tICAgID8/PwogICAtLQogICAtLSAgLSAibm9fZXhwb3Nl X2V2ZW50IgogICAtLSAgICBmdW5jdGlvbiBIYW5kbGVyIChXaWRnZXQgOiBhY2Nlc3MgR3RrX1dp ZGdldF9SZWNvcmQnQ2xhc3M7CiAgIC0tICAgICAgICAgICAgICAgICAgICAgIEV2ZW50ICA6IEdk ay5FdmVudC5HZGtfRXZlbnQpCiAgIC0tICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJvb2xl YW47CiAgIC0tCiAgIC0tICAgID8/PwogICAtLQogICAtLSAgPC9zaWduYWxzPgpwcml2YXRlCgog ICB0eXBlIEd0a19XaWRnZXRfUmVjb3JkIGlzIG5ldyBPYmplY3QuR3RrX09iamVjdF9SZWNvcmQg d2l0aCBudWxsIHJlY29yZDsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIFB1c2hfU3R5bGUsICJndGtf d2lkZ2V0X3B1c2hfc3R5bGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgUG9wX1N0eWxlLCAiZ3Rr X3dpZGdldF9wb3Bfc3R5bGUiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgU2V0X0RlZmF1bHRfU3R5 bGUsICJndGtfd2lkZ2V0X3NldF9kZWZhdWx0X3N0eWxlIik7CiAgIHByYWdtYSBJbXBvcnQgKEMs IEdldF9EZWZhdWx0X1N0eWxlLCAiZ3RrX3dpZGdldF9nZXRfZGVmYXVsdF9zdHlsZSIpOwogICBw cmFnbWEgSW1wb3J0IChDLCBQb3BfQ29sb3JtYXAsICJndGtfd2lkZ2V0X3BvcF9jb2xvcm1hcCIp OwogICBwcmFnbWEgSW1wb3J0IChDLCBQb3BfVmlzdWFsLCAiZ3RrX3dpZGdldF9wb3BfdmlzdWFs Iik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEdldF9UeXBlLCAiZ3RrX3dpZGdldF9nZXRfdHlwZSIp OwogICBwcmFnbWEgSW1wb3J0IChDLCBHZXRfRGVmYXVsdF9Db2xvcm1hcCwgImd0a193aWRnZXRf Z2V0X2RlZmF1bHRfY29sb3JtYXAiKTsKICAgcHJhZ21hIEltcG9ydCAoQywgR2V0X0RlZmF1bHRf VmlzdWFsLCAiZ3RrX3dpZGdldF9nZXRfZGVmYXVsdF92aXN1YWwiKTsKICAgcHJhZ21hIEltcG9y dCAoQywgUHVzaF9Db2xvcm1hcCwgImd0a193aWRnZXRfcHVzaF9jb2xvcm1hcCIpOwogICBwcmFn bWEgSW1wb3J0IChDLCBQdXNoX1Zpc3VhbCwgImd0a193aWRnZXRfcHVzaF92aXN1YWwiKTsKICAg cHJhZ21hIEltcG9ydCAoQywgU2V0X0RlZmF1bHRfQ29sb3JtYXAsICJndGtfd2lkZ2V0X3NldF9k ZWZhdWx0X2NvbG9ybWFwIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIFNldF9EZWZhdWx0X1Zpc3Vh bCwgImd0a193aWRnZXRfc2V0X2RlZmF1bHRfdmlzdWFsIik7CiAgIHByYWdtYSBJbmxpbmUgKFRv cGxldmVsX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKE5vX1dpbmRvd19Jc19TZXQpOwogICBw cmFnbWEgSW5saW5lIChSZWFsaXplZF9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChNYXBwZWRf SXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoVmlzaWJsZV9Jc19TZXQpOwogICBwcmFnbWEgSW5s aW5lIChEcmF3YWJsZV9Jc19TZXQpOwogICBwcmFnbWEgSW5saW5lIChJc19TZW5zaXRpdmUpOwog ICBwcmFnbWEgSW5saW5lIChDYW5fRm9jdXNfSXNfU2V0KTsKICAgcHJhZ21hIElubGluZSAoSGFz X0ZvY3VzX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKEhhc19EZWZhdWx0X0lzX1NldCk7CiAg IHByYWdtYSBJbmxpbmUgKEhhc19HcmFiX0lzX1NldCk7CiAgIHByYWdtYSBJbmxpbmUgKFJjX1N0 eWxlX0lzX1NldCk7CmVuZCBHdGsuV2lkZ2V0OwoKLS0gIEZ1bmN0aW9ucyB0aGF0IGhhdmUgbm8g QWRhIGVxdWl2YWxlbnQ6Ci0tICAtIGd0a193aWRnZXRfbmV3Ci0tICAtIGd0a193aWRnZXRfZ2V0 Ci0tICAtIGd0a193aWRnZXRfZ2V0dgotLSAgLSBndGtfd2lkZ2V0X3NldAotLSAgLSBndGtfd2lk Z2V0X3NldHYKLS0gIC0gZ3RrX3dpZGdldF9nZXRfcGFyZW50X3dpbmRvdyAgPD0gbWFpbmx5IGlu dGVybmFsCi0tICAtIGd0a193aWRnZXRfaGlkZV9vbl9kZWxldGUgICAgIDw9IHVzZWQgYXMgY2Fs bGJhY2sKLS0gIC0gZ3RrX3dpZGdldF9zZXRfY29tcG9zaXRlX25hbWUKLS0gIC0gZ3RrX3dpZGdl dF9nZXRfY29tcG9zaXRlX25hbWUKLS0gIC0gZ3RrX3dpZGdldF9wdXNoX2NvbXBvc2l0ZV9jaGls ZAotLSAgLSBndGtfd2lkZ2V0X3BvcF9jb21wb3NpdGVfY2hpbGQKLS0gIC0gZ3RrX3dpZGdldF9w YXRoCi0tICAtIGd0a193aWRnZXRfY2xhc3NfcGF0aAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSAgICAgICAg ICBHdGtBZGEgLSBBZGE5NSBiaW5kaW5nIGZvciB0aGUgR2ltcCBUb29sa2l0ICAgICAgICAgICAg ICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykg MTk5OC0yMDAxICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgRW1tYW51ZWwgQnJp b3QsIEpvZWwgQnJvYmVja2VyIGFuZCBBcm5hdWQgQ2hhcmxldCAgICAgICAgICAtLQotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yICAgICAtLQotLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAgICAgICAtLQotLSBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgICAgICAtLQotLSB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgICAtLQotLSBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiAgICAtLQot LSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSAtLQotLSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu ICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgICAgICAgICAt LQotLSBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo ZSAgICAgICAgICAgICAtLQotLSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgICAgICAtLQotLSBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLQotLSBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0 ZSBnZW5lcmljcyBmcm9tICAtLQotLSB0aGlzIHVuaXQsIG9yIHlvdSBsaW5rIHRoaXMgdW5pdCB3 aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gICAtLQotLSBleGVjdXRhYmxlLCB0aGlzICB1 bml0ICBkb2VzIG5vdCAgYnkgaXRzZWxmIGNhdXNlICB0aGUgcmVzdWx0aW5nICAtLQotLSBleGVj dXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiBU aGlzICAtLQotLSBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlciBpbnZhbGlkYXRlIGFueSBvdGhl ciByZWFzb25zIHdoeSB0aGUgICAtLQotLSBleGVjdXRhYmxlIGZpbGUgIG1pZ2h0IGJlIGNvdmVy ZWQgYnkgdGhlICBHTlUgUHVibGljIExpY2Vuc2UuICAgICAtLQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLS0g IDxkZXNjcmlwdGlvbj4KLS0KLS0gIFRoaXMgcGFja2FnZSBwcm92aWRlcyBzb21lIGJhc2ljIEd0 aysgZnVuY3Rpb25hbGl0aWVzIHN1Y2ggYXMgZ2V0dGluZyB0aGUKLS0gIHZlcnNpb24gbnVtYmVy LiBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSBvZiB0aGUgR3RrIHdpZGdldCBoaWVyYXJj aHkuCi0tICBGb3IgZ2VuZXJhbCBHdGtBZGEgaW5pdGlhbGl6YXRpb25zLCBAcHhyZWZ7UGFja2Fn ZV9HdGsuTWFpbn0uCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgotLSAgPGNfdmVyc2lvbj4xLjIuNzwv Y192ZXJzaW9uPgoKd2l0aCBHbGliOyAgICAgICAgICAgICAgICB1c2UgR2xpYjsKd2l0aCBHZGs7 ICAgICAgICAgICAgICAgICB1c2UgR2RrOwp3aXRoIFN5c3RlbTsKCnBhY2thZ2UgR3RrIGlzCgog ICB0eXBlIFJvb3RfVHlwZSBpcyB0YWdnZWQgcHJpdmF0ZTsKICAgLS0gIFRoZSBiYXNlIHR5cGUg b2YgdGhlIGhpZXJhcmNoeSBpbiBHdGtBZGEuIEl0IGJhc2ljYWxseSBnaXZlcyBhY2Nlc3MKICAg LS0gIHRvIGFuIHVuZGVybHlpbmcgQyBvYmplY3QuIFRoaXMgaXMgbm90IGEgY29udHJvbGxlZCB0 eXBlLCBmb3IgZWZmaWNpZW5jeQogICAtLSAgcmVhc29ucywgYW5kIGJlY2F1c2UgZ3RrKyB0YWtl cyBjYXJlIG9mIG1lbW9yeSBtYW5hZ2VtZW50IG9uIGl0cyBvd24uCgogICAtLSAgPGRvY19pZ25v cmU+CiAgIHR5cGUgUm9vdF9UeXBlX0FjY2VzcyBpcyBhY2Nlc3MgYWxsIFJvb3RfVHlwZSdDbGFz czsKICAgLS0gIDwvZG9jX2lnbm9yZT4KCiAgIHR5cGUgR3RrX1JjX1N0eWxlIGlzIG5ldyBHZGsu Q19Qcm94eTsKICAgLS0gIFR5cGUgdXNlZCB0byBoYW5kbGUgcmVzb3VyY2Ugc3R5bGVzLgogICAt LSAgU2VlIHBhY2thZ2UgR3RrLlJjIGZvciBtb3JlIGRldGFpbHMuCgogICBmdW5jdGlvbiBNYWpv cl9WZXJzaW9uIHJldHVybiBHdWludDsKICAgLS0gIFJldHVybiB0aGUgbWFqb3IgdmVyc2lvbiBu dW1iZXIgZm9yIEd0aysuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkg dGhlIHNhbWUgYXMgZm9yIEd0a0FkYS4KICAgLS0gIElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCBy ZXR1cm5zIDEuCgogICBmdW5jdGlvbiBNaW5vcl9WZXJzaW9uIHJldHVybiBHdWludDsKICAgLS0g IFJldHVybiB0aGUgbWlub3IgdmVyc2lvbiBudW1iZXIgZm9yIEd0aysuCiAgIC0tICBOb3RlIHRo YXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgZm9yIEd0a0FkYS4KICAgLS0g IElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCByZXR1cm5zIDIuCgogICBmdW5jdGlvbiBNaWNyb19W ZXJzaW9uIHJldHVybiBHdWludDsKICAgLS0gIFJldHVybiB0aGUgbWljcm8gdmVyc2lvbiBudW1i ZXIgZm9yIEd0aysuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgbmVjZXNzYXJpbHkgdGhl IHNhbWUgYXMgZm9yIEd0a0FkYS4KICAgLS0gIElmIHRoZSB2ZXJzaW9uIGlzIDEuMi42LCByZXR1 cm5zIDYuCgogICB0eXBlIEd0a19UeXBlIGlzIG5ldyBHdWludDsKICAgLS0gIFRoaXMgdHlwZSBk ZXNjcmliZXMgYW4gaW50ZXJuYWwgdHlwZSBpbiBHdGsrLgogICAtLSAgWW91IHNob3VsZG4ndCBo YXZlIHRvIHVzZSBpdCBpbiB5b3VyIG93biBhcHBsaWNhdGlvbnMsIGhvd2V2ZXIgaXQgbWlnaHQK ICAgLS0gIGJlIHVzZWZ1bCBzb21ldGltZXMuCiAgIC0tICBFdmVyeSB3aWRnZXQgdHlwZSBpcyBh c3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyB2YWx1ZSwgY3JlYXRlZAogICAtLSAgZHluYW1pY2Fs bHkgYXQgcnVuIHRpbWUgdGhlIGZpcnN0IHRpbWUgeW91IGluc3RhbnRpYXRlIGEgd2lkZ2V0IG9m IHRoYXQKICAgLS0gIHR5cGUgKHRodXMgaWYgeW91IGhhdmUgbmV2ZXIgdXNlZCBhIEd0a19GaWxl X1NlbGVjdGlvbiwgaXQgd29uJ3QgaGF2ZQogICAtLSAgYW55IEd0a19UeXBlIGFzc29jaWF0ZWQg d2l0aCBpdCkuCiAgIC0tICBZb3UgY2FuIGdldCB0aGUgZXhhY3QgdHlwZSB2YWx1ZSBmb3IgZWFj aCB0eXBlIGJ5IHVzaW5nIHRoZSBmdW5jdGlvbnMKICAgLS0gIEdldF9UeXBlIHByb3ZpZGVkIGlu IGFsbCB0aGUgcGFja2FnZXMgaW4gR3RrQWRhLgogICAtLSAgWW91IGNhbiBnZXQgdGhlIHNwZWNp ZmljIHZhbHVlIGZvciBhbiBleGlzdGluZyB3aWRnZXQgYnkgdXNpbmcgdGhlCiAgIC0tICBmdW5j dGlvbiBHdGsuT2JqZWN0LkdldF9UeXBlLgoKICAgR3RrX1R5cGVfSW52YWxpZCA6IGNvbnN0YW50 IEd0a19UeXBlIDo9IDA7CiAgIEd0a19UeXBlX05vbmUgICAgOiBjb25zdGFudCBHdGtfVHlwZSA6 PSAxOwogICBHdGtfVHlwZV9DaGFyICAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gMjsKICAgR3Rr X1R5cGVfVWNoYXIgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDM7CiAgIEd0a19UeXBlX0Jvb2wg ICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSA0OwogICBHdGtfVHlwZV9JbnQgICAgIDogY29uc3Rh bnQgR3RrX1R5cGUgOj0gNTsKICAgR3RrX1R5cGVfVWludCAgICA6IGNvbnN0YW50IEd0a19UeXBl IDo9IDY7CiAgIEd0a19UeXBlX0xvbmcgICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSA3OwogICBH dGtfVHlwZV9VbG9uZyAgIDogY29uc3RhbnQgR3RrX1R5cGUgOj0gODsKICAgR3RrX1R5cGVfRmxv YXQgICA6IGNvbnN0YW50IEd0a19UeXBlIDo9IDk7CiAgIEd0a19UeXBlX0RvdWJsZSAgOiBjb25z dGFudCBHdGtfVHlwZSA6PSAxMDsKICAgR3RrX1R5cGVfU3RyaW5nICA6IGNvbnN0YW50IEd0a19U eXBlIDo9IDExOyAgLS0gIE51bGwgdGVybWluYXRlZCBzdHJpbmcuCiAgIEd0a19UeXBlX0VudW0g ICAgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxMjsKICAgR3RrX1R5cGVfRmxhZ3MgICA6IGNvbnN0 YW50IEd0a19UeXBlIDo9IDEzOwogICBHdGtfVHlwZV9Cb3hlZCAgIDogY29uc3RhbnQgR3RrX1R5 cGUgOj0gMTQ7CiAgIEd0a19UeXBlX1BvaW50ZXIgOiBjb25zdGFudCBHdGtfVHlwZSA6PSAxNTsg IC0tICBhIGdlbmVyYWwgcG9pbnRlciB0eXBlLgogICBHdGtfVHlwZV9PYmplY3QgIDogY29uc3Rh bnQgR3RrX1R5cGUgOj0gMjE7ICAtLSAgT25lIG9mIHRoZSB3aWRnZXRzL29iamVjdHMKCiAgIHR5 cGUgR3RrX05vdGVib29rX1BhZ2UgaXMgbmV3IEdkay5DX1Byb3h5OwogICAtLSAgQSBwYWdlIG9m IHRoZSBub3RlYm9vay4KICAgLS0gIEl0IGNhbiBjb250YWluIGEgc2luZ2xlIGNoaWxkLCBhbmQg aXMgYWxzbyBhc3NvY2lhdGVkIHdpdGggYSB0YWIKICAgLS0gIGxhYmVsIHVzZWQgdG8gc2VsZWN0 IHRoYXQgcGFnZSBpbiB0aGUgbm90ZWJvb2suCgogICBmdW5jdGlvbiBHdGtfVHlwZV9HZGtfRXZl bnQgcmV0dXJuIEd0a19UeXBlOwogICAtLSAgUmV0dXJuIHRoZSB0eXBlIGNvcnJlc3BvbmRpbmcg dG8gYSBHZGtfRXZlbnQuCiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNh bGxlZCBhZnRlciBHdGsrIGhhcyBiZWVuIGluaXRpYWxpemVkLgoKICAgZnVuY3Rpb24gVHlwZV9O YW1lIChUeXBlX051bSA6IGluIEd0a19UeXBlKSByZXR1cm4gU3RyaW5nOwogICAtLSAgUmV0dXJu IHRoZSB0eXBlIG5hbWUgY29ycmVzcG9uZGluZyB0byBhIEd0a19UeXBlLgogICAtLSAgVGhpcyBt aWdodCBiZSB1c2VmdWwgaW4gZGVidWcgbWVzc2FnZXMuCgogICBmdW5jdGlvbiBUeXBlX0Zyb21f TmFtZSAoTmFtZSA6IGluIFN0cmluZykgcmV0dXJuIEd0a19UeXBlOwogICAtLSAgQ29udmVydCBh IHN0cmluZyB0byB0aGUgbWF0Y2hpbmcgdHlwZS4KICAgLS0gIE5hbWUgc2hvdWxkIGJlIHRoZSBD IHdpZGdldCdzIG5hbWUsIHN1Y2ggYXMgR3RrU2Nyb2xsYmFyIG9yIEd0a0J1dHRvbiwKICAgLS0g IHJhdGhlciB0aGFuIHRoZSBBZGEgbmFtZS4KCiAgIGZ1bmN0aW9uIElzX0NyZWF0ZWQgKE9iamVj dCA6IGluIFJvb3RfVHlwZSdDbGFzcykgcmV0dXJuIEJvb2xlYW47CiAgIC0tICBSZXR1cm4gVHJ1 ZSBpZiB0aGUgYXNzb2NpYXRlZCBDIG9iamVjdCBoYXMgYmVlbiBjcmVhdGVkLCBGYWxzZSBpZiBu bwogICAtLSAgQyBvYmplY3QgaXMgYXNzb2NpYXRlZCB3aXRoIE9iamVjdC4KICAgLS0gIFRoaXMg aXMgbm90IHRoZSBzYW1lIGFzIHRlc3Rpbmcgd2hldGhlciBhbiBhY2Nlc3MgdHlwZSAoZm9yIGlu c3RhbmNlCiAgIC0tICBhbnkgb2YgdGhlIHdpZGdldHMpIGlzICJudWxsIiwgc2luY2UgdGhpcyBy ZWxhdGVzIHRvIHRoZSB1bmRlcmx5aW5nCiAgIC0tICBDIG9iamVjdC4KCiAgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICAtLSBJbnRlcmZhY2luZyB3aXRoIEMgLS0KICAgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgIC0tICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgbWFkZSBwdWJs aWMgc28gdGhhdCBvbmUgY2FuIGVhc2lseSBjcmVhdGUKICAgLS0gIG5ldyB3aWRnZXRzIG91dHNp ZGUgdGhlIEd0ayBwYWNrYWdlIGhpZXJhcmNoeS4KICAgLS0gIE9ubHkgZXhwZXJpZW5jZWQgdXNl cnMgc2hvdWxkIG1ha2UgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucy4KCiAgIGZ1bmN0aW9uIEdldF9P YmplY3QgKE9iamVjdCA6IGFjY2VzcyBSb290X1R5cGUnQ2xhc3MpIHJldHVybiBTeXN0ZW0uQWRk cmVzczsKICAgLS0gIEFjY2VzcyB0aGUgdW5kZXJseWluZyBDIHBvaW50ZXIuCgogICBwcm9jZWR1 cmUgU2V0X09iamVjdAogICAgIChPYmplY3QgOiBhY2Nlc3MgUm9vdF9UeXBlJ0NsYXNzOwogICAg ICBWYWx1ZSAgOiBpbiAgICAgU3lzdGVtLkFkZHJlc3MpOwogICAtLSAgTW9kaWZ5IHRoZSB1bmRl cmx5aW5nIEMgcG9pbnRlci4KCiAgIHByb2NlZHVyZSBJbml0aWFsaXplX1VzZXJfRGF0YSAoT2Jq IDogYWNjZXNzIFJvb3RfVHlwZSdDbGFzcyk7CiAgIC0tICBTZXRzIGEgdXNlciBkYXRhIGZpZWxk IGZvciB0aGUgQyBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIE9iai4KICAgLS0gIFRoaXMgZmllbGQg d2lsbCBiZSB1c2VkIHNvIHRoYXQgaXQgaXMgcG9zc2libGUsIGtub3dpbmcgYQogICAtLSAgQyBv YmplY3QsIHRvIGdldCB0aGUgZnVsbCBhZGEgb2JqZWN0LgoKICAgZnVuY3Rpb24gR2V0X1VzZXJf RGF0YQogICAgIChPYmogIDogaW4gU3lzdGVtLkFkZHJlc3M7CiAgICAgIFN0dWIgOiBpbiBSb290 X1R5cGUnQ2xhc3MpIHJldHVybiBSb290X1R5cGVfQWNjZXNzOwogICAtLSAgR2V0IHRoZSB1c2Vy IGRhdGEgdGhhdCB3YXMgc2V0IGJ5IEd0a0FkYS4KICAgLS0gIElmIHRoZSBEYXRhIGlzIG5vdCBz ZXQsIHJldHVybiBhIG5ldyBhY2Nlc3MgdHlwZSwgdGhhdCBwb2ludHMgdG8KICAgLS0gIGEgc3Ry dWN0dXJlIHdpdGggdGhlIHNhbWUgdGFnIGFzIFN0dWIuCgogICBmdW5jdGlvbiBVbmNoZWNrZWRf Q2FzdAogICAgIChPYmogIDogYWNjZXNzIFJvb3RfVHlwZSdDbGFzczsKICAgICAgU3R1YiA6IFJv b3RfVHlwZSdDbGFzcykgcmV0dXJuIFJvb3RfVHlwZV9BY2Nlc3M7CiAgIC0tICBDYXN0IE9iaiBp biBhbiBvYmplY3Qgb2YgdGFnIFN0dWInQ2xhc3MuCiAgIC0tICBSZXR1cm4gdGhlIHJlc3VsdGlu ZyBvYmplY3QgYW5kIGZyZWUgdGhlIG1lbW9yeSBwb2ludGVkIGJ5IE9iai4KCiAgIGZ1bmN0aW9u IENvdW50X0FyZ3VtZW50cwogICAgIChUaGVfVHlwZSA6IEd0a19UeXBlOyBOYW1lIDogaW4gU3Ry aW5nKSByZXR1cm4gR3VpbnQ7CiAgIC0tICBSZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMg dXNlZCBpbiB0aGUgaGFuZGxlcnMgZm9yIHRoZSBzaWduYWwuCiAgIC0tICBOb3RlIHRoYXQgaW4g dGhlIENvbm5lY3QgZnVuY3Rpb25zLCB3ZSBhbHdheXMgdGVzdCB3aGV0aGVyIHRoZSB1c2VyCiAg IC0tICBoYXMgYXNrZWQgZm9yICphdCBtb3N0KiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBkZWZp bmVkIGJ5IGd0aysgZm9yIHRoZQogICAtLSAgY2FsbGJhY2suIFRoaXMgaXMgYmVjYXVzZSBoYXZp bmcgbGVzcyBhcmd1bWVudCBpcyBhdXRob3JpemVkICh0aGUKICAgLS0gIGV4dHJhIHBhcmFtZXRl cnMgcGFzc2VkIGJ5IGd0aysgd2lsbCBzaW1wbHkgYmUgaWdub3JlZCksIHdoZXJlYXMgaGF2aW5n CiAgIC0tICBtb3JlIGFyZ3VtZW50cyBpcyBpbXBvc3NpYmxlICh0aGV5IHdvdWxkIG5ldmVyIGJl IHNldCkuCiAgIC0tICBOb3RlIHRoYXQgd2UgcHJvdmlkZSB0aGlzIHByb2NlZHVyZSBoZXJlIHRv IGF2b2lkIGNpcmN1bGFyaXRpZXMuCgogICBmdW5jdGlvbiBBcmd1bWVudF9UeXBlCiAgICAgKFRo ZV9UeXBlIDogR3RrX1R5cGU7CiAgICAgIE5hbWUgICAgIDogaW4gU3RyaW5nOwogICAgICBOdW0g ICAgICA6IGluIEdpbnQpIHJldHVybiBHdGtfVHlwZTsKICAgLS0gIFJldHVybiB0aGUgdHlwZSBv ZiB0aGUgbnVtLXRoIGFyZ3VtZW50IGZvciB0aGUgaGFuZGxlcnMgb2Ygc2lnbmFsIG5hbWUuCiAg IC0tICBJZiBOdW0gaXMgbmVnYXRpdmUsIHJldHVybiB0aGUgdHlwZSByZXR1cm5lZCBieSB0aGUg aGFuZGxlcnMgZm9yIHRoaXMKICAgLS0gIHNpZ25hbC4KICAgLS0gIE5vdGUgdGhhdCB3ZSBwcm92 aWRlIHRoaXMgcHJvY2VkdXJlIGhlcmUgdG8gYXZvaWQgY2lyY3VsYXJpdGllcy4KCnByaXZhdGUK CiAgIHR5cGUgUm9vdF9UeXBlIGlzIHRhZ2dlZCByZWNvcmQKICAgICAgUHRyIDogU3lzdGVtLkFk ZHJlc3MgOj0gU3lzdGVtLk51bGxfQWRkcmVzczsKICAgZW5kIHJlY29yZDsKCiAgIC0tICA8ZG9j X2lnbm9yZT4KCiAgIC0tICBOb3RlOiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhbmQgdHlwZXMg c2hvdWxkIG9ubHkgYmUgdXNlZAogICAtLSAgZm9yIGludGVybmFsIHVzYWdlLCBub3QgaW4gdGhl IHVzZXIncyBhcHBsaWNhdGlvbnMuCiAgIC0tICBJZiB5b3UgdXNlIHR5cGUgaW5oZXJpdGFuY2Ug Zm9yIG5ldyB3aWRnZXRzLCB5b3Ugc2hvdWxkIG5vdCBuZWVkCiAgIC0tICB0aGVzZSBmdW5jdGlv bnMuCgogICBHdGtBZGFfU3RyaW5nIDogY29uc3RhbnQgU3RyaW5nIDo9ICJfR3RrQWRhIiAmIEFT Q0lJLk5VTDsKICAgR3RrQWRhX1N0cmluZ19RdWFyayA6IEdsaWIuR1F1YXJrIDo9IEdsaWIuVW5r bm93bl9RdWFyazsKICAgLS0gIFRoZSBuYW1lIGZvciB0aGUgdXNlciBkYXRhIHRoYXQgd2Ugc2V0 IGluIHRoZSBvYmplY3RzLgogICAtLSAgVGhlIFF1YXJrIHZlcnNpb24gaXMgdG8gc3BlZWQgdXAg dGhlIHN0cmluZyBsb29rdXAgKHRoaXMgaXMgZG9uZQogICAtLSAgb25seSBvbmNlKS4KCiAgIGZ1 bmN0aW9uIENvbnZlcnNpb25fRnVuY3Rpb24KICAgICAoT2JqIDogU3lzdGVtLkFkZHJlc3M7IFN0 dWIgOiBSb290X1R5cGUnQ2xhc3MpIHJldHVybiBSb290X1R5cGVfQWNjZXNzOwogICAtLSAgVGhp cyBmdW5jdGlvbiBoYXMgdG8gY29udmVydCBhIEMgb2JqZWN0IHRvIGFuIEFkYSBvYmplY3QuCiAg IC0tICBJdCB3aWxsIGZpcnN0IHRyeSBhbGwgdGhlIHJlZ2lzdGVyZWQgZnVuY3Rpb25zIChpbgog ICAtLSAgR3RrLlR5cGVfQ29udmVyc2lvbl9Ib29rcykgYW5kIGJ5IGRlZmF1bHQsIHdpbGwgY3Jl YXRlIGEgU3R1YidDbGFzcwogICAtLSAgb2JqZWN0LCBubyBtYXR0ZXIgd2hhdCB0aGUgcmVhbCBD IHR5cGUgaXMuCiAgIC0tICBTdHViIGlzIHRoZSBleHBlY3RlZCB0eXBlLgoKICAgLS0gIDwvZG9j X2lnbm9yZT4KCiAgIHByYWdtYSBJbmxpbmUgKEdldF9PYmplY3QpOwogICBwcmFnbWEgSW5saW5l IChTZXRfT2JqZWN0KTsKCiAgIHByYWdtYSBJbXBvcnQgKEMsIE1ham9yX1ZlcnNpb24sICJhZGFf Z3RrX21ham9yX3ZlcnNpb24iKTsKICAgcHJhZ21hIEltcG9ydCAoQywgTWlub3JfVmVyc2lvbiwg ImFkYV9ndGtfbWlub3JfdmVyc2lvbiIpOwogICBwcmFnbWEgSW1wb3J0IChDLCBNaWNyb19WZXJz aW9uLCAiYWRhX2d0a19taWNyb192ZXJzaW9uIik7CiAgIHByYWdtYSBJbXBvcnQgKEMsIEd0a19U eXBlX0dka19FdmVudCwgImFkYV9ndGtfdHlwZV9nZGtfZXZlbnQiKTsKZW5kIEd0azsKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLS0gICAgICAgICAgR3RrQWRhIC0gQWRhOTUgYmluZGluZyBmb3IgdGhlIEdpbXAg VG9vbGtpdCAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAg ICAgICBDb3B5cmlnaHQgKEMpIDE5OTgtMjAwMCAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0g ICAgICAgIEVtbWFudWVsIEJyaW90LCBKb2VsIEJyb2JlY2tlciBhbmQgQXJuYXVkIENoYXJsZXQg ICAgICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciAgICAgLS0KLS0gbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljICAgICAgICAgICAgICAgLS0K LS0gTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyICAgICAgLS0KLS0gdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLiAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gVGhpcyBsaWJy YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsICAg LS0KLS0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YgICAgLS0KLS0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgLS0KLS0gR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLiAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLS0KLS0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljICAgICAgICAgLS0KLS0gTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg aWYgbm90LCB3cml0ZSB0byB0aGUgICAgICAgICAgICAgLS0KLS0gRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsICAgICAgLS0KLS0gQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLS0KLS0gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgaWYgb3Ro ZXIgZmlsZXMgaW5zdGFudGlhdGUgZ2VuZXJpY3MgZnJvbSAgLS0KLS0gdGhpcyB1bml0LCBvciB5 b3UgbGluayB0aGlzIHVuaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuICAgLS0KLS0g ZXhlY3V0YWJsZSwgdGhpcyAgdW5pdCAgZG9lcyBub3QgIGJ5IGl0c2VsZiBjYXVzZSAgdGhlIHJl c3VsdGluZyAgLS0KLS0gZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZS4gVGhpcyAgLS0KLS0gZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIg aW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlICAgLS0KLS0gZXhlY3V0YWJsZSBm aWxlICBtaWdodCBiZSBjb3ZlcmVkIGJ5IHRoZSAgR05VIFB1YmxpYyBMaWNlbnNlLiAgICAgLS0K LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCi0tICA8ZGVzY3JpcHRpb24+Ci0tCi0tICBUaGlzIHBhY2thZ2UgcHJv dmlkZXMgR3RrQWRhIHNwZWNpZmljIHR5cGVzIGFuZCB0aGVpciBhc3NvY2lhdGVkIGZ1bmN0aW9u cy4KLS0KLS0gIDwvZGVzY3JpcHRpb24+Cgp3aXRoIEludGVyZmFjZXMuQy5TdHJpbmdzOwoKcGFj a2FnZSBHdGthZGEuVHlwZXMgaXMKCiAgIHByYWdtYSBQcmVlbGFib3JhdGU7CgogICBEYXRhX0Vy cm9yIDogZXhjZXB0aW9uOwoKICAgLS0gIDxkb2NfaWdub3JlPgogICBzdWJ0eXBlIENoYXJzX1B0 ciBpcyBJbnRlcmZhY2VzLkMuU3RyaW5ncy5jaGFyc19wdHI7CiAgIHN1YnR5cGUgQ2hhcnNfUHRy X0FycmF5IGlzIEludGVyZmFjZXMuQy5TdHJpbmdzLmNoYXJzX3B0cl9hcnJheTsKICAgLS0gIDwv ZG9jX2lnbm9yZT4KCiAgIE51bGxfUHRyIDogQ2hhcnNfUHRyIHJlbmFtZXMgSW50ZXJmYWNlcy5D LlN0cmluZ3MuTnVsbF9QdHI7CgogICBmdW5jdGlvbiBOdWxsX0FycmF5IHJldHVybiBDaGFyc19Q dHJfQXJyYXk7CiAgIC0tICBSZXR1cm4gYSBudWxsIGFycmF5LgogICBwcmFnbWEgSW5saW5lIChO dWxsX0FycmF5KTsKCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAg LS0gIEhhbmRsaW5nIG9mIGFycmF5cyBvZiBTdHJpbmdzICAtLQogICAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIC0tICBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBwcm92 aWRlIGEgdmVyeSBjb252ZW5pZW50IHdheSB0byBjcmVhdGUKICAgLS0gIEMgYXJyYXlzIG9mIG51 bGwgdGVybWluYXRlZCBzdHJpbmdzIGluIEFkYS4KICAgLS0KICAgLS0gIFlvdSBjYW4gZWl0aGVy IGNyZWF0ZSBzdWNoIGEgU3RyaW5nIG9uIHRoZSBmbHksIG9yIGRlY2xhcmUgYSB2YXJpYWJsZToK ICAgLS0KICAgLS0gICAgIFNpZ25hbHMgOiBDaGFyc19QdHJfQXJyYXkgOj0gImNsaWNrZWQiICsg Im1pc3NlZCIgKyAibmV3IHNpZ25hbCI7CiAgIC0tCiAgIC0tICB3aGljaCBjb3JyZXNwb25kcyB0 byB0aGUgQyBkZWNsYXJhdGlvbjoKICAgLS0KICAgLS0gICAgIGNoYXIgKnNpZ25hbHNbXSA9IEB7 ImNsaWNrZWQiLCAibWlzc2VkIiwgIm5ldyBzaWduYWwiQH07CiAgIC0tCiAgIC0tICBOb3RlIHRo YXQgeW91IHN0aWxsIG5lZWQgdG8gbWFudWFsbHkgY2FsbCBGcmVlIChTaWduYWxzKSBpZiB5b3Ug d2FudCB0bwogICAtLSAgcmVsZWFzZSB0aGUgbWVtb3J5IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBi eSB0aGUgIisiIGZ1bmN0aW9ucy4KCiAgIGZ1bmN0aW9uICIrIiAoUzEsIFMyIDogU3RyaW5nKSBy ZXR1cm4gQ2hhcnNfUHRyX0FycmF5OwogICAtLSAgQ3JlYXRlIGFuIGFycmF5IGNvbnRhaW5pbmcg UzEgYW5kIFMyLgogICAtLSAgTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYWxsb2NhdGVzIG1lbW9y eSB0byBzdG9yZSBTMSBhbmQgUzIgYXMgbnVsbAogICAtLSAgdGVybWluYXRlZCBTdHJpbmdzLiBU aGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBGcmVlIG9uIHRoZQogICAtLSAgcmVz dWx0aW5nIGFycmF5LgoKICAgZnVuY3Rpb24gIisiIChTMSA6IENoYXJzX1B0cl9BcnJheTsgUzIg OiBTdHJpbmcpIHJldHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBBcHBlbmQgUzIgdG8gUzEu CiAgIC0tICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRvIHN0b3Jl IFMyIGFzIGEgbnVsbAogICAtLSAgdGVybWluYXRlZCBTdHJpbmdzLiBUaGUgdXNlciBpcyByZXNw b25zaWJsZSBmb3IgY2FsbGluZyBGcmVlIG9uIHRoZQogICAtLSAgcmVzdWx0aW5nIGFycmF5LgoK ICAgZnVuY3Rpb24gIisiIChTMSA6IENoYXJzX1B0cl9BcnJheTsgUzIgOiBDaGFyc19QdHIpIHJl dHVybiBDaGFyc19QdHJfQXJyYXk7CiAgIC0tICBBcHBlbmQgUzIgdG8gUzEuCiAgIC0tICBOb3Rl IHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRvIHN0b3JlIFMyIGFzIGEgbnVs bAogICAtLSAgdGVybWluYXRlZCBTdHJpbmdzLiBUaGUgdXNlciBpcyByZXNwb25zaWJsZSBmb3Ig Y2FsbGluZyBGcmVlIG9uIHRoZQogICAtLSAgcmVzdWx0aW5nIGFycmF5LgoKICAgZnVuY3Rpb24g IisiIChTMSA6IENoYXJzX1B0cjsgUzIgOiBTdHJpbmcpIHJldHVybiBDaGFyc19QdHJfQXJyYXk7 CiAgIC0tICBDcmVhdGUgYW4gYXJyYXkgY29udGFpbmluZyBTMSBhbmQgUzIuCiAgIC0tICBOb3Rl IHRoYXQgdGhpcyBmdW5jdGlvbiBhbGxvY2F0ZXMgbWVtb3J5IHRvIHN0b3JlIFMyIGFzIGEgbnVs bAogICAtLSAgdGVybWluYXRlZCBzdHJpbmcuIFRoZSB1c2VyIGlzIHJlc3BvbnNpYmxlIGZvciBj YWxsaW5nIEZyZWUgb24gdGhlCiAgIC0tICByZXN1bHRpbmcgYXJyYXkuCgogICBwcm9jZWR1cmUg RnJlZSAoQSA6IGluIG91dCBDaGFyc19QdHJfQXJyYXkpOwogICAtLSAgRnJlZSBhbGwgdGhlIHN0 cmluZ3MgaW4gQS4KCmVuZCBHdGthZGEuVHlwZXM7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgICAg IEd0a0FkYSAtIEFkYTk1IGJpbmRpbmcgZm9yIHRoZSBHaW1wIFRvb2xraXQgICAgICAgICAgICAg IC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAx OTk4LTIwMDAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICBFbW1hbnVlbCBCcmlv dCwgSm9lbCBCcm9iZWNrZXIgYW5kIEFybmF1ZCBDaGFybGV0ICAgICAgICAgIC0tCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgICAgIC0tCi0tIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgICAgICAgIC0tCi0tIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciAgICAgIC0tCi0tIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4gIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgIC0tCi0tIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mICAgIC0tCi0t IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VIC0tCi0tIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4g ICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyAgICAgICAgIC0t Ci0tIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhl ICAgICAgICAgICAgIC0tCi0tIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCAgICAgIC0tCi0tIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC0tCi0tIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRl IGdlbmVyaWNzIGZyb20gIC0tCi0tIHRoaXMgdW5pdCwgb3IgeW91IGxpbmsgdGhpcyB1bml0IHdp dGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiAgIC0tCi0tIGV4ZWN1dGFibGUsIHRoaXMgIHVu aXQgIGRvZXMgbm90ICBieSBpdHNlbGYgY2F1c2UgIHRoZSByZXN1bHRpbmcgIC0tCi0tIGV4ZWN1 dGFibGUgdG8gYmUgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRo aXMgIC0tCi0tIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyIGludmFsaWRhdGUgYW55IG90aGVy IHJlYXNvbnMgd2h5IHRoZSAgIC0tCi0tIGV4ZWN1dGFibGUgZmlsZSAgbWlnaHQgYmUgY292ZXJl ZCBieSB0aGUgIEdOVSBQdWJsaWMgTGljZW5zZS4gICAgIC0tCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgotLSAg PGRlc2NyaXB0aW9uPgotLQotLSAgVGhpcyBpcyB0aGUgcGFyZW50IHBhY2thZ2UgZm9yIHRoZSBH dGtBZGEgc3BlY2lmaWMgdW5pdHMuCi0tCi0tICA8L2Rlc2NyaXB0aW9uPgoKcGFja2FnZSBHdGth ZGEgaXMKCiAgIHByYWdtYSBQdXJlIChHdGthZGEpOwoKZW5kIEd0a2FkYTsK