Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p6cx3-00080k-EZ for pgsql-hackers@arkaria.postgresql.org; Sat, 17 Dec 2022 19:34:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p6cx1-00047e-A0 for pgsql-hackers@arkaria.postgresql.org; Sat, 17 Dec 2022 19:34:27 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p6cx0-00047V-R1 for pgsql-hackers@lists.postgresql.org; Sat, 17 Dec 2022 19:34:27 +0000 Received: from mail-oi1-x236.google.com ([2607:f8b0:4864:20::236]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p6cww-0000Wb-Kl for pgsql-hackers@lists.postgresql.org; Sat, 17 Dec 2022 19:34:26 +0000 Received: by mail-oi1-x236.google.com with SMTP id s186so4834259oia.5 for ; Sat, 17 Dec 2022 11:34:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=E/Dtj3MBVbjgzlmrYWBZ7wzBMCga4IqGW2xAdVNY9jc=; b=C0fuCjfCFZiMvTun0R3+UDXpiBdtI4A+pGvIdPvrVqigOMuQedn+v8DeaSyrlwYKE8 WGLe1vBuKYJwfY2In9knwx/fVsZ+qFve6Yvd0bYB8gCO79SNItXwiYYNeLr5MOBQFgmy 5GltD/kExZOhQ+9FwcBusfxeo6kTBTf6UZ+mpymlqn/9TO/80ir8LBg8E4zzgoUOU80h 1U9XkpZ76/6VR3mYgNyodIgDcQK4fQqTtoW/Yv/RDEAZsPSnkEELzb1a4hW8kPhsEBNT S0l+xpVpYrlNd5CNev/25d+z2wgj4ZlR8T3sYW/PDfrjLFTNmOakTgrJ84xNSUTo1e+g 8x8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=E/Dtj3MBVbjgzlmrYWBZ7wzBMCga4IqGW2xAdVNY9jc=; b=cizdfPpOy+ax2L7eZjNXz/7BecmiLbqcDK4/0G/sP62zUHnIR7+2VjZSSwx/QQvTt1 OsfZklsvU+n1xrnFdp8Wx7E6vYRguuNQLcEj7O0J2klGfaklncS1gf5oOo9s4QWPz6Vm 4DpaJvRI6SoZ6xoAL3cihnxaQQc00Klg79ZViCA/prQO3S1tnRdWH882bpSrHW4E25cf qPE6ITInIzovUCpE4+v6x651Gv8M5LhHOAngEliUKLviwsD1aefJ0pS9Bd1Fv+YPX3nT FoIptQ9T/FagbyqFVH7I4CCQL0IL9Mhs6LHPMLJiZYrM+gqVR19tDt0GsKIEuWG3feZ2 6RfQ== X-Gm-Message-State: ANoB5pntB4gliIvKhBD1raBzOcje8GBfx9SbPVrhi5ZHwKWr8ygJ8zEx 98vpsnIMoISCDoV3vrMC3V/9A5XLdmEQteyGgUsb8l0y9A== X-Google-Smtp-Source: AA0mqf5G0jBdb5Ro4TEErz2lkOCxQC/1HJ4snjWTuWdnFMlDYSU+834vDcZM1ygLNljXwGsNaaWTc8ikBg4SlsNlfDM= X-Received: by 2002:a05:6808:10c2:b0:35e:b445:428b with SMTP id s2-20020a05680810c200b0035eb445428bmr752749ois.9.1671305660069; Sat, 17 Dec 2022 11:34:20 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Joseph Koshakow Date: Sat, 17 Dec 2022 14:34:09 -0500 Message-ID: Subject: Re: Infinite Interval To: Ashutosh Bapat Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000002e5cd505f00b2c83" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002e5cd505f00b2c83 Content-Type: text/plain; charset="UTF-8" Hi Ashutosh, I've added tests for all the operators and functions involving intervals and what I think the expected behaviors to be. The formatting might be slightly off and I've left the contents of the error messages as TODOs. Hopefully it's a good reference for the implementation. > Adding infinite interval to an infinite timestamp with opposite > direction is not going to yield 0 but some infinity. Since we are adding > interval to the timestamp the resultant timestamp is an infinity > preserving the direction. I think I disagree with this. Tom Lane in one of the previous threads said: > tl;dr: we should model it after the behavior of IEEE float infinities, > except we'll want to throw errors where those produce NaNs. and I agree with this opinion. I believe that means that adding an infinite interval to an infinite timestamp with opposite directions should yield an error instead of some infinity. Since with floats this would yield a NaN. > Dividing infinite interval by finite number keeps it infinite. > TODO: Do we change the sign of infinity if factor is negative? Again if we model this after the IEEE float behavior, then the answer is yes, we do change the sign of infinity. - Joe Koshakow --0000000000002e5cd505f00b2c83 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Support-infinite-interval.patch" Content-Disposition: attachment; filename="v2-0001-Support-infinite-interval.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lbsc7mfz0 RnJvbSA0YzFiZTRlMmFhN2FiZDU2OTY3ZmRjZTE0YjEwMDcxNWYzYTYzZmVlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3NlcGggS29zaGFrb3cgPGtvc2h5NDRAZ21haWwuY29tPgpE YXRlOiBTYXQsIDE3IERlYyAyMDIyIDE0OjIxOjI2IC0wNTAwClN1YmplY3Q6IFtQQVRDSF0gVGhp cyBpcyBXSVAuCgpGb2xsb3dpbmcgdGhpbmdzIGFyZSBzdXBwb3J0ZWQKMS4gQWNjZXB0cyAnKy8t aW5maW5pdHknIGFzIGEgdmFsaWQgc3RyaW5nIGlucHV0IGZvciBpbnRlcnZhbCB0eXBlLgoyLiBT dXBwb3J0IGludGVydmFsX3BsLCBpbnRlcnZhbF9kaXYKMy4gVGVzdHMgaW4gaW50ZXJ2YWwuc3Fs IGZvciBjb21wYXJpc29uIG9wZXJhdG9ycyB3b3JraW5nIGZpbmUuCgpUT0RPcwoxLiBWYXJpb3Vz IFRPRE9zIGluIGNvZGUKMi4gaW50ZXJ2YWxfcGw6IGhvdyB0byBoYW5kbGUgaW5maW5pdGUgdmFs dWVzIHdpdGggb3Bwb3NpdGUgc2lnbnMKMy4gdGltZXN0YW1wLCB0aW1lc3RhbXB0eiwgZGF0ZSBh bmQgdGltZSBhcml0aG1ldGljCjQuIEZpeCBob3JvbG9neSB0ZXN0LgoKQXNodXRvc2ggQmFwYXQK LS0tCiBzcmMvYmFja2VuZC91dGlscy9hZHQvZGF0ZXRpbWUuYyAgICAgICB8ICAgMiArCiBzcmMv YmFja2VuZC91dGlscy9hZHQvdGltZXN0YW1wLmMgICAgICB8IDE2NiArKysrKysrLQogc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9pbnRlcnZhbC5vdXQgfCA1NjUgKysrKysrKysrKysrKysrKysr KysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50ZXJ2YWwuc3FsICAgICAgfCAxMDUgKysr KysKIDQgZmlsZXMgY2hhbmdlZCwgODI0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9kYXRldGltZS5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKaW5kZXggYjViMTE3YThjYS4uMWU5OGM2ZGM3OCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L2RhdGV0aW1lLmMKQEAgLTM2MzQsNiArMzYzNCw4IEBAIERlY29kZUludGVy dmFsKGNoYXIgKipmaWVsZCwgaW50ICpmdHlwZSwgaW50IG5mLCBpbnQgcmFuZ2UsCiAJCQljYXNl IERUS19TVFJJTkc6CiAJCQljYXNlIERUS19TUEVDSUFMOgogCQkJCXR5cGUgPSBEZWNvZGVVbml0 cyhpLCBmaWVsZFtpXSwgJnV2YWwpOworCQkJCWlmICh0eXBlID09IFVOS05PV05fRklFTEQpCisJ CQkJCXR5cGUgPSBEZWNvZGVTcGVjaWFsKGksIGZpZWxkW2ldLCAmdXZhbCk7CiAJCQkJaWYgKHR5 cGUgPT0gSUdOT1JFX0RURikKIAkJCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3Rh bXAuYwppbmRleCAzZjI1MDhjMGM0Li4wYzcyODZiMDZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvdGltZXN0YW1wLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVz dGFtcC5jCkBAIC03OSw2ICs3OSwxMiBAQCBzdGF0aWMgYm9vbCBBZGp1c3RJbnRlcnZhbEZvclR5 cG1vZChJbnRlcnZhbCAqaW50ZXJ2YWwsIGludDMyIHR5cG1vZCwKIHN0YXRpYyBUaW1lc3RhbXBU eiB0aW1lc3RhbXAydGltZXN0YW1wdHooVGltZXN0YW1wIHRpbWVzdGFtcCk7CiBzdGF0aWMgVGlt ZXN0YW1wIHRpbWVzdGFtcHR6MnRpbWVzdGFtcChUaW1lc3RhbXBUeiB0aW1lc3RhbXApOwogCitz dGF0aWMgdm9pZCBFbmNvZGVTcGVjaWFsSW50ZXJ2YWwoSW50ZXJ2YWwgKmludGVydmFsLCBjaGFy ICpzdHIpOworc3RhdGljIHZvaWQgaW50ZXJ2YWxfbm9lbmQoSW50ZXJ2YWwgKmludGVydmFsKTsK K3N0YXRpYyBib29sIGludGVydmFsX2lzX25vZW5kKEludGVydmFsICppbnRlcnZhbCk7CitzdGF0 aWMgdm9pZCBpbnRlcnZhbF9ub2JlZ2luKEludGVydmFsICppbnRlcnZhbCk7CitzdGF0aWMgYm9v bCBpbnRlcnZhbF9pc19ub2JlZ2luKEludGVydmFsICppbnRlcnZhbCk7CitzdGF0aWMgYm9vbCBp bnRlcnZhbF9ub3RfZmluaXRlKEludGVydmFsICppbnRlcnZhbCk7CiAKIC8qIGNvbW1vbiBjb2Rl IGZvciB0aW1lc3RhbXB0eXBtb2RpbiBhbmQgdGltZXN0YW1wdHp0eXBtb2RpbiAqLwogc3RhdGlj IGludDMyCkBAIC05NDMsNiArOTQ5LDE0IEBAIGludGVydmFsX2luKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCQkJCQkgZXJybXNnKCJpbnRlcnZhbCBvdXQgb2YgcmFuZ2UiKSkpOwogCQkJYnJlYWs7CiAK KwkJY2FzZSBEVEtfTEFURToKKwkJCWludGVydmFsX25vZW5kKHJlc3VsdCk7CisJCQlicmVhazsK KworCQljYXNlIERUS19FQVJMWToKKwkJCWludGVydmFsX25vYmVnaW4ocmVzdWx0KTsKKwkJCWJy ZWFrOworCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBkdHlwZSAlZCB3 aGlsZSBwYXJzaW5nIGludGVydmFsIFwiJXNcIiIsCiAJCQkJIGR0eXBlLCBzdHIpOwpAQCAtOTY1 LDggKzk3OSwxMyBAQCBpbnRlcnZhbF9vdXQoUEdfRlVOQ1RJT05fQVJHUykKIAkJCSAgICppdG0g PSAmdHQ7CiAJY2hhcgkJYnVmW01BWERBVEVMRU4gKyAxXTsKIAotCWludGVydmFsMml0bSgqc3Bh biwgaXRtKTsKLQlFbmNvZGVJbnRlcnZhbChpdG0sIEludGVydmFsU3R5bGUsIGJ1Zik7CisJaWYg KGludGVydmFsX25vdF9maW5pdGUoc3BhbikpCisJCUVuY29kZVNwZWNpYWxJbnRlcnZhbChzcGFu LCBidWYpOworCWVsc2UKKwl7CisJCWludGVydmFsMml0bSgqc3BhbiwgaXRtKTsKKwkJRW5jb2Rl SW50ZXJ2YWwoaXRtLCBJbnRlcnZhbFN0eWxlLCBidWYpOworCX0KIAogCXJlc3VsdCA9IHBzdHJk dXAoYnVmKTsKIAlQR19SRVRVUk5fQ1NUUklORyhyZXN1bHQpOwpAQCAtMTM1Miw2ICsxMzcxLDEz IEBAIEFkanVzdEludGVydmFsRm9yVHlwbW9kKEludGVydmFsICppbnRlcnZhbCwgaW50MzIgdHlw bW9kLAogCQlJTlQ2NENPTlNUKDApCiAJfTsKIAorCS8qCisJICogSW5maW5pdGUgaW50ZXJ2YWwg YWZ0ZXIgYmVpbmcgc3ViamVjdGVkIHRvIHR5cG1vZCBjb252ZXJzaW9uIHJlbWFpbnMKKwkgKiBp bmZpbml0ZS4KKwkgKi8KKwlpZiAoaW50ZXJ2YWxfbm90X2Zpbml0ZShpbnRlcnZhbCkpCisJCXJl dHVybjsKKwogCS8qCiAJICogVW5zcGVjaWZpZWQgcmFuZ2UgYW5kIHByZWNpc2lvbj8gVGhlbiBu b3QgbmVjZXNzYXJ5IHRvIGFkanVzdC4gU2V0dGluZwogCSAqIHR5cG1vZCB0byAtMSBpcyB0aGUg Y29udmVudGlvbiBmb3IgYWxsIGRhdGEgdHlwZXMuCkBAIC0xNTQ1LDYgKzE1NzEsMTcgQEAgRW5j b2RlU3BlY2lhbFRpbWVzdGFtcChUaW1lc3RhbXAgZHQsIGNoYXIgKnN0cikKIAkJZWxvZyhFUlJP UiwgImludmFsaWQgYXJndW1lbnQgZm9yIEVuY29kZVNwZWNpYWxUaW1lc3RhbXAiKTsKIH0KIAor c3RhdGljIHZvaWQKK0VuY29kZVNwZWNpYWxJbnRlcnZhbChJbnRlcnZhbCAqaW50ZXJ2YWwsIGNo YXIgKnN0cikKK3sKKwlpZiAoaW50ZXJ2YWxfaXNfbm9iZWdpbihpbnRlcnZhbCkpCisJCXN0cmNw eShzdHIsIEVBUkxZKTsKKwllbHNlIGlmIChpbnRlcnZhbF9pc19ub2VuZChpbnRlcnZhbCkpCisJ CXN0cmNweShzdHIsIExBVEUpOworCWVsc2UJCQkJCQkvKiBzaG91bGRuJ3QgaGFwcGVuICovCisJ CWVsb2coRVJST1IsICJpbnZhbGlkIGFyZ3VtZW50IGZvciBFbmNvZGVTcGVjaWFsSW50ZXJ2YWwi KTsKK30KKwogRGF0dW0KIG5vdyhQR19GVU5DVElPTl9BUkdTKQogewpAQCAtMjA4MCwxMCArMjEx NywxMiBAQCB0aW1lc3RhbXBfZmluaXRlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0JP T0woIVRJTUVTVEFNUF9OT1RfRklOSVRFKHRpbWVzdGFtcCkpOwogfQogCisvKiBUT0RPOiBtb2Rp ZnkgdGhpcyB0byBjaGVjayBmaW5pdGUtbmVzcyAqLwogRGF0dW0KIGludGVydmFsX2Zpbml0ZShQ R19GVU5DVElPTl9BUkdTKQogewotCVBHX1JFVFVSTl9CT09MKHRydWUpOworCUludGVydmFsICpp bnRlcnZhbCA9IFBHX0dFVEFSR19JTlRFUlZBTF9QKDApOworCVBHX1JFVFVSTl9CT09MKCFpbnRl cnZhbF9ub3RfZmluaXRlKGludGVydmFsKSk7CiB9CiAKIApAQCAtMjkyNiw4ICsyOTY1LDI3IEBA IHRpbWVzdGFtcF9wbF9pbnRlcnZhbChQR19GVU5DVElPTl9BUkdTKQogCUludGVydmFsICAgKnNw YW4gPSBQR19HRVRBUkdfSU5URVJWQUxfUCgxKTsKIAlUaW1lc3RhbXAJcmVzdWx0OwogCisJLyoK KwkgKiBBZGRpbmcgZmluaXRlIGludGVydmFsIHRvIGFuIGluZmluaXRlIHRpbWUgaXMgZ29pbmcg dG8gYmUgaW5maW5pdGUgaW4KKwkgKiB0aGUgc2FtZSBkaXJlY3Rpb24uIEFkZGluZyBpbmZpbnRl IGludGVydmFsIHRvIGluZmluaXRlIHRpbWVzdGFtcCBpbiB0aGUKKwkgKiBzYW1lIGRpcmVjdGlv biByZXN1bHRzIGluIGFuIGluZmluaXRlIHRpbWVzdGFtcCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24u CisJICogQWRkaW5nIGluZmluaXRlIGludGVydmFsIHRvIGFuIGluZmluaXRlIHRpbWVzdGFtcCB3 aXRoIG9wcG9zaXRlCisJICogZGlyZWN0aW9uIGlzIG5vdCBnb2luZyB0byB5aWVsZCAwIGJ1dCBz b21lIGluZmluaXR5LiBTaW5jZSB3ZSBhcmUgYWRkaW5nCisJICogaW50ZXJ2YWwgdG8gdGhlIHRp bWVzdGFtcCB0aGUgcmVzdWx0YW50IHRpbWVzdGFtcCBpcyBhbiBpbmZpbml0eQorCSAqIHByZXNl cnZpbmcgdGhlIGRpcmVjdGlvbi4KKwkgKi8KIAlpZiAoVElNRVNUQU1QX05PVF9GSU5JVEUodGlt ZXN0YW1wKSkKIAkJcmVzdWx0ID0gdGltZXN0YW1wOworCWVsc2UgaWYgKGludGVydmFsX25vdF9m aW5pdGUoc3BhbikpCisJeworCQlpZiAoaW50ZXJ2YWxfaXNfbm9iZWdpbihzcGFuKSkKKwkJCVRJ TUVTVEFNUF9OT0JFR0lOKHJlc3VsdCk7CisJCWVsc2UKKwkJeworCQkJQXNzZXJ0KGludGVydmFs X2lzX25vZW5kKHNwYW4pKTsKKwkJCVRJTUVTVEFNUF9OT0VORChyZXN1bHQpOworCQl9CisJfQog CWVsc2UKIAl7CiAJCWlmIChzcGFuLT5tb250aCAhPSAwKQpAQCAtMzAzMiw4ICszMDkwLDI3IEBA IHRpbWVzdGFtcHR6X3BsX2ludGVydmFsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJVGltZXN0YW1wVHog cmVzdWx0OwogCWludAkJCXR6OwogCisJLyoKKwkgKiBBZGRpbmcgZmluaXRlIGludGVydmFsIHRv IGFuIGluZmluaXRlIHRpbWUgaXMgZ29pbmcgdG8gYmUgaW5maW5pdGUgaW4KKwkgKiB0aGUgc2Ft ZSBkaXJlY3Rpb24uIEFkZGluZyBpbmZpbnRlIGludGVydmFsIHRvIGluZmluaXRlIHRpbWVzdGFt cCBpbiB0aGUKKwkgKiBzYW1lIGRpcmVjdGlvbiByZXN1bHRzIGluIGFuIGluZmluaXRlIHRpbWVz dGFtcCBpbiB0aGUgc2FtZSBkaXJlY3Rpb24uCisJICogQWRkaW5nIGluZmluaXRlIGludGVydmFs IHRvIGFuIGluZmluaXRlIHRpbWVzdGFtcCB3aXRoIG9wcG9zaXRlCisJICogZGlyZWN0aW9uIGlz IG5vdCBnb2luZyB0byB5aWVsZCAwIGJ1dCBzb21lIGluZmluaXR5LiBTaW5jZSB3ZSBhcmUgYWRk aW5nCisJICogaW50ZXJ2YWwgdG8gdGhlIHRpbWVzdGFtcCB0aGUgcmVzdWx0YW50IHRpbWVzdGFt cCBpcyBhbiBpbmZpbml0eQorCSAqIHByZXNlcnZpbmcgdGhlIGRpcmVjdGlvbi4KKwkgKi8KIAlp ZiAoVElNRVNUQU1QX05PVF9GSU5JVEUodGltZXN0YW1wKSkKIAkJcmVzdWx0ID0gdGltZXN0YW1w OworCWVsc2UgaWYgKGludGVydmFsX25vdF9maW5pdGUoc3BhbikpCisJeworCQlpZiAoaW50ZXJ2 YWxfaXNfbm9iZWdpbihzcGFuKSkKKwkJCVRJTUVTVEFNUF9OT0JFR0lOKHJlc3VsdCk7CisJCWVs c2UKKwkJeworCQkJQXNzZXJ0KGludGVydmFsX2lzX25vZW5kKHNwYW4pKTsKKwkJCVRJTUVTVEFN UF9OT0VORChyZXN1bHQpOworCQl9CisJfQogCWVsc2UKIAl7CiAJCWlmIChzcGFuLT5tb250aCAh PSAwKQpAQCAtMzE5Miw2ICszMjY5LDIxIEBAIGludGVydmFsX3BsKFBHX0ZVTkNUSU9OX0FSR1Mp CiAKIAlyZXN1bHQgPSAoSW50ZXJ2YWwgKikgcGFsbG9jKHNpemVvZihJbnRlcnZhbCkpOwogCisJ LyoKKwkgKiBUT0RPOiBXaGF0IGlmIGJvdGggc3BhbjEgYW5kIHNwYW4yIGFyZSBpbmZpbml0ZSBh bmQgaW4gb3BwcG9zaXRlCisJICogZGlyZWN0aW9uPworCSAqLworCWlmIChpbnRlcnZhbF9ub3Rf ZmluaXRlKHNwYW4xKSkKKwl7CisJCW1lbWNweShyZXN1bHQsIHNwYW4xLCBzaXplb2YoSW50ZXJ2 YWwpKTsKKwkJUEdfUkVUVVJOX0lOVEVSVkFMX1AocmVzdWx0KTsKKwl9CisJZWxzZSBpZiAoaW50 ZXJ2YWxfbm90X2Zpbml0ZShzcGFuMikpCisJeworCQltZW1jcHkocmVzdWx0LCBzcGFuMiwgc2l6 ZW9mKEludGVydmFsKSk7CisJCVBHX1JFVFVSTl9JTlRFUlZBTF9QKHJlc3VsdCk7CisJfQorCiAJ cmVzdWx0LT5tb250aCA9IHNwYW4xLT5tb250aCArIHNwYW4yLT5tb250aDsKIAkvKiBvdmVyZmxv dyBjaGVjayBjb3BpZWQgZnJvbSBpbnQ0cGwgKi8KIAlpZiAoU0FNRVNJR04oc3BhbjEtPm1vbnRo LCBzcGFuMi0+bW9udGgpICYmCkBAIC0zMzYyLDYgKzM0NTQsMTQgQEAgaW50ZXJ2YWxfZGl2KFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9ESVZJU0lPTl9CWV9aRVJPKSwK IAkJCQkgZXJybXNnKCJkaXZpc2lvbiBieSB6ZXJvIikpKTsKIAorCS8qIERpdmlkaW5nIGluZmlu aXRlIGludGVydmFsIGJ5IGZpbml0ZSBudW1iZXIga2VlcHMgaXQgaW5maW5pdGUuICovCisJLyog VE9ETzogRG8gd2UgY2hhbmdlIHRoZSBzaWduIG9mIGluZmluaXR5IGlmIGZhY3RvciBpcyBuZWdh dGl2ZT8gKi8KKwlpZiAoaW50ZXJ2YWxfbm90X2Zpbml0ZShzcGFuKSkKKwl7CisJCW1lbWNweShy ZXN1bHQsIHNwYW4sIHNpemVvZihJbnRlcnZhbCkpOworCQlQR19SRVRVUk5fSU5URVJWQUxfUChy ZXN1bHQpOworCX0KKwogCXJlc3VsdC0+bW9udGggPSAoaW50MzIpIChzcGFuLT5tb250aCAvIGZh Y3Rvcik7CiAJcmVzdWx0LT5kYXkgPSAoaW50MzIpIChzcGFuLT5kYXkgLyBmYWN0b3IpOwogCkBA IC01OTU1LDMgKzYwNTUsNjMgQEAgZ2VuZXJhdGVfc2VyaWVzX3RpbWVzdGFtcHR6KFBHX0ZVTkNU SU9OX0FSR1MpCiAJCVNSRl9SRVRVUk5fRE9ORShmdW5jY3R4KTsKIAl9CiB9CisKKy8qCisgKiBU T0RPOiBwb3NzaWJseSB3ZSBzaG91bGQgbW92ZSB0aGVzZSB0byBhIHBsYWNlIGFsb25nIHdpdGgg b3RoZXIgaW50ZXJ2YWxfKgorICogZnVuY3Rpb25zLgorICovCisKKy8qIFNldCB0aGUgZ2l2ZW4g aW50ZXJ2YWwgdG8gaW5kaWNhdGUgaW5maW5pdGUgaW50ZXJ2YWwgaW4gdGhlIGZ1dHVyZS4gKi8K K3N0YXRpYyB2b2lkCitpbnRlcnZhbF9ub2VuZChJbnRlcnZhbCAqaW50ZXJ2YWwpCit7CisJaW50 ZXJ2YWwtPnRpbWUgPSBEVF9OT0VORDsgCisJaW50ZXJ2YWwtPmRheSA9IFBHX0lOVDMyX01BWDsK KwlpbnRlcnZhbC0+bW9udGggPSBQR19JTlQzMl9NQVg7Cit9CisKKy8qIERvZXMgdGhlIGdpdmVu IGludGVydmFsIGluZGljYXRlIGluZmluaXRlIGludGVydmFsIGluIHRoZSBmdXR1cmU/ICovCitz dGF0aWMgYm9vbAoraW50ZXJ2YWxfaXNfbm9lbmQoSW50ZXJ2YWwgKmludGVydmFsKQoreworCS8q CisJICogVE9ETzogUG9zc2libHkgaXQgbWFrZXMgc2Vuc2UgdG8ganVzdCBjaGVjayBvbmUgb2Yg dGhlIGZpZWxkcyB0byByZWR1Y2UKKwkgKiB0aGUgbnVtYmVyIG9mIGluc3RydWN0aW9ucyBoZXJl LiBCdXQgaXQncyBzYWZlciB0byBjaGVjayBhbGwgdGhlIHRocmVlCisJICogZmllbGRzLgorCSAq LworCXJldHVybiBpbnRlcnZhbC0+dGltZSA9PSBEVF9OT0VORCAmJgorCQkgICBpbnRlcnZhbC0+ ZGF5ID09IFBHX0lOVDMyX01BWCAmJgorCQkgICBpbnRlcnZhbC0+bW9udGggPT0gUEdfSU5UMzJf TUFYOworfQorCisvKiBTZXQgdGhlIGdpdmVuIGludGVydmFsIHRvIGluZGljYXRlIGluZmluaXRl IGludGVydmFsIGluIHRoZSBwYXN0LiAqLworc3RhdGljIHZvaWQKK2ludGVydmFsX25vYmVnaW4o SW50ZXJ2YWwgKmludGVydmFsKQoreworCWludGVydmFsLT50aW1lID0gRFRfTk9CRUdJTjsKKwlp bnRlcnZhbC0+ZGF5ID0gUEdfSU5UMzJfTUlOOworCWludGVydmFsLT5tb250aCA9IFBHX0lOVDMy X01JTjsKK30KKworLyogRG9lcyB0aGUgZ2l2ZW4gaW50ZXJ2YWwgaW5kaWNhdGUgaW5maW5pdGUg aW50ZXJ2YWwgaW4gdGhlIHBhc3Q/ICovCitzdGF0aWMgYm9vbAoraW50ZXJ2YWxfaXNfbm9iZWdp bihJbnRlcnZhbCAqaW50ZXJ2YWwpCit7CisJLyoKKwkgKiBUT0RPOiBQb3NzaWJseSBpdCBtYWtl cyBzZW5zZSB0byBqdXN0IGNoZWNrIG9uZSBvZiB0aGUgZmllbGRzIHRvIHJlZHVjZQorCSAqIHRo ZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGhlcmUuIEJ1dCBpdCdzIHNhZmVyIHRvIGNoZWNrIGFs bCB0aGUgdGhyZWUKKwkgKiBmaWVsZHMuCisJICovCisJcmV0dXJuIGludGVydmFsLT50aW1lID09 IERUX05PQkVHSU4gJiYKKwkJICAgaW50ZXJ2YWwtPmRheSA9PSBQR19JTlQzMl9NSU4gJiYKKwkJ ICAgaW50ZXJ2YWwtPm1vbnRoID09IFBHX0lOVDMyX01JTjsKK30KKworLyogSXMgdGhlIGdpdmVu IGludGVydmFsIGluZmluaXRlPyAqLworLyogVE9ETzogcHJvYmFibHkgYSBtYXRlcmlhbCBmb3Ig YSBtYWNyby4gKi8KK3N0YXRpYyBib29sCitpbnRlcnZhbF9ub3RfZmluaXRlKEludGVydmFsICpp bnRlcnZhbCkKK3sKKwlyZXR1cm4gaW50ZXJ2YWxfaXNfbm9iZWdpbihpbnRlcnZhbCkgfHwgaW50 ZXJ2YWxfaXNfbm9lbmQoaW50ZXJ2YWwpOworfQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2ludGVydmFsLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50 ZXJ2YWwub3V0CmluZGV4IDU3OWU5MmU3YjMuLjY4ZDQ4YTBiM2UgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW50ZXJ2YWwub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvaW50ZXJ2YWwub3V0CkBAIC01Miw2ICs1MiwxOSBAQCBTRUxFQ1QgSU5URVJWQUwg JzEwIHllYXJzIC0xMSBtb250aCAtMTIgZGF5cyArMTM6MTQnIEFTICI5IHllYXJzLi4uIjsKICA5 IHllYXJzIDEgbW9uIC0xMiBkYXlzICsxMzoxNDowMAogKDEgcm93KQogCitTRUxFQ1QgSU5URVJW QUwgJ2luZmluaXR5JyBBUyAiZXRlcm5pdHkiOworIGV0ZXJuaXR5IAorLS0tLS0tLS0tLQorIGlu ZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBJTlRFUlZBTCAnLWluZmluaXR5JyBBUyAiYmVnaW5u aW5nIG9mIHRpbWUiOworIGJlZ2lubmluZyBvZiB0aW1lIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor IC1pbmZpbml0eQorKDEgcm93KQorCistLVRPRE86IEFkZCB0ZXN0cyBmb3Igb3BlcmF0b3JzIGV0 Yy4gYnkgbG9va2luZyBhdCB0aGUgb3RoZXIgdGVzdHMgYmVsb3cKIENSRUFURSBUQUJMRSBJTlRF UlZBTF9UQkwgKGYxIGludGVydmFsKTsKIElOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZB TFVFUyAoJ0AgMSBtaW51dGUnKTsKIElOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZBTFVF UyAoJ0AgNSBob3VyJyk7CkBAIC02Myw2ICs3Niw4IEBAIElOU0VSVCBJTlRPIElOVEVSVkFMX1RC TCAoZjEpIFZBTFVFUyAoJzEgZGF5IDIgaG91cnMgMyBtaW51dGVzIDQgc2Vjb25kcycpOwogSU5T RVJUIElOVE8gSU5URVJWQUxfVEJMIChmMSkgVkFMVUVTICgnNiB5ZWFycycpOwogSU5TRVJUIElO VE8gSU5URVJWQUxfVEJMIChmMSkgVkFMVUVTICgnNSBtb250aHMnKTsKIElOU0VSVCBJTlRPIElO VEVSVkFMX1RCTCAoZjEpIFZBTFVFUyAoJzUgbW9udGhzIDEyIGhvdXJzJyk7CitJTlNFUlQgSU5U TyBJTlRFUlZBTF9UQkwgKGYxKSBWQUxVRVMgKCdpbmZpbml0eScpOworSU5TRVJUIElOVE8gSU5U RVJWQUxfVEJMIChmMSkgVkFMVUVTICgnLWluZmluaXR5Jyk7CiAtLSBiYWRseSBmb3JtYXR0ZWQg aW50ZXJ2YWwKIElOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZBTFVFUyAoJ2JhZGx5IGZv cm1hdHRlZCBpbnRlcnZhbCcpOwogRVJST1I6ICBpbnZhbGlkIGlucHV0IHN5bnRheCBmb3IgdHlw ZSBpbnRlcnZhbDogImJhZGx5IGZvcm1hdHRlZCBpbnRlcnZhbCIKQEAgLTcyLDYgKzg3LDEwIEBA IElOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZBTFVFUyAoJ0AgMzAgZW9ucyBhZ28nKTsK IEVSUk9SOiAgaW52YWxpZCBpbnB1dCBzeW50YXggZm9yIHR5cGUgaW50ZXJ2YWw6ICJAIDMwIGVv bnMgYWdvIgogTElORSAxOiBJTlNFUlQgSU5UTyBJTlRFUlZBTF9UQkwgKGYxKSBWQUxVRVMgKCdA IDMwIGVvbnMgYWdvJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorSU5TRVJUIElOVE8gSU5URVJWQUxfVEJMIChmMSkgVkFMVUVTICgnK2luZmluaXR5 Jyk7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVydmFsOiAiK2lu ZmluaXR5IgorTElORSAxOiBJTlNFUlQgSU5UTyBJTlRFUlZBTF9UQkwgKGYxKSBWQUxVRVMgKCcr aW5maW5pdHknKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCiAtLSBUZXN0IG5vbi1lcnJvci10aHJvd2luZyBBUEkKIFNFTEVDVCBwZ19pbnB1dF9pc192 YWxpZCgnMS41IHdlZWtzJywgJ2ludGVydmFsJyk7CiAgcGdfaW5wdXRfaXNfdmFsaWQgCkBAIC0x MTcsNyArMTM2LDkgQEAgU0VMRUNUICogRlJPTSBJTlRFUlZBTF9UQkw7CiAgNiB5ZWFycwogIDUg bW9ucwogIDUgbW9ucyAxMjowMDowMAotKDEwIHJvd3MpCisgaW5maW5pdHkKKyAtaW5maW5pdHkK KygxMiByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIElOVEVSVkFMX1RCTAogICAgV0hFUkUgSU5URVJW QUxfVEJMLmYxIDw+IGludGVydmFsICdAIDEwIGRheXMnOwpAQCAtMTMyLDcgKzE1Myw5IEBAIFNF TEVDVCAqIEZST00gSU5URVJWQUxfVEJMCiAgNiB5ZWFycwogIDUgbW9ucwogIDUgbW9ucyAxMjow MDowMAotKDkgcm93cykKKyBpbmZpbml0eQorIC1pbmZpbml0eQorKDExIHJvd3MpCiAKIFNFTEVD VCAqIEZST00gSU5URVJWQUxfVEJMCiAgICBXSEVSRSBJTlRFUlZBTF9UQkwuZjEgPD0gaW50ZXJ2 YWwgJ0AgNSBob3Vycyc7CkBAIC0xNDEsNyArMTY0LDggQEAgU0VMRUNUICogRlJPTSBJTlRFUlZB TF9UQkwKICAwMDowMTowMAogIDA1OjAwOjAwCiAgLTAwOjAwOjE0Ci0oMyByb3dzKQorIC1pbmZp bml0eQorKDQgcm93cykKIAogU0VMRUNUICogRlJPTSBJTlRFUlZBTF9UQkwKICAgIFdIRVJFIElO VEVSVkFMX1RCTC5mMSA8IGludGVydmFsICdAIDEgZGF5JzsKQEAgLTE1MCw3ICsxNzQsOCBAQCBT RUxFQ1QgKiBGUk9NIElOVEVSVkFMX1RCTAogIDAwOjAxOjAwCiAgMDU6MDA6MDAKICAtMDA6MDA6 MTQKLSgzIHJvd3MpCisgLWluZmluaXR5CisoNCByb3dzKQogCiBTRUxFQ1QgKiBGUk9NIElOVEVS VkFMX1RCTAogICAgV0hFUkUgSU5URVJWQUxfVEJMLmYxID0gaW50ZXJ2YWwgJ0AgMzQgeWVhcnMn OwpAQCAtMTY4LDcgKzE5Myw4IEBAIFNFTEVDVCAqIEZST00gSU5URVJWQUxfVEJMCiAgNiB5ZWFy cwogIDUgbW9ucwogIDUgbW9ucyAxMjowMDowMAotKDUgcm93cykKKyBpbmZpbml0eQorKDYgcm93 cykKIAogU0VMRUNUICogRlJPTSBJTlRFUlZBTF9UQkwKICAgIFdIRVJFIElOVEVSVkFMX1RCTC5m MSA+IGludGVydmFsICdAIDMgc2Vjb25kcyBhZ28nOwpAQCAtMTgzLDcgKzIwOSw4IEBAIFNFTEVD VCAqIEZST00gSU5URVJWQUxfVEJMCiAgNiB5ZWFycwogIDUgbW9ucwogIDUgbW9ucyAxMjowMDow MAotKDkgcm93cykKKyBpbmZpbml0eQorKDEwIHJvd3MpCiAKIFNFTEVDVCByMS4qLCByMi4qCiAg ICBGUk9NIElOVEVSVkFMX1RCTCByMSwgSU5URVJWQUxfVEJMIHIyCkBAIC0xOTEsMjcgKzIxOCwz NSBAQCBTRUxFQ1QgcjEuKiwgcjIuKgogICAgT1JERVIgQlkgcjEuZjEsIHIyLmYxOwogICAgICAg IGYxICAgICAgICB8ICAgICAgIGYxICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tCisgLTAwOjAwOjE0ICAgICAgIHwgLWluZmluaXR5CisgMDA6MDE6MDAgICAgICAg IHwgLWluZmluaXR5CiAgMDA6MDE6MDAgICAgICAgIHwgLTAwOjAwOjE0CisgMDU6MDA6MDAgICAg ICAgIHwgLWluZmluaXR5CiAgMDU6MDA6MDAgICAgICAgIHwgLTAwOjAwOjE0CiAgMDU6MDA6MDAg ICAgICAgIHwgMDA6MDE6MDAKKyAxIGRheSAwMjowMzowNCAgfCAtaW5maW5pdHkKICAxIGRheSAw MjowMzowNCAgfCAtMDA6MDA6MTQKICAxIGRheSAwMjowMzowNCAgfCAwMDowMTowMAogIDEgZGF5 IDAyOjAzOjA0ICB8IDA1OjAwOjAwCisgMTAgZGF5cyAgICAgICAgIHwgLWluZmluaXR5CiAgMTAg ZGF5cyAgICAgICAgIHwgLTAwOjAwOjE0CiAgMTAgZGF5cyAgICAgICAgIHwgMDA6MDE6MDAKICAx MCBkYXlzICAgICAgICAgfCAwNTowMDowMAogIDEwIGRheXMgICAgICAgICB8IDEgZGF5IDAyOjAz OjA0CisgMyBtb25zICAgICAgICAgIHwgLWluZmluaXR5CiAgMyBtb25zICAgICAgICAgIHwgLTAw OjAwOjE0CiAgMyBtb25zICAgICAgICAgIHwgMDA6MDE6MDAKICAzIG1vbnMgICAgICAgICAgfCAw NTowMDowMAogIDMgbW9ucyAgICAgICAgICB8IDEgZGF5IDAyOjAzOjA0CiAgMyBtb25zICAgICAg ICAgIHwgMTAgZGF5cworIDUgbW9ucyAgICAgICAgICB8IC1pbmZpbml0eQogIDUgbW9ucyAgICAg ICAgICB8IC0wMDowMDoxNAogIDUgbW9ucyAgICAgICAgICB8IDAwOjAxOjAwCiAgNSBtb25zICAg ICAgICAgIHwgMDU6MDA6MDAKICA1IG1vbnMgICAgICAgICAgfCAxIGRheSAwMjowMzowNAogIDUg bW9ucyAgICAgICAgICB8IDEwIGRheXMKICA1IG1vbnMgICAgICAgICAgfCAzIG1vbnMKKyA1IG1v bnMgMTI6MDA6MDAgfCAtaW5maW5pdHkKICA1IG1vbnMgMTI6MDA6MDAgfCAtMDA6MDA6MTQKICA1 IG1vbnMgMTI6MDA6MDAgfCAwMDowMTowMAogIDUgbW9ucyAxMjowMDowMCB8IDA1OjAwOjAwCkBA IC0yMTksNiArMjU0LDcgQEAgU0VMRUNUIHIxLiosIHIyLioKICA1IG1vbnMgMTI6MDA6MDAgfCAx MCBkYXlzCiAgNSBtb25zIDEyOjAwOjAwIHwgMyBtb25zCiAgNSBtb25zIDEyOjAwOjAwIHwgNSBt b25zCisgNiB5ZWFycyAgICAgICAgIHwgLWluZmluaXR5CiAgNiB5ZWFycyAgICAgICAgIHwgLTAw OjAwOjE0CiAgNiB5ZWFycyAgICAgICAgIHwgMDA6MDE6MDAKICA2IHllYXJzICAgICAgICAgfCAw NTowMDowMApAQCAtMjI3LDYgKzI2Myw3IEBAIFNFTEVDVCByMS4qLCByMi4qCiAgNiB5ZWFycyAg ICAgICAgIHwgMyBtb25zCiAgNiB5ZWFycyAgICAgICAgIHwgNSBtb25zCiAgNiB5ZWFycyAgICAg ICAgIHwgNSBtb25zIDEyOjAwOjAwCisgMzQgeWVhcnMgICAgICAgIHwgLWluZmluaXR5CiAgMzQg eWVhcnMgICAgICAgIHwgLTAwOjAwOjE0CiAgMzQgeWVhcnMgICAgICAgIHwgMDA6MDE6MDAKICAz NCB5ZWFycyAgICAgICAgfCAwNTowMDowMApAQCAtMjM2LDcgKzI3MywxOCBAQCBTRUxFQ1QgcjEu KiwgcjIuKgogIDM0IHllYXJzICAgICAgICB8IDUgbW9ucwogIDM0IHllYXJzICAgICAgICB8IDUg bW9ucyAxMjowMDowMAogIDM0IHllYXJzICAgICAgICB8IDYgeWVhcnMKLSg0NSByb3dzKQorIGlu ZmluaXR5ICAgICAgICB8IC1pbmZpbml0eQorIGluZmluaXR5ICAgICAgICB8IC0wMDowMDoxNAor IGluZmluaXR5ICAgICAgICB8IDAwOjAxOjAwCisgaW5maW5pdHkgICAgICAgIHwgMDU6MDA6MDAK KyBpbmZpbml0eSAgICAgICAgfCAxIGRheSAwMjowMzowNAorIGluZmluaXR5ICAgICAgICB8IDEw IGRheXMKKyBpbmZpbml0eSAgICAgICAgfCAzIG1vbnMKKyBpbmZpbml0eSAgICAgICAgfCA1IG1v bnMKKyBpbmZpbml0eSAgICAgICAgfCA1IG1vbnMgMTI6MDA6MDAKKyBpbmZpbml0eSAgICAgICAg fCA2IHllYXJzCisgaW5maW5pdHkgICAgICAgIHwgMzQgeWVhcnMKKyg2NiByb3dzKQogCiAtLSBU ZXN0IGludGVydmFscyB0aGF0IGFyZSBsYXJnZSBlbm91Z2ggdG8gb3ZlcmZsb3cgNjQgYml0cyBp biBjb21wYXJpc29ucwogQ1JFQVRFIFRFTVAgVEFCTEUgSU5URVJWQUxfVEJMX09GIChmMSBpbnRl cnZhbCk7CkBAIC0zODYsMTIgKzQzNCwyMCBAQCBTRUxFQ1QgKiBGUk9NIElOVEVSVkFMX1RCTDsK ICBAIDYgeWVhcnMKICBAIDUgbW9ucwogIEAgNSBtb25zIDEyIGhvdXJzCi0oMTAgcm93cykKKyBp bmZpbml0eQorIC1pbmZpbml0eQorKDEyIHJvd3MpCiAKIC0tIHRlc3QgYXZnKGludGVydmFsKSwg d2hpY2ggaXMgc29tZXdoYXQgZnJhZ2lsZSBzaW5jZSBwZW9wbGUgaGF2ZSBiZWVuCiAtLSBrbm93 biB0byBjaGFuZ2UgdGhlIGFsbG93ZWQgaW5wdXQgc3ludGF4IGZvciB0eXBlIGludGVydmFsIHdp dGhvdXQKIC0tIHVwZGF0aW5nIHBnX2FnZ3JlZ2F0ZS5hZ2dpbml0dmFsCiBzZWxlY3QgYXZnKGYx KSBmcm9tIGludGVydmFsX3RibDsKKyAgIGF2ZyAgICAKKy0tLS0tLS0tLS0KKyBpbmZpbml0eQor KDEgcm93KQorCitzZWxlY3QgYXZnKGYxKSBmcm9tIGludGVydmFsX3RibCB3aGVyZSBpc2Zpbml0 ZShmMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF2ZyAgICAgICAgICAgICAgICAgICAgICAg CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgQCA0 IHllYXJzIDEgbW9uIDEwIGRheXMgNCBob3VycyAxOCBtaW5zIDIzIHNlY3MKQEAgLTgyMCw4ICs4 NzYsOCBAQCBTRUxFQ1QgaW50ZXJ2YWwgJzEgMjowMzowNC41Njc4JyBtaW51dGUgdG8gc2Vjb25k KDIpOwogU0VMRUNUIGYxLCBmMTo6SU5URVJWQUwgREFZIFRPIE1JTlVURSBBUyAibWludXRlcyIs CiAgIChmMSArIElOVEVSVkFMICcxIG1vbnRoJyk6OklOVEVSVkFMIE1PTlRIOjpJTlRFUlZBTCBZ RUFSIEFTICJ5ZWFycyIKICAgRlJPTSBpbnRlcnZhbF90Ymw7Ci0gICAgICAgZjEgICAgICAgIHwg ICAgIG1pbnV0ZXMgICAgIHwgIHllYXJzICAgCi0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgICAgICAgZjEgICAgICAgIHwgICAgIG1pbnV0ZXMgICAgIHwg ICB5ZWFycyAgIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KICAwMDowMTowMCAgICAgICAgfCAwMDowMTowMCAgICAgICAgfCAwMDowMDowMAogIDA1OjAw OjAwICAgICAgICB8IDA1OjAwOjAwICAgICAgICB8IDAwOjAwOjAwCiAgMTAgZGF5cyAgICAgICAg IHwgMTAgZGF5cyAgICAgICAgIHwgMDA6MDA6MDAKQEAgLTgzMiw3ICs4ODgsOSBAQCBTRUxFQ1Qg ZjEsIGYxOjpJTlRFUlZBTCBEQVkgVE8gTUlOVVRFIEFTICJtaW51dGVzIiwKICA2IHllYXJzICAg ICAgICAgfCA2IHllYXJzICAgICAgICAgfCA2IHllYXJzCiAgNSBtb25zICAgICAgICAgIHwgNSBt b25zICAgICAgICAgIHwgMDA6MDA6MDAKICA1IG1vbnMgMTI6MDA6MDAgfCA1IG1vbnMgMTI6MDA6 MDAgfCAwMDowMDowMAotKDEwIHJvd3MpCisgaW5maW5pdHkgICAgICAgIHwgaW5maW5pdHkgICAg ICAgIHwgaW5maW5pdHkKKyAtaW5maW5pdHkgICAgICAgfCAtaW5maW5pdHkgICAgICAgfCAtaW5m aW5pdHkKKygxMiByb3dzKQogCiAtLSB0ZXN0IGlucHV0dGluZyBhbmQgb3V0cHV0dGluZyBTUUwg c3RhbmRhcmQgaW50ZXJ2YWwgbGl0ZXJhbHMKIFNFVCBJbnRlcnZhbFN0eWxlIFRPIHNxbF9zdGFu ZGFyZDsKQEAgLTE3NzYsMyArMTgzNCw0ODggQEAgU0VMRUNUIGV4dHJhY3QoZXBvY2ggZnJvbSBp bnRlcnZhbCAnMTAwMDAwMDAwMCBkYXlzJyk7CiAgODY0MDAwMDAwMDAwMDAuMDAwMDAwCiAoMSBy b3cpCiAKKy0tIGluZmluaXRlIGludGVydmFscworU0VMRUNUIGlzZmluaXRlKGludGVydmFsICdp bmZpbml0eScpOworIGlzZmluaXRlIAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNU IGlzZmluaXRlKGludGVydmFsICctaW5maW5pdHknKTsKKyBpc2Zpbml0ZSAKKy0tLS0tLS0tLS0K KyBmCisoMSByb3cpCisKK1NFTEVDVCBkYXRlICcxOTk1LTA4LTA2JyArIGludGVydmFsICdpbmZp bml0eSc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VM RUNUIGRhdGUgJzE5OTUtMDgtMDYnICsgaW50ZXJ2YWwgJy1pbmZpbml0eSc7CisgP2NvbHVtbj8g IAorLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGRhdGUgJzE5OTUt MDgtMDYnIC0gaW50ZXJ2YWwgJ2luZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBp bmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgZGF0ZSAnMTk5NS0wOC0wNicgLSBpbnRlcnZhbCAn LWluZmluaXR5JzsKKyA/Y29sdW1uPyAgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93 KQorCitTRUxFQ1QgZGF0ZSAnaW5maW5pdHknICsgaW50ZXJ2YWwgJ2luZmluaXR5JzsKKyA/Y29s dW1uPyAKKy0tLS0tLS0tLS0KKyBpbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgZGF0ZSAnaW5m aW5pdHknICsgaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitFUlJPUjogVE9ETworCitTRUxFQ1QgZGF0 ZSAnLWluZmluaXR5JyArIGludGVydmFsICdpbmZpbml0eSc7CitFUlJPUjogVE9ETworCitTRUxF Q1QgZGF0ZSAnLWluZmluaXR5JyArIGludGVydmFsICctaW5maW5pdHknOworID9jb2x1bW4/ICAK Ky0tLS0tLS0tLS0tCisgLWluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBkYXRlICdpbmZpbml0 eScgLSBpbnRlcnZhbCAnaW5maW5pdHknOworRVJST1I6IFRPRE8KKworU0VMRUNUIGRhdGUgJ2lu ZmluaXR5JyAtIGludGVydmFsICctaW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQor IGluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBkYXRlICctaW5maW5pdHknIC0gaW50ZXJ2YWwg J2luZmluaXR5JzsKKyA/Y29sdW1uPyAgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93 KQorCitTRUxFQ1QgZGF0ZSAnLWluZmluaXR5JyAtIGludGVydmFsICctaW5maW5pdHknOworRVJS T1I6IFRPRE8KKworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgKyBpbnRlcnZhbCAnaW5maW5p dHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluZmluaXR5CisoMSByb3cpCisKK1NFTEVD VCBpbnRlcnZhbCAnaW5maW5pdHknICsgaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitFUlJPUjogVE9E TworCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgKyBpbnRlcnZhbCAnaW5maW5pdHknOwor RVJST1I6IFRPRE8KKworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknICsgaW50ZXJ2YWwgJy1p bmZpbml0eSc7CisgP2NvbHVtbj8gIAorLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykK KworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgKyBpbnRlcnZhbCAnMTAgZGF5cyc7CisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGludGVydmFs ICctaW5maW5pdHknICsgaW50ZXJ2YWwgJzEwIGRheXMnOworID9jb2x1bW4/ICAKKy0tLS0tLS0t LS0tCisgLWluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIC0g aW50ZXJ2YWwgJ2luZmluaXR5JzsKK0VSUk9SOiBUT0RPCisKK1NFTEVDVCBpbnRlcnZhbCAnaW5m aW5pdHknIC0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg aW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknIC0gaW50ZXJ2 YWwgJ2luZmluaXR5JzsKKyA/Y29sdW1uPyAgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEg cm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgLSBpbnRlcnZhbCAnLWluZmluaXR5 JzsKK0VSUk9SOiBUT0RPCisKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIC0gaW50ZXJ2YWwg JzEwIGRheXMnOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluZmluaXR5CisoMSByb3cpCisK K1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyAtIGludGVydmFsICcxMCBkYXlzJzsKKyA/Y29s dW1uPyAgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgdGltZXN0 YW1wICcxOTk1LTA4LTA2IDEyOjMwOjE1JyArIGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVt bj8gCistLS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIHRpbWVzdGFtcCAn MTk5NS0wOC0wNiAxMjozMDoxNScgKyBpbnRlcnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAg CistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgdGltZXN0YW1wICcx OTk1LTA4LTA2IDEyOjMwOjE1JyAtIGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIHRpbWVzdGFtcCAnMTk5NS0w OC0wNiAxMjozMDoxNScgLSBpbnRlcnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAgCistLS0t LS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgdGltZXN0YW1wICdpbmZpbml0 eScgKyBpbnRlcnZhbCAnaW5maW5pdHknCisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5maW5p dHkKKygxIHJvdykKKworU0VMRUNUIHRpbWVzdGFtcCAnaW5maW5pdHknICsgaW50ZXJ2YWwgJy1p bmZpbml0eScKK0VSUk9SOiBUT0RPCisKK1NFTEVDVCB0aW1lc3RhbXAgJy1pbmZpbml0eScgKyBp bnRlcnZhbCAnaW5maW5pdHknCitFUlJPUjogVE9ETworCitTRUxFQ1QgdGltZXN0YW1wICctaW5m aW5pdHknICsgaW50ZXJ2YWwgJy1pbmZpbml0eScKKyA/Y29sdW1uPyAgCistLS0tLS0tLS0tLQor IC1pbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgdGltZXN0YW1wICdpbmZpbml0eScgLSBpbnRl cnZhbCAnaW5maW5pdHknCitFUlJPUjogVE9ETworCitTRUxFQ1QgdGltZXN0YW1wICdpbmZpbml0 eScgLSBpbnRlcnZhbCAnLWluZmluaXR5JworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGluZmlu aXR5CisoMSByb3cpCisKK1NFTEVDVCB0aW1lc3RhbXAgJy1pbmZpbml0eScgLSBpbnRlcnZhbCAn aW5maW5pdHknCisgP2NvbHVtbj8gIAorLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykK KworU0VMRUNUIHRpbWVzdGFtcCAnLWluZmluaXR5JyAtIGludGVydmFsICctaW5maW5pdHknCitF UlJPUjogVE9ETworCitTRUxFQ1QgdGltZSAnMTE6Mjc6NDInICsgaW50ZXJ2YWwgJ2luZmluaXR5 JzsKK0VSUk9SOiBUT0RPCisKK1NFTEVDVCB0aW1lICcxMToyNzo0MicgKyBpbnRlcnZhbCAnLWlu ZmluaXR5JzsKK0VSUk9SOiBUT0RPCisKK1NFTEVDVCB0aW1lICcxMToyNzo0MicgLSBpbnRlcnZh bCAnaW5maW5pdHknOworRVJST1I6IFRPRE8KKworU0VMRUNUIHRpbWUgJzExOjI3OjQyJyAtIGlu dGVydmFsICctaW5maW5pdHknOworRVJST1I6IFRPRE8KKworU0VMRUNUIGludGVydmFsICdpbmZp bml0eScgPCBpbnRlcnZhbCAnaW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYK KygxIHJvdykKKworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgPCBpbnRlcnZhbCAnLWluZmlu aXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBpbnRl cnZhbCAnLWluZmluaXR5JyA8IGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCistLS0t LS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPCBpbnRl cnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisK K1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIDw9IGludGVydmFsICdpbmZpbml0eSc7CisgP2Nv bHVtbj8gCistLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmlu aXR5JyA8PSBpbnRlcnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBm CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyA8PSBpbnRlcnZhbCAnaW5m aW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGlu dGVydmFsICctaW5maW5pdHknIDw9IGludGVydmFsICctaW5maW5pdHknOworID9jb2x1bW4/IAor LS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgPiBp bnRlcnZhbCAnaW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykK KworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgPiBpbnRlcnZhbCAnLWluZmluaXR5JzsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAnLWlu ZmluaXR5JyA+IGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisg ZgorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPiBpbnRlcnZhbCAnLWlu ZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBp bnRlcnZhbCAnaW5maW5pdHknID49IGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCist LS0tLS0tLS0tCisgdAorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmluaXR5JyA+PSBp bnRlcnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cp CisKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyA+PSBpbnRlcnZhbCAnaW5maW5pdHknOwor ID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICct aW5maW5pdHknID49IGludGVydmFsICctaW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0t LQorIHQKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgPSBpbnRlcnZhbCAn aW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNU IGludGVydmFsICdpbmZpbml0eScgPSBpbnRlcnZhbCAnLWluZmluaXR5JzsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyBmCisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyA9 IGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgZgorKDEgcm93 KQorCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPSBpbnRlcnZhbCAnLWluZmluaXR5JzsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAn aW5maW5pdHknIDw+IGludGVydmFsICdpbmZpbml0eSc7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t CisgZgorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmluaXR5JyA8PiBpbnRlcnZhbCAn LWluZmluaXR5JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVD VCBpbnRlcnZhbCAnLWluZmluaXR5JyA8PiBpbnRlcnZhbCAnaW5maW5pdHknOworID9jb2x1bW4/ IAorLS0tLS0tLS0tLQorIHQKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICctaW5maW5pdHkn IDw+IGludGVydmFsICctaW5maW5pdHknOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIGYKKygx IHJvdykKKworU0VMRUNUIC1pbnRlcnZhbCAnaW5maW5pdHknOworIGludGVydmFsIAorLS0tLS0t LS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIC1pbnRlcnZhbCAnLWluZmluaXR5 JzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1Qg aW50ZXJ2YWwgJ2luZmluaXR5JyAqIDI7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5maW5p dHkKKygxIHJvdykKKworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgKiAtMjsKKyBpbnRlcnZh bCAKKy0tLS0tLS0tLS0tCisgLWluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAn LWluZmluaXR5JyAqIDI7CisgaW50ZXJ2YWwgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEg cm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgKiAtMjsKKyA/Y29sdW1uPyAKKy0t LS0tLS0tLS0KKyBpbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmluaXR5 JyAvIDM7CisgP2NvbHVtbj8gCistLS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VM RUNUIGludGVydmFsICdpbmZpbml0eScgLyAtMzsKKyBpbnRlcnZhbCAKKy0tLS0tLS0tLS0tCisg LWluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyAvIDM7Cisg aW50ZXJ2YWwgCistLS0tLS0tLS0tLQorIC1pbmZpbml0eQorKDEgcm93KQorCitTRUxFQ1QgaW50 ZXJ2YWwgJy1pbmZpbml0eScgLyAtMzsKKyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyBpbmZpbml0 eQorKDEgcm93KQorCisKK1NFTEVDVCBkYXRlX2JpbignaW5maW5pdHknLCB0aW1lc3RhbXAgJzIw MDEtMDItMTYgMjA6Mzg6NDAnLCB0aW1lc3RhbXAgJzIwMDEtMDItMTYgMjA6MDU6MDAnKTsKK0VS Uk9SOiAgVE9ETworU0VMRUNUIGRhdGVfYmluKCctaW5maW5pdHknLCB0aW1lc3RhbXAgJzIwMDEt MDItMTYgMjA6Mzg6NDAnLCB0aW1lc3RhbXAgJzIwMDEtMDItMTYgMjA6MDU6MDAnKTsKK0VSUk9S OiAgVE9ETworU0VMRUNUIGRhdGVfcGFydCgnbW9udGgnLCBpbnRlcnZhbCAnaW5maW5pdHknKTsK KyBkYXRlX3BhcnQgCistLS0tLS0tLS0tLQorCisoMSByb3cpCisKK1NFTEVDVCBkYXRlX3BhcnQo J21vbnRoJywgaW50ZXJ2YWwgJy1pbmZpbml0eScpOworIGRhdGVfcGFydCAKKy0tLS0tLS0tLS0t CisKKygxIHJvdykKKworU0VMRUNUIGRhdGVfdHJ1bmMoJ2hvdXInLCBpbnRlcnZhbCAnaW5maW5p dHknKTsKKyBpbnRlcnZhbCAKKy0tLS0tLS0tLS0KKyBpbmZpbml0eQorKDEgcm93KQorCitTRUxF Q1QgZGF0ZV90cnVuYygnaG91cicsIGludGVydmFsICctaW5maW5pdHknKTsKKyBpbnRlcnZhbCAK Ky0tLS0tLS0tLS0tCisgLWluZmluaXR5CisoMSByb3cpCisKK1NFTEVDVCBleHRyYWN0KG1vbnRo IGZyb20gaW50ZXJ2YWwgJ2luZmluaXR5Jyk7CisgZXh0cmFjdCAKKy0tLS0tLS0tLQorCisoMSBy b3cpCisKK1NFTEVDVCBleHRyYWN0KG1vbnRoIGZyb20gaW50ZXJ2YWwgJy1pbmZpbml0eScpOwor IGV4dHJhY3QgCistLS0tLS0tLS0KKworKDEgcm93KQorCitTRUxFQ1QganVzdGlmeV9kYXlzKGlu dGVydmFsICdpbmZpbml0eScpOworIGludGVydmFsIAorLS0tLS0tLS0tLQorIGluZmluaXR5Ciso MSByb3cpCisKK1NFTEVDVCBqdXN0aWZ5X2RheXMoaW50ZXJ2YWwgJy1pbmZpbml0eScpOworIGlu dGVydmFsIAorLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGp1c3Rp ZnlfaG91cnMoaW50ZXJ2YWwgJ2luZmluaXR5Jyk7CisgaW50ZXJ2YWwgCistLS0tLS0tLS0tCisg aW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGp1c3RpZnlfaG91cnMoaW50ZXJ2YWwgJy1pbmZp bml0eScpOworIGludGVydmFsIAorLS0tLS0tLS0tLS0KKyAtaW5maW5pdHkKKygxIHJvdykKKwor U0VMRUNUIGp1c3RpZnlfaW50ZXJ2YWwoaW50ZXJ2YWwgJ2luZmluaXR5Jyk7CisgaW50ZXJ2YWwg CistLS0tLS0tLS0tCisgaW5maW5pdHkKKygxIHJvdykKKworU0VMRUNUIGp1c3RpZnlfaW50ZXJ2 YWwoaW50ZXJ2YWwgJy1pbmZpbml0eScpOworIGludGVydmFsIAorLS0tLS0tLS0tLS0KKyAtaW5m aW5pdHkKKygxIHJvdykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludGVydmFs LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2ludGVydmFsLnNxbAppbmRleCAwNTE3YjViODJi Li4wM2Q1MDE0MGE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9pbnRlcnZhbC5z cWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW50ZXJ2YWwuc3FsCkBAIC0xNCw2ICsxNCwx MCBAQCBTRUxFQ1QgSU5URVJWQUwgJy0xIGRheXMgKzAyOjAzJyBBUyAiMjIgaG91cnMgYWdvLi4u IjsKIFNFTEVDVCBJTlRFUlZBTCAnMS41IHdlZWtzJyBBUyAiVGVuIGRheXMgdHdlbHZlIGhvdXJz IjsKIFNFTEVDVCBJTlRFUlZBTCAnMS41IG1vbnRocycgQVMgIk9uZSBtb250aCAxNSBkYXlzIjsK IFNFTEVDVCBJTlRFUlZBTCAnMTAgeWVhcnMgLTExIG1vbnRoIC0xMiBkYXlzICsxMzoxNCcgQVMg IjkgeWVhcnMuLi4iOworU0VMRUNUIElOVEVSVkFMICdpbmZpbml0eScgQVMgImV0ZXJuaXR5IjsK K1NFTEVDVCBJTlRFUlZBTCAnLWluZmluaXR5JyBBUyAiYmVnaW5uaW5nIG9mIHRpbWUiOworCist LVRPRE86IEFkZCB0ZXN0cyBmb3Igb3BlcmF0b3JzIGV0Yy4gYnkgbG9va2luZyBhdCB0aGUgb3Ro ZXIgdGVzdHMgYmVsb3cKIAogQ1JFQVRFIFRBQkxFIElOVEVSVkFMX1RCTCAoZjEgaW50ZXJ2YWwp OwogCkBAIC0yNywxMCArMzEsMTMgQEAgSU5TRVJUIElOVE8gSU5URVJWQUxfVEJMIChmMSkgVkFM VUVTICgnMSBkYXkgMiBob3VycyAzIG1pbnV0ZXMgNCBzZWNvbmRzJyk7CiBJTlNFUlQgSU5UTyBJ TlRFUlZBTF9UQkwgKGYxKSBWQUxVRVMgKCc2IHllYXJzJyk7CiBJTlNFUlQgSU5UTyBJTlRFUlZB TF9UQkwgKGYxKSBWQUxVRVMgKCc1IG1vbnRocycpOwogSU5TRVJUIElOVE8gSU5URVJWQUxfVEJM IChmMSkgVkFMVUVTICgnNSBtb250aHMgMTIgaG91cnMnKTsKK0lOU0VSVCBJTlRPIElOVEVSVkFM X1RCTCAoZjEpIFZBTFVFUyAoJ2luZmluaXR5Jyk7CitJTlNFUlQgSU5UTyBJTlRFUlZBTF9UQkwg KGYxKSBWQUxVRVMgKCctaW5maW5pdHknKTsKIAogLS0gYmFkbHkgZm9ybWF0dGVkIGludGVydmFs CiBJTlNFUlQgSU5UTyBJTlRFUlZBTF9UQkwgKGYxKSBWQUxVRVMgKCdiYWRseSBmb3JtYXR0ZWQg aW50ZXJ2YWwnKTsKIElOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZBTFVFUyAoJ0AgMzAg ZW9ucyBhZ28nKTsKK0lOU0VSVCBJTlRPIElOVEVSVkFMX1RCTCAoZjEpIFZBTFVFUyAoJytpbmZp bml0eScpOwogCiAtLSBUZXN0IG5vbi1lcnJvci10aHJvd2luZyBBUEkKIFNFTEVDVCBwZ19pbnB1 dF9pc192YWxpZCgnMS41IHdlZWtzJywgJ2ludGVydmFsJyk7CkBAIC0xNDEsNiArMTQ4LDcgQEAg U0VMRUNUICogRlJPTSBJTlRFUlZBTF9UQkw7CiAtLSB1cGRhdGluZyBwZ19hZ2dyZWdhdGUuYWdn aW5pdHZhbAogCiBzZWxlY3QgYXZnKGYxKSBmcm9tIGludGVydmFsX3RibDsKK3NlbGVjdCBhdmco ZjEpIGZyb20gaW50ZXJ2YWxfdGJsIHdoZXJlIGlzZmluaXRlKGYxKTsKIAogLS0gdGVzdCBsb25n IGludGVydmFsIGlucHV0CiBzZWxlY3QgJzQgbWlsbGVubml1bXMgNSBjZW50dXJpZXMgNCBkZWNh ZGVzIDEgeWVhciA0IG1vbnRocyA0IGRheXMgMTcgbWludXRlcyAzMSBzZWNvbmRzJzo6aW50ZXJ2 YWw7CkBAIC01NzgsMyArNTg2LDEwMCBAQCBTRUxFQ1QgZjEsCiAKIC0tIGludGVybmFsIG92ZXJm bG93IHRlc3QgY2FzZQogU0VMRUNUIGV4dHJhY3QoZXBvY2ggZnJvbSBpbnRlcnZhbCAnMTAwMDAw MDAwMCBkYXlzJyk7CisKKy0tIGluZmluaXRlIGludGVydmFscworU0VMRUNUIGlzZmluaXRlKGlu dGVydmFsICdpbmZpbml0eScpOworU0VMRUNUIGlzZmluaXRlKGludGVydmFsICctaW5maW5pdHkn KTsKKworU0VMRUNUIGRhdGUgJzE5OTUtMDgtMDYnICsgaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NF TEVDVCBkYXRlICcxOTk1LTA4LTA2JyArIGludGVydmFsICctaW5maW5pdHknOworU0VMRUNUIGRh dGUgJzE5OTUtMDgtMDYnIC0gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVDVCBkYXRlICcxOTk1 LTA4LTA2JyAtIGludGVydmFsICctaW5maW5pdHknOworU0VMRUNUIGRhdGUgJ2luZmluaXR5JyAr IGludGVydmFsICdpbmZpbml0eSc7CitTRUxFQ1QgZGF0ZSAnaW5maW5pdHknICsgaW50ZXJ2YWwg Jy1pbmZpbml0eSc7CitTRUxFQ1QgZGF0ZSAnLWluZmluaXR5JyArIGludGVydmFsICdpbmZpbml0 eSc7CitTRUxFQ1QgZGF0ZSAnLWluZmluaXR5JyArIGludGVydmFsICctaW5maW5pdHknOworU0VM RUNUIGRhdGUgJ2luZmluaXR5JyAtIGludGVydmFsICdpbmZpbml0eSc7CitTRUxFQ1QgZGF0ZSAn aW5maW5pdHknIC0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgZGF0ZSAnLWluZmluaXR5 JyAtIGludGVydmFsICdpbmZpbml0eSc7CitTRUxFQ1QgZGF0ZSAnLWluZmluaXR5JyAtIGludGVy dmFsICctaW5maW5pdHknOworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgKyBpbnRlcnZhbCAn aW5maW5pdHknOworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgKyBpbnRlcnZhbCAnLWluZmlu aXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyArIGludGVydmFsICdpbmZpbml0eSc7 CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgKyBpbnRlcnZhbCAnLWluZmluaXR5JzsKK1NF TEVDVCBpbnRlcnZhbCAnaW5maW5pdHknICsgaW50ZXJ2YWwgJzEwIGRheXMnOworU0VMRUNUIGlu dGVydmFsICctaW5maW5pdHknICsgaW50ZXJ2YWwgJzEwIGRheXMnOworU0VMRUNUIGludGVydmFs ICdpbmZpbml0eScgLSBpbnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIGludGVydmFsICdpbmZp bml0eScgLSBpbnRlcnZhbCAnLWluZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5 JyAtIGludGVydmFsICdpbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgLSBp bnRlcnZhbCAnLWluZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIC0gaW50ZXJ2 YWwgJzEwIGRheXMnOworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknIC0gaW50ZXJ2YWwgJzEw IGRheXMnOworU0VMRUNUIHRpbWVzdGFtcCAnMTk5NS0wOC0wNiAxMjozMDoxNScgKyBpbnRlcnZh bCAnaW5maW5pdHknOworU0VMRUNUIHRpbWVzdGFtcCAnMTk5NS0wOC0wNiAxMjozMDoxNScgKyBp bnRlcnZhbCAnLWluZmluaXR5JzsKK1NFTEVDVCB0aW1lc3RhbXAgJzE5OTUtMDgtMDYgMTI6MzA6 MTUnIC0gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVDVCB0aW1lc3RhbXAgJzE5OTUtMDgtMDYg MTI6MzA6MTUnIC0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgdGltZXN0YW1wICdpbmZp bml0eScgKyBpbnRlcnZhbCAnaW5maW5pdHknCitTRUxFQ1QgdGltZXN0YW1wICdpbmZpbml0eScg KyBpbnRlcnZhbCAnLWluZmluaXR5JworU0VMRUNUIHRpbWVzdGFtcCAnLWluZmluaXR5JyArIGlu dGVydmFsICdpbmZpbml0eScKK1NFTEVDVCB0aW1lc3RhbXAgJy1pbmZpbml0eScgKyBpbnRlcnZh bCAnLWluZmluaXR5JworU0VMRUNUIHRpbWVzdGFtcCAnaW5maW5pdHknIC0gaW50ZXJ2YWwgJ2lu ZmluaXR5JworU0VMRUNUIHRpbWVzdGFtcCAnaW5maW5pdHknIC0gaW50ZXJ2YWwgJy1pbmZpbml0 eScKK1NFTEVDVCB0aW1lc3RhbXAgJy1pbmZpbml0eScgLSBpbnRlcnZhbCAnaW5maW5pdHknCitT RUxFQ1QgdGltZXN0YW1wICctaW5maW5pdHknIC0gaW50ZXJ2YWwgJy1pbmZpbml0eScKK1NFTEVD VCB0aW1lICcxMToyNzo0MicgKyBpbnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIHRpbWUgJzEx OjI3OjQyJyArIGludGVydmFsICctaW5maW5pdHknOworU0VMRUNUIHRpbWUgJzExOjI3OjQyJyAt IGludGVydmFsICdpbmZpbml0eSc7CitTRUxFQ1QgdGltZSAnMTE6Mjc6NDInIC0gaW50ZXJ2YWwg Jy1pbmZpbml0eSc7CisKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIDwgaW50ZXJ2YWwgJ2lu ZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknIDwgaW50ZXJ2YWwgJy1pbmZpbml0 eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPCBpbnRlcnZhbCAnaW5maW5pdHknOwor U0VMRUNUIGludGVydmFsICctaW5maW5pdHknIDwgaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxF Q1QgaW50ZXJ2YWwgJ2luZmluaXR5JyA8PSBpbnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIGlu dGVydmFsICdpbmZpbml0eScgPD0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2 YWwgJy1pbmZpbml0eScgPD0gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAn LWluZmluaXR5JyA8PSBpbnRlcnZhbCAnLWluZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnaW5m aW5pdHknID4gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHkn ID4gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPiBp bnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknID4gaW50ZXJ2 YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmluaXR5JyA+PSBpbnRlcnZhbCAn aW5maW5pdHknOworU0VMRUNUIGludGVydmFsICdpbmZpbml0eScgPj0gaW50ZXJ2YWwgJy1pbmZp bml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScgPj0gaW50ZXJ2YWwgJ2luZmluaXR5 JzsKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyA+PSBpbnRlcnZhbCAnLWluZmluaXR5JzsK K1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknID0gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVD VCBpbnRlcnZhbCAnaW5maW5pdHknID0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50 ZXJ2YWwgJy1pbmZpbml0eScgPSBpbnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIGludGVydmFs ICctaW5maW5pdHknID0gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJ2lu ZmluaXR5JyA8PiBpbnRlcnZhbCAnaW5maW5pdHknOworU0VMRUNUIGludGVydmFsICdpbmZpbml0 eScgPD4gaW50ZXJ2YWwgJy1pbmZpbml0eSc7CitTRUxFQ1QgaW50ZXJ2YWwgJy1pbmZpbml0eScg PD4gaW50ZXJ2YWwgJ2luZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnLWluZmluaXR5JyA8PiBp bnRlcnZhbCAnLWluZmluaXR5JzsKKworU0VMRUNUIC1pbnRlcnZhbCAnaW5maW5pdHknOworU0VM RUNUIC1pbnRlcnZhbCAnLWluZmluaXR5JzsKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknICog MjsKK1NFTEVDVCBpbnRlcnZhbCAnaW5maW5pdHknICogLTI7CitTRUxFQ1QgaW50ZXJ2YWwgJy1p bmZpbml0eScgKiAyOworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknICogLTI7CitTRUxFQ1Qg aW50ZXJ2YWwgJ2luZmluaXR5JyAvIDM7CitTRUxFQ1QgaW50ZXJ2YWwgJ2luZmluaXR5JyAvIC0z OworU0VMRUNUIGludGVydmFsICctaW5maW5pdHknIC8gMzsKK1NFTEVDVCBpbnRlcnZhbCAnLWlu ZmluaXR5JyAvIC0zOworCitTRUxFQ1QgZGF0ZV9iaW4oJ2luZmluaXR5JywgdGltZXN0YW1wICcy MDAxLTAyLTE2IDIwOjM4OjQwJywgdGltZXN0YW1wICcyMDAxLTAyLTE2IDIwOjA1OjAwJyk7CitT RUxFQ1QgZGF0ZV9iaW4oJy1pbmZpbml0eScsIHRpbWVzdGFtcCAnMjAwMS0wMi0xNiAyMDozODo0 MCcsIHRpbWVzdGFtcCAnMjAwMS0wMi0xNiAyMDowNTowMCcpOworU0VMRUNUIGRhdGVfcGFydCgn bW9udGgnLCBpbnRlcnZhbCAnaW5maW5pdHknKTsKK1NFTEVDVCBkYXRlX3BhcnQoJ21vbnRoJywg aW50ZXJ2YWwgJy1pbmZpbml0eScpOworU0VMRUNUIGRhdGVfdHJ1bmMoJ2hvdXInLCBpbnRlcnZh bCAnaW5maW5pdHknKTsKK1NFTEVDVCBkYXRlX3RydW5jKCdob3VyJywgaW50ZXJ2YWwgJy1pbmZp bml0eScpOworU0VMRUNUIGV4dHJhY3QobW9udGggZnJvbSBpbnRlcnZhbCAnaW5maW5pdHknKTsK K1NFTEVDVCBleHRyYWN0KG1vbnRoIGZyb20gaW50ZXJ2YWwgJy1pbmZpbml0eScpOworCitTRUxF Q1QganVzdGlmeV9kYXlzKGludGVydmFsICdpbmZpbml0eScpOworU0VMRUNUIGp1c3RpZnlfZGF5 cyhpbnRlcnZhbCAnLWluZmluaXR5Jyk7CitTRUxFQ1QganVzdGlmeV9ob3VycyhpbnRlcnZhbCAn aW5maW5pdHknKTsKK1NFTEVDVCBqdXN0aWZ5X2hvdXJzKGludGVydmFsICctaW5maW5pdHknKTsK K1NFTEVDVCBqdXN0aWZ5X2ludGVydmFsKGludGVydmFsICdpbmZpbml0eScpOworU0VMRUNUIGp1 c3RpZnlfaW50ZXJ2YWwoaW50ZXJ2YWwgJy1pbmZpbml0eScpOwotLSAKMi4zNC4xCgo= --0000000000002e5cd505f00b2c83--