Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp7582275rwl; Thu, 23 Mar 2023 06:20:30 -0700 (PDT) X-Google-Smtp-Source: AK7set81NTCDMPsRNw4FSo4wtpVpQ0vDe9aYA25bpUyqTM8I6OhF5CwQ49nHpjmSNICkdhZ/bzrp X-Received: by 2002:a17:90a:1db:b0:23f:962e:826b with SMTP id 27-20020a17090a01db00b0023f962e826bmr8473300pjd.15.1679577629986; Thu, 23 Mar 2023 06:20:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679577629; cv=none; d=google.com; s=arc-20160816; b=XSSiJVAS81wWyMxNCpRVKyqJ03N8d89Nfu24tU4T9p+XlDWPN9UeMkMOXdPd5qFl8p VDvEtlSABI9mkaJjb0so6jEBP+mjamqAuWtSj5dAm7e8plilD9/jxaavmOG7D/q/wk9j VxmIs9ssbocEKpaJimA1IvNy67XFKqpNAoTLyocev0AgkOEbe8/bugbcCv8Zo394oOe3 3s8oP62ly+XK95mqFEMCglkBgNejxm9K8u8T3P3eFDgZCg+5g0WWnAPZGMTTjuEd4Fr9 7USb/fEnFcGNb4ozxbxfTeW3OrSTJh/BfKpejGwx0bIP0NjIqic08XfmSHUm+ksnmsFM xthw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:reply-to:references:in-reply-to:subject:to:from :mime-version:date:message-id:dkim-signature; bh=LnNPn0hQNS85/VaYL0mQVY+ok2we2edk1nrYYgC8t2s=; b=xV/KDiDp6PDHv1zHegX0neGc+F2LTTMDQhr+e329LrGV/nAlL+uuABp1107KE0G89u 7nr5lRleaQR83WYb6aSa28tjKSS3S4/k6UAT/pBLe3oTD73+N2lfPhikaPobypifx7Ys wv6ftzwSm6ebZlge6KuoC8p/8PKrv99j4AuiROH7sVkIfLcH9NL0Mu1jO55GjXHIByRE 3mfNLuIEmCNYRV8Lt21LmZwUBjDsze/IX9JJRHuXE1nCByAViIz26eWXaUQNBLnP9nmA DDYM1Wpo6BFZSNqblPJYKadAG2I8o5OqU9EZZX6HTQeHDScTyLJTy82dd+KXEuzcHy76 d0NQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Gq1ulq+a; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c22-20020a17090ab29600b0023fda298a9asi1696504pjr.104.2023.03.23.06.20.09; Thu, 23 Mar 2023 06:20:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=Gq1ulq+a; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231268AbjCWMld (ORCPT + 99 others); Thu, 23 Mar 2023 08:41:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47442 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230231AbjCWMld (ORCPT ); Thu, 23 Mar 2023 08:41:33 -0400 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17CD12726 for ; Thu, 23 Mar 2023 05:41:29 -0700 (PDT) Received: by mail-pl1-x630.google.com with SMTP id o2so14742865plg.4 for ; Thu, 23 Mar 2023 05:41:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679575288; h=reply-to:references:in-reply-to:subject:to:from:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=LnNPn0hQNS85/VaYL0mQVY+ok2we2edk1nrYYgC8t2s=; b=Gq1ulq+a6S72fJccv+1Dy7+u8I8gnOpRL61lgoEnudgRfs2CShFKzZo4Ra7Xbk72eQ K4ujnufB/D+N8b3UyoVaKOAogwpqx+fnoe5CzNeK7q2DAcc4W4hy+s5xr86hToC01ajh Nx/RNKqUWsziDyHwvSla0AqoyU8bgOFEP1P1cwH73JhROIbglIB+1XPrl/qtLTxSf7ri bTkvinRLr9u6RI93YLadbpSwas26NVnJjLYYvX9NZgqKzfkJeHRn7yb6WX7CabJ0mWyz vs90eihNEwMuEt/AN7QLVFZrXY5vw3eirk2V3BBo15lA6e1o0QbcjciICYKc4rcwu0hz AuUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679575288; h=reply-to:references:in-reply-to:subject:to:from:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LnNPn0hQNS85/VaYL0mQVY+ok2we2edk1nrYYgC8t2s=; b=fe70VYugQECqMy84nFK4bZeDhDhTEKGGcApuB17uHHLUU2tUnxN/4SgtxfMv7bryp2 j/DhLoX7HFw3xlrJU35Yo0gmnl7r2AnZ4jsn3WasuGXnP1kDhoh5N6fVdBNdM+erLclW uxCsHrhRsRb62GCK+LaHZIZdLUBt6mirUnGR/UEI8HEW8ryu+wsoxGSZvmK995u4YQuw 3LymCxUPR86IeZ4h9byI7g5mevk68jk+hisTo4Fx+rKr9b1k9BKGE9DZGMtoQb2vVin8 NzEorQCLI40aTWhlRun/e8N1SkU0JoBPkRBX6Qzc/cGvYy3FBihIcRJcmniLJz89i+k6 sMOQ== X-Gm-Message-State: AO0yUKXvpyF/dD0uSvRqAUKPNOPQlLlll5ayz5oW6U+/6BCqZHNjp3vg 7Gk7le0qmV8MZpAFmu2XXtWYnbg5aC4= X-Received: by 2002:a05:6a20:8b07:b0:d9:e45d:95d6 with SMTP id l7-20020a056a208b0700b000d9e45d95d6mr2687843pzh.35.1679575287140; Thu, 23 Mar 2023 05:41:27 -0700 (PDT) Received: from [172.17.0.2] ([104.209.46.51]) by smtp.gmail.com with ESMTPSA id g23-20020a63f417000000b0050bd9c8c53dsm11572471pgi.23.2023.03.23.05.41.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Mar 2023 05:41:26 -0700 (PDT) Message-ID: <641c48f6.630a0220.74e36.4e9c@mx.google.com> Date: Thu, 23 Mar 2023 05:41:26 -0700 (PDT) Content-Type: multipart/mixed; boundary="===============6952207621206296585==" MIME-Version: 1.0 From: bluez.test.bot@gmail.com To: linux-bluetooth@vger.kernel.org, simon.mikuda@streamunlimited.com Subject: RE: gatt-db fix + btgatt-client features In-Reply-To: <20230323103835.571037-2-simon.mikuda@streamunlimited.com> References: <20230323103835.571037-2-simon.mikuda@streamunlimited.com> Reply-To: linux-bluetooth@vger.kernel.org X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org --===============6952207621206296585== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhpcyBpcyBhdXRvbWF0ZWQgZW1haWwgYW5kIHBsZWFzZSBkbyBub3QgcmVwbHkgdG8gdGhpcyBl bWFpbCEKCkRlYXIgc3VibWl0dGVyLAoKVGhhbmsgeW91IGZvciBzdWJtaXR0aW5nIHRoZSBwYXRj aGVzIHRvIHRoZSBsaW51eCBibHVldG9vdGggbWFpbGluZyBsaXN0LgpUaGlzIGlzIGEgQ0kgdGVz dCByZXN1bHRzIHdpdGggeW91ciBwYXRjaCBzZXJpZXM6ClBXIExpbms6aHR0cHM6Ly9wYXRjaHdv cmsua2VybmVsLm9yZy9wcm9qZWN0L2JsdWV0b290aC9saXN0Lz9zZXJpZXM9NzMzMTEzCgotLS1U ZXN0IHJlc3VsdC0tLQoKVGVzdCBTdW1tYXJ5OgpDaGVja1BhdGNoICAgICAgICAgICAgICAgICAg ICBGQUlMICAgICAgNC43OCBzZWNvbmRzCkdpdExpbnQgICAgICAgICAgICAgICAgICAgICAgIFBB U1MgICAgICAyLjMzIHNlY29uZHMKQnVpbGRFbGwgICAgICAgICAgICAgICAgICAgICAgUEFTUyAg ICAgIDMyLjc0IHNlY29uZHMKQmx1ZXpNYWtlICAgICAgICAgICAgICAgICAgICAgRkFJTCAgICAg IDY5LjkyIHNlY29uZHMKTWFrZUNoZWNrICAgICAgICAgICAgICAgICAgICAgRkFJTCAgICAgIDIy OC43OCBzZWNvbmRzCk1ha2VEaXN0Y2hlY2sgICAgICAgICAgICAgICAgIFBBU1MgICAgICAxODQu NTAgc2Vjb25kcwpDaGVja1ZhbGdyaW5kICAgICAgICAgICAgICAgICBGQUlMICAgICAgNjAuMzUg c2Vjb25kcwpDaGVja1NtYXRjaCAgICAgICAgICAgICAgICAgICBGQUlMICAgICAgMTI5Ljk4IHNl Y29uZHMKYmx1ZXptYWtlZXh0ZWxsICAgICAgICAgICAgICAgRkFJTCAgICAgIDM1LjMwIHNlY29u ZHMKSW5jcmVtZW50YWxCdWlsZCAgICAgICAgICAgICAgRkFJTCAgICAgIDM3NDQuOTAgc2Vjb25k cwpTY2FuQnVpbGQgICAgICAgICAgICAgICAgICAgICBGQUlMICAgICAgNzk4Ljc1IHNlY29uZHMK CkRldGFpbHMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjClRlc3Q6IENoZWNrUGF0Y2gg LSBGQUlMCkRlc2M6IFJ1biBjaGVja3BhdGNoLnBsIHNjcmlwdApPdXRwdXQ6CltCbHVlWiwxLzld IGdhdHQtZGI6IEZpeCBjcmFzaCBkdXJpbmcgY2FsY3VsYXRpbmcgaGFzaCBmcm9tIEFUVCBoYW5k bGVzCldBUk5JTkc6TE9OR19MSU5FOiBsaW5lIGxlbmd0aCBvZiA4NiBleGNlZWRzIDgwIGNvbHVt bnMKIzExMjogRklMRTogc3JjL3NoYXJlZC9nYXR0LWRiLmM6MzQxOgorCQloYXNoLT5pb3YgPSBy ZWFsbG9jKGhhc2gtPmlvdiwgMiAqIGhhc2gtPnNpemUgKiBzaXplb2Yoc3RydWN0IGlvdmVjKSk7 CgpXQVJOSU5HOkxPTkdfTElORTogbGluZSBsZW5ndGggb2YgODUgZXhjZWVkcyA4MCBjb2x1bW5z CiMxMTM6IEZJTEU6IHNyYy9zaGFyZWQvZ2F0dC1kYi5jOjM0MjoKKwkJbWVtc2V0KGhhc2gtPmlv diArIGhhc2gtPnNpemUsIDAsIGhhc2gtPnNpemUgKiBzaXplb2Yoc3RydWN0IGlvdmVjKSk7Cgov Z2l0aHViL3dvcmtzcGFjZS9zcmMvc3JjLzEzMTg1NDc1LnBhdGNoIHRvdGFsOiAwIGVycm9ycywg MiB3YXJuaW5ncywgMzkgbGluZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9y dGVkIGRlZmVjdHMsIGNoZWNrcGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5 IGNvbnZlcnQgdG8gdGhlIHR5cGljYWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFj ZS4KCi9naXRodWIvd29ya3NwYWNlL3NyYy9zcmMvMTMxODU0NzUucGF0Y2ggaGFzIHN0eWxlIHBy b2JsZW1zLCBwbGVhc2UgcmV2aWV3LgoKTk9URTogSWdub3JlZCBtZXNzYWdlIHR5cGVzOiBDT01N SVRfTUVTU0FHRSBDT01QTEVYX01BQ1JPIENPTlNUX1NUUlVDVCBGSUxFX1BBVEhfQ0hBTkdFUyBN SVNTSU5HX1NJR05fT0ZGIFBSRUZFUl9QQUNLRUQgU1BEWF9MSUNFTlNFX1RBRyBTUExJVF9TVFJJ TkcgU1NDQU5GX1RPX0tTVFJUTwoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNl IHBvc2l0aXZlcywgcGxlYXNlIHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBz ZWUgQ0hFQ0tQQVRDSCBpbiBNQUlOVEFJTkVSUy4KCgpbQmx1ZVosMi85XSBidGdhdHQtY2xpZW50 OiBBZGQgb3B0aW9uIHRvIGNvbm5lY3QgdG8gQVRUIG92ZXIgQlIvRURSCldBUk5JTkc6TE9OR19M SU5FOiBsaW5lIGxlbmd0aCBvZiA4NSBleGNlZWRzIDgwIGNvbHVtbnMKIzExMTogRklMRTogdG9v bHMvYnRnYXR0LWNsaWVudC5jOjE0MjU6CisJCQkJCShkc3RfdHlwZSA9PSBCREFERFJfQlJFRFIg PyAiQlIvRURSIiA6ICJMRSIpLAoKL2dpdGh1Yi93b3Jrc3BhY2Uvc3JjL3NyYy8xMzE4NTQ3Ny5w YXRjaCB0b3RhbDogMCBlcnJvcnMsIDEgd2FybmluZ3MsIDc1IGxpbmVzIGNoZWNrZWQKCk5PVEU6 IEZvciBzb21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxl IHRvCiAgICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5n IC0tZml4IG9yIC0tZml4LWlucGxhY2UuCgovZ2l0aHViL3dvcmtzcGFjZS9zcmMvc3JjLzEzMTg1 NDc3LnBhdGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmlldy4KCk5PVEU6IElnbm9y ZWQgbWVzc2FnZSB0eXBlczogQ09NTUlUX01FU1NBR0UgQ09NUExFWF9NQUNSTyBDT05TVF9TVFJV Q1QgRklMRV9QQVRIX0NIQU5HRVMgTUlTU0lOR19TSUdOX09GRiBQUkVGRVJfUEFDS0VEIFNQRFhf TElDRU5TRV9UQUcgU1BMSVRfU1RSSU5HIFNTQ0FORl9UT19LU1RSVE8KCk5PVEU6IElmIGFueSBv ZiB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhl bSB0byB0aGUgbWFpbnRhaW5lciwgc2VlIENIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCgoKW0Js dWVaLDQvOV0gYnRnYXR0LWNsaWVudDogUmV3cml0ZSB0byB1c2UgYnRfc2hlbGwKRVJST1I6SU5J VElBTElTRURfU1RBVElDOiBkbyBub3QgaW5pdGlhbGlzZSBzdGF0aWNzIHRvIGZhbHNlCiMxNDA6 IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzo0NToKK3N0YXRpYyBib29sIHNoZWxsX3J1bm5p bmcgPSBmYWxzZTsKCldBUk5JTkc6U0lOR0xFX1NUQVRFTUVOVF9ET19XSElMRV9NQUNSTzogU2lu Z2xlIHN0YXRlbWVudCBtYWNyb3Mgc2hvdWxkIG5vdCB1c2UgYSBkbyB7fSB3aGlsZSAoMCkgbG9v cAojMTU2OiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50LmM6NjE6CisjZGVmaW5lIGFwcGVuZChz dHIsIGZtdCwgYXJnLi4uKSBkbyB7IFwKKwlzcHJpbnRmKHN0cmNocihzdHIsICdcMCcpLCBmbXQs ICMjIGFyZyk7IFwKK30gd2hpbGUgKDApCgpXQVJOSU5HOkxJTkVfU1BBQ0lORzogTWlzc2luZyBh IGJsYW5rIGxpbmUgYWZ0ZXIgZGVjbGFyYXRpb25zCiMxNzI6IEZJTEU6IHRvb2xzL2J0Z2F0dC1j bGllbnQuYzo3NzoKKwljaGFyIHN0clszMl07CisJc3ByaW50ZihzdHIsIENPTE9SX0JMVUUgIltH QVRUIGNsaWVudF0iIENPTE9SX09GRiAiIyAiKTsKCldBUk5JTkc6VFlQT19TUEVMTElORzogJ2lu aXRpYWx6ZScgbWF5IGJlIG1pc3NwZWxsZWQgLSBwZXJoYXBzICdpbml0aWFsaXplJz8KIzIyNDog RklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjE5MToKKwkJZXJyb3IoIkZhaWxlZCB0byBpbml0 aWFsemUgQVRUIHRyYW5zcG9ydCBsYXllciIpOwogCQkgICAgICAgICAgICAgICAgIF5eXl5eXl5e XgoKV0FSTklORzpMSU5FX1NQQUNJTkc6IE1pc3NpbmcgYSBibGFuayBsaW5lIGFmdGVyIGRlY2xh cmF0aW9ucwojMzE4OiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50LmM6Mjk0OgorCWNoYXIgbGlu ZVtNQVhfTEVOX0xJTkVdID0gezB9OworCWFwcGVuZChsaW5lLCAiXHRcdCAgIiBDT0xPUl9NQUdF TlRBICJkZXNjciIgQ09MT1JfT0ZGCgpXQVJOSU5HOkxPTkdfTElORTogbGluZSBsZW5ndGggb2Yg ODIgZXhjZWVkcyA4MCBjb2x1bW5zCiM1Mjk6IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzo0 MTM6CisJCQkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJF KTsKCldBUk5JTkc6TE9OR19MSU5FOiBsaW5lIGxlbmd0aCBvZiA4MiBleGNlZWRzIDgwIGNvbHVt bnMKIzUzOTogRklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjQyMzoKKwkJCQlyZXR1cm4gYnRf c2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwoKV0FSTklORzpMT05HX0xJ TkU6IGxpbmUgbGVuZ3RoIG9mIDg5IGV4Y2VlZHMgODAgY29sdW1ucwojMTU4MjogRklMRTogdG9v bHMvYnRnYXR0LWNsaWVudC5jOjEwODM6CisJCWNtZF9yZWFkX2xvbmdfdmFsdWUsICJSZWFkIGEg bG9uZyBjaGFyYWN0ZXJpc3RpYyBvciBkZXNjdHJpcHRvciB2YWx1ZSIgfSwKCldBUk5JTkc6TE9O R19MSU5FX1NUUklORzogbGluZSBsZW5ndGggb2YgODcgZXhjZWVkcyA4MCBjb2x1bW5zCiMxNTk0 OiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50LmM6MTA5NToKKwkJY21kX3dyaXRlX2xvbmdfdmFs dWUsICJXcml0ZSBsb25nIGNoYXJhY3RlcmlzdGljIG9yIGRlc2NyaXB0b3IgdmFsdWVcbiIKCldB Uk5JTkc6TE9OR19MSU5FX1NUUklORzogbGluZSBsZW5ndGggb2YgODcgZXhjZWVkcyA4MCBjb2x1 bW5zCiMxNjAxOiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50LmM6MTEwMjoKKwkJY21kX3dyaXRl X3ByZXBhcmUsICJXcml0ZSBwcmVwYXJlIGNoYXJhY3RlcmlzdGljIG9yIGRlc2NyaXB0b3IgdmFs dWVcbiIKCldBUk5JTkc6TE9OR19MSU5FOiBsaW5lIGxlbmd0aCBvZiA4NCBleGNlZWRzIDgwIGNv bHVtbnMKIzE2MTA6IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzoxMTExOgorCQljbWRfcmVn aXN0ZXJfbm90aWZ5LCAiU3Vic2NyaWJlIHRvIG5vdC9pbmQgZnJvbSBhIGNoYXJhY3RlcmlzdGlj IiB9LAoKV0FSTklORzpTVEFUSUNfQ09OU1RfQ0hBUl9BUlJBWTogc3RhdGljIGNvbnN0IGNoYXIg KiBhcnJheSBzaG91bGQgcHJvYmFibHkgYmUgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdAojMTcz MTogRklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjEyMjQ6CitzdGF0aWMgY29uc3QgY2hhciAq aGVscFtdID0gewoKL2dpdGh1Yi93b3Jrc3BhY2Uvc3JjL3NyYy8xMzE4NTQ4NC5wYXRjaCB0b3Rh bDogMSBlcnJvcnMsIDExIHdhcm5pbmdzLCAxODExIGxpbmVzIGNoZWNrZWQKCk5PVEU6IEZvciBz b21lIG9mIHRoZSByZXBvcnRlZCBkZWZlY3RzLCBjaGVja3BhdGNoIG1heSBiZSBhYmxlIHRvCiAg ICAgIG1lY2hhbmljYWxseSBjb252ZXJ0IHRvIHRoZSB0eXBpY2FsIHN0eWxlIHVzaW5nIC0tZml4 IG9yIC0tZml4LWlucGxhY2UuCgovZ2l0aHViL3dvcmtzcGFjZS9zcmMvc3JjLzEzMTg1NDg0LnBh dGNoIGhhcyBzdHlsZSBwcm9ibGVtcywgcGxlYXNlIHJldmlldy4KCk5PVEU6IElnbm9yZWQgbWVz c2FnZSB0eXBlczogQ09NTUlUX01FU1NBR0UgQ09NUExFWF9NQUNSTyBDT05TVF9TVFJVQ1QgRklM RV9QQVRIX0NIQU5HRVMgTUlTU0lOR19TSUdOX09GRiBQUkVGRVJfUEFDS0VEIFNQRFhfTElDRU5T RV9UQUcgU1BMSVRfU1RSSU5HIFNTQ0FORl9UT19LU1RSVE8KCk5PVEU6IElmIGFueSBvZiB0aGUg ZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHBsZWFzZSByZXBvcnQKICAgICAgdGhlbSB0byB0 aGUgbWFpbnRhaW5lciwgc2VlIENIRUNLUEFUQ0ggaW4gTUFJTlRBSU5FUlMuCgoKW0JsdWVaLDUv OV0gYnRnYXR0LWNsaWVudDogSW1wbGVtZW50IGRpc2Nvbm5lY3QgYW5kIGNvbm5lY3QgY29tbWFu ZHMKRVJST1I6R0xPQkFMX0lOSVRJQUxJU0VSUzogZG8gbm90IGluaXRpYWxpc2UgZ2xvYmFscyB0 byBOVUxMCiM5MjogRklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjQzOgorc3RydWN0IGNsaWVu dCAqY2xpID0gTlVMTDsKCkVSUk9SOklOSVRJQUxJU0VEX1NUQVRJQzogZG8gbm90IGluaXRpYWxp c2Ugc3RhdGljcyB0byAwCiM5ODogRklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjQ5Ogorc3Rh dGljIHVpbnQxNl90IG10dSA9IDA7CgpXQVJOSU5HOkxPTkdfTElORTogbGluZSBsZW5ndGggb2Yg ODEgZXhjZWVkcyA4MCBjb2x1bW5zCiMxMDc6IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzo3 OToKKwkJCQkJCQkJCWludCBzZWMpOwoKV0FSTklORzpMSU5FX1NQQUNJTkc6IE1pc3NpbmcgYSBi bGFuayBsaW5lIGFmdGVyIGRlY2xhcmF0aW9ucwojMTE0OiBGSUxFOiB0b29scy9idGdhdHQtY2xp ZW50LmM6ODQ6CisJY2hhciBzdHJbNjRdLCBhZGRyWzE4XSwgdHlwZVszXTsKKwlpZiAoIWJhY21w KCZkc3RfYWRkciwgQkRBRERSX0FOWSkpCgpXQVJOSU5HOkxPTkdfTElORTogbGluZSBsZW5ndGgg b2YgODcgZXhjZWVkcyA4MCBjb2x1bW5zCiMxMjA6IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQu Yzo5MDoKKwkJCXNwcmludGYoc3RyLCBDT0xPUl9CTFVFICJbJXNdWyVzXSIgQ09MT1JfT0ZGICIj ICIsIGFkZHIsIHR5cGUpOwoKRVJST1I6RlVOQ1RJT05fV0lUSE9VVF9BUkdTOiBCYWQgZnVuY3Rp b24gZGVmaW5pdGlvbiAtIHZvaWQgY2xpZW50X2Rlc3Ryb3koKSBzaG91bGQgcHJvYmFibHkgYmUg dm9pZCBjbGllbnRfZGVzdHJveSh2b2lkKQojMTMxOiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50 LmM6MTQ1Ogorc3RhdGljIHZvaWQgY2xpZW50X2Rlc3Ryb3koKQoKRVJST1I6RlVOQ1RJT05fV0lU SE9VVF9BUkdTOiBCYWQgZnVuY3Rpb24gZGVmaW5pdGlvbiAtIHZvaWQgY29ubmVjdF9kZXZpY2Uo KSBzaG91bGQgcHJvYmFibHkgYmUgdm9pZCBjb25uZWN0X2RldmljZSh2b2lkKQojMTY5OiBGSUxF OiB0b29scy9idGdhdHQtY2xpZW50LmM6MTA4OToKK3N0YXRpYyB2b2lkIGNvbm5lY3RfZGV2aWNl KCkKCldBUk5JTkc6TElORV9TUEFDSU5HOiBNaXNzaW5nIGEgYmxhbmsgbGluZSBhZnRlciBkZWNs YXJhdGlvbnMKIzE3MjogRklMRTogdG9vbHMvYnRnYXR0LWNsaWVudC5jOjEwOTI6CisJaW50IGZk OworCWZkID0gbDJjYXBfYXR0X2Nvbm5lY3QoJnNyY19hZGRyLCAmZHN0X2FkZHIsIGRzdF90eXBl LCBzZWN1cml0eV9sZXZlbCk7CgpXQVJOSU5HOkJSQUNFUzogYnJhY2VzIHt9IGFyZSBub3QgbmVj ZXNzYXJ5IGZvciBzaW5nbGUgc3RhdGVtZW50IGJsb2NrcwojMTczOiBGSUxFOiB0b29scy9idGdh dHQtY2xpZW50LmM6MTA5MzoKKwlpZiAoZmQgPCAwKSB7CisJCXJldHVybiBidF9zaGVsbF9ub25p bnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7CisJfQoKL2dpdGh1Yi93b3Jrc3BhY2Uvc3Jj L3NyYy8xMzE4NTQ4MC5wYXRjaCB0b3RhbDogNCBlcnJvcnMsIDUgd2FybmluZ3MsIDIxNSBsaW5l cyBjaGVja2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2tw YXRjaCBtYXkgYmUgYWJsZSB0bwogICAgICBtZWNoYW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlw aWNhbCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZpeC1pbnBsYWNlLgoKL2dpdGh1Yi93b3Jrc3Bh Y2Uvc3JjL3NyYy8xMzE4NTQ4MC5wYXRjaCBoYXMgc3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZp ZXcuCgpOT1RFOiBJZ25vcmVkIG1lc3NhZ2UgdHlwZXM6IENPTU1JVF9NRVNTQUdFIENPTVBMRVhf TUFDUk8gQ09OU1RfU1RSVUNUIEZJTEVfUEFUSF9DSEFOR0VTIE1JU1NJTkdfU0lHTl9PRkYgUFJF RkVSX1BBQ0tFRCBTUERYX0xJQ0VOU0VfVEFHIFNQTElUX1NUUklORyBTU0NBTkZfVE9fS1NUUlRP CgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2Ug cmVwb3J0CiAgICAgIHRoZW0gdG8gdGhlIG1haW50YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1B SU5UQUlORVJTLgoKCltCbHVlWiw2LzldIGJ0Z2F0dC1jbGllbnQ6IEltcGxlbWVudCByZWFkIGJ5 IHR5cGUKV0FSTklORzpMT05HX0xJTkU6IGxpbmUgbGVuZ3RoIG9mIDgxIGV4Y2VlZHMgODAgY29s dW1ucwojMTE1OiBGSUxFOiB0b29scy9idGdhdHQtY2xpZW50LmM6NTMxOgorCXdoaWxlIChidF9n YXR0X2l0ZXJfbmV4dF9yZWFkX2J5X3R5cGUoJml0ZXIsICZoYW5kbGUsICZsZW5ndGgsICZ2YWx1 ZSkpIHsKCi9naXRodWIvd29ya3NwYWNlL3NyYy9zcmMvMTMxODU0NzkucGF0Y2ggdG90YWw6IDAg ZXJyb3JzLCAxIHdhcm5pbmdzLCA5MCBsaW5lcyBjaGVja2VkCgpOT1RFOiBGb3Igc29tZSBvZiB0 aGUgcmVwb3J0ZWQgZGVmZWN0cywgY2hlY2twYXRjaCBtYXkgYmUgYWJsZSB0bwogICAgICBtZWNo YW5pY2FsbHkgY29udmVydCB0byB0aGUgdHlwaWNhbCBzdHlsZSB1c2luZyAtLWZpeCBvciAtLWZp eC1pbnBsYWNlLgoKL2dpdGh1Yi93b3Jrc3BhY2Uvc3JjL3NyYy8xMzE4NTQ3OS5wYXRjaCBoYXMg c3R5bGUgcHJvYmxlbXMsIHBsZWFzZSByZXZpZXcuCgpOT1RFOiBJZ25vcmVkIG1lc3NhZ2UgdHlw ZXM6IENPTU1JVF9NRVNTQUdFIENPTVBMRVhfTUFDUk8gQ09OU1RfU1RSVUNUIEZJTEVfUEFUSF9D SEFOR0VTIE1JU1NJTkdfU0lHTl9PRkYgUFJFRkVSX1BBQ0tFRCBTUERYX0xJQ0VOU0VfVEFHIFNQ TElUX1NUUklORyBTU0NBTkZfVE9fS1NUUlRPCgpOT1RFOiBJZiBhbnkgb2YgdGhlIGVycm9ycyBh cmUgZmFsc2UgcG9zaXRpdmVzLCBwbGVhc2UgcmVwb3J0CiAgICAgIHRoZW0gdG8gdGhlIG1haW50 YWluZXIsIHNlZSBDSEVDS1BBVENIIGluIE1BSU5UQUlORVJTLgoKCltCbHVlWiw5LzldIGJ0Z2F0 dC1jbGllbnQ6IEltcGxlbWVudCBmaWx0ZXIgc2VydmljZSBieSBzdGFydCBoYW5kbGUKV0FSTklO RzpMSU5FX1NQQUNJTkc6IE1pc3NpbmcgYSBibGFuayBsaW5lIGFmdGVyIGRlY2xhcmF0aW9ucwoj OTQ6IEZJTEU6IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzozODE6CisJdWludDE2X3Qgc3RhcnQgPSAw eDAwMDEsIGVuZCA9IDB4RkZGRjsKKwlpZiAoaGFuZGxlKSB7CgovZ2l0aHViL3dvcmtzcGFjZS9z cmMvc3JjLzEzMTg1NDgzLnBhdGNoIHRvdGFsOiAwIGVycm9ycywgMSB3YXJuaW5ncywgMTUgbGlu ZXMgY2hlY2tlZAoKTk9URTogRm9yIHNvbWUgb2YgdGhlIHJlcG9ydGVkIGRlZmVjdHMsIGNoZWNr cGF0Y2ggbWF5IGJlIGFibGUgdG8KICAgICAgbWVjaGFuaWNhbGx5IGNvbnZlcnQgdG8gdGhlIHR5 cGljYWwgc3R5bGUgdXNpbmcgLS1maXggb3IgLS1maXgtaW5wbGFjZS4KCi9naXRodWIvd29ya3Nw YWNlL3NyYy9zcmMvMTMxODU0ODMucGF0Y2ggaGFzIHN0eWxlIHByb2JsZW1zLCBwbGVhc2UgcmV2 aWV3LgoKTk9URTogSWdub3JlZCBtZXNzYWdlIHR5cGVzOiBDT01NSVRfTUVTU0FHRSBDT01QTEVY X01BQ1JPIENPTlNUX1NUUlVDVCBGSUxFX1BBVEhfQ0hBTkdFUyBNSVNTSU5HX1NJR05fT0ZGIFBS RUZFUl9QQUNLRUQgU1BEWF9MSUNFTlNFX1RBRyBTUExJVF9TVFJJTkcgU1NDQU5GX1RPX0tTVFJU TwoKTk9URTogSWYgYW55IG9mIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgcGxlYXNl IHJlcG9ydAogICAgICB0aGVtIHRvIHRoZSBtYWludGFpbmVyLCBzZWUgQ0hFQ0tQQVRDSCBpbiBN QUlOVEFJTkVSUy4KCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKVGVzdDogQmx1ZXpN YWtlIC0gRkFJTApEZXNjOiBCdWlsZCBCbHVlWgpPdXRwdXQ6Cgp0b29scy9idGdhdHQtY2xpZW50 LmM6NTE5OjY6IGVycm9yOiBubyBwcmV2aW91cyBkZWNsYXJhdGlvbiBmb3Ig4oCYcmVhZF9ieV90 eXBlX2Ni4oCZIFstV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zXQogIDUxOSB8IHZvaWQgcmVh ZF9ieV90eXBlX2NiKGJvb2wgc3VjY2VzcywgdWludDhfdCBhdHRfZWNvZGUsCiAgICAgIHwgICAg ICBefn5+fn5+fn5+fn5+fn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJbiBmdW5jdGlvbiDigJhj bWRfd3JpdGVfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo3MzA6MTQ6IGVycm9yOiB1 bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA3MzAg fCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBefn4KdG9vbHMvYnRnYXR0 LWNsaWVudC5jOjczMDoxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV2Vycm9y PXVudXNlZC12YXJpYWJsZV0KICA3MzAgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAg ICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX3dyaXRlX2xv bmdfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo4MTU6MTQ6IGVycm9yOiB1bnVzZWQg dmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4MTUgfCAgaW50 IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBefn4KdG9vbHMvYnRnYXR0LWNsaWVu dC5jOjgxNToxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV2Vycm9yPXVudXNl ZC12YXJpYWJsZV0KICA4MTUgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICBe CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX3dyaXRlX3ByZXBhcmXi gJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo5MzI6MzE6IGVycm9yOiBwb2ludGVyIHRhcmdldHMg aW4gcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHJlYWRfYnl0ZXPigJkgZGlmZmVyIGluIHNpZ25l ZG5lc3MgWy1XZXJyb3I9cG9pbnRlci1zaWduXQogIDkzMiB8ICB2YWx1ZSA9IHJlYWRfYnl0ZXMo YXJndiArIDIsICZsZW5ndGgpOwogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICoKdG9vbHMvYnRnYXR0 LWNsaWVudC5jOjY3Mjo0Njogbm90ZTogZXhwZWN0ZWQg4oCYaW50ICrigJkgYnV0IGFyZ3VtZW50 IGlzIG9mIHR5cGUg4oCYdW5zaWduZWQgaW50ICrigJkKICA2NzIgfCBzdGF0aWMgdWludDhfdCAq cmVhZF9ieXRlcyhjaGFyICoqYXJndiwgaW50ICpsZW5ndGgpCiAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+Xn5+fn5+CnRvb2xzL2J0Z2F0dC1jbGll bnQuYzo4Nzk6MTQ6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVu dXNlZC12YXJpYWJsZV0KICA4NzkgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAg ICAgICBefn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjg3OToxMTogZXJyb3I6IHVudXNlZCB2YXJp YWJsZSDigJhp4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4NzkgfCAgaW50IG9wdCwg aSwgdmFsOwogICAgICB8ICAgICAgICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVu Y3Rpb24g4oCYY21kX2Nvbm5lY3TigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzoxMTYzOjIzOiBl cnJvcjogcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHN0cjJiYeKAmSBmcm9tIGluY29tcGF0aWJs ZSBwb2ludGVyIHR5cGUgWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdCiAxMTYz IHwgICBpZiAoc3RyMmJhKGFyZ3ZbMV0sICZhZGRyKSA8IDApIHsKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgXn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICgqKVsxOF0KSW4gZmlsZSBpbmNsdWRlZCBmcm9t IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzoyNDoKLi9saWIvYmx1ZXRvb3RoLmg6NDAwOjM5OiBub3Rl OiBleHBlY3RlZCDigJhiZGFkZHJfdCAq4oCZIHtha2Eg4oCYc3RydWN0IDxhbm9ueW1vdXM+ICri gJl9IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGNoYXIgKCopWzE4XeKAmQogIDQwMCB8IGlu dCBzdHIyYmEoY29uc3QgY2hhciAqc3RyLCBiZGFkZHJfdCAqYmEpOwogICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+Xn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjEx Njc6MjA6IGVycm9yOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYYmFjcHnigJkgZnJvbSBpbmNv bXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVz XQogMTE2NyB8ICAgYmFjcHkoJmRzdF9hZGRyLCAmYWRkcik7CiAgICAgIHwgICAgICAgICAgICAg ICAgICAgIF5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAgICAgfCAgICAgICAg ICAgICAgICAgICAgY2hhciAoKilbMThdCkluIGZpbGUgaW5jbHVkZWQgZnJvbSB0b29scy9idGdh dHQtY2xpZW50LmM6MjQ6Ci4vbGliL2JsdWV0b290aC5oOjM5MDo1Nzogbm90ZTogZXhwZWN0ZWQg 4oCYY29uc3QgYmRhZGRyX3QgKuKAmSB7YWthIOKAmGNvbnN0IHN0cnVjdCA8YW5vbnltb3VzPiAq 4oCZfSBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSDigJhjaGFyICgqKVsxOF3igJkKICAzOTAgfCBz dGF0aWMgaW5saW5lIHZvaWQgYmFjcHkoYmRhZGRyX3QgKmRzdCwgY29uc3QgYmRhZGRyX3QgKnNy YykKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+ fn5+fn5+fn5+fl5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6IEluIGZ1bmN0aW9uIOKAmHJlYWRf Ynl0ZXPigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo2Nzk6MzQ6IGVycm9yOiDigJhp4oCZIG1h eSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11 bmluaXRpYWxpemVkXQogIDY3OSB8ICBpZiAoKmxlbmd0aCA9PSAzICYmICFzdHJjbXAoYXJndltp XSwgImJ5dGVzIikpIHsKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CmNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCm1ha2VbMV06ICoqKiBb TWFrZWZpbGU6NzU5MTogdG9vbHMvYnRnYXR0LWNsaWVudC5vXSBFcnJvciAxCm1ha2VbMV06ICoq KiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCnRvb2xzL21nbXQtdGVzdGVyLmM6IElu IGZ1bmN0aW9uIOKAmG1haW7igJk6CnRvb2xzL21nbXQtdGVzdGVyLmM6MTI1MTQ6NTogbm90ZTog dmFyaWFibGUgdHJhY2tpbmcgc2l6ZSBsaW1pdCBleGNlZWRlZCB3aXRoIOKAmC1mdmFyLXRyYWNr aW5nLWFzc2lnbm1lbnRz4oCZLCByZXRyeWluZyB3aXRob3V0CjEyNTE0IHwgaW50IG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgfCAgICAgXn5+fgptYWtlOiAqKiogW01ha2VmaWxl OjQ1MDY6IGFsbF0gRXJyb3IgMgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKVGVzdDog TWFrZUNoZWNrIC0gRkFJTApEZXNjOiBSdW4gQmx1ZXogTWFrZSBDaGVjawpPdXRwdXQ6Cgp0b29s cy9idGdhdHQtY2xpZW50LmM6NTE5OjY6IGVycm9yOiBubyBwcmV2aW91cyBkZWNsYXJhdGlvbiBm b3Ig4oCYcmVhZF9ieV90eXBlX2Ni4oCZIFstV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zXQog IDUxOSB8IHZvaWQgcmVhZF9ieV90eXBlX2NiKGJvb2wgc3VjY2VzcywgdWludDhfdCBhdHRfZWNv ZGUsCiAgICAgIHwgICAgICBefn5+fn5+fn5+fn5+fn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJ biBmdW5jdGlvbiDigJhjbWRfd3JpdGVfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo3 MzA6MTQ6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12 YXJpYWJsZV0KICA3MzAgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBe fn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjczMDoxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDi gJhp4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA3MzAgfCAgaW50IG9wdCwgaSwgdmFs OwogICAgICB8ICAgICAgICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g 4oCYY21kX3dyaXRlX2xvbmdfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo4MTU6MTQ6 IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJs ZV0KICA4MTUgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBefn4KdG9v bHMvYnRnYXR0LWNsaWVudC5jOjgxNToxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZ IFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4MTUgfCAgaW50IG9wdCwgaSwgdmFsOwogICAg ICB8ICAgICAgICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21k X3dyaXRlX3ByZXBhcmXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo5MzI6MzE6IGVycm9yOiBw b2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHJlYWRfYnl0ZXPigJkg ZGlmZmVyIGluIHNpZ25lZG5lc3MgWy1XZXJyb3I9cG9pbnRlci1zaWduXQogIDkzMiB8ICB2YWx1 ZSA9IHJlYWRfYnl0ZXMoYXJndiArIDIsICZsZW5ndGgpOwogICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5+fn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50 ICoKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjY3Mjo0Njogbm90ZTogZXhwZWN0ZWQg4oCYaW50ICri gJkgYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYdW5zaWduZWQgaW50ICrigJkKICA2NzIgfCBz dGF0aWMgdWludDhfdCAqcmVhZF9ieXRlcyhjaGFyICoqYXJndiwgaW50ICpsZW5ndGgpCiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+Xn5+fn5+CnRv b2xzL2J0Z2F0dC1jbGllbnQuYzo4Nzk6MTQ6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYdmFs 4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4NzkgfCAgaW50IG9wdCwgaSwgdmFsOwog ICAgICB8ICAgICAgICAgICAgICBefn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjg3OToxMTogZXJy b3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4 NzkgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICBeCnRvb2xzL2J0Z2F0dC1j bGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX2Nvbm5lY3TigJk6CnRvb2xzL2J0Z2F0dC1jbGll bnQuYzoxMTYzOjIzOiBlcnJvcjogcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHN0cjJiYeKAmSBm cm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50 ZXItdHlwZXNdCiAxMTYzIHwgICBpZiAoc3RyMmJhKGFyZ3ZbMV0sICZhZGRyKSA8IDApIHsKICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgXn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICgqKVsxOF0KSW4gZmls ZSBpbmNsdWRlZCBmcm9tIHRvb2xzL2J0Z2F0dC1jbGllbnQuYzoyNDoKLi9saWIvYmx1ZXRvb3Ro Lmg6NDAwOjM5OiBub3RlOiBleHBlY3RlZCDigJhiZGFkZHJfdCAq4oCZIHtha2Eg4oCYc3RydWN0 IDxhbm9ueW1vdXM+ICrigJl9IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGNoYXIgKCopWzE4 XeKAmQogIDQwMCB8IGludCBzdHIyYmEoY29uc3QgY2hhciAqc3RyLCBiZGFkZHJfdCAqYmEpOwog ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+Xn4KdG9vbHMvYnRn YXR0LWNsaWVudC5jOjExNjc6MjA6IGVycm9yOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYYmFj cHnigJkgZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJs ZS1wb2ludGVyLXR5cGVzXQogMTE2NyB8ICAgYmFjcHkoJmRzdF9hZGRyLCAmYWRkcik7CiAgICAg IHwgICAgICAgICAgICAgICAgICAgIF5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwK ICAgICAgfCAgICAgICAgICAgICAgICAgICAgY2hhciAoKilbMThdCkluIGZpbGUgaW5jbHVkZWQg ZnJvbSB0b29scy9idGdhdHQtY2xpZW50LmM6MjQ6Ci4vbGliL2JsdWV0b290aC5oOjM5MDo1Nzog bm90ZTogZXhwZWN0ZWQg4oCYY29uc3QgYmRhZGRyX3QgKuKAmSB7YWthIOKAmGNvbnN0IHN0cnVj dCA8YW5vbnltb3VzPiAq4oCZfSBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSDigJhjaGFyICgqKVsx OF3igJkKICAzOTAgfCBzdGF0aWMgaW5saW5lIHZvaWQgYmFjcHkoYmRhZGRyX3QgKmRzdCwgY29u c3QgYmRhZGRyX3QgKnNyYykKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfn5+fn5+fn5+fn5+fn5+fl5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6IEluIGZ1 bmN0aW9uIOKAmHJlYWRfYnl0ZXPigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo2Nzk6MzQ6IGVy cm9yOiDigJhp4oCZIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBb LVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQogIDY3OSB8ICBpZiAoKmxlbmd0aCA9PSAzICYm ICFzdHJjbXAoYXJndltpXSwgImJ5dGVzIikpIHsKICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCmNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3Jz Cm1ha2VbMV06ICoqKiBbTWFrZWZpbGU6NzU5MTogdG9vbHMvYnRnYXR0LWNsaWVudC5vXSBFcnJv ciAxCm1ha2U6ICoqKiBbTWFrZWZpbGU6MTE3Nzk6IGNoZWNrXSBFcnJvciAyCiMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwpUZXN0OiBDaGVja1ZhbGdyaW5kIC0gRkFJTApEZXNjOiBSdW4g Qmx1ZXogTWFrZSBDaGVjayB3aXRoIFZhbGdyaW5kCk91dHB1dDoKCnRvb2xzL2J0Z2F0dC1jbGll bnQuYzo1MTk6NjogZXJyb3I6IG5vIHByZXZpb3VzIGRlY2xhcmF0aW9uIGZvciDigJhyZWFkX2J5 X3R5cGVfY2LigJkgWy1XZXJyb3I9bWlzc2luZy1kZWNsYXJhdGlvbnNdCiAgNTE5IHwgdm9pZCBy ZWFkX2J5X3R5cGVfY2IoYm9vbCBzdWNjZXNzLCB1aW50OF90IGF0dF9lY29kZSwKICAgICAgfCAg ICAgIF5+fn5+fn5+fn5+fn5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6IEluIGZ1bmN0aW9uIOKA mGNtZF93cml0ZV92YWx1ZeKAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjczMDoxNDogZXJyb3I6 IHVudXNlZCB2YXJpYWJsZSDigJh2YWzigJkgWy1XZXJyb3I9dW51c2VkLXZhcmlhYmxlXQogIDcz MCB8ICBpbnQgb3B0LCBpLCB2YWw7CiAgICAgIHwgICAgICAgICAgICAgIF5+fgp0b29scy9idGdh dHQtY2xpZW50LmM6NzMwOjExOiBlcnJvcjogdW51c2VkIHZhcmlhYmxlIOKAmGnigJkgWy1XZXJy b3I9dW51c2VkLXZhcmlhYmxlXQogIDczMCB8ICBpbnQgb3B0LCBpLCB2YWw7CiAgICAgIHwgICAg ICAgICAgIF4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJbiBmdW5jdGlvbiDigJhjbWRfd3JpdGVf bG9uZ192YWx1ZeKAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjgxNToxNDogZXJyb3I6IHVudXNl ZCB2YXJpYWJsZSDigJh2YWzigJkgWy1XZXJyb3I9dW51c2VkLXZhcmlhYmxlXQogIDgxNSB8ICBp bnQgb3B0LCBpLCB2YWw7CiAgICAgIHwgICAgICAgICAgICAgIF5+fgp0b29scy9idGdhdHQtY2xp ZW50LmM6ODE1OjExOiBlcnJvcjogdW51c2VkIHZhcmlhYmxlIOKAmGnigJkgWy1XZXJyb3I9dW51 c2VkLXZhcmlhYmxlXQogIDgxNSB8ICBpbnQgb3B0LCBpLCB2YWw7CiAgICAgIHwgICAgICAgICAg IF4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJbiBmdW5jdGlvbiDigJhjbWRfd3JpdGVfcHJlcGFy ZeKAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjkzMjozMTogZXJyb3I6IHBvaW50ZXIgdGFyZ2V0 cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYcmVhZF9ieXRlc+KAmSBkaWZmZXIgaW4gc2ln bmVkbmVzcyBbLVdlcnJvcj1wb2ludGVyLXNpZ25dCiAgOTMyIHwgIHZhbHVlID0gcmVhZF9ieXRl cyhhcmd2ICsgMiwgJmxlbmd0aCk7CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXn5+fn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKgp0b29scy9idGdh dHQtY2xpZW50LmM6NjcyOjQ2OiBub3RlOiBleHBlY3RlZCDigJhpbnQgKuKAmSBidXQgYXJndW1l bnQgaXMgb2YgdHlwZSDigJh1bnNpZ25lZCBpbnQgKuKAmQogIDY3MiB8IHN0YXRpYyB1aW50OF90 ICpyZWFkX2J5dGVzKGNoYXIgKiphcmd2LCBpbnQgKmxlbmd0aCkKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5efn5+fn4KdG9vbHMvYnRnYXR0LWNs aWVudC5jOjg3OToxNDogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJh2YWzigJkgWy1XZXJyb3I9 dW51c2VkLXZhcmlhYmxlXQogIDg3OSB8ICBpbnQgb3B0LCBpLCB2YWw7CiAgICAgIHwgICAgICAg ICAgICAgIF5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6ODc5OjExOiBlcnJvcjogdW51c2VkIHZh cmlhYmxlIOKAmGnigJkgWy1XZXJyb3I9dW51c2VkLXZhcmlhYmxlXQogIDg3OSB8ICBpbnQgb3B0 LCBpLCB2YWw7CiAgICAgIHwgICAgICAgICAgIF4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJbiBm dW5jdGlvbiDigJhjbWRfY29ubmVjdOKAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjExNjM6MjM6 IGVycm9yOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYc3RyMmJh4oCZIGZyb20gaW5jb21wYXRp YmxlIHBvaW50ZXIgdHlwZSBbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10KIDEx NjMgfCAgIGlmIChzdHIyYmEoYXJndlsxXSwgJmFkZHIpIDwgMCkgewogICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICBefn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKCopWzE4XQpJbiBmaWxlIGluY2x1ZGVkIGZy b20gdG9vbHMvYnRnYXR0LWNsaWVudC5jOjI0OgouL2xpYi9ibHVldG9vdGguaDo0MDA6Mzk6IG5v dGU6IGV4cGVjdGVkIOKAmGJkYWRkcl90ICrigJkge2FrYSDigJhzdHJ1Y3QgPGFub255bW91cz4g KuKAmX0gYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYY2hhciAoKilbMThd4oCZCiAgNDAwIHwg aW50IHN0cjJiYShjb25zdCBjaGFyICpzdHIsIGJkYWRkcl90ICpiYSk7CiAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5efgp0b29scy9idGdhdHQtY2xpZW50LmM6 MTE2NzoyMDogZXJyb3I6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiDigJhiYWNweeKAmSBmcm9tIGlu Y29tcGF0aWJsZSBwb2ludGVyIHR5cGUgWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlw ZXNdCiAxMTY3IHwgICBiYWNweSgmZHN0X2FkZHIsICZhZGRyKTsKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgXn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAogICAgICB8ICAgICAg ICAgICAgICAgICAgICBjaGFyICgqKVsxOF0KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHRvb2xzL2J0 Z2F0dC1jbGllbnQuYzoyNDoKLi9saWIvYmx1ZXRvb3RoLmg6MzkwOjU3OiBub3RlOiBleHBlY3Rl ZCDigJhjb25zdCBiZGFkZHJfdCAq4oCZIHtha2Eg4oCYY29uc3Qgc3RydWN0IDxhbm9ueW1vdXM+ ICrigJl9IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGNoYXIgKCopWzE4XeKAmQogIDM5MCB8 IHN0YXRpYyBpbmxpbmUgdm9pZCBiYWNweShiZGFkZHJfdCAqZHN0LCBjb25zdCBiZGFkZHJfdCAq c3JjKQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+ fn5+fn5+fn5+fn5+Xn5+CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYcmVh ZF9ieXRlc+KAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjY3OTozNDogZXJyb3I6IOKAmGnigJkg bWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJl LXVuaW5pdGlhbGl6ZWRdCiAgNjc5IHwgIGlmICgqbGVuZ3RoID09IDMgJiYgIXN0cmNtcChhcmd2 W2ldLCAiYnl0ZXMiKSkgewogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKbWFrZVsxXTogKioq IFtNYWtlZmlsZTo3NTkxOiB0b29scy9idGdhdHQtY2xpZW50Lm9dIEVycm9yIDEKbWFrZVsxXTog KioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KdG9vbHMvbWdtdC10ZXN0ZXIuYzog SW4gZnVuY3Rpb24g4oCYbWFpbuKAmToKdG9vbHMvbWdtdC10ZXN0ZXIuYzoxMjUxNDo1OiBub3Rl OiB2YXJpYWJsZSB0cmFja2luZyBzaXplIGxpbWl0IGV4Y2VlZGVkIHdpdGgg4oCYLWZ2YXItdHJh Y2tpbmctYXNzaWdubWVudHPigJksIHJldHJ5aW5nIHdpdGhvdXQKMTI1MTQgfCBpbnQgbWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKQogICAgICB8ICAgICBefn5+Cm1ha2U6ICoqKiBbTWFrZWZp bGU6MTE3Nzk6IGNoZWNrXSBFcnJvciAyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpU ZXN0OiBDaGVja1NtYXRjaCAtIEZBSUwKRGVzYzogUnVuIHNtYXRjaCB0b29sIHdpdGggc291cmNl Ck91dHB1dDoKCnNyYy9zaGFyZWQvY3J5cHRvLmM6MjcxOjIxOiB3YXJuaW5nOiBWYXJpYWJsZSBs ZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9jcnlwdG8uYzoyNzI6MjM6IHdhcm5pbmc6 IFZhcmlhYmxlIGxlbmd0aCBhcnJheSBpcyB1c2VkLgpzcmMvc2hhcmVkL2dhdHQtaGVscGVycy5j Ojc2ODozMTogd2FybmluZzogVmFyaWFibGUgbGVuZ3RoIGFycmF5IGlzIHVzZWQuCnNyYy9zaGFy ZWQvZ2F0dC1oZWxwZXJzLmM6ODMwOjMxOiB3YXJuaW5nOiBWYXJpYWJsZSBsZW5ndGggYXJyYXkg aXMgdXNlZC4Kc3JjL3NoYXJlZC9nYXR0LWhlbHBlcnMuYzoxMzIzOjMxOiB3YXJuaW5nOiBWYXJp YWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9nYXR0LWhlbHBlcnMuYzoxMzU0 OjIzOiB3YXJuaW5nOiBWYXJpYWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9n YXR0LXNlcnZlci5jOjI3NToyNTogd2FybmluZzogVmFyaWFibGUgbGVuZ3RoIGFycmF5IGlzIHVz ZWQuCnNyYy9zaGFyZWQvZ2F0dC1zZXJ2ZXIuYzo2MTg6MjU6IHdhcm5pbmc6IFZhcmlhYmxlIGxl bmd0aCBhcnJheSBpcyB1c2VkLgpzcmMvc2hhcmVkL2dhdHQtc2VydmVyLmM6NzE3OjI1OiB3YXJu aW5nOiBWYXJpYWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9zaGVsbC5jOiBu b3RlOiBpbiBpbmNsdWRlZCBmaWxlICh0aHJvdWdoIC91c3IvaW5jbHVkZS9yZWFkbGluZS9yZWFk bGluZS5oKToKL3Vzci9pbmNsdWRlL3JlYWRsaW5lL3JsdHlwZWRlZnMuaDozNToyMzogd2Fybmlu Zzogbm9uLUFOU0kgZnVuY3Rpb24gZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ0Z1bmN0aW9uJwov dXNyL2luY2x1ZGUvcmVhZGxpbmUvcmx0eXBlZGVmcy5oOjM2OjI1OiB3YXJuaW5nOiBub24tQU5T SSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnVkZ1bmN0aW9uJwovdXNyL2luY2x1 ZGUvcmVhZGxpbmUvcmx0eXBlZGVmcy5oOjM3OjI3OiB3YXJuaW5nOiBub24tQU5TSSBmdW5jdGlv biBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnQ1BGdW5jdGlvbicKL3Vzci9pbmNsdWRlL3JlYWRs aW5lL3JsdHlwZWRlZnMuaDozODoyOTogd2FybmluZzogbm9uLUFOU0kgZnVuY3Rpb24gZGVjbGFy YXRpb24gb2YgZnVuY3Rpb24gJ0NQUEZ1bmN0aW9uJwpzcmMvc2hhcmVkL3NoZWxsLmM6NjA5OjIx OiB3YXJuaW5nOiBub24tQU5TSSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnYnRf c2hlbGxfdXNhZ2UnCnNyYy9zaGFyZWQvY3J5cHRvLmM6MjcxOjIxOiB3YXJuaW5nOiBWYXJpYWJs ZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9jcnlwdG8uYzoyNzI6MjM6IHdhcm5p bmc6IFZhcmlhYmxlIGxlbmd0aCBhcnJheSBpcyB1c2VkLgpzcmMvc2hhcmVkL2dhdHQtaGVscGVy cy5jOjc2ODozMTogd2FybmluZzogVmFyaWFibGUgbGVuZ3RoIGFycmF5IGlzIHVzZWQuCnNyYy9z aGFyZWQvZ2F0dC1oZWxwZXJzLmM6ODMwOjMxOiB3YXJuaW5nOiBWYXJpYWJsZSBsZW5ndGggYXJy YXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9nYXR0LWhlbHBlcnMuYzoxMzIzOjMxOiB3YXJuaW5nOiBW YXJpYWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9nYXR0LWhlbHBlcnMuYzox MzU0OjIzOiB3YXJuaW5nOiBWYXJpYWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJl ZC9nYXR0LXNlcnZlci5jOjI3NToyNTogd2FybmluZzogVmFyaWFibGUgbGVuZ3RoIGFycmF5IGlz IHVzZWQuCnNyYy9zaGFyZWQvZ2F0dC1zZXJ2ZXIuYzo2MTg6MjU6IHdhcm5pbmc6IFZhcmlhYmxl IGxlbmd0aCBhcnJheSBpcyB1c2VkLgpzcmMvc2hhcmVkL2dhdHQtc2VydmVyLmM6NzE3OjI1OiB3 YXJuaW5nOiBWYXJpYWJsZSBsZW5ndGggYXJyYXkgaXMgdXNlZC4Kc3JjL3NoYXJlZC9zaGVsbC5j OiBub3RlOiBpbiBpbmNsdWRlZCBmaWxlICh0aHJvdWdoIC91c3IvaW5jbHVkZS9yZWFkbGluZS9y ZWFkbGluZS5oKToKL3Vzci9pbmNsdWRlL3JlYWRsaW5lL3JsdHlwZWRlZnMuaDozNToyMzogd2Fy bmluZzogbm9uLUFOU0kgZnVuY3Rpb24gZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ0Z1bmN0aW9u JwovdXNyL2luY2x1ZGUvcmVhZGxpbmUvcmx0eXBlZGVmcy5oOjM2OjI1OiB3YXJuaW5nOiBub24t QU5TSSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnVkZ1bmN0aW9uJwovdXNyL2lu Y2x1ZGUvcmVhZGxpbmUvcmx0eXBlZGVmcy5oOjM3OjI3OiB3YXJuaW5nOiBub24tQU5TSSBmdW5j dGlvbiBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnQ1BGdW5jdGlvbicKL3Vzci9pbmNsdWRlL3Jl YWRsaW5lL3JsdHlwZWRlZnMuaDozODoyOTogd2FybmluZzogbm9uLUFOU0kgZnVuY3Rpb24gZGVj bGFyYXRpb24gb2YgZnVuY3Rpb24gJ0NQUEZ1bmN0aW9uJwpzcmMvc2hhcmVkL3NoZWxsLmM6NjA5 OjIxOiB3YXJuaW5nOiBub24tQU5TSSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAn YnRfc2hlbGxfdXNhZ2UnCnRvb2xzL21lc2gtY2ZndGVzdC5jOjE0NTM6MTc6IHdhcm5pbmc6IHVu a25vd24gZXNjYXBlIHNlcXVlbmNlOiAnXCUnCnRvb2xzL3Njby10ZXN0ZXIuYzogbm90ZTogaW4g aW5jbHVkZWQgZmlsZToKLi9saWIvYmx1ZXRvb3RoLmg6MTg2OjE1OiB3YXJuaW5nOiBhcnJheSBv ZiBmbGV4aWJsZSBzdHJ1Y3R1cmVzCi4vbGliL2JsdWV0b290aC5oOjE5MTozMTogd2FybmluZzog YXJyYXkgb2YgZmxleGlibGUgc3RydWN0dXJlcwp0b29scy9ibmVwdGVzdC5jOjYzNDozOTogd2Fy bmluZzogdW5rbm93biBlc2NhcGUgc2VxdWVuY2U6ICdcJScKdG9vbHMvc2VxMmJzZXEuYzo1Nzoy Njogd2FybmluZzogVmFyaWFibGUgbGVuZ3RoIGFycmF5IGlzIHVzZWQuCnRvb2xzL2J0Z2F0dC1j bGllbnQuYzoxNDY6Mjg6IHdhcm5pbmc6IG5vbi1BTlNJIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9m IGZ1bmN0aW9uICdjbGllbnRfZGVzdHJveScKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjExNDA6Mjg6 IHdhcm5pbmc6IG5vbi1BTlNJIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdjb25u ZWN0X2RldmljZScKdG9vbHMvYnRnYXR0LWNsaWVudC5jOjUxOTo2OiBlcnJvcjogbm8gcHJldmlv dXMgZGVjbGFyYXRpb24gZm9yIOKAmHJlYWRfYnlfdHlwZV9jYuKAmSBbLVdlcnJvcj1taXNzaW5n LWRlY2xhcmF0aW9uc10KICA1MTkgfCB2b2lkIHJlYWRfYnlfdHlwZV9jYihib29sIHN1Y2Nlc3Ms IHVpbnQ4X3QgYXR0X2Vjb2RlLAogICAgICB8ICAgICAgXn5+fn5+fn5+fn5+fn5+CnRvb2xzL2J0 Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX3dyaXRlX3ZhbHVl4oCZOgp0b29scy9i dGdhdHQtY2xpZW50LmM6NzMwOjE0OiBlcnJvcjogdW51c2VkIHZhcmlhYmxlIOKAmHZhbOKAmSBb LVdlcnJvcj11bnVzZWQtdmFyaWFibGVdCiAgNzMwIHwgIGludCBvcHQsIGksIHZhbDsKICAgICAg fCAgICAgICAgICAgICAgXn5+CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo3MzA6MTE6IGVycm9yOiB1 bnVzZWQgdmFyaWFibGUg4oCYaeKAmSBbLVdlcnJvcj11bnVzZWQtdmFyaWFibGVdCiAgNzMwIHwg IGludCBvcHQsIGksIHZhbDsKICAgICAgfCAgICAgICAgICAgXgp0b29scy9idGdhdHQtY2xpZW50 LmM6IEluIGZ1bmN0aW9uIOKAmGNtZF93cml0ZV9sb25nX3ZhbHVl4oCZOgp0b29scy9idGdhdHQt Y2xpZW50LmM6ODE1OjE0OiBlcnJvcjogdW51c2VkIHZhcmlhYmxlIOKAmHZhbOKAmSBbLVdlcnJv cj11bnVzZWQtdmFyaWFibGVdCiAgODE1IHwgIGludCBvcHQsIGksIHZhbDsKICAgICAgfCAgICAg ICAgICAgICAgXn5+CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo4MTU6MTE6IGVycm9yOiB1bnVzZWQg dmFyaWFibGUg4oCYaeKAmSBbLVdlcnJvcj11bnVzZWQtdmFyaWFibGVdCiAgODE1IHwgIGludCBv cHQsIGksIHZhbDsKICAgICAgfCAgICAgICAgICAgXgp0b29scy9idGdhdHQtY2xpZW50LmM6IElu IGZ1bmN0aW9uIOKAmGNtZF93cml0ZV9wcmVwYXJl4oCZOgp0b29scy9idGdhdHQtY2xpZW50LmM6 OTMyOjMxOiBlcnJvcjogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMiBvZiDi gJhyZWFkX2J5dGVz4oCZIGRpZmZlciBpbiBzaWduZWRuZXNzIFstV2Vycm9yPXBvaW50ZXItc2ln bl0KICA5MzIgfCAgdmFsdWUgPSByZWFkX2J5dGVzKGFyZ3YgKyAyLCAmbGVuZ3RoKTsKICAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+CiAgICAgIHwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCAqCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo2NzI6NDY6IG5vdGU6IGV4 cGVjdGVkIOKAmGludCAq4oCZIGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmHVuc2lnbmVkIGlu dCAq4oCZCiAgNjcyIHwgc3RhdGljIHVpbnQ4X3QgKnJlYWRfYnl0ZXMoY2hhciAqKmFyZ3YsIGlu dCAqbGVuZ3RoKQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB+fn5+fl5+fn5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6ODc5OjE0OiBlcnJvcjogdW51c2Vk IHZhcmlhYmxlIOKAmHZhbOKAmSBbLVdlcnJvcj11bnVzZWQtdmFyaWFibGVdCiAgODc5IHwgIGlu dCBvcHQsIGksIHZhbDsKICAgICAgfCAgICAgICAgICAgICAgXn5+CnRvb2xzL2J0Z2F0dC1jbGll bnQuYzo4Nzk6MTE6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYaeKAmSBbLVdlcnJvcj11bnVz ZWQtdmFyaWFibGVdCiAgODc5IHwgIGludCBvcHQsIGksIHZhbDsKICAgICAgfCAgICAgICAgICAg Xgp0b29scy9idGdhdHQtY2xpZW50LmM6IEluIGZ1bmN0aW9uIOKAmGNtZF9jb25uZWN04oCZOgp0 b29scy9idGdhdHQtY2xpZW50LmM6MTE2MzoyMzogZXJyb3I6IHBhc3NpbmcgYXJndW1lbnQgMiBv ZiDigJhzdHIyYmHigJkgZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWlu Y29tcGF0aWJsZS1wb2ludGVyLXR5cGVzXQogMTE2MyB8ICAgaWYgKHN0cjJiYShhcmd2WzFdLCAm YWRkcikgPCAwKSB7CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+CiAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgY2hh ciAoKilbMThdCkluIGZpbGUgaW5jbHVkZWQgZnJvbSB0b29scy9idGdhdHQtY2xpZW50LmM6MjQ6 Ci4vbGliL2JsdWV0b290aC5oOjQwMDozOTogbm90ZTogZXhwZWN0ZWQg4oCYYmRhZGRyX3QgKuKA mSB7YWthIOKAmHN0cnVjdCA8YW5vbnltb3VzPiAq4oCZfSBidXQgYXJndW1lbnQgaXMgb2YgdHlw ZSDigJhjaGFyICgqKVsxOF3igJkKICA0MDAgfCBpbnQgc3RyMmJhKGNvbnN0IGNoYXIgKnN0ciwg YmRhZGRyX3QgKmJhKTsKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+ fn5+fl5+CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzoxMTY3OjIwOiBlcnJvcjogcGFzc2luZyBhcmd1 bWVudCAyIG9mIOKAmGJhY3B54oCZIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbLVdl cnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10eXBlc10KIDExNjcgfCAgIGJhY3B5KCZkc3RfYWRk ciwgJmFkZHIpOwogICAgICB8ICAgICAgICAgICAgICAgICAgICBefn5+fgogICAgICB8ICAgICAg ICAgICAgICAgICAgICB8CiAgICAgIHwgICAgICAgICAgICAgICAgICAgIGNoYXIgKCopWzE4XQpJ biBmaWxlIGluY2x1ZGVkIGZyb20gdG9vbHMvYnRnYXR0LWNsaWVudC5jOjI0OgouL2xpYi9ibHVl dG9vdGguaDozOTA6NTc6IG5vdGU6IGV4cGVjdGVkIOKAmGNvbnN0IGJkYWRkcl90ICrigJkge2Fr YSDigJhjb25zdCBzdHJ1Y3QgPGFub255bW91cz4gKuKAmX0gYnV0IGFyZ3VtZW50IGlzIG9mIHR5 cGUg4oCYY2hhciAoKilbMThd4oCZCiAgMzkwIHwgc3RhdGljIGlubGluZSB2b2lkIGJhY3B5KGJk YWRkcl90ICpkc3QsIGNvbnN0IGJkYWRkcl90ICpzcmMpCiAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5+fn5+fn5efn4KdG9vbHMvYnRnYXR0 LWNsaWVudC5jOiBJbiBmdW5jdGlvbiDigJhyZWFkX2J5dGVz4oCZOgp0b29scy9idGdhdHQtY2xp ZW50LmM6Njc5OjM0OiBlcnJvcjog4oCYaeKAmSBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGlu IHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KICA2NzkgfCAgaWYg KCpsZW5ndGggPT0gMyAmJiAhc3RyY21wKGFyZ3ZbaV0sICJieXRlcyIpKSB7CiAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0 cmVhdGVkIGFzIGVycm9ycwptYWtlWzFdOiAqKiogW01ha2VmaWxlOjc1OTE6IHRvb2xzL2J0Z2F0 dC1jbGllbnQub10gRXJyb3IgMQptYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBq b2JzLi4uLgptYWtlOiAqKiogW01ha2VmaWxlOjQ1MDY6IGFsbF0gRXJyb3IgMgojIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKVGVzdDogYmx1ZXptYWtlZXh0ZWxsIC0gRkFJTApEZXNjOiBC dWlsZCBCbHVleiB3aXRoIEV4dGVybmFsIEVMTApPdXRwdXQ6Cgp0b29scy9idGdhdHQtY2xpZW50 LmM6NTE5OjY6IGVycm9yOiBubyBwcmV2aW91cyBkZWNsYXJhdGlvbiBmb3Ig4oCYcmVhZF9ieV90 eXBlX2Ni4oCZIFstV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zXQogIDUxOSB8IHZvaWQgcmVh ZF9ieV90eXBlX2NiKGJvb2wgc3VjY2VzcywgdWludDhfdCBhdHRfZWNvZGUsCiAgICAgIHwgICAg ICBefn5+fn5+fn5+fn5+fn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOiBJbiBmdW5jdGlvbiDigJhj bWRfd3JpdGVfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo3MzA6MTQ6IGVycm9yOiB1 bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA3MzAg fCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBefn4KdG9vbHMvYnRnYXR0 LWNsaWVudC5jOjczMDoxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV2Vycm9y PXVudXNlZC12YXJpYWJsZV0KICA3MzAgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAg ICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX3dyaXRlX2xv bmdfdmFsdWXigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo4MTU6MTQ6IGVycm9yOiB1bnVzZWQg dmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4MTUgfCAgaW50 IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICAgICBefn4KdG9vbHMvYnRnYXR0LWNsaWVu dC5jOjgxNToxMTogZXJyb3I6IHVudXNlZCB2YXJpYWJsZSDigJhp4oCZIFstV2Vycm9yPXVudXNl ZC12YXJpYWJsZV0KICA4MTUgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAgICBe CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVuY3Rpb24g4oCYY21kX3dyaXRlX3ByZXBhcmXi gJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo5MzI6MzE6IGVycm9yOiBwb2ludGVyIHRhcmdldHMg aW4gcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHJlYWRfYnl0ZXPigJkgZGlmZmVyIGluIHNpZ25l ZG5lc3MgWy1XZXJyb3I9cG9pbnRlci1zaWduXQogIDkzMiB8ICB2YWx1ZSA9IHJlYWRfYnl0ZXMo YXJndiArIDIsICZsZW5ndGgpOwogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF5+fn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICoKdG9vbHMvYnRnYXR0 LWNsaWVudC5jOjY3Mjo0Njogbm90ZTogZXhwZWN0ZWQg4oCYaW50ICrigJkgYnV0IGFyZ3VtZW50 IGlzIG9mIHR5cGUg4oCYdW5zaWduZWQgaW50ICrigJkKICA2NzIgfCBzdGF0aWMgdWludDhfdCAq cmVhZF9ieXRlcyhjaGFyICoqYXJndiwgaW50ICpsZW5ndGgpCiAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+Xn5+fn5+CnRvb2xzL2J0Z2F0dC1jbGll bnQuYzo4Nzk6MTQ6IGVycm9yOiB1bnVzZWQgdmFyaWFibGUg4oCYdmFs4oCZIFstV2Vycm9yPXVu dXNlZC12YXJpYWJsZV0KICA4NzkgfCAgaW50IG9wdCwgaSwgdmFsOwogICAgICB8ICAgICAgICAg ICAgICBefn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjg3OToxMTogZXJyb3I6IHVudXNlZCB2YXJp YWJsZSDigJhp4oCZIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KICA4NzkgfCAgaW50IG9wdCwg aSwgdmFsOwogICAgICB8ICAgICAgICAgICBeCnRvb2xzL2J0Z2F0dC1jbGllbnQuYzogSW4gZnVu Y3Rpb24g4oCYY21kX2Nvbm5lY3TigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzoxMTYzOjIzOiBl cnJvcjogcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmHN0cjJiYeKAmSBmcm9tIGluY29tcGF0aWJs ZSBwb2ludGVyIHR5cGUgWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdCiAxMTYz IHwgICBpZiAoc3RyMmJhKGFyZ3ZbMV0sICZhZGRyKSA8IDApIHsKICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgXn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfAogICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICBjaGFyICgqKVsxOF0KSW4gZmlsZSBpbmNsdWRlZCBmcm9t IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzoyNDoKLi9saWIvYmx1ZXRvb3RoLmg6NDAwOjM5OiBub3Rl OiBleHBlY3RlZCDigJhiZGFkZHJfdCAq4oCZIHtha2Eg4oCYc3RydWN0IDxhbm9ueW1vdXM+ICri gJl9IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGNoYXIgKCopWzE4XeKAmQogIDQwMCB8IGlu dCBzdHIyYmEoY29uc3QgY2hhciAqc3RyLCBiZGFkZHJfdCAqYmEpOwogICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+Xn4KdG9vbHMvYnRnYXR0LWNsaWVudC5jOjEx Njc6MjA6IGVycm9yOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYYmFjcHnigJkgZnJvbSBpbmNv bXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVz XQogMTE2NyB8ICAgYmFjcHkoJmRzdF9hZGRyLCAmYWRkcik7CiAgICAgIHwgICAgICAgICAgICAg ICAgICAgIF5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwKICAgICAgfCAgICAgICAg ICAgICAgICAgICAgY2hhciAoKilbMThdCkluIGZpbGUgaW5jbHVkZWQgZnJvbSB0b29scy9idGdh dHQtY2xpZW50LmM6MjQ6Ci4vbGliL2JsdWV0b290aC5oOjM5MDo1Nzogbm90ZTogZXhwZWN0ZWQg 4oCYY29uc3QgYmRhZGRyX3QgKuKAmSB7YWthIOKAmGNvbnN0IHN0cnVjdCA8YW5vbnltb3VzPiAq 4oCZfSBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSDigJhjaGFyICgqKVsxOF3igJkKICAzOTAgfCBz dGF0aWMgaW5saW5lIHZvaWQgYmFjcHkoYmRhZGRyX3QgKmRzdCwgY29uc3QgYmRhZGRyX3QgKnNy YykKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+ fn5+fn5+fn5+fl5+fgp0b29scy9idGdhdHQtY2xpZW50LmM6IEluIGZ1bmN0aW9uIOKAmHJlYWRf Ynl0ZXPigJk6CnRvb2xzL2J0Z2F0dC1jbGllbnQuYzo2Nzk6MzQ6IGVycm9yOiDigJhp4oCZIG1h eSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdlcnJvcj1tYXliZS11 bmluaXRpYWxpemVkXQogIDY3OSB8ICBpZiAoKmxlbmd0aCA9PSAzICYmICFzdHJjbXAoYXJndltp XSwgImJ5dGVzIikpIHsKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CmNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQgYXMgZXJyb3JzCm1ha2VbMV06ICoqKiBb TWFrZWZpbGU6NzU5MTogdG9vbHMvYnRnYXR0LWNsaWVudC5vXSBFcnJvciAxCm1ha2VbMV06ICoq KiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCm1ha2U6ICoqKiBbTWFrZWZpbGU6NDUw NjogYWxsXSBFcnJvciAyCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpUZXN0OiBJbmNy ZW1lbnRhbEJ1aWxkIC0gRkFJTApEZXNjOiBJbmNyZW1lbnRhbCBidWlsZCB3aXRoIHRoZSBwYXRj aGVzIGluIHRoZSBzZXJpZXMKT3V0cHV0OgpbQmx1ZVosNS85XSBidGdhdHQtY2xpZW50OiBJbXBs ZW1lbnQgZGlzY29ubmVjdCBhbmQgY29ubmVjdCBjb21tYW5kcwoKdG9vbHMvYnRnYXR0LWNsaWVu dC5jOiBJbiBmdW5jdGlvbiDigJhjbWRfY29ubmVjdOKAmToKdG9vbHMvYnRnYXR0LWNsaWVudC5j OjExMTI6MjM6IGVycm9yOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2Yg4oCYc3RyMmJh4oCZIGZyb20g aW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbLVdlcnJvcj1pbmNvbXBhdGlibGUtcG9pbnRlci10 eXBlc10KIDExMTIgfCAgIGlmIChzdHIyYmEoYXJndlsxXSwgJmFkZHIpIDwgMCkgewogICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICBefn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICB8CiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKCopWzE4XQpJbiBmaWxlIGlu Y2x1ZGVkIGZyb20gdG9vbHMvYnRnYXR0LWNsaWVudC5jOjI0OgouL2xpYi9ibHVldG9vdGguaDo0 MDA6Mzk6IG5vdGU6IGV4cGVjdGVkIOKAmGJkYWRkcl90ICrigJkge2FrYSDigJhzdHJ1Y3QgPGFu b255bW91cz4gKuKAmX0gYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYY2hhciAoKilbMThd4oCZ CiAgNDAwIHwgaW50IHN0cjJiYShjb25zdCBjaGFyICpzdHIsIGJkYWRkcl90ICpiYSk7CiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5+fn5+fn5+fn5efgp0b29scy9idGdhdHQt Y2xpZW50LmM6MTExNjoyMDogZXJyb3I6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiDigJhiYWNweeKA mSBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBv aW50ZXItdHlwZXNdCiAxMTE2IHwgICBiYWNweSgmZHN0X2FkZHIsICZhZGRyKTsKICAgICAgfCAg ICAgICAgICAgICAgICAgICAgXn5+fn4KICAgICAgfCAgICAgICAgICAgICAgICAgICAgfAogICAg ICB8ICAgICAgICAgICAgICAgICAgICBjaGFyICgqKVsxOF0KSW4gZmlsZSBpbmNsdWRlZCBmcm9t IHRvb2xzL2J0Z2F0dC1jbGllbnQuYzoyNDoKLi9saWIvYmx1ZXRvb3RoLmg6MzkwOjU3OiBub3Rl OiBleHBlY3RlZCDigJhjb25zdCBiZGFkZHJfdCAq4oCZIHtha2Eg4oCYY29uc3Qgc3RydWN0IDxh bm9ueW1vdXM+ICrigJl9IGJ1dCBhcmd1bWVudCBpcyBvZiB0eXBlIOKAmGNoYXIgKCopWzE4XeKA mQogIDM5MCB8IHN0YXRpYyBpbmxpbmUgdm9pZCBiYWNweShiZGFkZHJfdCAqZHN0LCBjb25zdCBi ZGFkZHJfdCAqc3JjKQogICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB+fn5+fn5+fn5+fn5+fn5+Xn5+CmNjMTogYWxsIHdhcm5pbmdzIGJlaW5nIHRyZWF0ZWQg YXMgZXJyb3JzCm1ha2VbMV06ICoqKiBbTWFrZWZpbGU6NzU5MTogdG9vbHMvYnRnYXR0LWNsaWVu dC5vXSBFcnJvciAxCm1ha2VbMV06ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4u CnRvb2xzL21nbXQtdGVzdGVyLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6CnRvb2xzL21nbXQt dGVzdGVyLmM6MTI1MTQ6NTogbm90ZTogdmFyaWFibGUgdHJhY2tpbmcgc2l6ZSBsaW1pdCBleGNl ZWRlZCB3aXRoIOKAmC1mdmFyLXRyYWNraW5nLWFzc2lnbm1lbnRz4oCZLCByZXRyeWluZyB3aXRo b3V0CjEyNTE0IHwgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgfCAgICAg Xn5+fgptYWtlOiAqKiogW01ha2VmaWxlOjQ1MDY6IGFsbF0gRXJyb3IgMgojIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKVGVzdDogU2NhbkJ1aWxkIC0gRkFJTApEZXNjOiBSdW4gU2NhbiBC dWlsZApPdXRwdXQ6CgpzcmMvc2hhcmVkL2FkLmM6MzY5OjE5OiB3YXJuaW5nOiBVc2Ugb2YgemVy by1hbGxvY2F0ZWQgbWVtb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmWygq cG9zKSsrXSA9IGFkX3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCjEgd2FybmluZyBnZW5lcmF0ZWQuCnNyYy9zaGFyZWQvZ2F0dC1jbGllbnQuYzo0 NTE6MjE6IHdhcm5pbmc6IFVzZSBvZiBtZW1vcnkgYWZ0ZXIgaXQgaXMgZnJlZWQKICAgICAgICBn YXR0X2RiX3VucmVnaXN0ZXIob3AtPmNsaWVudC0+ZGIsIG9wLT5kYl9pZCk7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgIF5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjY5Njoy OiB3YXJuaW5nOiBVc2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAgICAgZGlzY292 ZXJ5X29wX2NvbXBsZXRlKG9wLCBmYWxzZSwgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CnNyYy9zaGFyZWQvZ2F0dC1jbGllbnQu Yzo5OTM6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAg IGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2RlKTsKICAgICAgICBe fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9n YXR0LWNsaWVudC5jOjEwOTk6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBm cmVlZAogICAgICAgIGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2Rl KTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K c3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjEyOTE6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBh ZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2Vz cywgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjEzNTY6Mjogd2FybmluZzogVXNl IG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGRpc2NvdmVyeV9vcF9jb21wbGV0 ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjE2MzE6Njog d2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGlmIChyZWFk X2RiX2hhc2gob3ApKSB7CiAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9n YXR0LWNsaWVudC5jOjE2MzY6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBm cmVlZAogICAgICAgIGRpc2NvdmVyX2FsbChvcCk7CiAgICAgICAgXn5+fn5+fn5+fn5+fn5+fgpz cmMvc2hhcmVkL2dhdHQtY2xpZW50LmM6MjE0MDo2OiB3YXJuaW5nOiBVc2Ugb2YgbWVtb3J5IGFm dGVyIGl0IGlzIGZyZWVkCiAgICAgICAgaWYgKHJlYWRfZGJfaGFzaChvcCkpIHsKICAgICAgICAg ICAgXn5+fn5+fn5+fn5+fn5+fgpzcmMvc2hhcmVkL2dhdHQtY2xpZW50LmM6MjE0ODo4OiB3YXJu aW5nOiBVc2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY292ZXJ5X29wX3JlZihvcCks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Xn5+fn5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjMyMzY6Mjogd2Fy bmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGNvbXBsZXRlX3dy aXRlX2xvbmdfb3AocmVxLCBzdWNjZXNzLCAwLCBmYWxzZSk7CiAgICAgICAgXn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpzcmMvc2hhcmVkL2dhdHQtY2xpZW50 LmM6MzI1ODoyOiB3YXJuaW5nOiBVc2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAg ICAgcmVxdWVzdF91bnJlZihyZXEpOwogICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fgoxMiB3YXJu aW5ncyBnZW5lcmF0ZWQuCnNyYy9zaGFyZWQvc2hlbGwuYzoxMTgwOjEzOiB3YXJuaW5nOiBBY2Nl c3MgdG8gZmllbGQgJ29wdGlvbnMnIHJlc3VsdHMgaW4gYSBkZXJlZmVyZW5jZSBvZiBhIG51bGwg cG9pbnRlciAobG9hZGVkIGZyb20gdmFyaWFibGUgJ29wdCcpCiAgICAgICAgICAgICAgICAgICAg ICAgIGlmIChjICE9IG9wdC0+b3B0aW9uc1tpbmRleCAtIG9mZnNldF0udmFsKSB7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgoxIHdhcm5pbmcgZ2VuZXJhdGVk LgpzcmMvc2hhcmVkL2FkLmM6MzY5OjE5OiB3YXJuaW5nOiBVc2Ugb2YgemVyby1hbGxvY2F0ZWQg bWVtb3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmWygqcG9zKSsrXSA9IGFk X3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCjEg d2FybmluZyBnZW5lcmF0ZWQuCnNyYy9zaGFyZWQvZ2F0dC1jbGllbnQuYzo0NTE6MjE6IHdhcm5p bmc6IFVzZSBvZiBtZW1vcnkgYWZ0ZXIgaXQgaXMgZnJlZWQKICAgICAgICBnYXR0X2RiX3VucmVn aXN0ZXIob3AtPmNsaWVudC0+ZGIsIG9wLT5kYl9pZCk7CiAgICAgICAgICAgICAgICAgICAgICAg ICAgIF5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjY5NjoyOiB3YXJuaW5nOiBV c2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAgICAgZGlzY292ZXJ5X29wX2NvbXBs ZXRlKG9wLCBmYWxzZSwgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+CnNyYy9zaGFyZWQvZ2F0dC1jbGllbnQuYzo5OTM6Mjogd2Fy bmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGRpc2NvdmVyeV9v cF9jb21wbGV0ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5j OjEwOTk6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAg IGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2RlKTsKICAgICAgICBe fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9n YXR0LWNsaWVudC5jOjEyOTE6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBm cmVlZAogICAgICAgIGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2VzcywgYXR0X2Vjb2Rl KTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4K c3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjEzNTY6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBh ZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGRpc2NvdmVyeV9vcF9jb21wbGV0ZShvcCwgc3VjY2Vz cywgYXR0X2Vjb2RlKTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjE2MzE6Njogd2FybmluZzogVXNl IG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGlmIChyZWFkX2RiX2hhc2gob3Ap KSB7CiAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5j OjE2MzY6Mjogd2FybmluZzogVXNlIG9mIG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAg IGRpc2NvdmVyX2FsbChvcCk7CiAgICAgICAgXn5+fn5+fn5+fn5+fn5+fgpzcmMvc2hhcmVkL2dh dHQtY2xpZW50LmM6MjE0MDo2OiB3YXJuaW5nOiBVc2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZy ZWVkCiAgICAgICAgaWYgKHJlYWRfZGJfaGFzaChvcCkpIHsKICAgICAgICAgICAgXn5+fn5+fn5+ fn5+fn5+fgpzcmMvc2hhcmVkL2dhdHQtY2xpZW50LmM6MjE0ODo4OiB3YXJuaW5nOiBVc2Ugb2Yg bWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGlzY292ZXJ5X29wX3JlZihvcCksCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+ fn5+fn5+fn4Kc3JjL3NoYXJlZC9nYXR0LWNsaWVudC5jOjMyMzY6Mjogd2FybmluZzogVXNlIG9m IG1lbW9yeSBhZnRlciBpdCBpcyBmcmVlZAogICAgICAgIGNvbXBsZXRlX3dyaXRlX2xvbmdfb3Ao cmVxLCBzdWNjZXNzLCAwLCBmYWxzZSk7CiAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgpzcmMvc2hhcmVkL2dhdHQtY2xpZW50LmM6MzI1ODoyOiB3 YXJuaW5nOiBVc2Ugb2YgbWVtb3J5IGFmdGVyIGl0IGlzIGZyZWVkCiAgICAgICAgcmVxdWVzdF91 bnJlZihyZXEpOwogICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fgoxMiB3YXJuaW5ncyBnZW5lcmF0 ZWQuCnNyYy9zaGFyZWQvc2hlbGwuYzoxMTgwOjEzOiB3YXJuaW5nOiBBY2Nlc3MgdG8gZmllbGQg J29wdGlvbnMnIHJlc3VsdHMgaW4gYSBkZXJlZmVyZW5jZSBvZiBhIG51bGwgcG9pbnRlciAobG9h ZGVkIGZyb20gdmFyaWFibGUgJ29wdCcpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjICE9 IG9wdC0+b3B0aW9uc1tpbmRleCAtIG9mZnNldF0udmFsKSB7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF5+fn5+fn5+fn5+fgoxIHdhcm5pbmcgZ2VuZXJhdGVkLgp0b29scy9oY2lh dHRhY2guYzo4MTY6Nzogd2FybmluZzogQWx0aG91Z2ggdGhlIHZhbHVlIHN0b3JlZCB0byAnbicg aXMgdXNlZCBpbiB0aGUgZW5jbG9zaW5nIGV4cHJlc3Npb24sIHRoZSB2YWx1ZSBpcyBuZXZlciBh Y3R1YWxseSByZWFkIGZyb20gJ24nCiAgICAgICAgaWYgKChuID0gcmVhZF9oY2lfZXZlbnQoZmQs IHJlc3AsIDEwKSkgPCAwKSB7CiAgICAgICAgICAgICBeICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fgp0b29scy9oY2lhdHRhY2guYzo4NjQ6Nzogd2FybmluZzogQWx0aG91Z2ggdGhlIHZh bHVlIHN0b3JlZCB0byAnbicgaXMgdXNlZCBpbiB0aGUgZW5jbG9zaW5nIGV4cHJlc3Npb24sIHRo ZSB2YWx1ZSBpcyBuZXZlciBhY3R1YWxseSByZWFkIGZyb20gJ24nCiAgICAgICAgaWYgKChuID0g cmVhZF9oY2lfZXZlbnQoZmQsIHJlc3AsIDQpKSA8IDApIHsKICAgICAgICAgICAgIF4gICB+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMvaGNpYXR0YWNoLmM6ODg2Ojg6IHdhcm5pbmc6 IEFsdGhvdWdoIHRoZSB2YWx1ZSBzdG9yZWQgdG8gJ24nIGlzIHVzZWQgaW4gdGhlIGVuY2xvc2lu ZyBleHByZXNzaW9uLCB0aGUgdmFsdWUgaXMgbmV2ZXIgYWN0dWFsbHkgcmVhZCBmcm9tICduJwog ICAgICAgICAgICAgICAgaWYgKChuID0gcmVhZF9oY2lfZXZlbnQoZmQsIHJlc3AsIDEwKSkgPCAw KSB7CiAgICAgICAgICAgICAgICAgICAgIF4gICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ CnRvb2xzL2hjaWF0dGFjaC5jOjkwODo3OiB3YXJuaW5nOiBBbHRob3VnaCB0aGUgdmFsdWUgc3Rv cmVkIHRvICduJyBpcyB1c2VkIGluIHRoZSBlbmNsb3NpbmcgZXhwcmVzc2lvbiwgdGhlIHZhbHVl IGlzIG5ldmVyIGFjdHVhbGx5IHJlYWQgZnJvbSAnbicKICAgICAgICBpZiAoKG4gPSByZWFkX2hj aV9ldmVudChmZCwgcmVzcCwgNCkpIDwgMCkgewogICAgICAgICAgICAgXiAgIH5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fgp0b29scy9oY2lhdHRhY2guYzo5Mjk6Nzogd2FybmluZzogQWx0aG91 Z2ggdGhlIHZhbHVlIHN0b3JlZCB0byAnbicgaXMgdXNlZCBpbiB0aGUgZW5jbG9zaW5nIGV4cHJl c3Npb24sIHRoZSB2YWx1ZSBpcyBuZXZlciBhY3R1YWxseSByZWFkIGZyb20gJ24nCiAgICAgICAg aWYgKChuID0gcmVhZF9oY2lfZXZlbnQoZmQsIHJlc3AsIDQpKSA8IDApIHsKICAgICAgICAgICAg IF4gICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMvaGNpYXR0YWNoLmM6OTczOjc6 IHdhcm5pbmc6IEFsdGhvdWdoIHRoZSB2YWx1ZSBzdG9yZWQgdG8gJ24nIGlzIHVzZWQgaW4gdGhl IGVuY2xvc2luZyBleHByZXNzaW9uLCB0aGUgdmFsdWUgaXMgbmV2ZXIgYWN0dWFsbHkgcmVhZCBm cm9tICduJwogICAgICAgIGlmICgobiA9IHJlYWRfaGNpX2V2ZW50KGZkLCByZXNwLCA2KSkgPCAw KSB7CiAgICAgICAgICAgICBeICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CjYgd2Fybmlu Z3MgZ2VuZXJhdGVkLgpzcmMvb3VpLmM6NTA6Mjogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdo d2RiJyBpcyBuZXZlciByZWFkCiAgICAgICAgaHdkYiA9IHVkZXZfaHdkYl91bnJlZihod2RiKTsK ICAgICAgICBeICAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+CnNyYy9vdWkuYzo1MzoyOiB3YXJu aW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ3VkZXYnIGlzIG5ldmVyIHJlYWQKICAgICAgICB1ZGV2ID0g dWRldl91bnJlZih1ZGV2KTsKICAgICAgICBeICAgICAgfn5+fn5+fn5+fn5+fn5+fgoyIHdhcm5p bmdzIGdlbmVyYXRlZC4KdG9vbHMvaGNpZHVtcC5jOjE4MDo5OiB3YXJuaW5nOiBQb3RlbnRpYWwg bGVhayBvZiBtZW1vcnkgcG9pbnRlZCB0byBieSAnZHAnCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaWYgKGZkc1tpXS5mZCA9PSBzb2NrKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBefn4KdG9vbHMvaGNpZHVtcC5jOjI0ODoxNzogd2FybmluZzogQXNzaWduZWQg dmFsdWUgaXMgZ2FyYmFnZSBvciB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkaC0+dHNfc2VjICA9IGh0b2JsKGZybS50cy50dl9zZWMpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gfn5+fn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMv aGNpZHVtcC5jOjMyNjo5OiB3YXJuaW5nOiAxc3QgZnVuY3Rpb24gY2FsbCBhcmd1bWVudCBpcyBh biB1bmluaXRpYWxpemVkIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg KGJlMzJ0b2goZHAuZmxhZ3MpICYgMHgwMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBefn5+fn5+fn5+fn5+fn5+fgovdXNyL2luY2x1ZGUvZW5kaWFuLmg6NDY6MjI6IG5v dGU6IGV4cGFuZGVkIGZyb20gbWFjcm8gJ2JlMzJ0b2gnCiMgIGRlZmluZSBiZTMydG9oKHgpIF9f YnN3YXBfMzIgKHgpCiAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+CnRvb2xzL2hj aWR1bXAuYzozNDE6MjA6IHdhcm5pbmc6IDFzdCBmdW5jdGlvbiBjYWxsIGFyZ3VtZW50IGlzIGFu IHVuaW5pdGlhbGl6ZWQgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm0u ZGF0YV9sZW4gPSBiZTMydG9oKGRwLmxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+Ci91c3IvaW5jbHVkZS9lbmRpYW4uaDo0 NjoyMjogbm90ZTogZXhwYW5kZWQgZnJvbSBtYWNybyAnYmUzMnRvaCcKIyAgZGVmaW5lIGJlMzJ0 b2goeCkgX19ic3dhcF8zMiAoeCkKICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4K dG9vbHMvaGNpZHVtcC5jOjM0NjoxNDogd2FybmluZzogMXN0IGZ1bmN0aW9uIGNhbGwgYXJndW1l bnQgaXMgYW4gdW5pbml0aWFsaXplZCB2YWx1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wY29kZSA9IGJlMzJ0b2goZHAuZmxhZ3MpICYgMHhmZmZmOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+Ci91c3IvaW5jbHVkZS9l bmRpYW4uaDo0NjoyMjogbm90ZTogZXhwYW5kZWQgZnJvbSBtYWNybyAnYmUzMnRvaCcKIyAgZGVm aW5lIGJlMzJ0b2goeCkgX19ic3dhcF8zMiAoeCkKICAgICAgICAgICAgICAgICAgICAgXn5+fn5+ fn5+fn5+fn4KdG9vbHMvaGNpZHVtcC5jOjM4NDoxNzogd2FybmluZzogQXNzaWduZWQgdmFsdWUg aXMgZ2FyYmFnZSBvciB1bmRlZmluZWQKICAgICAgICAgICAgICAgICAgICAgICAgZnJtLmRhdGFf bGVuID0gYnRvaHMoZGgubGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4gfn5+fn5+fn5+fn5+fgp0b29scy9oY2lkdW1wLmM6Mzk0OjExOiB3YXJuaW5nOiBBc3NpZ25l ZCB2YWx1ZSBpcyBnYXJiYWdlIG9yIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgZnJtLmxlbiA9 IGZybS5kYXRhX2xlbjsKICAgICAgICAgICAgICAgICAgICAgICAgXiB+fn5+fn5+fn5+fn4KdG9v bHMvaGNpZHVtcC5jOjM5ODo5OiB3YXJuaW5nOiAxc3QgZnVuY3Rpb24gY2FsbCBhcmd1bWVudCBp cyBhbiB1bmluaXRpYWxpemVkIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgIHRzID0gYmU2 NHRvaChwaC50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4K L3Vzci9pbmNsdWRlL2VuZGlhbi5oOjUxOjIyOiBub3RlOiBleHBhbmRlZCBmcm9tIG1hY3JvICdi ZTY0dG9oJwojICBkZWZpbmUgYmU2NHRvaCh4KSBfX2Jzd2FwXzY0ICh4KQogICAgICAgICAgICAg ICAgICAgICBefn5+fn5+fn5+fn5+fgp0b29scy9oY2lkdW1wLmM6NDAzOjEzOiB3YXJuaW5nOiAx c3QgZnVuY3Rpb24gY2FsbCBhcmd1bWVudCBpcyBhbiB1bmluaXRpYWxpemVkIHZhbHVlCiAgICAg ICAgICAgICAgICAgICAgICAgIGZybS5pbiA9IGJlMzJ0b2goZHAuZmxhZ3MpICYgMHgwMTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn4KL3Vzci9pbmNs dWRlL2VuZGlhbi5oOjQ2OjIyOiBub3RlOiBleHBhbmRlZCBmcm9tIG1hY3JvICdiZTMydG9oJwoj ICBkZWZpbmUgYmUzMnRvaCh4KSBfX2Jzd2FwXzMyICh4KQogICAgICAgICAgICAgICAgICAgICBe fn5+fn5+fn5+fn5+fgp0b29scy9oY2lkdW1wLmM6NDA4OjExOiB3YXJuaW5nOiBBc3NpZ25lZCB2 YWx1ZSBpcyBnYXJiYWdlIG9yIHVuZGVmaW5lZAogICAgICAgICAgICAgICAgICAgICAgICBmcm0u aW4gPSBkaC5pbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gfn5+fn4KdG9vbHMv aGNpZHVtcC5jOjQzNzo3OiB3YXJuaW5nOiBOdWxsIHBvaW50ZXIgcGFzc2VkIHRvIDFzdCBwYXJh bWV0ZXIgZXhwZWN0aW5nICdub25udWxsJwogICAgICAgIGZkID0gb3BlbihmaWxlLCBvcGVuX2Zs YWdzLCAwNjQ0KTsKICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KMTEg d2FybmluZ3MgZ2VuZXJhdGVkLgp0b29scy9yZmNvbW0uYzoyMjg6Mzogd2FybmluZzogVmFsdWUg c3RvcmVkIHRvICdpJyBpcyBuZXZlciByZWFkCiAgICAgICAgICAgICAgICBpID0gZXhlY3ZwKGNt ZGFyZ3ZbMF0sIGNtZGFyZ3YpOwogICAgICAgICAgICAgICAgXiAgIH5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgp0b29scy9yZmNvbW0uYzoyMjg6Nzogd2FybmluZzogTnVsbCBwb2ludGVyIHBh c3NlZCB0byAxc3QgcGFyYW1ldGVyIGV4cGVjdGluZyAnbm9ubnVsbCcKICAgICAgICAgICAgICAg IGkgPSBleGVjdnAoY21kYXJndlswXSwgY21kYXJndik7CiAgICAgICAgICAgICAgICAgICAgXn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL3JmY29tbS5jOjM0ODo4OiB3YXJuaW5nOiBB bHRob3VnaCB0aGUgdmFsdWUgc3RvcmVkIHRvICdmZCcgaXMgdXNlZCBpbiB0aGUgZW5jbG9zaW5n IGV4cHJlc3Npb24sIHRoZSB2YWx1ZSBpcyBuZXZlciBhY3R1YWxseSByZWFkIGZyb20gJ2ZkJwog ICAgICAgICAgICAgICAgaWYgKChmZCA9IG9wZW4oZGV2bmFtZSwgT19SRE9OTFkgfCBPX05PQ1RU WSkpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBeICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn4KdG9vbHMvcmZjb21tLmM6NDkxOjE0OiB3YXJuaW5nOiBBc3NpZ25lZCB2 YWx1ZSBpcyBnYXJiYWdlIG9yIHVuZGVmaW5lZAogICAgICAgIHJlcS5jaGFubmVsID0gcmFkZHIu cmNfY2hhbm5lbDsKICAgICAgICAgICAgICAgICAgICBeIH5+fn5+fn5+fn5+fn5+fn4KdG9vbHMv cmZjb21tLmM6NTA5Ojg6IHdhcm5pbmc6IEFsdGhvdWdoIHRoZSB2YWx1ZSBzdG9yZWQgdG8gJ2Zk JyBpcyB1c2VkIGluIHRoZSBlbmNsb3NpbmcgZXhwcmVzc2lvbiwgdGhlIHZhbHVlIGlzIG5ldmVy IGFjdHVhbGx5IHJlYWQgZnJvbSAnZmQnCiAgICAgICAgICAgICAgICBpZiAoKGZkID0gb3Blbihk ZXZuYW1lLCBPX1JET05MWSB8IE9fTk9DVFRZKSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAg IF4gICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgo1IHdhcm5pbmdzIGdlbmVy YXRlZC4Kc3JjL3NkcC14bWwuYzoxMjY6MTA6IHdhcm5pbmc6IEFzc2lnbmVkIHZhbHVlIGlzIGdh cmJhZ2Ugb3IgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICBidWZbMV0gPSBkYXRhW2kgKyAxXTsK ICAgICAgICAgICAgICAgICAgICAgICBeIH5+fn5+fn5+fn5+CnNyYy9zZHAteG1sLmM6MzAwOjEx OiB3YXJuaW5nOiBBc3NpZ25lZCB2YWx1ZSBpcyBnYXJiYWdlIG9yIHVuZGVmaW5lZAogICAgICAg ICAgICAgICAgICAgICAgICBidWZbMV0gPSBkYXRhW2kgKyAxXTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIF4gfn5+fn5+fn5+fn4Kc3JjL3NkcC14bWwuYzozMzg6MTE6IHdhcm5pbmc6 IEFzc2lnbmVkIHZhbHVlIGlzIGdhcmJhZ2Ugb3IgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAg ICAgICAgIGJ1ZlsxXSA9IGRhdGFbaSArIDFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXiB+fn5+fn5+fn5+fgozIHdhcm5pbmdzIGdlbmVyYXRlZC4KdG9vbHMvY2lwdG9vbC5jOjM1 MDo3OiB3YXJuaW5nOiA1dGggZnVuY3Rpb24gY2FsbCBhcmd1bWVudCBpcyBhbiB1bmluaXRpYWxp emVkIHZhbHVlCiAgICAgICAgc2sgPSBkb19jb25uZWN0KGN0bCwgZGV2X2lkLCAmc3JjLCAmZHN0 LCBwc20sICgxIDw8IENNVFBfTE9PUEJBQ0spKTsKICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CjEgd2Fybmlu ZyBnZW5lcmF0ZWQuCnRvb2xzL3NkcHRvb2wuYzo5NDE6MjY6IHdhcm5pbmc6IFJlc3VsdCBvZiAn bWFsbG9jJyBpcyBjb252ZXJ0ZWQgdG8gYSBwb2ludGVyIG9mIHR5cGUgJ3VpbnQzMl90Jywgd2hp Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggc2l6ZW9mIG9wZXJhbmQgdHlwZSAnaW50JwogICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCAqdmFsdWVfaW50ID0gbWFsbG9jKHNpemVvZihpbnQp KTsKICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fiAgICAgICAgICAgIF5+fn5+fiB+ fn5+fn5+fn5+fgp0b29scy9zZHB0b29sLmM6OTgwOjQ6IHdhcm5pbmc6IDFzdCBmdW5jdGlvbiBj YWxsIGFyZ3VtZW50IGlzIGFuIHVuaW5pdGlhbGl6ZWQgdmFsdWUKICAgICAgICAgICAgICAgICAg ICAgICAgZnJlZShhbGxvY0FycmF5W2ldKTsKICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+ fn5+fn5+fn5+fn5+fgp0b29scy9zZHB0b29sLmM6Mzc3NzoyOiB3YXJuaW5nOiBQb3RlbnRpYWwg bGVhayBvZiBtZW1vcnkgcG9pbnRlZCB0byBieSAnc2kubmFtZScKICAgICAgICByZXR1cm4gYWRk X3NlcnZpY2UoMCwgJnNpKTsKICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgp0b29s cy9zZHB0b29sLmM6NDExMjo0OiB3YXJuaW5nOiBQb3RlbnRpYWwgbGVhayBvZiBtZW1vcnkgcG9p bnRlZCB0byBieSAnY29udGV4dC5zdmMnCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAt MTsKICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+CjQgd2FybmluZ3MgZ2VuZXJhdGVk Lgp0b29scy9hdnRlc3QuYzoyMjQ6NTogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlz IG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSB3cml0ZShz aywgYnVmLCAzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAgICB+fn5+fn5+ fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzoyMzQ6NTogd2FybmluZzogVmFsdWUgc3RvcmVkIHRv ICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4g PSB3cml0ZShzaywgYnVmLCA0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeICAg ICB+fn5+fn5+fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzoyNDM6NTogd2FybmluZzogVmFsdWUg c3RvcmVkIHRvICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW4gPSB3cml0ZShzaywgYnVmLCAzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBeICAgICB+fn5+fn5+fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzoyNTc6NTogd2Fybmlu ZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBsZW4gPSB3cml0ZShzaywgYnVmLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjI2NDo1OiB3YXJu aW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXiAgICAgfn5+fn5+fn5+fn5+fn4KdG9vbHMvYXZ0ZXN0LmM6MjcxOjU6IHdh cm5pbmc6IFZhbHVlIHN0b3JlZCB0byAnbGVuJyBpcyBuZXZlciByZWFkCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuID0gd3JpdGUoc2ssIGJ1ZiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeICAgICB+fn5+fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzoyNzg6NTog d2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW4gPSB3cml0ZShzaywgYnVmLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjI4OTo1 OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDQpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVz dC5jOjI5Mzo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDIpOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRv b2xzL2F2dGVzdC5jOjMwMjo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2 ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBi dWYsIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+ fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjMwNjo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xl bicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdy aXRlKHNrLCBidWYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+ fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjMxNTo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9y ZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxlbiA9IHdyaXRlKHNrLCBidWYsIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjMyMjo1OiB3YXJuaW5nOiBW YWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDIpOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjM0NDo1OiB3 YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDQpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5j OjM0ODo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDIpOwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xz L2F2dGVzdC5jOjM1Nzo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIg cmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYs IDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+ fn5+CnRvb2xzL2F2dGVzdC5jOjM2MTo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicg aXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRl KHNrLCBidWYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+ fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjM3NDo1OiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQg dG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl biA9IHdyaXRlKHNrLCBidWYsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4g ICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjM3ODo1OiB3YXJuaW5nOiBWYWx1 ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjM4NTo0OiB3YXJu aW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAg ICAgICAgICBsZW4gPSB3cml0ZShzaywgYnVmLCAyKTsKICAgICAgICAgICAgICAgICAgICAgICAg XiAgICAgfn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMvYXZ0ZXN0LmM6Mzk1OjQ6IHdhcm5pbmc6IFZh bHVlIHN0b3JlZCB0byAnbGVuJyBpcyBuZXZlciByZWFkCiAgICAgICAgICAgICAgICAgICAgICAg IGxlbiA9IHdyaXRlKHNrLCBidWYsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICBeICAgICB+ fn5+fn5+fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzo1NTk6Mzogd2FybmluZzogVmFsdWUgc3Rv cmVkIHRvICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNr LCBidWYsIDIpOwogICAgICAgICAgICAgICAgXiAgICAgfn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMv YXZ0ZXN0LmM6NTY3OjM6IHdhcm5pbmc6IFZhbHVlIHN0b3JlZCB0byAnbGVuJyBpcyBuZXZlciBy ZWFkCiAgICAgICAgICAgICAgICBsZW4gPSB3cml0ZShzaywgYnVmLCBpbnZhbGlkID8gMiA6IDMp OwogICAgICAgICAgICAgICAgXiAgICAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgp0 b29scy9hdnRlc3QuYzo1ODE6Mzogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlzIG5l dmVyIHJlYWQKICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDQgKyBzaXplb2Yo bWVkaWFfdHJhbnNwb3J0KSk7CiAgICAgICAgICAgICAgICBeICAgICB+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjU5NDozOiB3YXJuaW5n OiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgbGVu ID0gd3JpdGUoc2ssIGJ1ZiwgMyk7CiAgICAgICAgICAgICAgICBeICAgICB+fn5+fn5+fn5+fn5+ fn5+fgp0b29scy9hdnRlc3QuYzo2MDQ6Mzogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4n IGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDMpOwog ICAgICAgICAgICAgICAgXiAgICAgfn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMvYXZ0ZXN0LmM6NjE2 OjM6IHdhcm5pbmc6IFZhbHVlIHN0b3JlZCB0byAnbGVuJyBpcyBuZXZlciByZWFkCiAgICAgICAg ICAgICAgICBsZW4gPSB3cml0ZShzaywgYnVmLCAzKTsKICAgICAgICAgICAgICAgIF4gICAgIH5+ fn5+fn5+fn5+fn5+fn5+CnRvb2xzL2F2dGVzdC5jOjYzMTozOiB3YXJuaW5nOiBWYWx1ZSBzdG9y ZWQgdG8gJ2xlbicgaXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgbGVuID0gd3JpdGUoc2ss IGJ1ZiwgMyk7CiAgICAgICAgICAgICAgICBeICAgICB+fn5+fn5+fn5+fn5+fn5+fgp0b29scy9h dnRlc3QuYzo2NDM6Mzogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlzIG5ldmVyIHJl YWQKICAgICAgICAgICAgICAgIGxlbiA9IHdyaXRlKHNrLCBidWYsIDMpOwogICAgICAgICAgICAg ICAgXiAgICAgfn5+fn5+fn5+fn5+fn5+fn4KdG9vbHMvYXZ0ZXN0LmM6NjUyOjM6IHdhcm5pbmc6 IFZhbHVlIHN0b3JlZCB0byAnbGVuJyBpcyBuZXZlciByZWFkCiAgICAgICAgICAgICAgICBsZW4g PSB3cml0ZShzaywgYnVmLCAzKTsKICAgICAgICAgICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+ fn5+CnRvb2xzL2F2dGVzdC5jOjY1OTozOiB3YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2xlbicg aXMgbmV2ZXIgcmVhZAogICAgICAgICAgICAgICAgbGVuID0gd3JpdGUoc2ssIGJ1ZiwgMik7CiAg ICAgICAgICAgICAgICBeICAgICB+fn5+fn5+fn5+fn5+fn5+fgp0b29scy9hdnRlc3QuYzo2OTU6 Mjogd2FybmluZzogVmFsdWUgc3RvcmVkIHRvICdsZW4nIGlzIG5ldmVyIHJlYWQKICAgICAgICBs ZW4gPSB3cml0ZShzaywgYnVmLCBBVkNUUF9IRUFERVJfTEVOR1RIICsgc2l6ZW9mKHBsYXlfcHJl c3NlZCkpOwogICAgICAgIF4gICAgIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KMzIgd2FybmluZ3MgZ2VuZXJhdGVkLgp0b29scy9idHBy b3h5LmM6ODM2OjE1OiB3YXJuaW5nOiBOdWxsIHBvaW50ZXIgcGFzc2VkIHRvIDFzdCBwYXJhbWV0 ZXIgZXhwZWN0aW5nICdub25udWxsJwogICAgICAgICAgICAgICAgICAgICAgICB0Y3BfcG9ydCA9 IGF0b2kob3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+ fn5+fn4KdG9vbHMvYnRwcm94eS5jOjgzOTo4OiB3YXJuaW5nOiBOdWxsIHBvaW50ZXIgcGFzc2Vk IHRvIDFzdCBwYXJhbWV0ZXIgZXhwZWN0aW5nICdub25udWxsJwogICAgICAgICAgICAgICAgICAg ICAgICBpZiAoc3RybGVuKG9wdGFyZykgPiAzICYmICFzdHJuY21wKG9wdGFyZywgImhjaSIsIDMp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4KMiB3YXJuaW5ncyBn ZW5lcmF0ZWQuCnRvb2xzL2NyZWF0ZS1pbWFnZS5jOjc2OjM6IHdhcm5pbmc6IFZhbHVlIHN0b3Jl ZCB0byAnZmQnIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgIGZkID0gLTE7CiAgICAgICAg ICAgICAgICBeICAgIH5+CnRvb2xzL2NyZWF0ZS1pbWFnZS5jOjg0OjM6IHdhcm5pbmc6IFZhbHVl IHN0b3JlZCB0byAnZmQnIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgIGZkID0gLTE7CiAg ICAgICAgICAgICAgICBeICAgIH5+CnRvb2xzL2NyZWF0ZS1pbWFnZS5jOjkyOjM6IHdhcm5pbmc6 IFZhbHVlIHN0b3JlZCB0byAnZmQnIGlzIG5ldmVyIHJlYWQKICAgICAgICAgICAgICAgIGZkID0g LTE7CiAgICAgICAgICAgICAgICBeICAgIH5+CnRvb2xzL2NyZWF0ZS1pbWFnZS5jOjEwNToyOiB3 YXJuaW5nOiBWYWx1ZSBzdG9yZWQgdG8gJ2ZkJyBpcyBuZXZlciByZWFkCiAgICAgICAgZmQgPSAt MTsKICAgICAgICBeICAgIH5+CjQgd2FybmluZ3MgZ2VuZXJhdGVkLgp0b29scy9idGdhdHQtY2xp ZW50LmM6IEluIGZ1bmN0aW9uIOKAmGNtZF9jb25uZWN04oCZOgp0b29scy9idGdhdHQtY2xpZW50 LmM6MTExMjoyMzogZXJyb3I6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiDigJhzdHIyYmHigJkgZnJv bSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlIFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVy LXR5cGVzXQogMTExMiB8ICAgaWYgKHN0cjJiYShhcmd2WzFdLCAmYWRkcikgPCAwKSB7CiAgICAg IHwgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+CiAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwKICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgY2hhciAoKilbMThdCkluIGZpbGUg aW5jbHVkZWQgZnJvbSB0b29scy9idGdhdHQtY2xpZW50LmM6MjQ6Ci4vbGliL2JsdWV0b290aC5o OjQwMDozOTogbm90ZTogZXhwZWN0ZWQg4oCYYmRhZGRyX3QgKuKAmSB7YWthIOKAmHN0cnVjdCA8 YW5vbnltb3VzPiAq4oCZfSBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSDigJhjaGFyICgqKVsxOF3i gJkKICA0MDAgfCBpbnQgc3RyMmJhKGNvbnN0IGNoYXIgKnN0ciwgYmRhZGRyX3QgKmJhKTsKICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fl5+CnRvb2xzL2J0Z2F0 dC1jbGllbnQuYzoxMTE2OjIwOiBlcnJvcjogcGFzc2luZyBhcmd1bWVudCAyIG9mIOKAmGJhY3B5 4oCZIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZSBbLVdlcnJvcj1pbmNvbXBhdGlibGUt cG9pbnRlci10eXBlc10KIDExMTYgfCAgIGJhY3B5KCZkc3RfYWRkciwgJmFkZHIpOwogICAgICB8 ICAgICAgICAgICAgICAgICAgICBefn5+fgogICAgICB8ICAgICAgICAgICAgICAgICAgICB8CiAg ICAgIHwgICAgICAgICAgICAgICAgICAgIGNoYXIgKCopWzE4XQpJbiBmaWxlIGluY2x1ZGVkIGZy b20gdG9vbHMvYnRnYXR0LWNsaWVudC5jOjI0OgouL2xpYi9ibHVldG9vdGguaDozOTA6NTc6IG5v dGU6IGV4cGVjdGVkIOKAmGNvbnN0IGJkYWRkcl90ICrigJkge2FrYSDigJhjb25zdCBzdHJ1Y3Qg PGFub255bW91cz4gKuKAmX0gYnV0IGFyZ3VtZW50IGlzIG9mIHR5cGUg4oCYY2hhciAoKilbMThd 4oCZCiAgMzkwIHwgc3RhdGljIGlubGluZSB2b2lkIGJhY3B5KGJkYWRkcl90ICpkc3QsIGNvbnN0 IGJkYWRkcl90ICpzcmMpCiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIH5+fn5+fn5+fn5+fn5+fn5efn4KY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRl ZCBhcyBlcnJvcnMKbWFrZVsxXTogKioqIFtNYWtlZmlsZTo3NTkxOiB0b29scy9idGdhdHQtY2xp ZW50Lm9dIEVycm9yIDEKbWFrZVsxXTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4u Li4KdG9vbHMvYnRnYXR0LXNlcnZlci5jOjEyMTI6Mjogd2FybmluZzogVmFsdWUgc3RvcmVkIHRv ICdhcmd2JyBpcyBuZXZlciByZWFkCiAgICAgICAgYXJndiAtPSBvcHRpbmQ7CiAgICAgICAgXiAg ICAgICB+fn5+fn4KMSB3YXJuaW5nIGdlbmVyYXRlZC4KbWFrZTogKioqIFtNYWtlZmlsZTo0NTA2 OiBhbGxdIEVycm9yIDIKCgotLS0KUmVnYXJkcywKTGludXggQmx1ZXRvb3RoCgo= --===============6952207621206296585==--