From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from eggs.gnu.org (eggs.gnu.org [IPv6:2001:470:142:3::10]) by sourceware.org (Postfix) with ESMTPS id 0A1223858037 for ; Thu, 4 Jan 2024 09:06:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0A1223858037 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=loongson.cn ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 0A1223858037 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2001:470:142:3::10 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704359207; cv=none; b=ecIglONDltl8LRt0XqXRvPA0olsJwWUXJ8AIIHOBloWoxdQv9vGK39AqLVPpJiIkMGQ+An3NAgAnuY9piYAIG1wiG8Txku1Li38xYJBaiKOZOV17OPOgEN4bcw6RJxA0DejvWOFtzgWcIFKvQ4eCcxhYAvWa5elKcvJyhAbI3MA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704359207; c=relaxed/simple; bh=GJej5ArtDEt3G2IWh6PbiPQly22nBx977S+YNwwmYbM=; h=Subject:To:From:Message-ID:Date:MIME-Version; b=aKS7dWpmO2U+IcFdlxiMT6vaE+gu8FPtTT2irxmD9cbR2CCsZ+ylJO6OURfNx2TMiG3y3T/4j2ibK3xphlAisGABMAcKIKNLwUTmUChM1SKtjrtvEIE4BQWErdAmuBCHa2iJ5de1tEfUKDFtySQteeEmiG2Q33WeQ3qq95ii8i0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from mail.loongson.cn ([114.242.206.163]) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rLJfc-0003vM-01 for gcc-patches@gcc.gnu.org; Thu, 04 Jan 2024 04:06:34 -0500 Received: from loongson.cn (unknown [10.20.4.107]) by gateway (Coremail) with SMTP id _____8CxruvVdJZlyuUBAA--.7289S3; Thu, 04 Jan 2024 17:05:25 +0800 (CST) Received: from [10.20.4.107] (unknown [10.20.4.107]) by localhost.localdomain (Coremail) with SMTP id AQAAf8Bxut3SdJZlyGgBAA--.3581S3; Thu, 04 Jan 2024 17:05:22 +0800 (CST) Subject: Re: [PATCH 1/2] LoongArch: Add the macro implementation of mcmodel=extreme. To: Xi Ruoyao , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn References: <20231227084654.20614-1-chenglulu@loongson.cn> <20231227084654.20614-2-chenglulu@loongson.cn> <734aebe3f8159485e2e823699bf987c2f605eaa5.camel@xry111.site> From: chenglulu Message-ID: Date: Thu, 4 Jan 2024 17:05:22 +0800 User-Agent: Mozilla/5.0 (X11; Linux loongarch64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------B5B20C5C8508D0F71A37FB91" Content-Language: en-US X-CM-TRANSID:AQAAf8Bxut3SdJZlyGgBAA--.3581S3 X-CM-SenderInfo: xfkh0wpoxo3qxorr0wxvrqhubq/ X-Coremail-Antispam: 1Uk129KBj93XoW7Aw17XF1fAF1kWF48XFW3CFX_yoW8AFW7pr Z7C3WUGFWxZFn5K34Ika4jgr90kFsFya15XF15JFyFvr4DWr1aga1rurZI9FykAw1Fvr17 Za1ft34fZFy5AFXCm3ZEXasCq-sJn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7KY7ZEXa sCq-sGcSsGvfJ3Ic02F40EFcxC0VAKzVAqx4xG6I80ebIjqfuFe4nvWSU5nxnvy29KBjDU 0xBIdaVrnRJUUUmCb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2 IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48v e4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI 0_Gr0_Cr1l84ACjcxK6I8E87Iv67AKxVW8Jr0_Cr1UM28EF7xvwVC2z280aVCY1x0267AK xVW8Jr0_Cr1UM2vj62AExVA0xI801c8C04v26x02cVCv0xWle2I262IYc4CY6c8Ij28IcV AaY2xG8wASzI0EjI02j7AqF2xKxwAqjxCEc2xF0cIa020Ex4CE44I27wAqx4xG64xvF2IE w4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r4j6F4UMc vjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvEwIxGrwACY4xI67k04243AVC20s07Mxk0xIA0 c2IEe2xFo4CEbIxvr21l42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2 IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v2 6r126r1DMIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2 IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv 67AKxVW8JVWxJwCI42IY6I8E87Iv6xkF7I0E14v26r4j6r4UJwCE64xvF2IEb7IF0Fy7Yx BIdaVFxhVjvjDU0xZFpf9x07UcAwxUUUUU= Received-SPF: pass client-ip=114.242.206.163; envelope-from=chenglulu@loongson.cn; helo=mail.loongson.cn X-Spam_score_int: -36 X-Spam_score: -3.7 X-Spam_bar: --- X-Spam_report: (-3.7 / 5.0 requ) BAYES_00=-1.9,NICE_REPLY_A=-1.771,SPF_HELO_NONE=0.001,SPF_PASS=-0.001,T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00,BODY_8BITS,KAM_DMARC_STATUS,KAM_LOTSOFHASH,NICE_REPLY_A,SPF_FAIL,SPF_HELO_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------B5B20C5C8508D0F71A37FB91 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit 在 2024/1/4 下午12:05, Xi Ruoyao 写道: > On Thu, 2024-01-04 at 11:58 +0800, chenglulu wrote: >> 在 2024/1/4 上午11:51, Xi Ruoyao 写道: >>> On Wed, 2023-12-27 at 16:46 +0800, Lulu Cheng wrote: >>>> +(define_insn "movdi_pcrel64" >>>> + [(set (match_operand:DI 0 "register_operand" "=&r") >>>> +       (match_operand:DI 1 "symbolic_pcrel64_operand")) >>>> +  (unspec:DI [(const_int 0)] >>>> +    UNSPEC_MOV_PCREL64) >>>> +  (use (reg:DI T3_REGNUM)) >>>> +  (clobber (reg:DI T3_REGNUM))] >>> It's better not to hard code $t3 here.  We can write >>> >>> [(set (match_operand:DI 0 "register_operand" "=r") >>>         (match_operand:DI 1 "symbolic_pcrel64_operand")) >>>    (clobber (match_operand:DI 2 "register_operand "=&r"))] >>> >>> And use >>> >>>     gen_movdi_pcrel64 (operands[0], operands[1], gen_reg_rtx(DImode)) >>> >>> in expand. >>> >> I tried using (clobber (match_scratch)) when implementing it, but it >> didn't work. > I tried match_scratch a few times as well in my previous hacks but never > succeeded :(. > In the function loongarch_output_mi_thunk, the address of the symbol .LTHUNK0 will be obtained, but at this time it is no longer possible to apply for temporary variables. So there will be ICE here See attachment for test cases. The compilation command is as follows: $ ./gcc/cc1plus -fpreprocessed example.ii -quiet -dumpbase example.cc -dumpbase-ext .cc -mexplicit-relocs=none -mno-relax -mabi=lp64d -march=loongarch64 -mfpu=64 -msimd=lasx -mcmodel=extreme -mtune=loongarch64 -g3 -O2 -Wno-int-conversion -Wno-implicit-int -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -std=c++98 -version -o example.s --------------B5B20C5C8508D0F71A37FB91 Content-Type: text/plain; charset=UTF-8; name="example.ii" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="example.ii" IyAwICJleGFtcGxlLmNjIgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL2JlbmNobWFyay9j cHUyMDA2LXYxLjEvYmVuY2hzcGVjL0NQVTIwMDYvNDUwLnNvcGxleC9idWlsZC9idWlsZF9i YXNlX08yLjAwMDEvLyIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU1REQ19fIDEKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fY3BsdXNwbHVzIDE5OTcxMUwKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fU1REQ19IT1NURURfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0dOVUNfXyAxNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HTlVDX01JTk9SX18g MAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HTlVDX1BBVENITEVWRUxfXyAwCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX1ZFUlNJT05fXyAiMTQuMC4wIDIwMjQwMTAzIChleHBl cmltZW50YWwpIgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19BVE9NSUNfUkVMQVhFRCAw CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0FUT01JQ19TRVFfQ1NUIDUKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fQVRPTUlDX0FDUVVJUkUgMgojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19BVE9NSUNfUkVMRUFTRSAzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0FU T01JQ19BQ1FfUkVMIDQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQVRPTUlDX0NPTlNV TUUgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19PUFRJTUlaRV9fIDEKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fRklOSVRFX01BVEhfT05MWV9fIDAKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9MUDY0IDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTFA2NF9fIDEK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0laRU9GX0lOVF9fIDQKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fU0laRU9GX0xPTkdfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1NJWkVPRl9MT05HX0xPTkdfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJ WkVPRl9TSE9SVF9fIDIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0laRU9GX0ZMT0FU X18gNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfRE9VQkxFX18gOAojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfTE9OR19ET1VCTEVfXyAxNgojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfU0laRV9UX18gOAojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19DSEFSX0JJVF9fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQklH R0VTVF9BTElHTk1FTlRfXyAzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19PUkRFUl9M SVRUTEVfRU5ESUFOX18gMTIzNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19PUkRFUl9C SUdfRU5ESUFOX18gNDMyMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19PUkRFUl9QRFBf RU5ESUFOX18gMzQxMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19CWVRFX09SREVSX18g X19PUkRFUl9MSVRUTEVfRU5ESUFOX18KIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxP QVRfV09SRF9PUkRFUl9fIF9fT1JERVJfTElUVExFX0VORElBTl9fCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1NJWkVPRl9QT0lOVEVSX18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19HTlVDX0VYRUNVVElPTl9DSEFSU0VUX05BTUUgIlVURi04IgojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19HTlVDX1dJREVfRVhFQ1VUSU9OX0NIQVJTRVRfTkFNRSAiVVRGLTMy TEUiCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dOVUdfXyAxNAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19TSVpFX1RZUEVfXyBsb25nIHVuc2lnbmVkIGludAojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19XQ0hBUl9UWVBFX18gaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1dJTlRfVFlQRV9fIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19JTlRNQVhfVFlQRV9fIGxvbmcgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJ TlRNQVhfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0NIQVIxNl9UWVBFX18gc2hvcnQgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0NIQVIzMl9UWVBFX18gdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1NJR19BVE9NSUNfVFlQRV9fIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19JTlQ4X1RZUEVfXyBzaWduZWQgY2hhcgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19JTlQxNl9UWVBFX18gc2hvcnQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VDMyX1RZUEVfXyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UNjRfVFlQRV9f IGxvbmcgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQ4X1RZUEVfXyB1bnNp Z25lZCBjaGFyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQxNl9UWVBFX18gc2hv cnQgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQzMl9UWVBF X18gdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQ2NF9UWVBF X18gbG9uZyB1bnNpZ25lZCBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0xF QVNUOF9UWVBFX18gc2lnbmVkIGNoYXIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5U X0xFQVNUMTZfVFlQRV9fIHNob3J0IGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19J TlRfTEVBU1QzMl9UWVBFX18gaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9M RUFTVDY0X1RZUEVfXyBsb25nIGludAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5U X0xFQVNUOF9UWVBFX18gdW5zaWduZWQgY2hhcgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19VSU5UX0xFQVNUMTZfVFlQRV9fIHNob3J0IHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19VSU5UX0xFQVNUMzJfVFlQRV9fIHVuc2lnbmVkIGludAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UX0xFQVNUNjRfVFlQRV9fIGxvbmcgdW5zaWduZWQg aW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUOF9UWVBFX18gc2lnbmVk IGNoYXIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1QxNl9UWVBFX18gbG9u ZyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1QzMl9UWVBFX18gbG9u ZyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1Q2NF9UWVBFX18gbG9u ZyBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVF9GQVNUOF9UWVBFX18gdW5z aWduZWQgY2hhcgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UX0ZBU1QxNl9UWVBF X18gbG9uZyB1bnNpZ25lZCBpbnQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVF9G QVNUMzJfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1VJTlRfRkFTVDY0X1RZUEVfXyBsb25nIHVuc2lnbmVkIGludAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19JTlRQVFJfVFlQRV9fIGxvbmcgaW50CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1VJTlRQVFJfVFlQRV9fIGxvbmcgdW5zaWduZWQgaW50CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0dYWF9XRUFLX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19ERVBSRUNBVEVEIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR1hYX1JUVEkgMQoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19jcHBfcnR0aSAxOTk3MTFMCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX2NwcF9iaW5hcnlfbGl0ZXJhbHMgMjAxMzA0TAojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19jcHBfaGV4X2Zsb2F0IDIwMTYwM0wKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fY3BwX3J1bnRpbWVfYXJyYXlzIDE5ODcxMkwKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fY3BwX3RocmVhZHNhZmVfc3RhdGljX2luaXQgMjAwODA2TAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19FWENFUFRJT05TIDEKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fY3BwX2V4Y2VwdGlvbnMgMTk5NzExTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19HWFhfQUJJX1ZFUlNJT04gMTAxOQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TQ0hB Ul9NQVhfXyAweDdmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NIUlRfTUFYX18gMHg3 ZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9NQVhfXyAweDdmZmZmZmZmCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xPTkdfTUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZm TAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MT05HX0xPTkdfTUFYX18gMHg3ZmZmZmZm ZmZmZmZmZmZmTEwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fV0NIQVJfTUFYX18gMHg3 ZmZmZmZmZgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19XQ0hBUl9NSU5fXyAoLV9fV0NI QVJfTUFYX18gLSAxKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19XSU5UX01BWF9fIDB4 ZmZmZmZmZmZVCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1dJTlRfTUlOX18gMFUKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fUFRSRElGRl9NQVhfXyAweDdmZmZmZmZmZmZmZmZm ZmZMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJWkVfTUFYX18gMHhmZmZmZmZmZmZm ZmZmZmZmVUwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0NIQVJfV0lEVEhfXyA4CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NIUlRfV0lEVEhfXyAxNgojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19JTlRfV0lEVEhfXyAzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19MT05HX1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTE9OR19MT05H X1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fV0NIQVJfV0lEVEhfXyAz MgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19XSU5UX1dJRFRIX18gMzIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fUFRSRElGRl9XSURUSF9fIDY0CiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1NJWkVfV0lEVEhfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19J TlRNQVhfTUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19JTlRNQVhfQyhjKSBjICMjIEwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlO VE1BWF9NQVhfXyAweGZmZmZmZmZmZmZmZmZmZmZVTAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19VSU5UTUFYX0MoYykgYyAjIyBVTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19J TlRNQVhfV0lEVEhfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSUdfQVRPTUlD X01BWF9fIDB4N2ZmZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0lHX0FUT01J Q19NSU5fXyAoLV9fU0lHX0FUT01JQ19NQVhfXyAtIDEpCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1NJR19BVE9NSUNfV0lEVEhfXyAzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19JTlQ4X01BWF9fIDB4N2YKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UMTZfTUFY X18gMHg3ZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVDMyX01BWF9fIDB4N2Zm ZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UNjRfTUFYX18gMHg3ZmZmZmZm ZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UOF9NQVhfXyAweGZm CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlQxNl9NQVhfXyAweGZmZmYKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVDMyX01BWF9fIDB4ZmZmZmZmZmZVCiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX1VJTlQ2NF9NQVhfXyAweGZmZmZmZmZmZmZmZmZmZmZVTAoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfTEVBU1Q4X01BWF9fIDB4N2YKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UOF9DKGMpIGMKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fSU5UX0xFQVNUOF9XSURUSF9fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f SU5UX0xFQVNUMTZfTUFYX18gMHg3ZmZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lO VDE2X0MoYykgYwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfTEVBU1QxNl9XSURU SF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9MRUFTVDMyX01BWF9fIDB4 N2ZmZmZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UMzJfQyhjKSBjCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9MRUFTVDMyX1dJRFRIX18gMzIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fSU5UX0xFQVNUNjRfTUFYX18gMHg3ZmZmZmZmZmZmZmZmZmZm TAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlQ2NF9DKGMpIGMgIyMgTAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfTEVBU1Q2NF9XSURUSF9fIDY0CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX1VJTlRfTEVBU1Q4X01BWF9fIDB4ZmYKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fVUlOVDhfQyhjKSBjCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJ TlRfTEVBU1QxNl9NQVhfXyAweGZmZmYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlO VDE2X0MoYykgYwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UX0xFQVNUMzJfTUFY X18gMHhmZmZmZmZmZlUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVDMyX0MoYykg YyAjIyBVCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRfTEVBU1Q2NF9NQVhfXyAw eGZmZmZmZmZmZmZmZmZmZmZVTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSU5UNjRf QyhjKSBjICMjIFVMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUOF9NQVhf XyAweDdmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUOF9XSURUSF9fIDgK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1QxNl9NQVhfXyAweDdmZmZmZmZm ZmZmZmZmZmZMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUMTZfV0lEVEhf XyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfRkFTVDMyX01BWF9fIDB4N2Zm ZmZmZmZmZmZmZmZmZkwKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fSU5UX0ZBU1QzMl9X SURUSF9fIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVF9GQVNUNjRfTUFYX18g MHg3ZmZmZmZmZmZmZmZmZmZmTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19JTlRfRkFT VDY0X1dJRFRIX18gNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUlOVF9GQVNUOF9N QVhfXyAweGZmCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRfRkFTVDE2X01BWF9f IDB4ZmZmZmZmZmZmZmZmZmZmZlVMCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VJTlRf RkFTVDMyX01BWF9fIDB4ZmZmZmZmZmZmZmZmZmZmZlVMCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1VJTlRfRkFTVDY0X01BWF9fIDB4ZmZmZmZmZmZmZmZmZmZmZlVMCiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX0lOVFBUUl9NQVhfXyAweDdmZmZmZmZmZmZmZmZmZmZMCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0lOVFBUUl9XSURUSF9fIDY0CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX1VJTlRQVFJfTUFYX18gMHhmZmZmZmZmZmZmZmZmZmZmVUwKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0lFQ181NTkgMgojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19HQ0NfSUVDXzU1OV9DT01QTEVYIDIKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUX0VWQUxfTUVUSE9EX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19G TFRfRVZBTF9NRVRIT0RfVFNfMTg2NjFfM19fIDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fREVDX0VWQUxfTUVUSE9EX18gMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFRf UkFESVhfXyAyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9NQU5UX0RJR19fIDI0 CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9ESUdfXyA2CiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZMVF9NSU5fRVhQX18gKC0xMjUpCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVF9NSU5fMTBfRVhQX18gKC0zNykKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fRkxUX01BWF9FWFBfXyAxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUX01B WF8xMF9FWFBfXyAzOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFRfREVDSU1BTF9E SUdfXyA5CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9NQVhfXyAzLjQwMjgyMzQ2 NjM4NTI4ODU5ODExNzA0MTgzNDg0NTE2OTI1ZSszOEYKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUX05PUk1fTUFYX18gMy40MDI4MjM0NjYzODUyODg1OTgxMTcwNDE4MzQ4NDUx NjkyNWUrMzhGCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9NSU5fXyAxLjE3NTQ5 NDM1MDgyMjI4NzUwNzk2ODczNjUzNzIyMjI0NTY4ZS0zOEYKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRkxUX0VQU0lMT05fXyAxLjE5MjA5Mjg5NTUwNzgxMjUwMDAwMDAwMDAwMDAw MDAwMDAwZS03RgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFRfREVOT1JNX01JTl9f IDEuNDAxMjk4NDY0MzI0ODE3MDcwOTIzNzI5NTgzMjg5OTE2MTNlLTQ1RgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19GTFRfSEFTX0RFTk9STV9fIDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRkxUX0hBU19JTkZJTklUWV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fRkxUX0hBU19RVUlFVF9OQU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZQ X0ZBU1RfRk1BRiAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVF9JU19JRUNfNjA1 NTlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9NQU5UX0RJR19fIDUzCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9ESUdfXyAxNQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19EQkxfTUlOX0VYUF9fICgtMTAyMSkKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fREJMX01JTl8xMF9FWFBfXyAoLTMwNykKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fREJMX01BWF9FWFBfXyAxMDI0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9N QVhfMTBfRVhQX18gMzA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9ERUNJTUFM X0RJR19fIDE3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RCTF9NQVhfXyBkb3VibGUo MS43OTc2OTMxMzQ4NjIzMTU3MDgxNDUyNzQyMzczMTcwNDM1N2UrMzA4TCkKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fREJMX05PUk1fTUFYX18gZG91YmxlKDEuNzk3NjkzMTM0ODYy MzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTdlKzMwOEwpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0RCTF9NSU5fXyBkb3VibGUoMi4yMjUwNzM4NTg1MDcyMDEzODMwOTAyMzI3MTczMzI0 MDQwNmUtMzA4TCkKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fREJMX0VQU0lMT05fXyBk b3VibGUoMi4yMjA0NDYwNDkyNTAzMTMwODA4NDcyNjMzMzYxODE2NDA2MmUtMTZMKQojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19EQkxfREVOT1JNX01JTl9fIGRvdWJsZSg0Ljk0MDY1 NjQ1ODQxMjQ2NTQ0MTc2NTY4NzkyODY4MjIxMzcyZS0zMjRMKQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19EQkxfSEFTX0RFTk9STV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fREJMX0hBU19JTkZJTklUWV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fREJM X0hBU19RVUlFVF9OQU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZQX0ZBU1Rf Rk1BIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fREJMX0lTX0lFQ182MDU1OV9fIDEK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTERCTF9NQU5UX0RJR19fIDExMwojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0RJR19fIDMzCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0xEQkxfTUlOX0VYUF9fICgtMTYzODEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0xEQkxfTUlOXzEwX0VYUF9fICgtNDkzMSkKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fTERCTF9NQVhfRVhQX18gMTYzODQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTERC TF9NQVhfMTBfRVhQX18gNDkzMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19ERUNJTUFM X0RJR19fIDM2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xEQkxfREVDSU1BTF9ESUdf XyAzNgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX01BWF9fIDEuMTg5NzMxNDk1 MzU3MjMxNzY1MDg1NzU5MzI2NjI4MDA3MDJlKzQ5MzJMCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0xEQkxfTk9STV9NQVhfXyAxLjE4OTczMTQ5NTM1NzIzMTc2NTA4NTc1OTMyNjYy ODAwNzAyZSs0OTMyTAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX01JTl9fIDMu MzYyMTAzMTQzMTEyMDkzNTA2MjYyNjc3ODE3MzIxNzUyNjBlLTQ5MzJMCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0xEQkxfRVBTSUxPTl9fIDEuOTI1OTI5OTQ0Mzg3MjM1ODUzMDU1 OTc3OTQyNTg0OTI3MzJlLTM0TAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0RF Tk9STV9NSU5fXyA2LjQ3NTE3NTExOTQzODAyNTExMDkyNDQzODk1ODIyNzY0NjU1ZS00OTY2 TAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MREJMX0hBU19ERU5PUk1fXyAxCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0xEQkxfSEFTX0lORklOSVRZX18gMQojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19MREJMX0hBU19RVUlFVF9OQU5fXyAxCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0xEQkxfSVNfSUVDXzYwNTU5X18gMQojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19GTFQzMl9NQU5UX0RJR19fIDI0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVDMyX0RJR19fIDYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfTUlOX0VY UF9fICgtMTI1KQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9NSU5fMTBfRVhQ X18gKC0zNykKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfTUFYX0VYUF9fIDEy OAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQzMl9NQVhfMTBfRVhQX18gMzgKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfREVDSU1BTF9ESUdfXyA5CiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyX01BWF9fIDMuNDAyODIzNDY2Mzg1Mjg4NTk4MTE3 MDQxODM0ODQ1MTY5MjVlKzM4RjMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMy X05PUk1fTUFYX18gMy40MDI4MjM0NjYzODUyODg1OTgxMTcwNDE4MzQ4NDUxNjkyNWUrMzhG MzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfTUlOX18gMS4xNzU0OTQzNTA4 MjIyODc1MDc5Njg3MzY1MzcyMjIyNDU2OGUtMzhGMzIKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUMzJfRVBTSUxPTl9fIDEuMTkyMDkyODk1NTA3ODEyNTAwMDAwMDAwMDAwMDAw MDAwMDBlLTdGMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJfREVOT1JNX01J Tl9fIDEuNDAxMjk4NDY0MzI0ODE3MDcwOTIzNzI5NTgzMjg5OTE2MTNlLTQ1RjMyCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyX0hBU19ERU5PUk1fXyAxCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0ZMVDMyX0hBU19JTkZJTklUWV9fIDEKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fRkxUMzJfSEFTX1FVSUVUX05BTl9fIDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRlBfRkFTVF9GTUFGMzIgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19G TFQzMl9JU19JRUNfNjA1NTlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0 X01BTlRfRElHX18gNTMKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfRElHX18g MTUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfTUlOX0VYUF9fICgtMTAyMSkK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfTUlOXzEwX0VYUF9fICgtMzA3KQoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9NQVhfRVhQX18gMTAyNAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9NQVhfMTBfRVhQX18gMzA4CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX0ZMVDY0X0RFQ0lNQUxfRElHX18gMTcKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fRkxUNjRfTUFYX18gMS43OTc2OTMxMzQ4NjIzMTU3MDgxNDUyNzQyMzcz MTcwNDM1N2UrMzA4RjY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0X05PUk1f TUFYX18gMS43OTc2OTMxMzQ4NjIzMTU3MDgxNDUyNzQyMzczMTcwNDM1N2UrMzA4RjY0CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0X01JTl9fIDIuMjI1MDczODU4NTA3MjAx MzgzMDkwMjMyNzE3MzMyNDA0MDZlLTMwOEY2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQ2NF9FUFNJTE9OX18gMi4yMjA0NDYwNDkyNTAzMTMwODA4NDcyNjMzMzYxODE2NDA2 MmUtMTZGNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRfREVOT1JNX01JTl9f IDQuOTQwNjU2NDU4NDEyNDY1NDQxNzY1Njg3OTI4NjgyMjEzNzJlLTMyNEY2NAojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NF9IQVNfREVOT1JNX18gMQojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFQ2NF9IQVNfSU5GSU5JVFlfXyAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0ZMVDY0X0hBU19RVUlFVF9OQU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZQX0ZBU1RfRk1BRjY0IDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxU NjRfSVNfSUVDXzYwNTU5X18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQxMjhf TUFOVF9ESUdfXyAxMTMKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X0RJR19f IDMzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9NSU5fRVhQX18gKC0xNjM4 MSkKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X01JTl8xMF9FWFBfXyAoLTQ5 MzEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9NQVhfRVhQX18gMTYzODQK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X01BWF8xMF9FWFBfXyA0OTMyCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9ERUNJTUFMX0RJR19fIDM2CiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9NQVhfXyAxLjE4OTczMTQ5NTM1NzIzMTc2 NTA4NTc1OTMyNjYyODAwNzAyZSs0OTMyRjEyOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19GTFQxMjhfTk9STV9NQVhfXyAxLjE4OTczMTQ5NTM1NzIzMTc2NTA4NTc1OTMyNjYyODAw NzAyZSs0OTMyRjEyOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQxMjhfTUlOX18g My4zNjIxMDMxNDMxMTIwOTM1MDYyNjI2Nzc4MTczMjE3NTI2MGUtNDkzMkYxMjgKIyAwICI8 YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X0VQU0lMT05fXyAxLjkyNTkyOTk0NDM4NzIz NTg1MzA1NTk3Nzk0MjU4NDkyNzMyZS0zNEYxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9fRkxUMTI4X0RFTk9STV9NSU5fXyA2LjQ3NTE3NTExOTQzODAyNTExMDkyNDQzODk1ODIy NzY0NjU1ZS00OTY2RjEyOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQxMjhfSEFT X0RFTk9STV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X0hBU19JTkZJ TklUWV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMTI4X0hBU19RVUlFVF9O QU5fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDEyOF9JU19JRUNfNjA1NTlf XyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9NQU5UX0RJR19fIDUzCiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9ESUdfXyAxNQojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFQzMlhfTUlOX0VYUF9fICgtMTAyMSkKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fRkxUMzJYX01JTl8xMF9FWFBfXyAoLTMwNykKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fRkxUMzJYX01BWF9FWFBfXyAxMDI0CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVDMyWF9NQVhfMTBfRVhQX18gMzA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX0ZMVDMyWF9ERUNJTUFMX0RJR19fIDE3CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0ZMVDMyWF9NQVhfXyAxLjc5NzY5MzEzNDg2MjMxNTcwODE0NTI3NDIzNzMxNzA0MzU3ZSsz MDhGMzJ4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9OT1JNX01BWF9fIDEu Nzk3NjkzMTM0ODYyMzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTdlKzMwOEYzMngKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fRkxUMzJYX01JTl9fIDIuMjI1MDczODU4NTA3MjAxMzgzMDkw MjMyNzE3MzMyNDA0MDZlLTMwOEYzMngKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxU MzJYX0VQU0lMT05fXyAyLjIyMDQ0NjA0OTI1MDMxMzA4MDg0NzI2MzMzNjE4MTY0MDYyZS0x NkYzMngKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUMzJYX0RFTk9STV9NSU5fXyA0 Ljk0MDY1NjQ1ODQxMjQ2NTQ0MTc2NTY4NzkyODY4MjIxMzcyZS0zMjRGMzJ4CiMgMCAiPGJ1 aWx0LWluPiIKI2RlZmluZSBfX0ZMVDMyWF9IQVNfREVOT1JNX18gMQojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19GTFQzMlhfSEFTX0lORklOSVRZX18gMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19GTFQzMlhfSEFTX1FVSUVUX05BTl9fIDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fRlBfRkFTVF9GTUFGMzJ4IDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f RkxUMzJYX0lTX0lFQ182MDU1OV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxU NjRYX01BTlRfRElHX18gMTEzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9E SUdfXyAzMwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfTUlOX0VYUF9fICgt MTYzODEpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9NSU5fMTBfRVhQX18g KC00OTMxKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfTUFYX0VYUF9fIDE2 Mzg0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9NQVhfMTBfRVhQX18gNDkz MgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfREVDSU1BTF9ESUdfXyAzNgoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfTUFYX18gMS4xODk3MzE0OTUzNTcy MzE3NjUwODU3NTkzMjY2MjgwMDcwMmUrNDkzMkY2NHgKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fRkxUNjRYX05PUk1fTUFYX18gMS4xODk3MzE0OTUzNTcyMzE3NjUwODU3NTkzMjY2 MjgwMDcwMmUrNDkzMkY2NHgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRYX01J Tl9fIDMuMzYyMTAzMTQzMTEyMDkzNTA2MjYyNjc3ODE3MzIxNzUyNjBlLTQ5MzJGNjR4CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9FUFNJTE9OX18gMS45MjU5Mjk5NDQz ODcyMzU4NTMwNTU5Nzc5NDI1ODQ5MjczMmUtMzRGNjR4CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX0ZMVDY0WF9ERU5PUk1fTUlOX18gNi40NzUxNzUxMTk0MzgwMjUxMTA5MjQ0Mzg5 NTgyMjc2NDY1NWUtNDk2NkY2NHgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxUNjRY X0hBU19ERU5PUk1fXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9IQVNf SU5GSU5JVFlfXyAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZMVDY0WF9IQVNfUVVJ RVRfTkFOX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19GTFQ2NFhfSVNfSUVDXzYw NTU5X18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TRlJBQ1RfRkJJVF9fIDcKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0ZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1NGUkFDVF9NSU5fXyAoLTAuNUhSLTAuNUhSKQojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19TRlJBQ1RfTUFYX18gMFg3RlAtN0hSCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1NGUkFDVF9FUFNJTE9OX18gMHgxUC03SFIKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fVVNGUkFDVF9GQklUX18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V U0ZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VTRlJBQ1RfTUlO X18gMC4wVUhSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VTRlJBQ1RfTUFYX18gMFhG RlAtOFVIUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VU0ZSQUNUX0VQU0lMT05fXyAw eDFQLThVSFIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRlJBQ1RfRkJJVF9fIDE1CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0ZSQUNUX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0ZSQUNUX01JTl9fICgtMC41Ui0wLjVSKQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19GUkFDVF9NQVhfXyAwWDdGRkZQLTE1UgojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19GUkFDVF9FUFNJTE9OX18gMHgxUC0xNVIKIyAwICI8YnVpbHQtaW4+IgojZGVm aW5lIF9fVUZSQUNUX0ZCSVRfXyAxNgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VRlJB Q1RfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUZSQUNUX01JTl9fIDAu MFVSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VGUkFDVF9NQVhfXyAwWEZGRkZQLTE2 VVIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUZSQUNUX0VQU0lMT05fXyAweDFQLTE2 VVIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTEZSQUNUX0ZCSVRfXyAzMQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19MRlJBQ1RfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fTEZSQUNUX01JTl9fICgtMC41TFItMC41TFIpCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0xGUkFDVF9NQVhfXyAwWDdGRkZGRkZGUC0zMUxSCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX0xGUkFDVF9FUFNJTE9OX18gMHgxUC0zMUxSCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfX1VMRlJBQ1RfRkJJVF9fIDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1VMRlJBQ1RfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUxGUkFD VF9NSU5fXyAwLjBVTFIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUxGUkFDVF9NQVhf XyAwWEZGRkZGRkZGUC0zMlVMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTEZSQUNU X0VQU0lMT05fXyAweDFQLTMyVUxSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMRlJB Q1RfRkJJVF9fIDYzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMRlJBQ1RfSUJJVF9f IDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fTExGUkFDVF9NSU5fXyAoLTAuNUxMUi0w LjVMTFIpCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMRlJBQ1RfTUFYX18gMFg3RkZG RkZGRkZGRkZGRkZGUC02M0xMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MTEZSQUNU X0VQU0lMT05fXyAweDFQLTYzTExSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMTEZS QUNUX0ZCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTExGUkFDVF9JQklU X18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTExGUkFDVF9NSU5fXyAwLjBVTExS CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMTEZSQUNUX01BWF9fIDBYRkZGRkZGRkZG RkZGRkZGRlAtNjRVTExSCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMTEZSQUNUX0VQ U0lMT05fXyAweDFQLTY0VUxMUgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TQUNDVU1f RkJJVF9fIDcKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0FDQ1VNX0lCSVRfXyA4CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NBQ0NVTV9NSU5fXyAoLTBYMVA3SEstMFgxUDdI SykKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0FDQ1VNX01BWF9fIDBYN0ZGRlAtN0hL CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NBQ0NVTV9FUFNJTE9OX18gMHgxUC03SEsK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVNBQ0NVTV9GQklUX18gOAojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19VU0FDQ1VNX0lCSVRfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2Rl ZmluZSBfX1VTQUNDVU1fTUlOX18gMC4wVUhLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VTQUNDVU1fTUFYX18gMFhGRkZGUC04VUhLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VTQUNDVU1fRVBTSUxPTl9fIDB4MVAtOFVISwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19BQ0NVTV9GQklUX18gMTUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQUNDVU1fSUJJ VF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0FDQ1VNX01JTl9fICgtMFgxUDE1 Sy0wWDFQMTVLKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19BQ0NVTV9NQVhfXyAwWDdG RkZGRkZGUC0xNUsKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fQUNDVU1fRVBTSUxPTl9f IDB4MVAtMTVLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VBQ0NVTV9GQklUX18gMTYK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUFDQ1VNX0lCSVRfXyAxNgojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19VQUNDVU1fTUlOX18gMC4wVUsKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fVUFDQ1VNX01BWF9fIDBYRkZGRkZGRkZQLTE2VUsKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fVUFDQ1VNX0VQU0lMT05fXyAweDFQLTE2VUsKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fTEFDQ1VNX0ZCSVRfXyAzMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19MQUNDVU1fSUJJVF9fIDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xBQ0NVTV9N SU5fXyAoLTBYMVAzMUxLLTBYMVAzMUxLKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19M QUNDVU1fTUFYX18gMFg3RkZGRkZGRkZGRkZGRkZGUC0zMUxLCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0xBQ0NVTV9FUFNJTE9OX18gMHgxUC0zMUxLCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1VMQUNDVU1fRkJJVF9fIDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VMQUNDVU1fSUJJVF9fIDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMQUNDVU1f TUlOX18gMC4wVUxLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VMQUNDVU1fTUFYX18g MFhGRkZGRkZGRkZGRkZGRkZGUC0zMlVMSwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19V TEFDQ1VNX0VQU0lMT05fXyAweDFQLTMyVUxLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X0xMQUNDVU1fRkJJVF9fIDYzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMQUNDVU1f SUJJVF9fIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMQUNDVU1fTUlOX18gKC0w WDFQNjNMTEstMFgxUDYzTExLKQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19MTEFDQ1VN X01BWF9fIDBYN0ZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZQLTYzTExLCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX0xMQUNDVU1fRVBTSUxPTl9fIDB4MVAtNjNMTEsKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVUxMQUNDVU1fRkJJVF9fIDY0CiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX1VMTEFDQ1VNX0lCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19VTExBQ0NVTV9NSU5fXyAwLjBVTExLCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmlu ZSBfX1VMTEFDQ1VNX01BWF9fIDBYRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZQ LTY0VUxMSwojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VTExBQ0NVTV9FUFNJTE9OX18g MHgxUC02NFVMTEsKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fUVFfRkJJVF9fIDcKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fUVFfSUJJVF9fIDAKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fSFFfRkJJVF9fIDE1CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0hRX0lC SVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NRX0ZCSVRfXyAzMQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19TUV9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19EUV9GQklUX18gNjMKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRFFfSUJJVF9f IDAKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVFFfRkJJVF9fIDEyNwojIDAgIjxidWls dC1pbj4iCiNkZWZpbmUgX19UUV9JQklUX18gMAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19VUVFfRkJJVF9fIDgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVFRX0lCSVRfXyAw CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VIUV9GQklUX18gMTYKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fVUhRX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VTUV9GQklUX18gMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVNRX0lCSVRfXyAw CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VEUV9GQklUX18gNjQKIyAwICI8YnVpbHQt aW4+IgojZGVmaW5lIF9fVURRX0lCSVRfXyAwCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1VUUV9GQklUX18gMTI4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VUUV9JQklUX18g MAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19IQV9GQklUX18gNwojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19IQV9JQklUX18gOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19T QV9GQklUX18gMTUKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fU0FfSUJJVF9fIDE2CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0RBX0ZCSVRfXyAzMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19EQV9JQklUX18gMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVEFf RkJJVF9fIDYzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1RBX0lCSVRfXyA2NAojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19VSEFfRkJJVF9fIDgKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fVUhBX0lCSVRfXyA4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1VTQV9G QklUX18gMTYKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVNBX0lCSVRfXyAxNgojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19VREFfRkJJVF9fIDMyCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX1VEQV9JQklUX18gMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fVVRB X0ZCSVRfXyA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19VVEFfSUJJVF9fIDY0CiMg MCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1JFR0lTVEVSX1BSRUZJWF9fICQKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fVVNFUl9MQUJFTF9QUkVGSVhfXyAKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9fR05VQ19HTlVfSU5MSU5FX18gMQojIDAgIjxidWlsdC1pbj4iCiNkZWZp bmUgX19TVFJJQ1RfQU5TSV9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0hB VkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzEgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfMiAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfX0dDQ19IQVZFX1NZTkNfQ09NUEFSRV9BTkRfU1dBUF80IDEKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fR0NDX0hBVkVfU1lOQ19DT01QQVJFX0FORF9TV0FQXzggMQoj IDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfQVRPTUlDX0JPT0xfTE9DS19GUkVFIDIK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19DSEFSX0xPQ0tfRlJFRSAy CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19BVE9NSUNfQ0hBUjE2X1RfTE9DS19G UkVFIDIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19DSEFSMzJfVF9M T0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfQVRPTUlDX1dDSEFS X1RfTE9DS19GUkVFIDIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01JQ19T SE9SVF9MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfQVRPTUlD X0lOVF9MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfQVRPTUlD X0xPTkdfTE9DS19GUkVFIDIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0NDX0FUT01J Q19MTE9OR19MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19HQ0NfQVRP TUlDX1RFU1RfQU5EX1NFVF9UUlVFVkFMIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f R0NDX0RFU1RSVUNUSVZFX1NJWkUgNjQKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fR0ND X0NPTlNUUlVDVElWRV9TSVpFIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX0dDQ19B VE9NSUNfUE9JTlRFUl9MT0NLX0ZSRUUgMgojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19I QVZFX1NQRUNVTEFUSU9OX1NBRkVfVkFMVUUgMQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUg X19HQ0NfSEFWRV9EV0FSRjJfQ0ZJX0FTTSAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf X1BSQUdNQV9SRURFRklORV9FWFROQU1FIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9f U0laRU9GX0lOVDEyOF9fIDE2CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX1NJWkVPRl9X Q0hBUl9UX18gNAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfV0lOVF9UX18g NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19TSVpFT0ZfUFRSRElGRl9UX18gOAojIDAg IjxidWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfXyAxCiMgMCAiPGJ1aWx0LWluPiIK I2RlZmluZSBfTE9PTkdBUkNIX0FSQ0hfTE9PTkdBUkNINjQgMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX0xPT05HQVJDSF9BUkNIICJsb29uZ2FyY2g2NCIKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9MT09OR0FSQ0hfVFVORV9MT09OR0FSQ0g2NCAxCiMgMCAiPGJ1aWx0LWlu PiIKI2RlZmluZSBfTE9PTkdBUkNIX1RVTkUgImxvb25nYXJjaDY0IgojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19MT09OR0FSQ0hfQVJDSF9MT09OR0FSQ0g2NCAxCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9hcmNoICJsb29uZ2FyY2g2NCIKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fTE9PTkdBUkNIX1RVTkVfTE9PTkdBUkNINjQgMQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfdHVuZSAibG9vbmdhcmNoNjQiCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9ncmxlbiA2NAojIDAgIjxidWlsdC1p bj4iCiNkZWZpbmUgX19sb29uZ2FyY2g2NCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBf QUJJTFA2NCAzCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX1NJTSBfQUJJ TFA2NAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfbHA2NCAxCiMgMCAi PGJ1aWx0LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9kb3VibGVfZmxvYXQgMQojIDAgIjxi dWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfaGFyZF9mbG9hdCAxCiMgMCAiPGJ1aWx0 LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9mcmxlbiA2NAojIDAgIjxidWlsdC1pbj4iCiNk ZWZpbmUgX19sb29uZ2FyY2hfc2ltZCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xv b25nYXJjaF9zeCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xvb25nYXJjaF9hc3gg MQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19sb29uZ2FyY2hfc2ltZF93aWR0aCAyNTYK IyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRkxPQVQxMjhfVFlQRV9fIDEKIyAwICI8YnVp bHQtaW4+IgojZGVmaW5lIF9fYnVpbHRpbl9mYWJzcSBfX2J1aWx0aW5fZmFic2YxMjgKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fYnVpbHRpbl9jb3B5c2lnbnEgX19idWlsdGluX2Nv cHlzaWduZjEyOAojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX19idWlsdGluX25hbnEgX19i dWlsdGluX25hbmYxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fYnVpbHRpbl9uYW5z cSBfX2J1aWx0aW5fbmFuc2YxMjgKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fYnVpbHRp bl9pbmZxIF9fYnVpbHRpbl9pbmZmMTI4CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2J1 aWx0aW5faHVnZV92YWxxIF9fYnVpbHRpbl9odWdlX3ZhbGYxMjgKIyAwICI8YnVpbHQtaW4+ IgojZGVmaW5lIF9MT09OR0FSQ0hfU1pJTlQgMzIKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5l IF9MT09OR0FSQ0hfU1pMT05HIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdB UkNIX1NaUFRSIDY0CiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX0ZQU0VU IDMyCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfTE9PTkdBUkNIX1NQRlBTRVQgMzIKIyAw ICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fZ251X2xpbnV4X18gMQojIDAgIjxidWlsdC1pbj4i CiNkZWZpbmUgX19saW51eCAxCiMgMCAiPGJ1aWx0LWluPiIKI2RlZmluZSBfX2xpbnV4X18g MQojIDAgIjxidWlsdC1pbj4iCiNkZWZpbmUgX191bml4IDEKIyAwICI8YnVpbHQtaW4+Igoj ZGVmaW5lIF9fdW5peF9fIDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9HTlVfU09VUkNF IDEKIyAwICI8YnVpbHQtaW4+IgojZGVmaW5lIF9fRUxGX18gMQojIDAgIjxjb21tYW5kLWxp bmU+IgojZGVmaW5lIF9HTlVfU09VUkNFIDEKIyAwICI8Y29tbWFuZC1saW5lPiIKI2RlZmlu ZSBTUEVDX0NQVSAxCiMgMCAiPGNvbW1hbmQtbGluZT4iCiNkZWZpbmUgTkRFQlVHIDEKIyAw ICI8Y29tbWFuZC1saW5lPiIKI2RlZmluZSBTUEVDX0NQVV9MUDY0IDEKIyAwICI8Y29tbWFu ZC1saW5lPiIKIyAxICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMSAzIDQKIyAxOSAi L3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDMgNAojZGVmaW5lIF9TVERDX1BSRURFRl9I IDEKIyAzOCAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDMgNAojZGVmaW5lIF9fU1RE Q19JRUNfNTU5X18gMQojZGVmaW5lIF9fU1REQ19JRUNfNjA1NTlfQkZQX18gMjAxNDA0TAoj IDQ4ICIvdXNyL2luY2x1ZGUvc3RkYy1wcmVkZWYuaCIgMyA0CiNkZWZpbmUgX19TVERDX0lF Q181NTlfQ09NUExFWF9fIDEKI2RlZmluZSBfX1NURENfSUVDXzYwNTU5X0NPTVBMRVhfXyAy MDE0MDRMCiMgNjIgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAzIDQKI2RlZmluZSBf X1NURENfSVNPXzEwNjQ2X18gMjAxNzA2TAojIDAgIjxjb21tYW5kLWxpbmU+IiAyCiMgMSAi ZXhhbXBsZS5jYyIKIyAyMCAiZXhhbXBsZS5jYyIKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDEgMyA0CiMgMzQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgX0FT U0VSVF9IIDEKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMuaCIgMSAzIDQKIyAxOSAiL3Vz ci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9GRUFUVVJFU19IIDEKIyAxMjYg Ii91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI3VuZGVmIF9fVVNFX0lTT0MxMQojdW5k ZWYgX19VU0VfSVNPQzk5CiN1bmRlZiBfX1VTRV9JU09DOTUKI3VuZGVmIF9fVVNFX0lTT0NY WDExCiN1bmRlZiBfX1VTRV9QT1NJWAojdW5kZWYgX19VU0VfUE9TSVgyCiN1bmRlZiBfX1VT RV9QT1NJWDE5OTMwOQojdW5kZWYgX19VU0VfUE9TSVgxOTk1MDYKI3VuZGVmIF9fVVNFX1hP UEVOCiN1bmRlZiBfX1VTRV9YT1BFTl9FWFRFTkRFRAojdW5kZWYgX19VU0VfVU5JWDk4CiN1 bmRlZiBfX1VTRV9YT1BFTjJLCiN1bmRlZiBfX1VTRV9YT1BFTjJLWFNJCiN1bmRlZiBfX1VT RV9YT1BFTjJLOAojdW5kZWYgX19VU0VfWE9QRU4ySzhYU0kKI3VuZGVmIF9fVVNFX0xBUkdF RklMRQojdW5kZWYgX19VU0VfTEFSR0VGSUxFNjQKI3VuZGVmIF9fVVNFX0ZJTEVfT0ZGU0VU NjQKI3VuZGVmIF9fVVNFX01JU0MKI3VuZGVmIF9fVVNFX0FURklMRQojdW5kZWYgX19VU0Vf RFlOQU1JQ19TVEFDS19TSVpFCiN1bmRlZiBfX1VTRV9HTlUKI3VuZGVmIF9fVVNFX0ZPUlRJ RllfTEVWRUwKI3VuZGVmIF9fS0VSTkVMX1NUUklDVF9OQU1FUwojdW5kZWYgX19HTElCQ19V U0VfSVNPQzJYCiN1bmRlZiBfX0dMSUJDX1VTRV9ERVBSRUNBVEVEX0dFVFMKI3VuZGVmIF9f R0xJQkNfVVNFX0RFUFJFQ0FURURfU0NBTkYKCgoKCiNkZWZpbmUgX19LRVJORUxfU1RSSUNU X05BTUVTIAojIDE2OCAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojZGVmaW5lIF9f R05VQ19QUkVSRVEobWFqLG1pbikgKChfX0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1Jf XyA+PSAoKG1haikgPDwgMTYpICsgKG1pbikpCiMgMTgyICIvdXNyL2luY2x1ZGUvZmVhdHVy ZXMuaCIgMyA0CiNkZWZpbmUgX19nbGliY19jbGFuZ19wcmVyZXEobWFqLG1pbikgMAoKCgoj ZGVmaW5lIF9fR0xJQkNfVVNFKEYpIF9fR0xJQkNfVVNFXyAjIyBGCiMgMjAxICIvdXNyL2lu Y2x1ZGUvZmVhdHVyZXMuaCIgMyA0CiN1bmRlZiBfSVNPQzk1X1NPVVJDRQojZGVmaW5lIF9J U09DOTVfU09VUkNFIDEKI3VuZGVmIF9JU09DOTlfU09VUkNFCiNkZWZpbmUgX0lTT0M5OV9T T1VSQ0UgMQojdW5kZWYgX0lTT0MxMV9TT1VSQ0UKI2RlZmluZSBfSVNPQzExX1NPVVJDRSAx CiN1bmRlZiBfSVNPQzJYX1NPVVJDRQojZGVmaW5lIF9JU09DMlhfU09VUkNFIDEKI3VuZGVm IF9QT1NJWF9TT1VSQ0UKI2RlZmluZSBfUE9TSVhfU09VUkNFIDEKI3VuZGVmIF9QT1NJWF9D X1NPVVJDRQojZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAyMDA4MDlMCiN1bmRlZiBfWE9QRU5f U09VUkNFCiNkZWZpbmUgX1hPUEVOX1NPVVJDRSA3MDAKI3VuZGVmIF9YT1BFTl9TT1VSQ0Vf RVhURU5ERUQKI2RlZmluZSBfWE9QRU5fU09VUkNFX0VYVEVOREVEIDEKI3VuZGVmIF9MQVJH RUZJTEU2NF9TT1VSQ0UKI2RlZmluZSBfTEFSR0VGSUxFNjRfU09VUkNFIDEKI3VuZGVmIF9E RUZBVUxUX1NPVVJDRQojZGVmaW5lIF9ERUZBVUxUX1NPVVJDRSAxCiN1bmRlZiBfQVRGSUxF X1NPVVJDRQojZGVmaW5lIF9BVEZJTEVfU09VUkNFIDEKI3VuZGVmIF9EWU5BTUlDX1NUQUNL X1NJWkVfU09VUkNFCiNkZWZpbmUgX0RZTkFNSUNfU1RBQ0tfU0laRV9TT1VSQ0UgMQojIDIz NSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX0RFRkFVTFRfU09VUkNF CiNkZWZpbmUgX0RFRkFVTFRfU09VUkNFIDEKCgoKCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lT T0MyWCAxCgoKCgoKCgojZGVmaW5lIF9fVVNFX0lTT0MxMSAxCgoKCgoKCiNkZWZpbmUgX19V U0VfSVNPQzk5IDEKCgoKCgoKI2RlZmluZSBfX1VTRV9JU09DOTUgMQojIDI4NyAiL3Vzci9p bmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX1BPU0lYX1NPVVJDRQojZGVmaW5lIF9Q T1NJWF9TT1VSQ0UgMQojdW5kZWYgX1BPU0lYX0NfU09VUkNFCiNkZWZpbmUgX1BPU0lYX0Nf U09VUkNFIDIwMDgwOUwKIyAzMjUgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI2Rl ZmluZSBfX1VTRV9QT1NJWCAxCgoKCiNkZWZpbmUgX19VU0VfUE9TSVgyIDEKCgoKI2RlZmlu ZSBfX1VTRV9QT1NJWDE5OTMwOSAxCgoKCiNkZWZpbmUgX19VU0VfUE9TSVgxOTk1MDYgMQoK CgojZGVmaW5lIF9fVVNFX1hPUEVOMksgMQojdW5kZWYgX19VU0VfSVNPQzk1CiNkZWZpbmUg X19VU0VfSVNPQzk1IDEKI3VuZGVmIF9fVVNFX0lTT0M5OQojZGVmaW5lIF9fVVNFX0lTT0M5 OSAxCgoKCiNkZWZpbmUgX19VU0VfWE9QRU4ySzggMQojdW5kZWYgX0FURklMRV9TT1VSQ0UK I2RlZmluZSBfQVRGSUxFX1NPVVJDRSAxCgoKCiNkZWZpbmUgX19VU0VfWE9QRU4gMQoKI2Rl ZmluZSBfX1VTRV9YT1BFTl9FWFRFTkRFRCAxCiNkZWZpbmUgX19VU0VfVU5JWDk4IDEKI3Vu ZGVmIF9MQVJHRUZJTEVfU09VUkNFCiNkZWZpbmUgX0xBUkdFRklMRV9TT1VSQ0UgMQoKCiNk ZWZpbmUgX19VU0VfWE9QRU4ySzggMQojZGVmaW5lIF9fVVNFX1hPUEVOMks4WFNJIDEKCiNk ZWZpbmUgX19VU0VfWE9QRU4ySyAxCiNkZWZpbmUgX19VU0VfWE9QRU4yS1hTSSAxCiN1bmRl ZiBfX1VTRV9JU09DOTUKI2RlZmluZSBfX1VTRV9JU09DOTUgMQojdW5kZWYgX19VU0VfSVNP Qzk5CiNkZWZpbmUgX19VU0VfSVNPQzk5IDEKIyAzODEgIi91c3IvaW5jbHVkZS9mZWF0dXJl cy5oIiAzIDQKI2RlZmluZSBfX1VTRV9MQVJHRUZJTEUgMQoKCgojZGVmaW5lIF9fVVNFX0xB UkdFRklMRTY0IDEKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvZmVhdHVyZXMtdGltZTY0Lmgi IDEgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy10aW1lNjQuaCIgMyA0CiMgMSAi L3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAxOCAiL3Vzci9pbmNsdWRl L2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUgX19XT1JEU0laRSA2NAojZGVmaW5lIF9f V09SRFNJWkVfVElNRTY0X0NPTVBBVDMyIDAKIyAyMSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVz LXRpbWU2NC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDEg MyA0CiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWVzaXplLmgiIDMgNAojZGVmaW5lIF9f VElNRVNJWkUgNjQKIyAyMiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLXRpbWU2NC5oIiAyIDMg NAojIDM5MyAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDIgMyA0CgoKI2RlZmluZSBfX1VT RV9NSVNDIDEKCgoKI2RlZmluZSBfX1VTRV9BVEZJTEUgMQoKCgojZGVmaW5lIF9fVVNFX0RZ TkFNSUNfU1RBQ0tfU0laRSAxCgoKCiNkZWZpbmUgX19VU0VfR05VIDEKIyA0MzIgIi91c3Iv aW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI2RlZmluZSBfX1VTRV9GT1JUSUZZX0xFVkVMIDAK IyA0NDIgIi91c3IvaW5jbHVkZS9mZWF0dXJlcy5oIiAzIDQKI2RlZmluZSBfX0dMSUJDX1VT RV9ERVBSRUNBVEVEX0dFVFMgMQojIDQ2MSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMg NAojZGVmaW5lIF9fR0xJQkNfVVNFX0RFUFJFQ0FURURfU0NBTkYgMQojIDQ3NiAiL3Vzci9p bmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAojdW5kZWYgX19HTlVfTElCUkFSWV9fCiNkZWZpbmUg X19HTlVfTElCUkFSWV9fIDYKCgoKI2RlZmluZSBfX0dMSUJDX18gMgojZGVmaW5lIF9fR0xJ QkNfTUlOT1JfXyAzNQoKI2RlZmluZSBfX0dMSUJDX1BSRVJFUShtYWosbWluKSAoKF9fR0xJ QkNfXyA8PCAxNikgKyBfX0dMSUJDX01JTk9SX18gPj0gKChtYWopIDw8IDE2KSArIChtaW4p KQoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAxIDMgNAojIDIwICIvdXNy L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9TWVNfQ0RFRlNfSCAxCiMgMzUg Ii91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiN1bmRlZiBfX1AKI3VuZGVmIF9fUE1U CiMgNDUgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19nbGliY19o YXNfYXR0cmlidXRlKGF0dHIpIF9faGFzX2F0dHJpYnV0ZSAoYXR0cikKCgoKCiNkZWZpbmUg X19nbGliY19oYXNfYnVpbHRpbihuYW1lKSBfX2hhc19idWlsdGluIChuYW1lKQoKCgoKI2Rl ZmluZSBfX2dsaWJjX2hhc19leHRlbnNpb24oZXh0KSBfX2hhc19leHRlbnNpb24gKGV4dCkK IyA2NSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX0xFQUYgLCBf X2xlYWZfXwojZGVmaW5lIF9fTEVBRl9BVFRSIF9fYXR0cmlidXRlX18gKChfX2xlYWZfXykp CiMgODggIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19USFJPVyB0 aHJvdyAoKQoKI2RlZmluZSBfX1RIUk9XTkwgX19USFJPVwojZGVmaW5lIF9fTlRIKGZjdCkg X19MRUFGX0FUVFIgZmN0IF9fVEhST1cKI2RlZmluZSBfX05USE5MKGZjdCkgZmN0IF9fVEhS T1cKIyAxMTggIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19QKGFy Z3MpIGFyZ3MKI2RlZmluZSBfX1BNVChhcmdzKSBhcmdzCgoKCgojZGVmaW5lIF9fQ09OQ0FU KHgseSkgeCAjIyB5CiNkZWZpbmUgX19TVFJJTkcoeCkgI3gKCgojZGVmaW5lIF9fcHRyX3Qg dm9pZCAqCgoKCgojZGVmaW5lIF9fQkVHSU5fREVDTFMgZXh0ZXJuICJDIiB7CiNkZWZpbmUg X19FTkRfREVDTFMgfQoKCgoKCgoKI2RlZmluZSBfX2JvcyhwdHIpIF9fYnVpbHRpbl9vYmpl Y3Rfc2l6ZSAocHRyLCBfX1VTRV9GT1JUSUZZX0xFVkVMID4gMSkKI2RlZmluZSBfX2JvczAo cHRyKSBfX2J1aWx0aW5fb2JqZWN0X3NpemUgKHB0ciwgMCkKCgoKCgoKCiNkZWZpbmUgX19n bGliY19vYmpzaXplMChfX28pIF9fYm9zMCAoX19vKQojZGVmaW5lIF9fZ2xpYmNfb2Jqc2l6 ZShfX28pIF9fYm9zIChfX28pCgoKCgoKCiNkZWZpbmUgX19nbGliY19zYWZlX2xlbl9jb25k KF9fbCxfX3MsX19vc3opICgoX19sKSA8PSAoX19vc3opIC8gKF9fcykpCiNkZWZpbmUgX19n bGliY191bnNpZ25lZF9vcl9wb3NpdGl2ZShfX2wpICgoX190eXBlb2YgKF9fbCkpIDAgPCAo X190eXBlb2YgKF9fbCkpIC0xIHx8IChfX2J1aWx0aW5fY29uc3RhbnRfcCAoX19sKSAmJiAo X19sKSA+IDApKQoKCgoKCiNkZWZpbmUgX19nbGliY19zYWZlX29yX3Vua25vd25fbGVuKF9f bCxfX3MsX19vc3opICgoX19idWlsdGluX2NvbnN0YW50X3AgKF9fb3N6KSAmJiAoX19vc3op ID09IChfX1NJWkVfVFlQRV9fKSAtMSkgfHwgKF9fZ2xpYmNfdW5zaWduZWRfb3JfcG9zaXRp dmUgKF9fbCkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKF9fZ2xpYmNfc2FmZV9sZW5fY29u ZCAoKF9fU0laRV9UWVBFX18pIChfX2wpLCAoX19zKSwgKF9fb3N6KSkpICYmIF9fZ2xpYmNf c2FmZV9sZW5fY29uZCAoKF9fU0laRV9UWVBFX18pIChfX2wpLCAoX19zKSwgKF9fb3N6KSkp KQojIDE3NiAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2dsaWJj X3Vuc2FmZV9sZW4oX19sLF9fcyxfX29zeikgKF9fZ2xpYmNfdW5zaWduZWRfb3JfcG9zaXRp dmUgKF9fbCkgJiYgX19idWlsdGluX2NvbnN0YW50X3AgKF9fZ2xpYmNfc2FmZV9sZW5fY29u ZCAoKF9fU0laRV9UWVBFX18pIChfX2wpLCBfX3MsIF9fb3N6KSkgJiYgIV9fZ2xpYmNfc2Fm ZV9sZW5fY29uZCAoKF9fU0laRV9UWVBFX18pIChfX2wpLCBfX3MsIF9fb3N6KSkKIyAxODUg Ii91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19nbGliY19mb3J0aWZ5 KGYsX19sLF9fcyxfX29zeiwuLi4pIChfX2dsaWJjX3NhZmVfb3JfdW5rbm93bl9sZW4gKF9f bCwgX19zLCBfX29zeikgPyBfXyAjIyBmICMjIF9hbGlhcyAoX19WQV9BUkdTX18pIDogKF9f Z2xpYmNfdW5zYWZlX2xlbiAoX19sLCBfX3MsIF9fb3N6KSA/IF9fICMjIGYgIyMgX2Noa193 YXJuIChfX1ZBX0FSR1NfXywgX19vc3opIDogX18gIyMgZiAjIyBfY2hrIChfX1ZBX0FSR1Nf XywgX19vc3opKSkKIyAxOTUgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZp bmUgX19nbGliY19mb3J0aWZ5X24oZixfX2wsX19zLF9fb3N6LC4uLikgKF9fZ2xpYmNfc2Fm ZV9vcl91bmtub3duX2xlbiAoX19sLCBfX3MsIF9fb3N6KSA/IF9fICMjIGYgIyMgX2FsaWFz IChfX1ZBX0FSR1NfXykgOiAoX19nbGliY191bnNhZmVfbGVuIChfX2wsIF9fcywgX19vc3op ID8gX18gIyMgZiAjIyBfY2hrX3dhcm4gKF9fVkFfQVJHU19fLCAoX19vc3opIC8gKF9fcykp IDogX18gIyMgZiAjIyBfY2hrIChfX1ZBX0FSR1NfXywgKF9fb3N6KSAvIChfX3MpKSkpCgoK CgoKCgojZGVmaW5lIF9fd2FybmF0dHIobXNnKSBfX2F0dHJpYnV0ZV9fKChfX3dhcm5pbmdf XyAobXNnKSkpCiNkZWZpbmUgX19lcnJvcmRlY2wobmFtZSxtc2cpIGV4dGVybiB2b2lkIG5h bWUgKHZvaWQpIF9fYXR0cmlidXRlX18oKF9fZXJyb3JfXyAobXNnKSkpCiMgMjIxICIvdXNy L2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZmxleGFyciBbXQojZGVmaW5l IF9fZ2xpYmNfYzk5X2ZsZXhhcnJfYXZhaWxhYmxlIDEKIyAyNDcgIi91c3IvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19SRURJUkVDVChuYW1lLHByb3RvLGFsaWFzKSBu YW1lIHByb3RvIF9fYXNtX18gKF9fQVNNTkFNRSAoI2FsaWFzKSkKCiNkZWZpbmUgX19SRURJ UkVDVF9OVEgobmFtZSxwcm90byxhbGlhcykgbmFtZSBwcm90byBfX1RIUk9XIF9fYXNtX18g KF9fQVNNTkFNRSAoI2FsaWFzKSkKCiNkZWZpbmUgX19SRURJUkVDVF9OVEhOTChuYW1lLHBy b3RvLGFsaWFzKSBuYW1lIHByb3RvIF9fVEhST1dOTCBfX2FzbV9fIChfX0FTTU5BTUUgKCNh bGlhcykpCgoKCgoKCgojZGVmaW5lIF9fQVNNTkFNRShjbmFtZSkgX19BU01OQU1FMiAoX19V U0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKI2RlZmluZSBfX0FTTU5BTUUyKHByZWZpeCxj bmFtZSkgX19TVFJJTkcgKHByZWZpeCkgY25hbWUKIyAyODEgIi91c3IvaW5jbHVkZS9zeXMv Y2RlZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVfbWFsbG9jX18gX19hdHRyaWJ1dGVf XyAoKF9fbWFsbG9jX18pKQoKCgoKCgoKI2RlZmluZSBfX2F0dHJpYnV0ZV9hbGxvY19zaXpl X18ocGFyYW1zKSBfX2F0dHJpYnV0ZV9fICgoX19hbGxvY19zaXplX18gcGFyYW1zKSkKIyAy OTggIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVf YWxsb2NfYWxpZ25fXyhwYXJhbSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2NfYWxpZ25fXyBw YXJhbSkpCiMgMzA4ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9f YXR0cmlidXRlX3B1cmVfXyBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKQoKCgoKCgojZGVm aW5lIF9fYXR0cmlidXRlX2NvbnN0X18gX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpCgoK CgoKI2RlZmluZSBfX2F0dHJpYnV0ZV9tYXliZV91bnVzZWRfXyBfX2F0dHJpYnV0ZV9fICgo X191bnVzZWRfXykpCiMgMzMwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVm aW5lIF9fYXR0cmlidXRlX3VzZWRfXyBfX2F0dHJpYnV0ZV9fICgoX191c2VkX18pKQojZGVm aW5lIF9fYXR0cmlidXRlX25vaW5saW5lX18gX19hdHRyaWJ1dGVfXyAoKF9fbm9pbmxpbmVf XykpCgoKCgoKCgojZGVmaW5lIF9fYXR0cmlidXRlX2RlcHJlY2F0ZWRfXyBfX2F0dHJpYnV0 ZV9fICgoX19kZXByZWNhdGVkX18pKQojIDM0OSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5o IiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9kZXByZWNhdGVkX21zZ19fKG1zZykgX19hdHRy aWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fIChtc2cpKSkKIyAzNjIgIi91c3IvaW5jbHVkZS9z eXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpIF9f YXR0cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQojIDM3MiAiL3Vzci9pbmNsdWRl L3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9mb3JtYXRfc3RyZm1vbl9f KGEsYikgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fc3RyZm1vbl9fLCBhLCBiKSkp CiMgMzg0ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cmli dXRlX25vbm51bGxfXyhwYXJhbXMpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyBwYXJh bXMpKQoKCgoKCiNkZWZpbmUgX19ub25udWxsKHBhcmFtcykgX19hdHRyaWJ1dGVfbm9ubnVs bF9fIChwYXJhbXMpCgoKCgoKCiNkZWZpbmUgX19yZXR1cm5zX25vbm51bGwgX19hdHRyaWJ1 dGVfXyAoKF9fcmV0dXJuc19ub25udWxsX18pKQojIDQwNiAiL3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV93YXJuX3VudXNlZF9yZXN1bHRfXyBf X2F0dHJpYnV0ZV9fICgoX193YXJuX3VudXNlZF9yZXN1bHRfXykpCiMgNDE1ICIvdXNyL2lu Y2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fd3VyIAoKCgoKCgoKI3VuZGVmIF9f YWx3YXlzX2lubGluZQojZGVmaW5lIF9fYWx3YXlzX2lubGluZSBfX2lubGluZSBfX2F0dHJp YnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18pKQojIDQzMyAiL3Vzci9pbmNsdWRlL3N5cy9j ZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9hcnRpZmljaWFsX18gX19hdHRyaWJ1 dGVfXyAoKF9fYXJ0aWZpY2lhbF9fKSkKIyA0NTEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMu aCIgMyA0CiNkZWZpbmUgX19leHRlcm5faW5saW5lIGV4dGVybiBfX2lubGluZSBfX2F0dHJp YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKQojZGVmaW5lIF9fZXh0ZXJuX2Fsd2F5c19pbmxp bmUgZXh0ZXJuIF9fYWx3YXlzX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5l X18pKQojIDQ2MSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2Zv cnRpZnlfZnVuY3Rpb24gX19leHRlcm5fYWx3YXlzX2lubGluZSBfX2F0dHJpYnV0ZV9hcnRp ZmljaWFsX18KCgoKCgojZGVmaW5lIF9fdmFfYXJnX3BhY2soKSBfX2J1aWx0aW5fdmFfYXJn X3BhY2sgKCkKI2RlZmluZSBfX3ZhX2FyZ19wYWNrX2xlbigpIF9fYnVpbHRpbl92YV9hcmdf cGFja19sZW4gKCkKIyA0OTggIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZp bmUgX19yZXN0cmljdF9hcnIgCiMgNTEwICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMg NAojZGVmaW5lIF9fZ2xpYmNfdW5saWtlbHkoY29uZCkgX19idWlsdGluX2V4cGVjdCAoKGNv bmQpLCAwKQojZGVmaW5lIF9fZ2xpYmNfbGlrZWx5KGNvbmQpIF9fYnVpbHRpbl9leHBlY3Qg KChjb25kKSwgMSkKIyA1MzIgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZp bmUgX19hdHRyaWJ1dGVfbm9uc3RyaW5nX18gX19hdHRyaWJ1dGVfXyAoKF9fbm9uc3RyaW5n X18pKQoKCgoKCiN1bmRlZiBfX2F0dHJpYnV0ZV9jb3B5X18KCgoKI2RlZmluZSBfX2F0dHJp YnV0ZV9jb3B5X18oYXJnKSBfX2F0dHJpYnV0ZV9fICgoX19jb3B5X18gKGFyZykpKQojIDU1 OSAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0 cy93b3Jkc2l6ZS5oIiAxIDMgNAojIDE4ICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5o IiAzIDQKI2RlZmluZSBfX1dPUkRTSVpFIDY0CiNkZWZpbmUgX19XT1JEU0laRV9USU1FNjRf Q09NUEFUMzIgMAojIDU2MCAiL3Vzci9pbmNsdWRlL3N5cy9jZGVmcy5oIiAyIDMgNAojIDEg Ii91c3IvaW5jbHVkZS9iaXRzL2xvbmctZG91YmxlLmgiIDEgMyA0CiMgMjEgIi91c3IvaW5j bHVkZS9iaXRzL2xvbmctZG91YmxlLmgiIDMgNAojZGVmaW5lIF9fTERPVUJMRV9SRURJUkVD VFNfVE9fRkxPQVQxMjhfQUJJIDAKIyA1NjEgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIg MiAzIDQKIyA2MTYgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUgX19M REJMX1JFRElSMShuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvCiNkZWZpbmUgX19MREJM X1JFRElSKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8KI2RlZmluZSBfX0xEQkxfUkVESVIxX05U SChuYW1lLHByb3RvLGFsaWFzKSBuYW1lIHByb3RvIF9fVEhST1cKI2RlZmluZSBfX0xEQkxf UkVESVJfTlRIKG5hbWUscHJvdG8pIG5hbWUgcHJvdG8gX19USFJPVwojZGVmaW5lIF9fTERC TF9SRURJUjJfREVDTChuYW1lKSAKI2RlZmluZSBfX0xEQkxfUkVESVJfREVDTChuYW1lKSAK CiNkZWZpbmUgX19SRURJUkVDVF9MREJMKG5hbWUscHJvdG8sYWxpYXMpIF9fUkVESVJFQ1Qg KG5hbWUsIHByb3RvLCBhbGlhcykKI2RlZmluZSBfX1JFRElSRUNUX05USF9MREJMKG5hbWUs cHJvdG8sYWxpYXMpIF9fUkVESVJFQ1RfTlRIIChuYW1lLCBwcm90bywgYWxpYXMpCiMgNjM1 ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fZ2xpYmNfbWFjcm9f d2FybmluZzEobWVzc2FnZSkgX1ByYWdtYSAoI21lc3NhZ2UpCiNkZWZpbmUgX19nbGliY19t YWNyb193YXJuaW5nKG1lc3NhZ2UpIF9fZ2xpYmNfbWFjcm9fd2FybmluZzEgKEdDQyB3YXJu aW5nIG1lc3NhZ2UpCiMgNjU2ICIvdXNyL2luY2x1ZGUvc3lzL2NkZWZzLmgiIDMgNAojZGVm aW5lIF9fSEFWRV9HRU5FUklDX1NFTEVDVElPTiAwCiMgNjY1ICIvdXNyL2luY2x1ZGUvc3lz L2NkZWZzLmgiIDMgNAojZGVmaW5lIF9fYXR0cl9hY2Nlc3MoeCkgX19hdHRyaWJ1dGVfXyAo KF9fYWNjZXNzX18geCkpCgoKCgoKCgojZGVmaW5lIF9fZm9ydGlmaWVkX2F0dHJfYWNjZXNz KGEsbyxzKSBfX2F0dHJfYWNjZXNzICgoYSwgbywgcykpCgoKI2RlZmluZSBfX2F0dHJfYWNj ZXNzX25vbmUoYXJnbm8pIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX25vbmVfXywg YXJnbm8pKSkKIyA2ODkgIi91c3IvaW5jbHVkZS9zeXMvY2RlZnMuaCIgMyA0CiNkZWZpbmUg X19hdHRyX2RlYWxsb2MoZGVhbGxvYyxhcmdubykgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9j X18gKGRlYWxsb2MsIGFyZ25vKSkpCgojZGVmaW5lIF9fYXR0cl9kZWFsbG9jX2ZyZWUgX19h dHRyX2RlYWxsb2MgKF9fYnVpbHRpbl9mcmVlLCAxKQojIDcwMCAiL3Vzci9pbmNsdWRlL3N5 cy9jZGVmcy5oIiAzIDQKI2RlZmluZSBfX2F0dHJpYnV0ZV9yZXR1cm5zX3R3aWNlX18gX19h dHRyaWJ1dGVfXyAoKF9fcmV0dXJuc190d2ljZV9fKSkKIyA0OTEgIi91c3IvaW5jbHVkZS9m ZWF0dXJlcy5oIiAyIDMgNAojIDUwNiAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgiIDMgNAoj ZGVmaW5lIF9fVVNFX0VYVEVSTl9JTkxJTkVTIDEKCgoKCgoKCiMgMSAiL3Vzci9pbmNsdWRl L2dudS9zdHVicy5oIiAxIDMgNAoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6 ZS5oIiAxIDMgNAojIDE4ICIvdXNyL2luY2x1ZGUvYml0cy93b3Jkc2l6ZS5oIiAzIDQKI2Rl ZmluZSBfX1dPUkRTSVpFIDY0CiNkZWZpbmUgX19XT1JEU0laRV9USU1FNjRfQ09NUEFUMzIg MAojIDYgIi91c3IvaW5jbHVkZS9nbnUvc3R1YnMuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5j bHVkZS9nbnUvc3R1YnMtbHA2NC5oIiAxIDMgNAojIDEwICIvdXNyL2luY2x1ZGUvZ251L3N0 dWJzLWxwNjQuaCIgMyA0CiNkZWZpbmUgX19zdHViX19fY29tcGF0X2JkZmx1c2ggCiNkZWZp bmUgX19zdHViX19fY29tcGF0X2NyZWF0ZV9tb2R1bGUgCiNkZWZpbmUgX19zdHViX19fY29t cGF0X2dldF9rZXJuZWxfc3ltcyAKI2RlZmluZSBfX3N0dWJfX19jb21wYXRfcXVlcnlfbW9k dWxlIAojZGVmaW5lIF9fc3R1Yl9fX2NvbXBhdF91c2VsaWIgCiNkZWZpbmUgX19zdHViX2No ZmxhZ3MgCiNkZWZpbmUgX19zdHViX2ZjaGZsYWdzIAojZGVmaW5lIF9fc3R1Yl9ndHR5IAoj ZGVmaW5lIF9fc3R1Yl9yZXZva2UgCiNkZWZpbmUgX19zdHViX3NldGxvZ2luIAojZGVmaW5l IF9fc3R1Yl9zaWdyZXR1cm4gCiNkZWZpbmUgX19zdHViX3N0dHkgCiMgOSAiL3Vzci9pbmNs dWRlL2dudS9zdHVicy5oIiAyIDMgNAojIDUxNSAiL3Vzci9pbmNsdWRlL2ZlYXR1cmVzLmgi IDIgMyA0CiMgMzYgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMiAzIDQKCgojZGVmaW5lIF9f QVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUv YXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNU ICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRf cGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjEgImV4YW1wbGUu Y2MiIDIKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL21hdGguaCIgMSAzCiMgMzQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbWF0aC5oIiAzCiNkZWZpbmUgX0dMSUJDWFhf TUFUSF9IIDEKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jbWF0aCIgMSAzCiMg MzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY21hdGgiIDMKICAgICAgIAojIDQwICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NtYXRoIiAzCgojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9yZXF1aXJlc19ob3N0ZWQuaCIgMSAzCiMgMjkgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9yZXF1aXJlc19ob3N0ZWQuaCIgMwojZGVmaW5lIF9S RVFVSVJFU19GUkVFU1RBTkRJTkdfSCAxCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDEgMwojIDMxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2Mr K2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ1hYX0NPTkZJR19IIDEKCiAgICAgICAK IyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUv Yml0cy9jKytjb25maWcuaCIgMwoKCiNkZWZpbmUgX0dMSUJDWFhfUkVMRUFTRSAxNAoKCiNk ZWZpbmUgX19HTElCQ1hYX18gMjAyNDAxMDMKIyA0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5l IF9HTElCQ1hYX1BVUkUgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKCgoKI2RlZmluZSBf R0xJQkNYWF9DT05TVCBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkKCgoKI2RlZmluZSBf R0xJQkNYWF9OT1JFVFVSTiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKIyA2OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9j Kytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQVRUUklCVVRFX1ZJU0lCSUxJ VFkgMQoKCiNkZWZpbmUgX0dMSUJDWFhfVklTSUJJTElUWShWKSBfX2F0dHJpYnV0ZV9fICgo X192aXNpYmlsaXR5X18gKCNWKSkpCiMgOTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv bG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJ QkNYWF9VU0VfREVQUkVDQVRFRCAxCgoKCiNkZWZpbmUgX0dMSUJDWFhfREVQUkVDQVRFRCBf X2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18pKQojZGVmaW5lIF9HTElCQ1hYX0RFUFJF Q0FURURfU1VHR0VTVChBTFQpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXyAoInVz ZSAnIiBBTFQgIicgaW5zdGVhZCIpKSkKIyAxMTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBf R0xJQkNYWDExX0RFUFJFQ0FURUQgCiNkZWZpbmUgX0dMSUJDWFgxMV9ERVBSRUNBVEVEX1NV R0dFU1QoQUxUKSAKCgoKCgoKI2RlZmluZSBfR0xJQkNYWDE0X0RFUFJFQ0FURUQgCiNkZWZp bmUgX0dMSUJDWFgxNF9ERVBSRUNBVEVEX1NVR0dFU1QoQUxUKSAKCgoKCgoKI2RlZmluZSBf R0xJQkNYWDE3X0RFUFJFQ0FURUQgCiNkZWZpbmUgX0dMSUJDWFgxN19ERVBSRUNBVEVEX1NV R0dFU1QoQUxUKSAKCgoKCgoKI2RlZmluZSBfR0xJQkNYWDIwX0RFUFJFQ0FURUQgCiNkZWZp bmUgX0dMSUJDWFgyMF9ERVBSRUNBVEVEX1NVR0dFU1QoQUxUKSAKCgoKCgoKI2RlZmluZSBf R0xJQkNYWDIzX0RFUFJFQ0FURUQgCiNkZWZpbmUgX0dMSUJDWFgyM19ERVBSRUNBVEVEX1NV R0dFU1QoQUxUKSAKCgoKCiNkZWZpbmUgX0dMSUJDWFhfQUJJX1RBR19DWFgxMSBfX2F0dHJp YnV0ZSAoKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpCgoKCgoKCiNkZWZpbmUgX0dMSUJDWFhf Tk9ESVNDQVJEIAojIDE2OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2 NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0NPTlNU RVhQUiAKI2RlZmluZSBfR0xJQkNYWF9VU0VfQ09OU1RFWFBSIGNvbnN0CgoKCgoKCgojZGVm aW5lIF9HTElCQ1hYMTRfQ09OU1RFWFBSIAoKCgoKCgoKI2RlZmluZSBfR0xJQkNYWDE3X0NP TlNURVhQUiAKCgoKCgoKCiNkZWZpbmUgX0dMSUJDWFgyMF9DT05TVEVYUFIgCgoKCgoKCgoj ZGVmaW5lIF9HTElCQ1hYMjNfQ09OU1RFWFBSIAoKCgoKCgoKI2RlZmluZSBfR0xJQkNYWDE3 X0lOTElORSAKIyAyMjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQt bGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9OT0VYQ0VQ VCAKI2RlZmluZSBfR0xJQkNYWF9OT0VYQ0VQVF9JRiguLi4pIAojZGVmaW5lIF9HTElCQ1hY X1VTRV9OT0VYQ0VQVCB0aHJvdygpCiNkZWZpbmUgX0dMSUJDWFhfVEhST1coX0VYQykgdGhy b3coX0VYQykKCgoKCiNkZWZpbmUgX0dMSUJDWFhfTk9USFJPVyBfR0xJQkNYWF9VU0VfTk9F WENFUFQKCgoKCiNkZWZpbmUgX0dMSUJDWFhfVEhST1dfT1JfQUJPUlQoX0VYQykgKHRocm93 IChfRVhDKSkKIyAyNDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQt bGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9OT0VYQ0VQ VF9QQVJNIAojZGVmaW5lIF9HTElCQ1hYX05PRVhDRVBUX1FVQUwgCiMgMjU4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZp Zy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfRVhURVJOX1RFTVBMQVRFIDEKIyAzMDggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29u ZmlnLmgiIDMKCiMgMzA4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCm5hbWVzcGFjZSBzdGQKewogIHR5cGVk ZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwogIHR5cGVkZWYgbG9uZyBpbnQgcHRyZGlm Zl90OwoKCgoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVzaChkZWZhdWx0KQoKCiAgZXh0 ZXJuICJDKysiIF9fYXR0cmlidXRlX18gKChfX25vcmV0dXJuX18sIF9fYWx3YXlzX2lubGlu ZV9fKSkKICBpbmxpbmUgdm9pZCBfX3Rlcm1pbmF0ZSgpIHRocm93KCkKICB7CiAgICB2b2lk IHRlcm1pbmF0ZSgpIHRocm93KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXyxfX2Nv bGRfXykpOwogICAgdGVybWluYXRlKCk7CiAgfQojcHJhZ21hIEdDQyB2aXNpYmlsaXR5IHBv cAp9CgojZGVmaW5lIF9HTElCQ1hYX1VTRV9EVUFMX0FCSSAxCgoKCgoKCgojZGVmaW5lIF9H TElCQ1hYX1VTRV9DWFgxMV9BQkkgMQoKCgpuYW1lc3BhY2Ugc3RkCnsKICBpbmxpbmUgbmFt ZXNwYWNlIF9fY3h4MTEgX19hdHRyaWJ1dGVfXygoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkg eyB9Cn0KbmFtZXNwYWNlIF9fZ251X2N4eAp7CiAgaW5saW5lIG5hbWVzcGFjZSBfX2N4eDEx IF9fYXR0cmlidXRlX18oKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpIHsgfQp9CiNkZWZpbmUg X0dMSUJDWFhfTkFNRVNQQUNFX0NYWDExIF9fY3h4MTE6OgojZGVmaW5lIF9HTElCQ1hYX0JF R0lOX05BTUVTUEFDRV9DWFgxMSBuYW1lc3BhY2UgX19jeHgxMSB7CiNkZWZpbmUgX0dMSUJD WFhfRU5EX05BTUVTUEFDRV9DWFgxMSB9CiNkZWZpbmUgX0dMSUJDWFhfREVGQVVMVF9BQklf VEFHIF9HTElCQ1hYX0FCSV9UQUdfQ1hYMTEKIyAzNjEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmlu ZSBfR0xJQkNYWF9JTkxJTkVfVkVSU0lPTiAwCiMgMzk1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZp bmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04gCiNkZWZpbmUgX0dMSUJDWFhf RU5EX05BTUVTUEFDRV9WRVJTSU9OIAoKI2RlZmluZSBfR0xJQkNYWF9CRUdJTl9JTkxJTkVf QUJJX05BTUVTUEFDRShYKSBpbmxpbmUgbmFtZXNwYWNlIFggewojZGVmaW5lIF9HTElCQ1hY X0VORF9JTkxJTkVfQUJJX05BTUVTUEFDRShYKSB9CiMgNDY0ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNk ZWZpbmUgX0dMSUJDWFhfU1REX0Mgc3RkCiNkZWZpbmUgX0dMSUJDWFhfQkVHSU5fTkFNRVNQ QUNFX0NPTlRBSU5FUiAKI2RlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0NPTlRBSU5F UiAKIyA0NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgt Z251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9TVERfQSBzdGQKI2Rl ZmluZSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQUxHTyAKI2RlZmluZSBfR0xJQkNYWF9F TkRfTkFNRVNQQUNFX0FMR08gCgoKCgojdW5kZWYgX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09N UEFUCgoKCgojdW5kZWYgX0dMSUJDWFhfTE9OR19ET1VCTEVfQUxUMTI4X0NPTVBBVAojIDUx NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0 cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX05BTUVTUEFDRV9MREJMIAojZGVm aW5lIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9MREJMIAojZGVmaW5lIF9HTElCQ1hYX0VO RF9OQU1FU1BBQ0VfTERCTCAKCgoKI2RlZmluZSBfR0xJQkNYWF9OQU1FU1BBQ0VfTERCTF9P Ul9DWFgxMSBfR0xJQkNYWF9OQU1FU1BBQ0VfQ1hYMTEKI2RlZmluZSBfR0xJQkNYWF9CRUdJ Tl9OQU1FU1BBQ0VfTERCTF9PUl9DWFgxMSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfQ1hY MTEKI2RlZmluZSBfR0xJQkNYWF9FTkRfTkFNRVNQQUNFX0xEQkxfT1JfQ1hYMTEgX0dMSUJD WFhfRU5EX05BTUVTUEFDRV9DWFgxMQojIDUzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwpuYW1lc3BhY2Ug c3RkCnsKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQpCgoKCgogIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICBpbmxpbmUgYm9vbAogIF9faXNfY29u c3RhbnRfZXZhbHVhdGVkKCkKICB7CgoKCgoKCgogICAgcmV0dXJuIGZhbHNlOwoKICB9CiNw cmFnbWEgR0NDIHZpc2liaWxpdHkgcG9wCn0KIyA1NjkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2RlZmlu ZSBfR0xJQkNYWF9WRVJCT1NFX0FTU0VSVCAxCgoKCm5hbWVzcGFjZSBzdGQKewojcHJhZ21h IEdDQyB2aXNpYmlsaXR5IHB1c2goZGVmYXVsdCkKCiAgZXh0ZXJuICJDKysiIF9fYXR0cmli dXRlX18gKChfX25vcmV0dXJuX18pKQogIHZvaWQKICBfX2dsaWJjeHhfYXNzZXJ0X2ZhaWwK ICAgIChjb25zdCBjaGFyKiBfX2ZpbGUsIGludCBfX2xpbmUsIGNvbnN0IGNoYXIqIF9fZnVu Y3Rpb24sCiAgICAgY29uc3QgY2hhciogX19jb25kaXRpb24pCiAgOwojcHJhZ21hIEdDQyB2 aXNpYmlsaXR5IHBvcAp9CiNkZWZpbmUgX0dMSUJDWFhfQVNTRVJUX0ZBSUwoX0NvbmRpdGlv bikgc3RkOjpfX2dsaWJjeHhfYXNzZXJ0X2ZhaWwoX19GSUxFX18sIF9fTElORV9fLCBfX1BS RVRUWV9GVU5DVElPTl9fLCAjX0NvbmRpdGlvbikKIyA2MTYgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmlnLmgiIDMKI2Rl ZmluZSBfX2dsaWJjeHhfYXNzZXJ0KGNvbmQpIAojIDY1MCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwojZGVm aW5lIF9HTElCQ1hYX1NZTkNIUk9OSVpBVElPTl9IQVBQRU5TX0JFRk9SRShBKSAKCgojZGVm aW5lIF9HTElCQ1hYX1NZTkNIUk9OSVpBVElPTl9IQVBQRU5TX0FGVEVSKEEpIAoKCgojZGVm aW5lIF9HTElCQ1hYX0JFR0lOX0VYVEVSTl9DIGV4dGVybiAiQyIgewojZGVmaW5lIF9HTElC Q1hYX0VORF9FWFRFUk5fQyB9CgojZGVmaW5lIF9HTElCQ1hYX1VTRV9BTExPQ0FUT1JfTkVX IDEKIyA2ODAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgt Z251L2JpdHMvYysrY29uZmlnLmgiIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL29zX2RlZmluZXMuaCIgMSAzCiMgMzEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvb3Nf ZGVmaW5lcy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfT1NfREVGSU5FUyAxCgoKCgoKI2RlZmlu ZSBfX05PX0NUWVBFIDEKCgoKCgoKCiN1bmRlZiBfR0xJQkNYWF9IQVZFX0dFVFMKCgoKCiNk ZWZpbmUgX0dMSUJDWFhfTk9fT0JTT0xFVEVfSVNJTkZfSVNOQU5fRFlOQU1JQyBfX0dMSUJD X1BSRVJFUSgyLDIzKQojIDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJj aDY0LWxpbnV4LWdudS9iaXRzL29zX2RlZmluZXMuaCIgMwojZGVmaW5lIF9HTElCQ1hYX01B WV9IQVZFX19fQ1hBX1RIUkVBRF9BVEVYSVRfSU1QTCAxCgoKCgoKCiNkZWZpbmUgX0dMSUJD WFhfTkFUSVZFX1RIUkVBRF9JRCBwdGhyZWFkX3NlbGYoKQojIDg2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL29zX2RlZmluZXMuaCIg MwojZGVmaW5lIF9HTElCQ1hYX0dUSFJFQURfVVNFX1dFQUsgMAojIDY4MSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcu aCIgMiAzCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxp bnV4LWdudS9iaXRzL2NwdV9kZWZpbmVzLmgiIDEgMwojIDMxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2NwdV9kZWZpbmVzLmgiIDMK I2RlZmluZSBfR0xJQkNYWF9DUFVfREVGSU5FUyAxCiMgNjg0ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAyIDMK CgoKCiNkZWZpbmUgX0dMSUJDWFhfUFNFVURPX1ZJU0lCSUxJVFkoVikgCgoKCgoKCiNkZWZp bmUgX0dMSUJDWFhfV0VBS19ERUZJTklUSU9OIAoKCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9V U0VfV0VBS19SRUYgX19HWFhfV0VBS19fCiMgNzE2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUg X0dMSUJDWFhfVFhOX1NBRkUgCiNkZWZpbmUgX0dMSUJDWFhfVFhOX1NBRkVfRFlOIAojIDcz NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0 cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0ZBU1RfTUFUSCAwCgoKCgoKCiNk ZWZpbmUgX19OKG1zZ2lkKSAobXNnaWQpCgoKI3VuZGVmIG1pbgojdW5kZWYgbWF4CiMgNzY4 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRz L2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9NQVRIIF9HTElCQ1hY OThfVVNFX0M5OV9NQVRICgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0NPTVBMRVggX0dM SUJDWFg5OF9VU0VfQzk5X0NPTVBMRVgKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfU1RE SU8gX0dMSUJDWFg5OF9VU0VfQzk5X1NURElPCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5 X1NURExJQiBfR0xJQkNYWDk4X1VTRV9DOTlfU1RETElCCgoKI2RlZmluZSBfR0xJQkNYWF9V U0VfQzk5X1dDSEFSIF9HTElCQ1hYOThfVVNFX0M5OV9XQ0hBUgojIDgwNyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcu aCIgMwojZGVmaW5lIF9HTElCQ1hYX0ZMT0FUX0lTX0lFRUVfQklOQVJZMzIgMQoKCgoKCgoj ZGVmaW5lIF9HTElCQ1hYX0RPVUJMRV9JU19JRUVFX0JJTkFSWTY0IDEKCgoKCgoKI2RlZmlu ZSBfR0xJQkNYWF9MRE9VQkxFX0lTX0lFRUVfQklOQVJZMTI4IDEKIyA4MzYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29uZmln LmgiIDMKI2RlZmluZSBfR0xJQkNYWF9IQVNfQlVJTFRJTihCKSBfX2hhc19idWlsdGluKEIp CgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQlVJTFRJTl9IQVNfVU5JUV9PQkpfUkVQIDEK CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0JVSUxUSU5fSVNfQUdHUkVHQVRFIDEKCgoKI2Rl ZmluZSBfR0xJQkNYWF9IQVZFX0JVSUxUSU5fSVNfU0FNRSAxCgoKCiNkZWZpbmUgX0dMSUJD WFhfSEFWRV9CVUlMVElOX0xBVU5ERVIgMQoKCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0Vf QlVJTFRJTl9UUkFJVChCVCkgX0dMSUJDWFhfSEFTX0JVSUxUSU4oQlQpCgoKCgoKI2RlZmlu ZSBfR0xJQkNYWF9ET1hZR0VOX09OTFkoWCkgCiMgOTAwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZp bmUgX0dMSUJDWFhfSEFWRV9BQ09TRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0FDT1NM IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQUxJR05FRF9BTExPQyAxCgoKCgoKI2RlZmlu ZSBfR0xJQkNYWF9IQVZFX0FSUEFfSU5FVF9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf QVNJTkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BU0lOTCAxCgoKI2RlZmluZSBfR0xJ QkNYWF9IQVZFX0FTX1NZTVZFUl9ESVJFQ1RJVkUgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW RV9BVEFOMkYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9BVEFOMkwgMQoKCiNkZWZpbmUg X0dMSUJDWFhfSEFWRV9BVEFORiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0FUQU5MIDEK CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQVRPTUlDX0xPQ0tfUE9MSUNZIDEKCgojZGVmaW5l IF9HTElCQ1hYX0hBVkVfQVRfUVVJQ0tfRVhJVCAxCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW RV9DOTlfRkxUX0VWQUxfVFlQRVMgMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9DRUlM RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0NFSUxMIDEKCgojZGVmaW5lIF9HTElCQ1hY X0hBVkVfQ09NUExFWF9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09TRiAxCgoKI2Rl ZmluZSBfR0xJQkNYWF9IQVZFX0NPU0hGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfQ09T SEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9DT1NMIDEKCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX0RFQ0xfU1RSTkxFTiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0RJUkVOVF9I IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRElSRkQgMQoKCiNkZWZpbmUgX0dMSUJDWFhf SEFWRV9ETEZDTl9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRU5ESUFOX0ggMQoKCiNk ZWZpbmUgX0dMSUJDWFhfSEFWRV9FWENFUFRJT05fUFRSX1NJTkNFX0dDQzQ2IDEKCgojZGVm aW5lIF9HTElCQ1hYX0hBVkVfRVhFQ0lORk9fSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF X0VYUEYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9FWFBMIDEKCgojZGVmaW5lIF9HTElC Q1hYX0hBVkVfRkFCU0YgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GQUJTTCAxCgoKI2Rl ZmluZSBfR0xJQkNYWF9IQVZFX0ZDTlRMX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9G RE9QRU5ESVIgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GRU5WX0ggMQoKCiNkZWZpbmUg X0dMSUJDWFhfSEFWRV9GSU5JVEUgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GSU5JVEVG IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfRklOSVRFTCAxCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX0ZMT0FUX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GTE9PUkYgMQoKCiNk ZWZpbmUgX0dMSUJDWFhfSEFWRV9GTE9PUkwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9G TU9ERiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0ZNT0RMIDEKIyAxMDQzICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZp Zy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9GUkVYUEYgMQoKCiNkZWZpbmUgX0dMSUJD WFhfSEFWRV9GUkVYUEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9HRVRFTlRST1BZIDEK CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfR0VUSVBJTkZPIDEKCgojZGVmaW5lIF9HTElCQ1hY X0hBVkVfR0VUUyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0hZUE9UIDEKCgojZGVmaW5l IF9HTElCQ1hYX0hBVkVfSFlQT1RGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSFlQT1RM IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSUNPTlYgMQoKCgoKCiNkZWZpbmUgX0dMSUJD WFhfSEFWRV9JTlRUWVBFU19IIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNJTkZG IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNJTkZMIDEKCgoKCgojZGVmaW5lIF9HTElC Q1hYX0hBVkVfSVNOQU5GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNOQU5MIDEKCgoj ZGVmaW5lIF9HTElCQ1hYX0hBVkVfSVNXQkxBTksgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW RV9MQ19NRVNTQUdFUyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xERVhQRiAxCgoKI2Rl ZmluZSBfR0xJQkNYWF9IQVZFX0xERVhQTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJ QklOVExfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJTUlUX0FTIDEKCgojZGVmaW5l IF9HTElCQ1hYX0hBVkVfTElNSVRfREFUQSAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJ TUlUX0ZTSVpFIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTElNSVRfUlNTIDEKCgojZGVm aW5lIF9HTElCQ1hYX0hBVkVfTElNSVRfVk1FTSAwCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF X0xJTksgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MSU5LX0ggMQoKCiNkZWZpbmUgX0dM SUJDWFhfSEFWRV9MSU5VWF9GVVRFWCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xJTlVY X1JBTkRPTV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTElOVVhfVFlQRVNfSCAxCgoK I2RlZmluZSBfR0xJQkNYWF9IQVZFX0xPQ0FMRV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB VkVfTE9HMTBGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfTE9HMTBMIDEKCgojZGVmaW5l IF9HTElCQ1hYX0hBVkVfTE9HRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX0xPR0wgMQoK CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9MU0VFSyAxCiMgMTE2MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIgMwoj ZGVmaW5lIF9HTElCQ1hYX0hBVkVfTUJTVEFURV9UIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB VkVfTUVNQUxJR04gMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9NRU1PUllfSCAxCgoKI2Rl ZmluZSBfR0xJQkNYWF9IQVZFX01PREYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9NT0RG RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX01PREZMIDEKCgoKCgojZGVmaW5lIF9HTElC Q1hYX0hBVkVfTkVUREJfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX05FVElORVRfSU5f SCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX05FVElORVRfVENQX0ggMQojIDExOTkgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysr Y29uZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9IQVZFX09QRU5BVCAxCgoKI2RlZmluZSBf R0xJQkNYWF9IQVZFX1BPTEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9QT0xMX0ggMQoK CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9QT1NJWF9NRU1BTElHTiAxCgoKCiNkZWZpbmUgX0dM SUJDWFhfSEFWRV9QT1NJWF9TRU1BUEhPUkUgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9Q T1dGIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfUE9XTCAxCgoKCgoKI2RlZmluZSBfR0xJ QkNYWF9IQVZFX1FVSUNLX0VYSVQgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9SRUFETElO SyAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NFQ1VSRV9HRVRFTlYgMQoKCiNkZWZpbmUg X0dMSUJDWFhfSEFWRV9TRVRFTlYgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TSU5DT1Mg MQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TSU5DT1NGIDEKCgojZGVmaW5lIF9HTElCQ1hY X0hBVkVfU0lOQ09TTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NJTkYgMQoKCiNkZWZp bmUgX0dMSUJDWFhfSEFWRV9TSU5IRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NJTkhM IDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU0lOTCAxCgoKCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX1NPQ0tBVE1BUksgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TUVJURiAxCgoK I2RlZmluZSBfR0xJQkNYWF9IQVZFX1NRUlRMIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf U1RBQ0tUUkFDRSAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NUREFMSUdOX0ggMQoKCiNk ZWZpbmUgX0dMSUJDWFhfSEFWRV9TVERCT09MX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW RV9TVERJTlRfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NURExJQl9IIDEKCgojZGVm aW5lIF9HTElCQ1hYX0hBVkVfU1RSRVJST1JfTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF X1NUUkVSUk9SX1IgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TVFJJTkdTX0ggMQoKCiNk ZWZpbmUgX0dMSUJDWFhfSEFWRV9TVFJJTkdfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZF X1NUUlRPRiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NUUlRPTEQgMQoKCiNkZWZpbmUg X0dMSUJDWFhfSEFWRV9TVFJVQ1RfRElSRU5UX0RfVFlQRSAxCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX1NUUlhGUk1fTCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NZTUxJTksgMQoK CgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lNVkVSX1NZTUJPTF9SRU5BTUlOR19SVU5USU1F X1NVUFBPUlQgMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfSU9DVExfSCAxCgoK I2RlZmluZSBfR0xJQkNYWF9IQVZFX1NZU19JUENfSCAxCiMgMTMzMCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytjb25maWcuaCIg MwojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX01NQU5fSCAxCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX1NZU19QQVJBTV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1JFU09V UkNFX0ggMQoKCgoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfU0VNX0ggMQoKCiNkZWZp bmUgX0dMSUJDWFhfSEFWRV9TWVNfU09DS0VUX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFW RV9TWVNfU1RBVFZGU19IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1NUQVRfSCAx CgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1NZU19TWVNJTkZPX0ggMQoKCiNkZWZpbmUgX0dM SUJDWFhfSEFWRV9TWVNfVElNRV9IIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfU1lTX1RZ UEVTX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9TWVNfVUlPX0ggMQoKCgoKCiNkZWZp bmUgX0dMSUJDWFhfSEFWRV9TX0lTUkVHIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVEFO RiAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1RBTkhGIDEKCgojZGVmaW5lIF9HTElCQ1hY X0hBVkVfVEFOSEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9UQU5MIDEKCgojZGVmaW5l IF9HTElCQ1hYX0hBVkVfVEdNQVRIX0ggMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9USU1F U1BFQ19HRVQgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9UTFMgMQoKCiNkZWZpbmUgX0dM SUJDWFhfSEFWRV9UUlVOQ0FURSAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1VDSEFSX0gg MQoKCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9VTklTVERfSCAxCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX1VOTElOS0FUIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVVNFTE9DQUxFIDEK CgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVVRJTUVfSCAxCgoKI2RlZmluZSBfR0xJQkNY WF9IQVZFX1ZGV1NDQU5GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVfVlNXU0NBTkYgMQoK CiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9WV1NDQU5GIDEKCgojZGVmaW5lIF9HTElCQ1hYX0hB VkVfV0NIQVJfSCAxCgoKI2RlZmluZSBfR0xJQkNYWF9IQVZFX1dDU1RPRiAxCgoKI2RlZmlu ZSBfR0xJQkNYWF9IQVZFX1dDVFlQRV9IIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX0hBVkVf V1JJVEVWIDEKIyAxNDUwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0 LWxpbnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfSEFWRV9f X0NYQV9USFJFQURfQVRFWElUX0lNUEwgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSUNPTlZfQ09O U1QgCgoKCiNkZWZpbmUgX0dMSUJDWFhfTFRfT0JKRElSICIubGlicy8iCgoKCgoKI2RlZmlu ZSBfR0xJQkNYWF9QQUNLQUdFX0JVR1JFUE9SVCAiIgoKCiNkZWZpbmUgX0dMSUJDWFhfUEFD S0FHRV9OQU1FICJwYWNrYWdlLXVudXNlZCIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0Vf U1RSSU5HICJwYWNrYWdlLXVudXNlZCB2ZXJzaW9uLXVudXNlZCIKCgojZGVmaW5lIF9HTElC Q1hYX1BBQ0tBR0VfVEFSTkFNRSAibGlic3RkYysrIgoKCiNkZWZpbmUgX0dMSUJDWFhfUEFD S0FHRV9VUkwgIiIKCgojZGVmaW5lIF9HTElCQ1hYX1BBQ0tBR0VfX0dMSUJDWFhfVkVSU0lP TiAidmVyc2lvbi11bnVzZWQiCgoKI2RlZmluZSBfR0xJQkNYWF9TVERDX0hFQURFUlMgMQoK CgoKCgojZGVmaW5lIF9HTElCQ1hYX0RBUldJTl9VU0VfNjRfQklUX0lOT0RFIDEKIyAxNDk3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRz L2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFgxMV9VU0VfQzk5X0NPTVBMRVggMQoK CgojZGVmaW5lIF9HTElCQ1hYMTFfVVNFX0M5OV9NQVRIIDEKCgoKI2RlZmluZSBfR0xJQkNY WDExX1VTRV9DOTlfU1RESU8gMQoKCgojZGVmaW5lIF9HTElCQ1hYMTFfVVNFX0M5OV9TVERM SUIgMQoKCgojZGVmaW5lIF9HTElCQ1hYMTFfVVNFX0M5OV9XQ0hBUiAxCgoKCgojZGVmaW5l IF9HTElCQ1hYOThfVVNFX0M5OV9DT01QTEVYIDEKCgoKI2RlZmluZSBfR0xJQkNYWDk4X1VT RV9DOTlfTUFUSCAxCgoKCiNkZWZpbmUgX0dMSUJDWFg5OF9VU0VfQzk5X1NURElPIDEKCgoK I2RlZmluZSBfR0xJQkNYWDk4X1VTRV9DOTlfU1RETElCIDEKCgoKI2RlZmluZSBfR0xJQkNY WDk4X1VTRV9DOTlfV0NIQVIgMQoKCiNkZWZpbmUgX0dMSUJDWFhfQVRPTUlDX0JVSUxUSU5T IDEKCgoKI2RlZmluZSBfR0xJQkNYWF9DQU5fQUxJR05BU19ERVNUUlVDVElWRV9TSVpFIDEK CgoKCgoKI2RlZmluZSBfR0xJQkNYWF9GVUxMWV9EWU5BTUlDX1NUUklORyAwCgoKI2RlZmlu ZSBfR0xJQkNYWF9IQVNfR1RIUkVBRFMgMQoKCiNkZWZpbmUgX0dMSUJDWFhfSE9TVEVEIF9f U1REQ19IT1NURURfXwoKCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9NQU5HTEVfU0laRV9UIG0K IyAxNTc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfUkVTX0xJTUlUUyAxCgoK CgoKI2RlZmluZSBfR0xJQkNYWF9TVEFUSUNfVFpEQVRBIDEKCgojZGVmaW5lIF9HTElCQ1hY X1NURElPX0VPRiAtMQoKCiNkZWZpbmUgX0dMSUJDWFhfU1RESU9fU0VFS19DVVIgMQoKCiNk ZWZpbmUgX0dMSUJDWFhfU1RESU9fU0VFS19FTkQgMgoKCiNkZWZpbmUgX0dMSUJDWFhfU1lN VkVSIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1NZTVZFUl9HTlUgMQojIDE2MDggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrY29u ZmlnLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzExX1VDSEFSX0NYWDExIDEKCgoKI2Rl ZmluZSBfR0xJQkNYWF9VU0VfQzk5IDEKCgoKCiNkZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9D T01QTEVYX0FSQyAxCgoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfQ09NUExFWF9UUjEg MQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfQ1RZUEUgMQoKCgojZGVmaW5lIF9HTElC Q1hYX1VTRV9DOTlfQ1RZUEVfVFIxIDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0ZF TlYgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfRkVOVl9UUjEgMQoKCgojZGVmaW5l IF9HTElCQ1hYX1VTRV9DOTlfSU5UVFlQRVMgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9D OTlfSU5UVFlQRVNfVFIxIDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQzk5X0lOVFRZUEVT X1dDSEFSX1QgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfSU5UVFlQRVNfV0NIQVJf VF9UUjEgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfTUFUSF9GVU5DUyAxCgoKCiNk ZWZpbmUgX0dMSUJDWFhfVVNFX0M5OV9NQVRIX1RSMSAxCgoKCiNkZWZpbmUgX0dMSUJDWFhf VVNFX0M5OV9TVERJTlQgMQoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DOTlfU1RESU5UX1RS MSAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQ0hESVIgMQoKCiNkZWZpbmUgX0dMSUJDWFhf VVNFX0NITU9EIDEKCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfQ0xPQ0tfTU9OT1RPTklD IDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9DTE9DS19SRUFMVElNRSAxCiMgMTY5NyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9jKytj b25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX1VTRV9ERVZfUkFORE9NIDEKCgojZGVmaW5l IF9HTElCQ1hYX1VTRV9GQ0hNT0QgMQoKCiNkZWZpbmUgX0dMSUJDWFhfVVNFX0ZDSE1PREFU IDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9GU0VFS09fRlRFTExPIDEKCgojZGVmaW5lIF9H TElCQ1hYX1VTRV9HRVRDV0QgMQoKCiNkZWZpbmUgX0dMSUJDWFhfVVNFX0dFVFRJTUVPRkRB WSAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfR0VUX05QUk9DUyAxCgoKI2RlZmluZSBfR0xJ QkNYWF9VU0VfSU5JVF9QUklPUklUWV9BVFRSSUJVVEUgMQoKCiNkZWZpbmUgX0dMSUJDWFhf VVNFX0xGUyAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfTE9OR19MT05HIDEKCgojZGVmaW5l IF9HTElCQ1hYX1VTRV9MU1RBVCAxCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfTUtESVIgMQoK CiNkZWZpbmUgX0dMSUJDWFhfVVNFX05BTk9TTEVFUCAxCgoKI2RlZmluZSBfR0xJQkNYWF9V U0VfTkxTIDEKCgoKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9QVEhSRUFEX0NPTkRfQ0xPQ0tX QUlUIDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9QVEhSRUFEX01VVEVYX0NMT0NLTE9DSyAo X0dMSUJDWFhfVFNBTj09MCkKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfUFRIUkVBRF9SV0xP Q0tfQ0xPQ0tMT0NLIDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9QVEhSRUFEX1JXTE9DS19U IDEKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfUkFORE9NX1RSMSAxCgoKI2RlZmluZSBfR0xJ QkNYWF9VU0VfUkVBTFBBVEggMQoKCiNkZWZpbmUgX0dMSUJDWFhfVVNFX1NDSEVEX1lJRUxE IDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9TQ19OUFJPQ0VTU09SU19PTkxOIDEKCgoKCgoj ZGVmaW5lIF9HTElCQ1hYX1VTRV9TRU5ERklMRSAxCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9V U0VfU1RfTVRJTSAxCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9VU0VfVE1QTkFNIDEKIyAxNzk0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRz L2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfVVNFX1VUSU1FIDEKCgoKI2RlZmlu ZSBfR0xJQkNYWF9VU0VfVVRJTUVOU0FUIDEKCgojZGVmaW5lIF9HTElCQ1hYX1VTRV9XQ0hB Ul9UIDEKIyAxODEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxp bnV4LWdudS9iaXRzL2MrK2NvbmZpZy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfVkVSQk9TRSAx CiMgMTgxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1n bnUvYml0cy9jKytjb25maWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX1pPTkVJTkZPX0RJUiAi L3Vzci9zaGFyZS96b25laW5mbyIKCgojZGVmaW5lIF9HVEhSRUFEX1VTRV9NVVRFWF9USU1F RExPQ0sgMQojIDMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcmVxdWlyZXNf aG9zdGVkLmgiIDIgMwojIDQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NtYXRoIiAy IDMKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jcHBfdHlwZV90cmFp dHMuaCIgMSAzCiMgMzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jcHBfdHlw ZV90cmFpdHMuaCIgMwojZGVmaW5lIF9DUFBfVFlQRV9UUkFJVFNfSCAxCgogICAgICAgCiMg MzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jcHBfdHlwZV90cmFpdHMuaCIg MwojIDY3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY3BwX3R5cGVfdHJhaXRz LmgiIDMKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgc3RydWN0IF9fdHJ1ZV90eXBlIHsg fTsKICBzdHJ1Y3QgX19mYWxzZV90eXBlIHsgfTsKCiAgdGVtcGxhdGU8Ym9vbD4KICAgIHN0 cnVjdCBfX3RydXRoX3R5cGUKICAgIHsgdHlwZWRlZiBfX2ZhbHNlX3R5cGUgX190eXBlOyB9 OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX190cnV0aF90eXBlPHRydWU+CiAgICB7IHR5 cGVkZWYgX190cnVlX3R5cGUgX190eXBlOyB9OwoKCgogIHRlbXBsYXRlPGNsYXNzIF9TcCwg Y2xhc3MgX1RwPgogICAgc3RydWN0IF9fdHJhaXRvcgogICAgewogICAgICBlbnVtIHsgX192 YWx1ZSA9IGJvb2woX1NwOjpfX3ZhbHVlKSB8fCBib29sKF9UcDo6X192YWx1ZSkgfTsKICAg ICAgdHlwZWRlZiB0eXBlbmFtZSBfX3RydXRoX3R5cGU8X192YWx1ZT46Ol9fdHlwZSBfX3R5 cGU7CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUsIHR5cGVuYW1lPgogICAgc3RydWN0 IF9fYXJlX3NhbWUKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5 cGVkZWYgX19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1l IF9UcD4KICAgIHN0cnVjdCBfX2FyZV9zYW1lPF9UcCwgX1RwPgogICAgewogICAgICBlbnVt IHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAg ICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfdm9pZAog ICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDAgfTsKICAgICAgdHlwZWRlZiBfX2ZhbHNl X3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfdm9p ZDx2b2lkPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRl ZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf VHA+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVl ID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKCgoK CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9faXNfaW50ZWdlcjxib29sPgogICAgewogICAg ICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5 cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPGNoYXI+ CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1 ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2lu dGVnZXI8c2lnbmVkIGNoYXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9Owog ICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4K ICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgY2hhcj4KICAgIHsKICAgICAgZW51 bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwog ICAgfTsKCgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8d2NoYXJfdD4K ICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVl X3R5cGUgX190eXBlOwogICAgfTsKIyAxOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9jcHBfdHlwZV90cmFpdHMuaCIgMwogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lz X2ludGVnZXI8c2hvcnQ+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAg ICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAg IHN0cnVjdCBfX2lzX2ludGVnZXI8dW5zaWduZWQgc2hvcnQ+CiAgICB7CiAgICAgIGVudW0g eyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAg IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8aW50PgogICAgewog ICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBf X3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHVu c2lnbmVkIGludD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5 cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3Ry dWN0IF9faXNfaW50ZWdlcjxsb25nPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEg fTsKICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0 ZTw+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyPHVuc2lnbmVkIGxvbmc+CiAgICB7CiAgICAg IGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlw ZTsKICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2ludGVnZXI8bG9uZyBs b25nPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsKICAgICAgdHlwZWRlZiBf X3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19p c19pbnRlZ2VyPHVuc2lnbmVkIGxvbmcgbG9uZz4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiNk ZWZpbmUgX19JTlRfTihUWVBFKSBfX2V4dGVuc2lvbl9fIHRlbXBsYXRlPD4gc3RydWN0IF9f aXNfaW50ZWdlcjxUWVBFPiB7IGVudW0geyBfX3ZhbHVlID0gMSB9OyB0eXBlZGVmIF9fdHJ1 ZV90eXBlIF9fdHlwZTsgfTsgX19leHRlbnNpb25fXyB0ZW1wbGF0ZTw+IHN0cnVjdCBfX2lz X2ludGVnZXI8dW5zaWduZWQgVFlQRT4geyBlbnVtIHsgX192YWx1ZSA9IDEgfTsgdHlwZWRl ZiBfX3RydWVfdHlwZSBfX3R5cGU7IH07CiMgMjg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMKI3VuZGVmIF9fSU5UX04KCgoKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfZmxvYXRpbmcKICAgIHsKICAg ICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYgX19mYWxzZV90eXBlIF9f dHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZzxm bG9hdD4KICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYg X190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f aXNfZmxvYXRpbmc8ZG91YmxlPgogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9IDEgfTsK ICAgICAgdHlwZWRlZiBfX3RydWVfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+ CiAgICBzdHJ1Y3QgX19pc19mbG9hdGluZzxsb25nIGRvdWJsZT4KICAgIHsKICAgICAgZW51 bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwog ICAgfTsKIyAzNjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jcHBfdHlwZV90 cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2lzX3Bv aW50ZXIKICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAwIH07CiAgICAgIHR5cGVkZWYg X19mYWxzZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4K ICAgIHN0cnVjdCBfX2lzX3BvaW50ZXI8X1RwKj4KICAgIHsKICAgICAgZW51bSB7IF9fdmFs dWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVlX3R5cGUgX190eXBlOwogICAgfTsKCgoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfYXJpdGhtZXRpYwog ICAgOiBwdWJsaWMgX190cmFpdG9yPF9faXNfaW50ZWdlcjxfVHA+LCBfX2lzX2Zsb2F0aW5n PF9UcD4gPgogICAgeyB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1 Y3QgX19pc19zY2FsYXIKICAgIDogcHVibGljIF9fdHJhaXRvcjxfX2lzX2FyaXRobWV0aWM8 X1RwPiwgX19pc19wb2ludGVyPF9UcD4gPgogICAgeyB9OwoKCgoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19jaGFyCiAgICB7CiAgICAgIGVudW0geyBfX3Zh bHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoK ICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19jaGFyPGNoYXI+CiAgICB7CiAgICAgIGVu dW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsK ICAgIH07CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19pc19jaGFyPHdjaGFyX3Q+CiAg ICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90 eXBlIF9fdHlwZTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1 Y3QgX19pc19ieXRlCiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0 eXBlZGVmIF9fZmFsc2VfdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBz dHJ1Y3QgX19pc19ieXRlPGNoYXI+CiAgICB7CiAgICAgIGVudW0geyBfX3ZhbHVlID0gMSB9 OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAgIH07CgogIHRlbXBsYXRl PD4KICAgIHN0cnVjdCBfX2lzX2J5dGU8c2lnbmVkIGNoYXI+CiAgICB7CiAgICAgIGVudW0g eyBfX3ZhbHVlID0gMSB9OwogICAgICB0eXBlZGVmIF9fdHJ1ZV90eXBlIF9fdHlwZTsKICAg IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2lzX2J5dGU8dW5zaWduZWQgY2hhcj4K ICAgIHsKICAgICAgZW51bSB7IF9fdmFsdWUgPSAxIH07CiAgICAgIHR5cGVkZWYgX190cnVl X3R5cGUgX190eXBlOwogICAgfTsKIyA0NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9jcHBfdHlwZV90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3Qg aXRlcmF0b3JfdHJhaXRzOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0 IF9faXNfbm9udm9sYXRpbGVfdHJpdmlhbGx5X2NvcHlhYmxlCiAgICB7CiAgICAgIGVudW0g eyBfX3ZhbHVlID0gX19pc190cml2aWFsbHlfY29weWFibGUoX1RwKSB9OwogICAgfTsKCgoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9faXNfbm9udm9sYXRpbGVf dHJpdmlhbGx5X2NvcHlhYmxlPHZvbGF0aWxlIF9UcD4KICAgIHsKICAgICAgZW51bSB7IF9f dmFsdWUgPSAwIH07CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX091dHB1dEl0ZXIs IHR5cGVuYW1lIF9JbnB1dEl0ZXI+CiAgICBzdHJ1Y3QgX19tZW1jcHlhYmxlCiAgICB7CiAg ICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X1RwPgogICAgc3RydWN0IF9fbWVtY3B5YWJsZTxfVHAqLCBfVHAqPgogICAgOiBfX2lzX25v bnZvbGF0aWxlX3RyaXZpYWxseV9jb3B5YWJsZTxfVHA+CiAgICB7IH07CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX21lbWNweWFibGU8X1RwKiwgY29uc3QgX1Rw Kj4KICAgIDogX19pc19ub252b2xhdGlsZV90cml2aWFsbHlfY29weWFibGU8X1RwPgogICAg eyB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyMSwgdHlwZW5hbWUgX0l0ZXIy PgogICAgc3RydWN0IF9fbWVtY21wYWJsZQogICAgewogICAgICBlbnVtIHsgX192YWx1ZSA9 IDAgfTsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19t ZW1jbXBhYmxlPF9UcCosIF9UcCo+CiAgICA6IF9faXNfbm9udm9sYXRpbGVfdHJpdmlhbGx5 X2NvcHlhYmxlPF9UcD4KICAgIHsgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg c3RydWN0IF9fbWVtY21wYWJsZTxjb25zdCBfVHAqLCBfVHAqPgogICAgOiBfX2lzX25vbnZv bGF0aWxlX3RyaXZpYWxseV9jb3B5YWJsZTxfVHA+CiAgICB7IH07CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX21lbWNtcGFibGU8X1RwKiwgY29uc3QgX1RwKj4K ICAgIDogX19pc19ub252b2xhdGlsZV90cml2aWFsbHlfY29weWFibGU8X1RwPgogICAgeyB9 OwoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIGJvb2wgX1RyZWF0QXNCeXRlcyA9 CgoKCiBfX2lzX2J5dGU8X1RwPjo6X192YWx1ZQoKICAgID4KICAgIHN0cnVjdCBfX2lzX21l bWNtcF9vcmRlcmVkCiAgICB7CiAgICAgIHN0YXRpYyBjb25zdCBib29sIF9fdmFsdWUgPSBf VHAoLTEpID4gX1RwKDEpOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg c3RydWN0IF9faXNfbWVtY21wX29yZGVyZWQ8X1RwLCBmYWxzZT4KICAgIHsKICAgICAgc3Rh dGljIGNvbnN0IGJvb2wgX192YWx1ZSA9IGZhbHNlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwLCBib29sID0gc2l6ZW9mKF9UcCkgPT0gc2l6ZW9m KF9VcCk+CiAgICBzdHJ1Y3QgX19pc19tZW1jbXBfb3JkZXJlZF93aXRoCiAgICB7CiAgICAg IHN0YXRpYyBjb25zdCBib29sIF9fdmFsdWUgPSBfX2lzX21lbWNtcF9vcmRlcmVkPF9UcD46 Ol9fdmFsdWUKICYmIF9faXNfbWVtY21wX29yZGVyZWQ8X1VwPjo6X192YWx1ZTsKICAgIH07 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogICAgc3RydWN0IF9f aXNfbWVtY21wX29yZGVyZWRfd2l0aDxfVHAsIF9VcCwgZmFsc2U+CiAgICB7CiAgICAgIHN0 YXRpYyBjb25zdCBib29sIF9fdmFsdWUgPSBmYWxzZTsKICAgIH07CiMgNTk1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY3BwX3R5cGVfdHJhaXRzLmgiIDMKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19tb3ZlX2l0ZXJhdG9yCiAgICB7CiAg ICAgIGVudW0geyBfX3ZhbHVlID0gMCB9OwogICAgICB0eXBlZGVmIF9fZmFsc2VfdHlwZSBf X3R5cGU7CiAgICB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgCiAg ICBpbmxpbmUgX0l0ZXJhdG9yCiAgICBfX21pdGVyX2Jhc2UoX0l0ZXJhdG9yIF9faXQpCiAg ICB7IHJldHVybiBfX2l0OyB9CgoKfQp9CiMgNDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvY21hdGgiIDIgMwojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L3R5cGVf dHJhaXRzLmgiIDEgMwojIDMwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4dC90eXBl X3RyYWl0cy5oIiAzCiNkZWZpbmUgX0VYVF9UWVBFX1RSQUlUUyAxCgogICAgICAgCiMgMzMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L3R5cGVfdHJhaXRzLmgiIDMKCgoKCmV4 dGVybiAiQysrIiB7CgpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChfX3Zp c2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICB0ZW1wbGF0ZTxib29sLCB0eXBlbmFt ZT4KICAgIHN0cnVjdCBfX2VuYWJsZV9pZgogICAgeyB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfVHA+CiAgICBzdHJ1Y3QgX19lbmFibGVfaWY8dHJ1ZSwgX1RwPgogICAgeyB0eXBlZGVm IF9UcCBfX3R5cGU7IH07CgoKCiAgdGVtcGxhdGU8Ym9vbCBfQ29uZCwgdHlwZW5hbWUgX0lm dHJ1ZSwgdHlwZW5hbWUgX0lmZmFsc2U+CiAgICBzdHJ1Y3QgX19jb25kaXRpb25hbF90eXBl CiAgICB7IHR5cGVkZWYgX0lmdHJ1ZSBfX3R5cGU7IH07CgogIHRlbXBsYXRlPHR5cGVuYW1l IF9JZnRydWUsIHR5cGVuYW1lIF9JZmZhbHNlPgogICAgc3RydWN0IF9fY29uZGl0aW9uYWxf dHlwZTxmYWxzZSwgX0lmdHJ1ZSwgX0lmZmFsc2U+CiAgICB7IHR5cGVkZWYgX0lmZmFsc2Ug X190eXBlOyB9OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX2Fk ZF91bnNpZ25lZAogICAgewogICAgcHJpdmF0ZToKICAgICAgdHlwZWRlZiBfX2VuYWJsZV9p ZjxzdGQ6Ol9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLCBfVHA+IF9faWZfdHlwZTsKCiAg ICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pZl90eXBlOjpfX3R5cGUgX190 eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGNo YXI+CiAgICB7IHR5cGVkZWYgdW5zaWduZWQgY2hhciBfX3R5cGU7IH07CgogIHRlbXBsYXRl PD4KICAgIHN0cnVjdCBfX2FkZF91bnNpZ25lZDxzaWduZWQgY2hhcj4KICAgIHsgdHlwZWRl ZiB1bnNpZ25lZCBjaGFyIF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9f YWRkX3Vuc2lnbmVkPHNob3J0PgogICAgeyB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IF9fdHlw ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGludD4KICAg IHsgdHlwZWRlZiB1bnNpZ25lZCBpbnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBz dHJ1Y3QgX19hZGRfdW5zaWduZWQ8bG9uZz4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25n IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGxv bmcgbG9uZz4KICAgIHsgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX190eXBlOyB9OwoK CiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fYWRkX3Vuc2lnbmVkPGJvb2w+OwoKICB0ZW1w bGF0ZTw+CiAgICBzdHJ1Y3QgX19hZGRfdW5zaWduZWQ8d2NoYXJfdD47CgoKCiAgdGVtcGxh dGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkCiAgICB7CiAg ICBwcml2YXRlOgogICAgICB0eXBlZGVmIF9fZW5hYmxlX2lmPHN0ZDo6X19pc19pbnRlZ2Vy PF9UcD46Ol9fdmFsdWUsIF9UcD4gX19pZl90eXBlOwoKICAgIHB1YmxpYzoKICAgICAgdHlw ZWRlZiB0eXBlbmFtZSBfX2lmX3R5cGU6Ol9fdHlwZSBfX3R5cGU7CiAgICB9OwoKICB0ZW1w bGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8Y2hhcj4KICAgIHsgdHlwZWRl ZiBzaWduZWQgY2hhciBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3Jl bW92ZV91bnNpZ25lZDx1bnNpZ25lZCBjaGFyPgogICAgeyB0eXBlZGVmIHNpZ25lZCBjaGFy IF9fdHlwZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVk PHVuc2lnbmVkIHNob3J0PgogICAgeyB0eXBlZGVmIHNob3J0IF9fdHlwZTsgfTsKCiAgdGVt cGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2lnbmVkIGludD4KICAg IHsgdHlwZWRlZiBpbnQgX190eXBlOyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19y ZW1vdmVfdW5zaWduZWQ8dW5zaWduZWQgbG9uZz4KICAgIHsgdHlwZWRlZiBsb25nIF9fdHlw ZTsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPHVuc2ln bmVkIGxvbmcgbG9uZz4KICAgIHsgdHlwZWRlZiBsb25nIGxvbmcgX190eXBlOyB9OwoKCiAg dGVtcGxhdGU8PgogICAgc3RydWN0IF9fcmVtb3ZlX3Vuc2lnbmVkPGJvb2w+OwoKICB0ZW1w bGF0ZTw+CiAgICBzdHJ1Y3QgX19yZW1vdmVfdW5zaWduZWQ8d2NoYXJfdD47CgoKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX1R5cGU+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIF9faXNfbnVs bF9wb2ludGVyKF9UeXBlKiBfX3B0cikKICAgIHsgcmV0dXJuIF9fcHRyID09IDA7IH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX1R5cGU+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIF9faXNf bnVsbF9wb2ludGVyKF9UeXBlKQogICAgeyByZXR1cm4gZmFsc2U7IH0KIyAxNzAgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L3R5cGVfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfVHAsIGJvb2wgPSBzdGQ6Ol9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlPgog ICAgc3RydWN0IF9fcHJvbW90ZQogICAgeyB0eXBlZGVmIGRvdWJsZSBfX3R5cGU7IH07CgoK CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBfX3Byb21vdGU8X1RwLCBm YWxzZT4KICAgIHsgfTsKCiAgdGVtcGxhdGU8PgogICAgc3RydWN0IF9fcHJvbW90ZTxsb25n IGRvdWJsZT4KICAgIHsgdHlwZWRlZiBsb25nIGRvdWJsZSBfX3R5cGU7IH07CgogIHRlbXBs YXRlPD4KICAgIHN0cnVjdCBfX3Byb21vdGU8ZG91YmxlPgogICAgeyB0eXBlZGVmIGRvdWJs ZSBfX3R5cGU7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX3Byb21vdGU8ZmxvYXQ+ CiAgICB7IHR5cGVkZWYgZmxvYXQgX190eXBlOyB9OwojIDI0MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9leHQvdHlwZV90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9U cCwgdHlwZW5hbWUgX1VwLAogICAgICAgICAgIHR5cGVuYW1lIF9UcDIgPSB0eXBlbmFtZSBf X3Byb21vdGU8X1RwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVuYW1lIF9VcDIgPSB0eXBl bmFtZSBfX3Byb21vdGU8X1VwPjo6X190eXBlPgogICAgc3RydWN0IF9fcHJvbW90ZV8yCiAg ICB7CiAgICAgIHR5cGVkZWYgX190eXBlb2ZfXyhfVHAyKCkgKyBfVXAyKCkpIF9fdHlwZTsK ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwLCB0eXBlbmFt ZSBfVnAsCiAgICAgICAgICAgdHlwZW5hbWUgX1RwMiA9IHR5cGVuYW1lIF9fcHJvbW90ZTxf VHA+OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1VwMiA9IHR5cGVuYW1lIF9fcHJv bW90ZTxfVXA+OjpfX3R5cGUsCiAgICAgICAgICAgdHlwZW5hbWUgX1ZwMiA9IHR5cGVuYW1l IF9fcHJvbW90ZTxfVnA+OjpfX3R5cGU+CiAgICBzdHJ1Y3QgX19wcm9tb3RlXzMKICAgIHsK ICAgICAgdHlwZWRlZiBfX3R5cGVvZl9fKF9UcDIoKSArIF9VcDIoKSArIF9WcDIoKSkgX190 eXBlOwogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXAsIHR5 cGVuYW1lIF9WcCwgdHlwZW5hbWUgX1dwLAogICAgICAgICAgIHR5cGVuYW1lIF9UcDIgPSB0 eXBlbmFtZSBfX3Byb21vdGU8X1RwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVuYW1lIF9V cDIgPSB0eXBlbmFtZSBfX3Byb21vdGU8X1VwPjo6X190eXBlLAogICAgICAgICAgIHR5cGVu YW1lIF9WcDIgPSB0eXBlbmFtZSBfX3Byb21vdGU8X1ZwPjo6X190eXBlLAogICAgICAgICAg IHR5cGVuYW1lIF9XcDIgPSB0eXBlbmFtZSBfX3Byb21vdGU8X1dwPjo6X190eXBlPgogICAg c3RydWN0IF9fcHJvbW90ZV80CiAgICB7CiAgICAgIHR5cGVkZWYgX190eXBlb2ZfXyhfVHAy KCkgKyBfVXAyKCkgKyBfVnAyKCkgKyBfV3AyKCkpIF9fdHlwZTsKICAgIH07CgoKCn0KfQoj IDQ2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NtYXRoIiAyIDMKI2RlZmluZSBfR0xJ QkNYWF9JTkNMVURFX05FWFRfQ19IRUFERVJTIAojIDEgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5lIF9NQVRIX0gg MQoKI2RlZmluZSBfX0dMSUJDX0lOVEVSTkFMX1NUQVJUSU5HX0hFQURFUl9JTVBMRU1FTlRB VElPTiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAxIDMg NAojIDMxICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3Vu ZGVmIF9fR0xJQkNfSU5URVJOQUxfU1RBUlRJTkdfSEVBREVSX0lNUExFTUVOVEFUSU9OCgoK CgoKI3VuZGVmIF9fR0xJQkNfVVNFX0xJQl9FWFQyCgoKI2RlZmluZSBfX0dMSUJDX1VTRV9M SUJfRVhUMiAxCiMgNjcgIi91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0Lmgi IDMgNAojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQKCiNkZWZpbmUgX19H TElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQgMQoKCgojdW5kZWYgX19HTElCQ19VU0VfSUVD XzYwNTU5X0JGUF9FWFRfQzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBf RVhUX0MyWCAxCgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRVhUCgojZGVmaW5l IF9fR0xJQkNfVVNFX0lFQ182MDU1OV9FWFQgMQojIDkwICIvdXNyL2luY2x1ZGUvYml0cy9s aWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9G VU5DU19FWFQKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVDXzYwNTU5X0ZVTkNTX0VYVCAxCgoK CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUX0MyWAoKI2RlZmluZSBf X0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUX0MyWCAxCgoKCgoKCiN1bmRlZiBfX0dM SUJDX1VTRV9JRUNfNjA1NTlfVFlQRVNfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182 MDU1OV9UWVBFU19FWFQgMQojIDI4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKCgoK CgpleHRlcm4gIkMiIHsKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDEgMyA0 CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojZGVmaW5lIF9CSVRTX1RZ UEVTX0ggMQoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMSAzIDQKIyAx OCAiL3Vzci9pbmNsdWRlL2JpdHMvd29yZHNpemUuaCIgMyA0CiNkZWZpbmUgX19XT1JEU0la RSA2NAojZGVmaW5lIF9fV09SRFNJWkVfVElNRTY0X0NPTVBBVDMyIDAKIyAyOCAiL3Vzci9p bmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1l c2l6ZS5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYml0cy90aW1lc2l6ZS5oIiAzIDQK I2RlZmluZSBfX1RJTUVTSVpFIDY0CiMgMjkgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgi IDIgMyA0CgoKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdV9jaGFyOwp0eXBlZGVmIHVuc2ln bmVkIHNob3J0IGludCBfX3Vfc2hvcnQ7CnR5cGVkZWYgdW5zaWduZWQgaW50IF9fdV9pbnQ7 CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX191X2xvbmc7CgoKdHlwZWRlZiBzaWduZWQg Y2hhciBfX2ludDhfdDsKdHlwZWRlZiB1bnNpZ25lZCBjaGFyIF9fdWludDhfdDsKdHlwZWRl ZiBzaWduZWQgc2hvcnQgaW50IF9faW50MTZfdDsKdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBp bnQgX191aW50MTZfdDsKdHlwZWRlZiBzaWduZWQgaW50IF9faW50MzJfdDsKdHlwZWRlZiB1 bnNpZ25lZCBpbnQgX191aW50MzJfdDsKCnR5cGVkZWYgc2lnbmVkIGxvbmcgaW50IF9faW50 NjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VpbnQ2NF90OwoKCgoKCgp0eXBl ZGVmIF9faW50OF90IF9faW50X2xlYXN0OF90Owp0eXBlZGVmIF9fdWludDhfdCBfX3VpbnRf bGVhc3Q4X3Q7CnR5cGVkZWYgX19pbnQxNl90IF9faW50X2xlYXN0MTZfdDsKdHlwZWRlZiBf X3VpbnQxNl90IF9fdWludF9sZWFzdDE2X3Q7CnR5cGVkZWYgX19pbnQzMl90IF9faW50X2xl YXN0MzJfdDsKdHlwZWRlZiBfX3VpbnQzMl90IF9fdWludF9sZWFzdDMyX3Q7CnR5cGVkZWYg X19pbnQ2NF90IF9faW50X2xlYXN0NjRfdDsKdHlwZWRlZiBfX3VpbnQ2NF90IF9fdWludF9s ZWFzdDY0X3Q7CgoKCnR5cGVkZWYgbG9uZyBpbnQgX19xdWFkX3Q7CnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBpbnQgX191X3F1YWRfdDsKCgoKCgoKCnR5cGVkZWYgbG9uZyBpbnQgX19pbnRt YXhfdDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX3VpbnRtYXhfdDsKIyAxMDkgIi91 c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojZGVmaW5lIF9fUzE2X1RZUEUgc2hvcnQg aW50CiNkZWZpbmUgX19VMTZfVFlQRSB1bnNpZ25lZCBzaG9ydCBpbnQKI2RlZmluZSBfX1Mz Ml9UWVBFIGludAojZGVmaW5lIF9fVTMyX1RZUEUgdW5zaWduZWQgaW50CiNkZWZpbmUgX19T TE9OR1dPUkRfVFlQRSBsb25nIGludAojZGVmaW5lIF9fVUxPTkdXT1JEX1RZUEUgdW5zaWdu ZWQgbG9uZyBpbnQKIyAxMjggIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojZGVm aW5lIF9fU1FVQURfVFlQRSBsb25nIGludAojZGVmaW5lIF9fVVFVQURfVFlQRSB1bnNpZ25l ZCBsb25nIGludAojZGVmaW5lIF9fU1dPUkRfVFlQRSBsb25nIGludAojZGVmaW5lIF9fVVdP UkRfVFlQRSB1bnNpZ25lZCBsb25nIGludAojZGVmaW5lIF9fU0xPTkczMl9UWVBFIGludAoj ZGVmaW5lIF9fVUxPTkczMl9UWVBFIHVuc2lnbmVkIGludAojZGVmaW5lIF9fUzY0X1RZUEUg bG9uZyBpbnQKI2RlZmluZSBfX1U2NF9UWVBFIHVuc2lnbmVkIGxvbmcgaW50CgojZGVmaW5l IF9fU1REX1RZUEUgdHlwZWRlZgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzaXpl cy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlc2l6ZXMuaCIgMyA0CiNk ZWZpbmUgX0JJVFNfVFlQRVNJWkVTX0ggMQojIDQwICIvdXNyL2luY2x1ZGUvYml0cy90eXBl c2l6ZXMuaCIgMyA0CiNkZWZpbmUgX19JTk9fVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUKI2Rl ZmluZSBfX09GRl9UX1RZUEUgX19TTE9OR1dPUkRfVFlQRQojZGVmaW5lIF9fUkxJTV9UX1RZ UEUgX19VTE9OR1dPUkRfVFlQRQojZGVmaW5lIF9fQkxLQ05UX1RfVFlQRSBfX1NMT05HV09S RF9UWVBFCiNkZWZpbmUgX19GU0JMS0NOVF9UX1RZUEUgX19VTE9OR1dPUkRfVFlQRQojZGVm aW5lIF9fRlNGSUxDTlRfVF9UWVBFIF9fVUxPTkdXT1JEX1RZUEUKI2RlZmluZSBfX1RJTUVf VF9UWVBFIF9fU0xPTkdXT1JEX1RZUEUKI2RlZmluZSBfX1NVU0VDT05EU19UX1RZUEUgX19T TE9OR1dPUkRfVFlQRQoKCiNkZWZpbmUgX19ERVZfVF9UWVBFIF9fVVFVQURfVFlQRQojZGVm aW5lIF9fVUlEX1RfVFlQRSBfX1UzMl9UWVBFCiNkZWZpbmUgX19HSURfVF9UWVBFIF9fVTMy X1RZUEUKI2RlZmluZSBfX0lOTzY0X1RfVFlQRSBfX1VRVUFEX1RZUEUKI2RlZmluZSBfX01P REVfVF9UWVBFIF9fVTMyX1RZUEUKI2RlZmluZSBfX05MSU5LX1RfVFlQRSBfX1UzMl9UWVBF CiNkZWZpbmUgX19PRkY2NF9UX1RZUEUgX19TUVVBRF9UWVBFCiNkZWZpbmUgX19QSURfVF9U WVBFIF9fUzMyX1RZUEUKI2RlZmluZSBfX1JMSU02NF9UX1RZUEUgX19VUVVBRF9UWVBFCiNk ZWZpbmUgX19CTEtDTlQ2NF9UX1RZUEUgX19TUVVBRF9UWVBFCiNkZWZpbmUgX19GU0JMS0NO VDY0X1RfVFlQRSBfX1VRVUFEX1RZUEUKI2RlZmluZSBfX0ZTRklMQ05UNjRfVF9UWVBFIF9f VVFVQURfVFlQRQojZGVmaW5lIF9fRlNXT1JEX1RfVFlQRSBfX1NXT1JEX1RZUEUKI2RlZmlu ZSBfX0lEX1RfVFlQRSBfX1UzMl9UWVBFCiNkZWZpbmUgX19DTE9DS19UX1RZUEUgX19TTE9O R1dPUkRfVFlQRQojZGVmaW5lIF9fVVNFQ09ORFNfVF9UWVBFIF9fVTMyX1RZUEUKI2RlZmlu ZSBfX1NVU0VDT05EUzY0X1RfVFlQRSBfX1NRVUFEX1RZUEUKI2RlZmluZSBfX0RBRERSX1Rf VFlQRSBfX1MzMl9UWVBFCiNkZWZpbmUgX19LRVlfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmlu ZSBfX0NMT0NLSURfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmluZSBfX1RJTUVSX1RfVFlQRSB2 b2lkICoKI2RlZmluZSBfX0JMS1NJWkVfVF9UWVBFIF9fUzMyX1RZUEUKI2RlZmluZSBfX0ZT SURfVF9UWVBFIHN0cnVjdCB7IGludCBfX3ZhbFsyXTsgfQojZGVmaW5lIF9fU1NJWkVfVF9U WVBFIF9fU1dPUkRfVFlQRQojZGVmaW5lIF9fU1lTQ0FMTF9TTE9OR19UWVBFIF9fU0xPTkdX T1JEX1RZUEUKI2RlZmluZSBfX1NZU0NBTExfVUxPTkdfVFlQRSBfX1VMT05HV09SRF9UWVBF CiNkZWZpbmUgX19DUFVfTUFTS19UWVBFIF9fVUxPTkdXT1JEX1RZUEUKCgoKCgojZGVmaW5l IF9fT0ZGX1RfTUFUQ0hFU19PRkY2NF9UIDEKCgojZGVmaW5lIF9fSU5PX1RfTUFUQ0hFU19J Tk82NF9UIDEKCgojZGVmaW5lIF9fUkxJTV9UX01BVENIRVNfUkxJTTY0X1QgMQoKCiNkZWZp bmUgX19TVEFURlNfTUFUQ0hFU19TVEFURlM2NCAxCgoKI2RlZmluZSBfX0tFUk5FTF9PTERf VElNRVZBTF9NQVRDSEVTX1RJTUVWQUw2NCAoX19XT1JEU0laRSA9PSA2NCkKIyAxMDQgIi91 c3IvaW5jbHVkZS9iaXRzL3R5cGVzaXplcy5oIiAzIDQKI2RlZmluZSBfX0ZEX1NFVFNJWkUg MTAyNAojIDE0MiAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMuaCIgMiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvYml0cy90aW1lNjQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMv dGltZTY0LmgiIDMgNAojZGVmaW5lIF9CSVRTX1RJTUU2NF9IIDEKCgoKCgojZGVmaW5lIF9f VElNRTY0X1RfVFlQRSBfX1RJTUVfVF9UWVBFCiMgMTQzICIvdXNyL2luY2x1ZGUvYml0cy90 eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19kZXZfdDsKdHlw ZWRlZiB1bnNpZ25lZCBpbnQgX191aWRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19naWRf dDsKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2lub190Owp0eXBlZGVmIHVuc2lnbmVk IGxvbmcgaW50IF9faW5vNjRfdDsKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19tb2RlX3Q7CnR5 cGVkZWYgdW5zaWduZWQgaW50IF9fbmxpbmtfdDsKdHlwZWRlZiBsb25nIGludCBfX29mZl90 Owp0eXBlZGVmIGxvbmcgaW50IF9fb2ZmNjRfdDsKdHlwZWRlZiBpbnQgX19waWRfdDsKdHlw ZWRlZiBzdHJ1Y3QgeyBpbnQgX192YWxbMl07IH0gX19mc2lkX3Q7CnR5cGVkZWYgbG9uZyBp bnQgX19jbG9ja190Owp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbV90Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fcmxpbTY0X3Q7CnR5cGVkZWYgdW5zaWduZWQgaW50 IF9faWRfdDsKdHlwZWRlZiBsb25nIGludCBfX3RpbWVfdDsKdHlwZWRlZiB1bnNpZ25lZCBp bnQgX191c2Vjb25kc190Owp0eXBlZGVmIGxvbmcgaW50IF9fc3VzZWNvbmRzX3Q7CnR5cGVk ZWYgbG9uZyBpbnQgX19zdXNlY29uZHM2NF90OwoKdHlwZWRlZiBpbnQgX19kYWRkcl90Owp0 eXBlZGVmIGludCBfX2tleV90OwoKCnR5cGVkZWYgaW50IF9fY2xvY2tpZF90OwoKCnR5cGVk ZWYgdm9pZCAqIF9fdGltZXJfdDsKCgp0eXBlZGVmIGludCBfX2Jsa3NpemVfdDsKCgoKCnR5 cGVkZWYgbG9uZyBpbnQgX19ibGtjbnRfdDsKdHlwZWRlZiBsb25nIGludCBfX2Jsa2NudDY0 X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBfX2ZzYmxrY250X3Q7CnR5cGVkZWYg dW5zaWduZWQgbG9uZyBpbnQgX19mc2Jsa2NudDY0X3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBs b25nIGludCBfX2ZzZmlsY250X3Q7CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19mc2Zp bGNudDY0X3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX2Zzd29yZF90OwoKdHlwZWRlZiBsb25n IGludCBfX3NzaXplX3Q7CgoKdHlwZWRlZiBsb25nIGludCBfX3N5c2NhbGxfc2xvbmdfdDsK CnR5cGVkZWYgdW5zaWduZWQgbG9uZyBpbnQgX19zeXNjYWxsX3Vsb25nX3Q7CgoKCnR5cGVk ZWYgX19vZmY2NF90IF9fbG9mZl90Owp0eXBlZGVmIGNoYXIgKl9fY2FkZHJfdDsKCgp0eXBl ZGVmIGxvbmcgaW50IF9faW50cHRyX3Q7CgoKdHlwZWRlZiB1bnNpZ25lZCBpbnQgX19zb2Nr bGVuX3Q7CgoKCgp0eXBlZGVmIGludCBfX3NpZ19hdG9taWNfdDsKIyAyMjYgIi91c3IvaW5j bHVkZS9iaXRzL3R5cGVzLmgiIDMgNAojdW5kZWYgX19TVERfVFlQRQojIDM4ICIvdXNyL2lu Y2x1ZGUvbWF0aC5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aC12ZWN0 b3IuaCIgMSAzIDQKIyAyNyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aC12ZWN0b3IuaCIgMyA0 CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbGlibS1zaW1kLWRlY2wtc3R1YnMuaCIgMSAzIDQK IyAzNCAiL3Vzci9pbmNsdWRlL2JpdHMvbGlibS1zaW1kLWRlY2wtc3R1YnMuaCIgMyA0CiNk ZWZpbmUgX0JJVFNfTElCTV9TSU1EX0RFQ0xfU1RVQlNfSCAxCgojZGVmaW5lIF9fREVDTF9T SU1EX2NvcyAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NmIAojZGVmaW5lIF9fREVDTF9TSU1E X2Nvc2wgCiNkZWZpbmUgX19ERUNMX1NJTURfY29zZjE2IAojZGVmaW5lIF9fREVDTF9TSU1E X2Nvc2YzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NmNjQgCiNkZWZpbmUgX19ERUNMX1NJ TURfY29zZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NmMzJ4IAojZGVmaW5lIF9fREVD TF9TSU1EX2Nvc2Y2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfY29zZjEyOHggCgojZGVmaW5l IF9fREVDTF9TSU1EX3NpbiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5mIAojZGVmaW5lIF9f REVDTF9TSU1EX3NpbmwgCiNkZWZpbmUgX19ERUNMX1NJTURfc2luZjE2IAojZGVmaW5lIF9f REVDTF9TSU1EX3NpbmYzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5mNjQgCiNkZWZpbmUg X19ERUNMX1NJTURfc2luZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5mMzJ4IAojZGVm aW5lIF9fREVDTF9TSU1EX3NpbmY2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfc2luZjEyOHgg CgojZGVmaW5lIF9fREVDTF9TSU1EX3NpbmNvcyAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5j b3NmIAojZGVmaW5lIF9fREVDTF9TSU1EX3NpbmNvc2wgCiNkZWZpbmUgX19ERUNMX1NJTURf c2luY29zZjE2IAojZGVmaW5lIF9fREVDTF9TSU1EX3NpbmNvc2YzMiAKI2RlZmluZSBfX0RF Q0xfU0lNRF9zaW5jb3NmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfc2luY29zZjEyOCAKI2Rl ZmluZSBfX0RFQ0xfU0lNRF9zaW5jb3NmMzJ4IAojZGVmaW5lIF9fREVDTF9TSU1EX3NpbmNv c2Y2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfc2luY29zZjEyOHggCgojZGVmaW5lIF9fREVD TF9TSU1EX2xvZyAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2dmIAojZGVmaW5lIF9fREVDTF9T SU1EX2xvZ2wgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nZjE2IAojZGVmaW5lIF9fREVDTF9T SU1EX2xvZ2YzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2dmNjQgCiNkZWZpbmUgX19ERUNM X1NJTURfbG9nZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2dmMzJ4IAojZGVmaW5lIF9f REVDTF9TSU1EX2xvZ2Y2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nZjEyOHggCgojZGVm aW5lIF9fREVDTF9TSU1EX2V4cCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHBmIAojZGVmaW5l IF9fREVDTF9TSU1EX2V4cGwgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwZjE2IAojZGVmaW5l IF9fREVDTF9TSU1EX2V4cGYzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHBmNjQgCiNkZWZp bmUgX19ERUNMX1NJTURfZXhwZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHBmMzJ4IAoj ZGVmaW5lIF9fREVDTF9TSU1EX2V4cGY2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwZjEy OHggCgojZGVmaW5lIF9fREVDTF9TSU1EX3BvdyAKI2RlZmluZSBfX0RFQ0xfU0lNRF9wb3dm IAojZGVmaW5lIF9fREVDTF9TSU1EX3Bvd2wgCiNkZWZpbmUgX19ERUNMX1NJTURfcG93ZjE2 IAojZGVmaW5lIF9fREVDTF9TSU1EX3Bvd2YzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9wb3dm NjQgCiNkZWZpbmUgX19ERUNMX1NJTURfcG93ZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9w b3dmMzJ4IAojZGVmaW5lIF9fREVDTF9TSU1EX3Bvd2Y2NHggCiNkZWZpbmUgX19ERUNMX1NJ TURfcG93ZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2Fjb3MgCiNkZWZpbmUgX19ERUNM X1NJTURfYWNvc2YgCiNkZWZpbmUgX19ERUNMX1NJTURfYWNvc2wgCiNkZWZpbmUgX19ERUNM X1NJTURfYWNvc2YxNiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hY29zZjMyIAojZGVmaW5lIF9f REVDTF9TSU1EX2Fjb3NmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfYWNvc2YxMjggCiNkZWZp bmUgX19ERUNMX1NJTURfYWNvc2YzMnggCiNkZWZpbmUgX19ERUNMX1NJTURfYWNvc2Y2NHgg CiNkZWZpbmUgX19ERUNMX1NJTURfYWNvc2YxMjh4IAoKI2RlZmluZSBfX0RFQ0xfU0lNRF9h dGFuIAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW5mIAojZGVmaW5lIF9fREVDTF9TSU1EX2F0 YW5sIAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW5mMTYgCiNkZWZpbmUgX19ERUNMX1NJTURf YXRhbmYzMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuZjY0IAojZGVmaW5lIF9fREVDTF9T SU1EX2F0YW5mMTI4IAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW5mMzJ4IAojZGVmaW5lIF9f REVDTF9TSU1EX2F0YW5mNjR4IAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW5mMTI4eCAKCiNk ZWZpbmUgX19ERUNMX1NJTURfYXNpbiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hc2luZiAKI2Rl ZmluZSBfX0RFQ0xfU0lNRF9hc2lubCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hc2luZjE2IAoj ZGVmaW5lIF9fREVDTF9TSU1EX2FzaW5mMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfYXNpbmY2 NCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hc2luZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9h c2luZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hc2luZjY0eCAKI2RlZmluZSBfX0RFQ0xf U0lNRF9hc2luZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2h5cG90IAojZGVmaW5lIF9f REVDTF9TSU1EX2h5cG90ZiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9oeXBvdGwgCiNkZWZpbmUg X19ERUNMX1NJTURfaHlwb3RmMTYgCiNkZWZpbmUgX19ERUNMX1NJTURfaHlwb3RmMzIgCiNk ZWZpbmUgX19ERUNMX1NJTURfaHlwb3RmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfaHlwb3Rm MTI4IAojZGVmaW5lIF9fREVDTF9TSU1EX2h5cG90ZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lN RF9oeXBvdGY2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfaHlwb3RmMTI4eCAKCiNkZWZpbmUg X19ERUNMX1NJTURfZXhwMiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAyZiAKI2RlZmluZSBf X0RFQ0xfU0lNRF9leHAybCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAyZjE2IAojZGVmaW5l IF9fREVDTF9TSU1EX2V4cDJmMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwMmY2NCAKI2Rl ZmluZSBfX0RFQ0xfU0lNRF9leHAyZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAyZjMy eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAyZjY0eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9l eHAyZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2V4cDEwIAojZGVmaW5lIF9fREVDTF9T SU1EX2V4cDEwZiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAxMGwgCiNkZWZpbmUgX19ERUNM X1NJTURfZXhwMTBmMTYgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwMTBmMzIgCiNkZWZpbmUg X19ERUNMX1NJTURfZXhwMTBmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwMTBmMTI4IAoj ZGVmaW5lIF9fREVDTF9TSU1EX2V4cDEwZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHAx MGY2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwMTBmMTI4eCAKCiNkZWZpbmUgX19ERUNM X1NJTURfY29zaCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NoZiAKI2RlZmluZSBfX0RFQ0xf U0lNRF9jb3NobCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NoZjE2IAojZGVmaW5lIF9fREVD TF9TSU1EX2Nvc2hmMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfY29zaGY2NCAKI2RlZmluZSBf X0RFQ0xfU0lNRF9jb3NoZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NoZjMyeCAKI2Rl ZmluZSBfX0RFQ0xfU0lNRF9jb3NoZjY0eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9jb3NoZjEy OHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2V4cG0xIAojZGVmaW5lIF9fREVDTF9TSU1EX2V4 cG0xZiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHBtMWwgCiNkZWZpbmUgX19ERUNMX1NJTURf ZXhwbTFmMTYgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwbTFmMzIgCiNkZWZpbmUgX19ERUNM X1NJTURfZXhwbTFmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfZXhwbTFmMTI4IAojZGVmaW5l IF9fREVDTF9TSU1EX2V4cG0xZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9leHBtMWY2NHgg CiNkZWZpbmUgX19ERUNMX1NJTURfZXhwbTFmMTI4eCAKCiNkZWZpbmUgX19ERUNMX1NJTURf c2luaCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5oZiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9z aW5obCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5oZjE2IAojZGVmaW5lIF9fREVDTF9TSU1E X3NpbmhmMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfc2luaGY2NCAKI2RlZmluZSBfX0RFQ0xf U0lNRF9zaW5oZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5oZjMyeCAKI2RlZmluZSBf X0RFQ0xfU0lNRF9zaW5oZjY0eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9zaW5oZjEyOHggCgoj ZGVmaW5lIF9fREVDTF9TSU1EX2NicnQgCiNkZWZpbmUgX19ERUNMX1NJTURfY2JydGYgCiNk ZWZpbmUgX19ERUNMX1NJTURfY2JydGwgCiNkZWZpbmUgX19ERUNMX1NJTURfY2JydGYxNiAK I2RlZmluZSBfX0RFQ0xfU0lNRF9jYnJ0ZjMyIAojZGVmaW5lIF9fREVDTF9TSU1EX2NicnRm NjQgCiNkZWZpbmUgX19ERUNMX1NJTURfY2JydGYxMjggCiNkZWZpbmUgX19ERUNMX1NJTURf Y2JydGYzMnggCiNkZWZpbmUgX19ERUNMX1NJTURfY2JydGY2NHggCiNkZWZpbmUgX19ERUNM X1NJTURfY2JydGYxMjh4IAoKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuMiAKI2RlZmluZSBf X0RFQ0xfU0lNRF9hdGFuMmYgCiNkZWZpbmUgX19ERUNMX1NJTURfYXRhbjJsIAojZGVmaW5l IF9fREVDTF9TSU1EX2F0YW4yZjE2IAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW4yZjMyIAoj ZGVmaW5lIF9fREVDTF9TSU1EX2F0YW4yZjY0IAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW4y ZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuMmYzMnggCiNkZWZpbmUgX19ERUNMX1NJ TURfYXRhbjJmNjR4IAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW4yZjEyOHggCgojZGVmaW5l IF9fREVDTF9TSU1EX2xvZzEwIAojZGVmaW5lIF9fREVDTF9TSU1EX2xvZzEwZiAKI2RlZmlu ZSBfX0RFQ0xfU0lNRF9sb2cxMGwgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMTBmMTYgCiNk ZWZpbmUgX19ERUNMX1NJTURfbG9nMTBmMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMTBm NjQgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMTBmMTI4IAojZGVmaW5lIF9fREVDTF9TSU1E X2xvZzEwZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cxMGY2NHggCiNkZWZpbmUgX19E RUNMX1NJTURfbG9nMTBmMTI4eCAKCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMiAKI2RlZmlu ZSBfX0RFQ0xfU0lNRF9sb2cyZiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cybCAKI2RlZmlu ZSBfX0RFQ0xfU0lNRF9sb2cyZjE2IAojZGVmaW5lIF9fREVDTF9TSU1EX2xvZzJmMzIgCiNk ZWZpbmUgX19ERUNMX1NJTURfbG9nMmY2NCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cyZjEy OCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cyZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9s b2cyZjY0eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cyZjEyOHggCgojZGVmaW5lIF9fREVD TF9TSU1EX2xvZzFwIAojZGVmaW5lIF9fREVDTF9TSU1EX2xvZzFwZiAKI2RlZmluZSBfX0RF Q0xfU0lNRF9sb2cxcGwgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMXBmMTYgCiNkZWZpbmUg X19ERUNMX1NJTURfbG9nMXBmMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfbG9nMXBmNjQgCiNk ZWZpbmUgX19ERUNMX1NJTURfbG9nMXBmMTI4IAojZGVmaW5lIF9fREVDTF9TSU1EX2xvZzFw ZjMyeCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9sb2cxcGY2NHggCiNkZWZpbmUgX19ERUNMX1NJ TURfbG9nMXBmMTI4eCAKCiNkZWZpbmUgX19ERUNMX1NJTURfYXRhbmggCiNkZWZpbmUgX19E RUNMX1NJTURfYXRhbmhmIAojZGVmaW5lIF9fREVDTF9TSU1EX2F0YW5obCAKI2RlZmluZSBf X0RFQ0xfU0lNRF9hdGFuaGYxNiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuaGYzMiAKI2Rl ZmluZSBfX0RFQ0xfU0lNRF9hdGFuaGY2NCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuaGYx MjggCiNkZWZpbmUgX19ERUNMX1NJTURfYXRhbmhmMzJ4IAojZGVmaW5lIF9fREVDTF9TSU1E X2F0YW5oZjY0eCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hdGFuaGYxMjh4IAoKI2RlZmluZSBf X0RFQ0xfU0lNRF9hY29zaCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hY29zaGYgCiNkZWZpbmUg X19ERUNMX1NJTURfYWNvc2hsIAojZGVmaW5lIF9fREVDTF9TSU1EX2Fjb3NoZjE2IAojZGVm aW5lIF9fREVDTF9TSU1EX2Fjb3NoZjMyIAojZGVmaW5lIF9fREVDTF9TSU1EX2Fjb3NoZjY0 IAojZGVmaW5lIF9fREVDTF9TSU1EX2Fjb3NoZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9h Y29zaGYzMnggCiNkZWZpbmUgX19ERUNMX1NJTURfYWNvc2hmNjR4IAojZGVmaW5lIF9fREVD TF9TSU1EX2Fjb3NoZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2VyZiAKI2RlZmluZSBf X0RFQ0xfU0lNRF9lcmZmIAojZGVmaW5lIF9fREVDTF9TSU1EX2VyZmwgCiNkZWZpbmUgX19E RUNMX1NJTURfZXJmZjE2IAojZGVmaW5lIF9fREVDTF9TSU1EX2VyZmYzMiAKI2RlZmluZSBf X0RFQ0xfU0lNRF9lcmZmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfZXJmZjEyOCAKI2RlZmlu ZSBfX0RFQ0xfU0lNRF9lcmZmMzJ4IAojZGVmaW5lIF9fREVDTF9TSU1EX2VyZmY2NHggCiNk ZWZpbmUgX19ERUNMX1NJTURfZXJmZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX3Rhbmgg CiNkZWZpbmUgX19ERUNMX1NJTURfdGFuaGYgCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuaGwg CiNkZWZpbmUgX19ERUNMX1NJTURfdGFuaGYxNiAKI2RlZmluZSBfX0RFQ0xfU0lNRF90YW5o ZjMyIAojZGVmaW5lIF9fREVDTF9TSU1EX3RhbmhmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURf dGFuaGYxMjggCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuaGYzMnggCiNkZWZpbmUgX19ERUNM X1NJTURfdGFuaGY2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuaGYxMjh4IAoKI2RlZmlu ZSBfX0RFQ0xfU0lNRF9hc2luaCAKI2RlZmluZSBfX0RFQ0xfU0lNRF9hc2luaGYgCiNkZWZp bmUgX19ERUNMX1NJTURfYXNpbmhsIAojZGVmaW5lIF9fREVDTF9TSU1EX2FzaW5oZjE2IAoj ZGVmaW5lIF9fREVDTF9TSU1EX2FzaW5oZjMyIAojZGVmaW5lIF9fREVDTF9TSU1EX2FzaW5o ZjY0IAojZGVmaW5lIF9fREVDTF9TSU1EX2FzaW5oZjEyOCAKI2RlZmluZSBfX0RFQ0xfU0lN RF9hc2luaGYzMnggCiNkZWZpbmUgX19ERUNMX1NJTURfYXNpbmhmNjR4IAojZGVmaW5lIF9f REVDTF9TSU1EX2FzaW5oZjEyOHggCgojZGVmaW5lIF9fREVDTF9TSU1EX2VyZmMgCiNkZWZp bmUgX19ERUNMX1NJTURfZXJmY2YgCiNkZWZpbmUgX19ERUNMX1NJTURfZXJmY2wgCiNkZWZp bmUgX19ERUNMX1NJTURfZXJmY2YxNiAKI2RlZmluZSBfX0RFQ0xfU0lNRF9lcmZjZjMyIAoj ZGVmaW5lIF9fREVDTF9TSU1EX2VyZmNmNjQgCiNkZWZpbmUgX19ERUNMX1NJTURfZXJmY2Yx MjggCiNkZWZpbmUgX19ERUNMX1NJTURfZXJmY2YzMnggCiNkZWZpbmUgX19ERUNMX1NJTURf ZXJmY2Y2NHggCiNkZWZpbmUgX19ERUNMX1NJTURfZXJmY2YxMjh4IAoKI2RlZmluZSBfX0RF Q0xfU0lNRF90YW4gCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuZiAKI2RlZmluZSBfX0RFQ0xf U0lNRF90YW5sIAojZGVmaW5lIF9fREVDTF9TSU1EX3RhbmYxNiAKI2RlZmluZSBfX0RFQ0xf U0lNRF90YW5mMzIgCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuZjY0IAojZGVmaW5lIF9fREVD TF9TSU1EX3RhbmYxMjggCiNkZWZpbmUgX19ERUNMX1NJTURfdGFuZjMyeCAKI2RlZmluZSBf X0RFQ0xfU0lNRF90YW5mNjR4IAojZGVmaW5lIF9fREVDTF9TSU1EX3RhbmYxMjh4IAojIDI4 ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoLXZlY3Rvci5oIiAyIDMgNAojIDQxICIvdXNyL2lu Y2x1ZGUvbWF0aC5oIiAyIDMgNAoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQt bGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL2JpdHMvZmxvYXRuLmgiIDEgMyA0CiMg MjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS1maXhlZC9iaXRzL2Zsb2F0bi5oIiAzIDQKI2RlZmluZSBfQklUU19GTE9BVE5fSCAKCgoj IDEgIi91c3IvaW5jbHVkZS9iaXRzL2xvbmctZG91YmxlLmgiIDEgMyA0CiMgMjEgIi91c3Iv aW5jbHVkZS9iaXRzL2xvbmctZG91YmxlLmgiIDMgNAojZGVmaW5lIF9fTERPVUJMRV9SRURJ UkVDVFNfVE9fRkxPQVQxMjhfQUJJIDAKIyAzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL2JpdHMvZmxvYXRuLmgiIDIgMyA0 CgoKCgoKI2RlZmluZSBfX0hBVkVfRkxPQVQxMjggMQojIDQ5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9s b29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9hdG4u aCIgMyA0CiNkZWZpbmUgX19IQVZFX0RJU1RJTkNUX0ZMT0FUMTI4IDAKCgoKCiNkZWZpbmUg X19IQVZFX0ZMT0FUNjRYIF9fSEFWRV9GTE9BVDEyOAoKCgoKCiNkZWZpbmUgX19IQVZFX0ZM T0FUNjRYX0xPTkdfRE9VQkxFIF9fSEFWRV9GTE9BVDEyOAojIDcxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2dj Yy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9h dG4uaCIgMyA0CiNkZWZpbmUgX19mMTI4KHgpIHggIyNmMTI4CiMgODAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIv Z2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9iaXRzL2Zs b2F0bi5oIiAzIDQKI2RlZmluZSBfX0NGTE9BVDEyOCBfQ29tcGxleCBfRmxvYXQxMjgKIyAx MDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS1maXhlZC9iaXRzL2Zsb2F0bi5oIiAzIDQKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9hdG4tY29tbW9u LmgiIDEgMyA0CiMgMzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8x NC4wLjAvaW5jbHVkZS1maXhlZC9iaXRzL2Zsb2F0bi1jb21tb24uaCIgMyA0CiNkZWZpbmUg X0JJVFNfRkxPQVROX0NPTU1PTl9IIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9uZy1k b3VibGUuaCIgMSAzIDQKIyAyMSAiL3Vzci9pbmNsdWRlL2JpdHMvbG9uZy1kb3VibGUuaCIg MyA0CiNkZWZpbmUgX19MRE9VQkxFX1JFRElSRUNUU19UT19GTE9BVDEyOF9BQkkgMAojIDM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUt Zml4ZWQvYml0cy9mbG9hdG4tY29tbW9uLmgiIDIgMyA0CiMgNDMgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2Nj L2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9iaXRzL2Zsb2F0 bi1jb21tb24uaCIgMyA0CiNkZWZpbmUgX19IQVZFX0ZMT0FUMTYgMAojZGVmaW5lIF9fSEFW RV9GTE9BVDMyIDEKI2RlZmluZSBfX0hBVkVfRkxPQVQ2NCAxCiNkZWZpbmUgX19IQVZFX0ZM T0FUMzJYIDEKI2RlZmluZSBfX0hBVkVfRkxPQVQxMjhYIDAKIyA2MSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9n Y2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL2JpdHMvZmxv YXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX0hBVkVfRElTVElOQ1RfRkxPQVQxNiBfX0hB VkVfRkxPQVQxNgojZGVmaW5lIF9fSEFWRV9ESVNUSU5DVF9GTE9BVDMyIDAKI2RlZmluZSBf X0hBVkVfRElTVElOQ1RfRkxPQVQ2NCAwCiNkZWZpbmUgX19IQVZFX0RJU1RJTkNUX0ZMT0FU MzJYIDAKI2RlZmluZSBfX0hBVkVfRElTVElOQ1RfRkxPQVQ2NFggMAojZGVmaW5lIF9fSEFW RV9ESVNUSU5DVF9GTE9BVDEyOFggX19IQVZFX0ZMT0FUMTI4WAoKCgoKCiNkZWZpbmUgX19I QVZFX0ZMT0FUMTI4X1VOTElLRV9MREJMIChfX0hBVkVfRElTVElOQ1RfRkxPQVQxMjggJiYg X19MREJMX01BTlRfRElHX18gIT0gMTEzKQojIDgxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9hdG4tY29tbW9u LmgiIDMgNAojZGVmaW5lIF9fSEFWRV9GTE9BVE5fTk9UX1RZUEVERUYgMAojIDEwMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVk L2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX2YzMih4KSB4ICMjZjMyCiMg MTE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1 ZGUtZml4ZWQvYml0cy9mbG9hdG4tY29tbW9uLmgiIDMgNAojZGVmaW5lIF9fZjY0KHgpIHgg IyNmNjQKCgoKCgoKCiNkZWZpbmUgX19mMzJ4KHgpIHggIyNmMzJ4CiMgMTM0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0 cy9mbG9hdG4tY29tbW9uLmgiIDMgNAojZGVmaW5lIF9fZjY0eCh4KSB4ICMjZjY0eAojIDE2 MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRl LWZpeGVkL2JpdHMvZmxvYXRuLWNvbW1vbi5oIiAzIDQKI2RlZmluZSBfX0NGTE9BVDMyIF9D b21wbGV4IF9GbG9hdDMyCiMgMTcyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51 eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9hdG4tY29tbW9uLmgiIDMgNAoj ZGVmaW5lIF9fQ0ZMT0FUNjQgX0NvbXBsZXggX0Zsb2F0NjQKCgoKCgoKCiNkZWZpbmUgX19D RkxPQVQzMlggX0NvbXBsZXggX0Zsb2F0MzJ4CiMgMTkyICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29u Z2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvYml0cy9mbG9hdG4tY29t bW9uLmgiIDMgNAojZGVmaW5lIF9fQ0ZMT0FUNjRYIF9Db21wbGV4IF9GbG9hdDY0eAojIDEw NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRl LWZpeGVkL2JpdHMvZmxvYXRuLmgiIDIgMyA0CiMgNDQgIi91c3IvaW5jbHVkZS9tYXRoLmgi IDIgMyA0CgoKCgojZGVmaW5lIEhVR0VfVkFMIChfX2J1aWx0aW5faHVnZV92YWwgKCkpCiMg NTkgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5lIEhVR0VfVkFMRiAoX19idWls dGluX2h1Z2VfdmFsZiAoKSkKI2RlZmluZSBIVUdFX1ZBTEwgKF9fYnVpbHRpbl9odWdlX3Zh bGwgKCkpCiMgNzAgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5lIEhVR0VfVkFM X0YzMiAoX19idWlsdGluX2h1Z2VfdmFsZjMyICgpKQoKCiNkZWZpbmUgSFVHRV9WQUxfRjY0 IChfX2J1aWx0aW5faHVnZV92YWxmNjQgKCkpCgoKI2RlZmluZSBIVUdFX1ZBTF9GMTI4IChf X2J1aWx0aW5faHVnZV92YWxmMTI4ICgpKQoKCiNkZWZpbmUgSFVHRV9WQUxfRjMyWCAoX19i dWlsdGluX2h1Z2VfdmFsZjMyeCAoKSkKCgojZGVmaW5lIEhVR0VfVkFMX0Y2NFggKF9fYnVp bHRpbl9odWdlX3ZhbGY2NHggKCkpCiMgOTEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDMgNAoj ZGVmaW5lIElORklOSVRZIChfX2J1aWx0aW5faW5mZiAoKSkKCgoKCgoKI2RlZmluZSBOQU4g KF9fYnVpbHRpbl9uYW5mICgiIikpCiMgMTEwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQK I2RlZmluZSBTTkFORiAoX19idWlsdGluX25hbnNmICgiIikpCiNkZWZpbmUgU05BTiAoX19i dWlsdGluX25hbnMgKCIiKSkKI2RlZmluZSBTTkFOTCAoX19idWlsdGluX25hbnNsICgiIikp CiMgMTIzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBTTkFORjMyIChfX2J1 aWx0aW5fbmFuc2YzMiAoIiIpKQoKCgoKI2RlZmluZSBTTkFORjY0IChfX2J1aWx0aW5fbmFu c2Y2NCAoIiIpKQoKCgoKI2RlZmluZSBTTkFORjEyOCAoX19idWlsdGluX25hbnNmMTI4ICgi IikpCgoKCgojZGVmaW5lIFNOQU5GMzJYIChfX2J1aWx0aW5fbmFuc2YzMnggKCIiKSkKCgoK CiNkZWZpbmUgU05BTkY2NFggKF9fYnVpbHRpbl9uYW5zZjY0eCAoIiIpKQojIDE1MiAiL3Vz ci9pbmNsdWRlL21hdGguaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZmx0LWV2YWwt bWV0aG9kLmgiIDEgMyA0CiMgMzggIi91c3IvaW5jbHVkZS9iaXRzL2ZsdC1ldmFsLW1ldGhv ZC5oIiAzIDQKI2RlZmluZSBfX0dMSUJDX0ZMVF9FVkFMX01FVEhPRCBfX0ZMVF9FVkFMX01F VEhPRF9fCiMgMTUzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojIDE2MyAiL3Vzci9p bmNsdWRlL21hdGguaCIgMyA0CnR5cGVkZWYgZmxvYXQgZmxvYXRfdDsKdHlwZWRlZiBkb3Vi bGUgZG91YmxlX3Q7CiMgMjA0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvYml0cy9mcC1sb2diLmgiIDEgMyA0CiMgMjcgIi91c3IvaW5jbHVkZS9iaXRz L2ZwLWxvZ2IuaCIgMyA0CiNkZWZpbmUgX19GUF9MT0dCMF9JU19NSU4gMAojZGVmaW5lIF9f RlBfTE9HQk5BTl9JU19NSU4gMAojIDIwNSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQK CgoKCiNkZWZpbmUgRlBfSUxPR0IwICgtMjE0NzQ4MzY0NykKCgoKCiNkZWZpbmUgRlBfSUxP R0JOQU4gMjE0NzQ4MzY0NwoKCgoKCgojZGVmaW5lIF9fRlBfTE9OR19NQVggMHg3ZmZmZmZm ZmZmZmZmZmZmTAoKCgoKI2RlZmluZSBGUF9MTE9HQjAgKC1fX0ZQX0xPTkdfTUFYKQoKCgoK I2RlZmluZSBGUF9MTE9HQk5BTiBfX0ZQX0xPTkdfTUFYCiMgMjQ3ICIvdXNyL2luY2x1ZGUv bWF0aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9mcC1mYXN0LmgiIDEgMyA0CiMg MjggIi91c3IvaW5jbHVkZS9iaXRzL2ZwLWZhc3QuaCIgMyA0CiNkZWZpbmUgRlBfRkFTVF9G TUEgMQoKCgojZGVmaW5lIEZQX0ZBU1RfRk1BRiAxCiMgMjQ4ICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAyIDMgNAoKCgplbnVtCiAgewogICAgRlBfSU5UX1VQV0FSRCA9CiNkZWZpbmUgRlBf SU5UX1VQV0FSRCAwCiAgICAgIDAsCiAgICBGUF9JTlRfRE9XTldBUkQgPQojZGVmaW5lIEZQ X0lOVF9ET1dOV0FSRCAxCiAgICAgIDEsCiAgICBGUF9JTlRfVE9XQVJEWkVSTyA9CiNkZWZp bmUgRlBfSU5UX1RPV0FSRFpFUk8gMgogICAgICAyLAogICAgRlBfSU5UX1RPTkVBUkVTVEZS T01aRVJPID0KI2RlZmluZSBGUF9JTlRfVE9ORUFSRVNURlJPTVpFUk8gMwogICAgICAzLAog ICAgRlBfSU5UX1RPTkVBUkVTVCA9CiNkZWZpbmUgRlBfSU5UX1RPTkVBUkVTVCA0CiAgICAg IDQsCiAgfTsKCgoKCgoKCiNkZWZpbmUgX19TSU1EX0RFQ0woZnVuY3Rpb24pIF9fQ09OQ0FU IChfX0RFQ0xfU0lNRF8sIGZ1bmN0aW9uKQoKI2RlZmluZSBfX01BVEhDQUxMX1ZFQyhmdW5j dGlvbixzdWZmaXgsYXJncykgX19TSU1EX0RFQ0wgKF9fTUFUSF9QUkVDTkFNRSAoZnVuY3Rp b24sIHN1ZmZpeCkpIF9fTUFUSENBTEwgKGZ1bmN0aW9uLCBzdWZmaXgsIGFyZ3MpCgoKCiNk ZWZpbmUgX19NQVRIREVDTF9WRUModHlwZSxmdW5jdGlvbixzdWZmaXgsYXJncykgX19TSU1E X0RFQ0wgKF9fTUFUSF9QUkVDTkFNRSAoZnVuY3Rpb24sIHN1ZmZpeCkpIF9fTUFUSERFQ0wo dHlwZSwgZnVuY3Rpb24sc3VmZml4LCBhcmdzKQoKCgojZGVmaW5lIF9fTUFUSENBTEwoZnVu Y3Rpb24sc3VmZml4LGFyZ3MpIF9fTUFUSERFQ0wgKF9NZG91YmxlXyxmdW5jdGlvbixzdWZm aXgsIGFyZ3MpCgojZGVmaW5lIF9fTUFUSERFQ0wodHlwZSxmdW5jdGlvbixzdWZmaXgsYXJn cykgX19NQVRIREVDTF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncyk7IF9fTUFUSERF Q0xfMSh0eXBlLCBfX0NPTkNBVChfXyxmdW5jdGlvbiksc3VmZml4LCBhcmdzKQoKCiNkZWZp bmUgX19NQVRIQ0FMTFgoZnVuY3Rpb24sc3VmZml4LGFyZ3MsYXR0cmliKSBfX01BVEhERUNM WCAoX01kb3VibGVfLGZ1bmN0aW9uLHN1ZmZpeCwgYXJncywgYXR0cmliKQoKI2RlZmluZSBf X01BVEhERUNMWCh0eXBlLGZ1bmN0aW9uLHN1ZmZpeCxhcmdzLGF0dHJpYikgX19NQVRIREVD TF8xKHR5cGUsIGZ1bmN0aW9uLHN1ZmZpeCwgYXJncykgX19hdHRyaWJ1dGVfXyAoYXR0cmli KTsgX19NQVRIREVDTF8xKHR5cGUsIF9fQ09OQ0FUKF9fLGZ1bmN0aW9uKSxzdWZmaXgsIGFy Z3MpIF9fYXR0cmlidXRlX18gKGF0dHJpYikKCgojZGVmaW5lIF9fTUFUSERFQ0xfMV9JTVBM KHR5cGUsZnVuY3Rpb24sc3VmZml4LGFyZ3MpIGV4dGVybiB0eXBlIF9fTUFUSF9QUkVDTkFN RShmdW5jdGlvbixzdWZmaXgpIGFyZ3MgX19USFJPVwoKI2RlZmluZSBfX01BVEhERUNMXzEo dHlwZSxmdW5jdGlvbixzdWZmaXgsYXJncykgX19NQVRIREVDTF8xX0lNUEwodHlwZSwgZnVu Y3Rpb24sIHN1ZmZpeCwgYXJncykKCgoKI2RlZmluZSBfX01BVEhERUNMX0FMSUFTKHR5cGUs ZnVuY3Rpb24sc3VmZml4LGFyZ3MsYWxpYXMpIF9fTUFUSERFQ0xfMSh0eXBlLCBmdW5jdGlv biwgc3VmZml4LCBhcmdzKQoKCiNkZWZpbmUgX19NQVRIUkVESVIodHlwZSxmdW5jdGlvbixz dWZmaXgsYXJncyx0bykgZXh0ZXJuIHR5cGUgX19SRURJUkVDVF9OVEggKF9fTUFUSF9QUkVD TkFNRSAoZnVuY3Rpb24sIHN1ZmZpeCksIGFyZ3MsIHRvKQoKCiNkZWZpbmUgX01kb3VibGVf IGRvdWJsZQojZGVmaW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIF9fQ09OQ0FUKG5hbWUs cikKI2RlZmluZSBfX01BVEhfREVDTEFSSU5HX0RPVUJMRSAxCiNkZWZpbmUgX19NQVRIX0RF Q0xBUklOR19GTE9BVE4gMAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy1oZWxw ZXItZnVuY3Rpb25zLmgiIDEgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs cy1oZWxwZXItZnVuY3Rpb25zLmgiIDMgNApleHRlcm4gaW50IF9fZnBjbGFzc2lmeSAoZG91 YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCmV4dGVybiBpbnQgX19zaWduYml0IChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBpbnQgX19pc2luZiAo ZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCmV4dGVybiBpbnQgX19maW5pdGUgKGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9faXNuYW4gKGRvdWJs ZSBfX3ZhbHVlKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpl eHRlcm4gaW50IF9faXNlcXNpZyAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCk7 CgoKZXh0ZXJuIGludCBfX2lzc2lnbmFsaW5nIChkb3VibGUgX192YWx1ZSkgdGhyb3cgKCkK ICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzEzICIvdXNyL2luY2x1ZGUv bWF0aC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMg NAojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0CiBleHRlcm4gZG91 YmxlIGFjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvcyAo ZG91YmxlIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGRvdWJsZSBhc2luIChkb3VibGUgX194 KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2FzaW4gKGRvdWJsZSBfX3gpIHRocm93ICgp OwoKIGV4dGVybiBkb3VibGUgYXRhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBk b3VibGUgX19hdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gZG91YmxlIGF0 YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf X2F0YW4yIChkb3VibGUgX195LCBkb3VibGUgX194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIGRv dWJsZSBjb3MgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fY29zIChk b3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gZG91YmxlIHNpbiAoZG91YmxlIF9feCkg dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaW4gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoK IGV4dGVybiBkb3VibGUgdGFuIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs ZSBfX3RhbiAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgogZXh0ZXJuIGRvdWJsZSBjb3No IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Nvc2ggKGRvdWJsZSBf X3gpIHRocm93ICgpOwoKIGV4dGVybiBkb3VibGUgc2luaCAoZG91YmxlIF9feCkgdGhyb3cg KCk7IGV4dGVybiBkb3VibGUgX19zaW5oIChkb3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRl cm4gZG91YmxlIHRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f dGFuaCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gdm9pZCBzaW5jb3MgKGRv dWJsZSBfX3gsIGRvdWJsZSAqX19zaW54LCBkb3VibGUgKl9fY29zeCkgdGhyb3cgKCk7IGV4 dGVybiB2b2lkIF9fc2luY29zIChkb3VibGUgX194LCBkb3VibGUgKl9fc2lueCwgZG91Ymxl ICpfX2Nvc3gpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwoKCgoKIGV4dGVybiBkb3VibGUgYWNvc2ggKGRvdWJs ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYWNvc2ggKGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKIGV4dGVybiBkb3VibGUgYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBl eHRlcm4gZG91YmxlIF9fYXNpbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBk b3VibGUgYXRhbmggKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fYXRh bmggKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCiBleHRlcm4gZG91YmxlIGV4cCAoZG91 YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAgKGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKCmV4dGVybiBkb3VibGUgZnJleHAgKGRvdWJsZSBfX3gsIGludCAqX19leHBv bmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mcmV4cCAoZG91YmxlIF9feCwgaW50 ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGxkZXhwIChkb3VibGUg X194LCBpbnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sZGV4cCAo ZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCiBleHRlcm4gZG91Ymxl IGxvZyAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cgKGRvdWJs ZSBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gZG91YmxlIGxvZzEwIChkb3VibGUgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzEwIChkb3VibGUgX194KSB0aHJvdyAoKTsK CgpleHRlcm4gZG91YmxlIG1vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRyKSB0aHJv dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX21vZGYgKGRvdWJsZSBfX3gsIGRvdWJsZSAqX19pcHRy KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKCiBleHRl cm4gZG91YmxlIGV4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBf X2V4cDEwIChkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gZG91YmxlIGV4cG0x IChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2V4cG0xIChkb3VibGUg X194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIGRvdWJsZSBsb2cxcCAoZG91YmxlIF9feCkgdGhy b3cgKCk7IGV4dGVybiBkb3VibGUgX19sb2cxcCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoK ZXh0ZXJuIGRvdWJsZSBsb2diIChkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs ZSBfX2xvZ2IgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBkb3VibGUgZXhw MiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19leHAyIChkb3VibGUg X194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIGRvdWJsZSBsb2cyIChkb3VibGUgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xvZzIgKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoK CgogZXh0ZXJuIGRvdWJsZSBwb3cgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgp OyBleHRlcm4gZG91YmxlIF9fcG93IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAo KTsKCgpleHRlcm4gZG91YmxlIHNxcnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4g ZG91YmxlIF9fc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gZG91Ymxl IGh5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJs ZSBfX2h5cG90IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCiBleHRl cm4gZG91YmxlIGNicnQgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f Y2JydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY2VpbCAo ZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gZG91YmxlIF9fY2VpbCAoZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZmFicyAoZG91YmxlIF9feCkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZmFicyAo ZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBkb3VibGUgZmxvb3IgKGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2Zsb29yIChkb3VibGUgX194KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbW9k IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2Zt b2QgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwojIDE3NyAiL3Vzci9pbmNs dWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNApleHRlcm4gaW50IGlzaW5mIChkb3VibGUgX192 YWx1ZSkgdGhyb3cgKCkKICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRl cm4gaW50IGZpbml0ZSAoZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZHJlbSAoZG91YmxlIF9feCwgZG91 YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19kcmVtIChkb3VibGUgX194LCBk b3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzaWduaWZpY2FuZCAoZG91 YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zaWduaWZpY2FuZCAoZG91Ymxl IF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgY29weXNpZ24gKGRvdWJsZSBf X3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIGRvdWJsZSBfX2NvcHlzaWduIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gZG91YmxlIG5h biAoY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX25hbiAo Y29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKTsKIyAyMTMgIi91c3IvaW5jbHVkZS9iaXRz L21hdGhjYWxscy5oIiAzIDQKZXh0ZXJuIGludCBpc25hbiAoZG91YmxlIF9fdmFsdWUpIHRo cm93ICgpCiAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCmV4dGVybiBkb3Vi bGUgajAgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qMCAoZG91YmxlKSB0 aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBqMSAoZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX2oxIChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGpuIChpbnQsIGRv dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19qbiAoaW50LCBkb3VibGUpIHRocm93 ICgpOwpleHRlcm4gZG91YmxlIHkwIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl IF9feTAgKGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBkb3VibGUgeTEgKGRvdWJsZSkgdGhy b3cgKCk7IGV4dGVybiBkb3VibGUgX195MSAoZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGRv dWJsZSB5biAoaW50LCBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9feW4gKGlu dCwgZG91YmxlKSB0aHJvdyAoKTsKCgoKCgogZXh0ZXJuIGRvdWJsZSBlcmYgKGRvdWJsZSkg dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmYgKGRvdWJsZSkgdGhyb3cgKCk7CiBleHRl cm4gZG91YmxlIGVyZmMgKGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19lcmZj IChkb3VibGUpIHRocm93ICgpOwpleHRlcm4gZG91YmxlIGxnYW1tYSAoZG91YmxlKSB0aHJv dyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYSAoZG91YmxlKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBkb3VibGUgdGdhbW1hIChkb3VibGUpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9f dGdhbW1hIChkb3VibGUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBkb3VibGUgZ2FtbWEgKGRv dWJsZSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19nYW1tYSAoZG91YmxlKSB0aHJvdyAo KTsKCgoKCgoKCmV4dGVybiBkb3VibGUgbGdhbW1hX3IgKGRvdWJsZSwgaW50ICpfX3NpZ25n YW1wKSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2xnYW1tYV9yIChkb3VibGUsIGludCAq X19zaWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBkb3VibGUgcmludCAoZG91Ymxl IF9feCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19yaW50IChkb3VibGUgX194KSB0aHJv dyAoKTsKCgpleHRlcm4gZG91YmxlIG5leHRhZnRlciAoZG91YmxlIF9feCwgZG91YmxlIF9f eSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19uZXh0YWZ0ZXIgKGRvdWJsZSBfX3gsIGRv dWJsZSBfX3kpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0dG93YXJkIChkb3VibGUg X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbmV4dHRv d2FyZCAoZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCmV4dGVy biBkb3VibGUgbmV4dGRvd24gKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91Ymxl IF9fbmV4dGRvd24gKGRvdWJsZSBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIGRvdWJsZSBuZXh0 dXAgKGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fbmV4dHVwIChkb3Vi bGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSByZW1haW5kZXIgKGRvdWJsZSBf X3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fcmVtYWluZGVyIChk b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBzY2Fs Ym4gKGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gZG91YmxlIF9fc2Nh bGJuIChkb3VibGUgX194LCBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9n YiAoZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19pbG9nYiAoZG91YmxlIF9f eCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBpbnQgbGxvZ2IgKGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19sbG9nYiAoZG91YmxlIF9feCkgdGhyb3cgKCk7 CgoKCgpleHRlcm4gZG91YmxlIHNjYWxibG4gKGRvdWJsZSBfX3gsIGxvbmcgaW50IF9fbikg dGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19zY2FsYmxuIChkb3VibGUgX194LCBsb25nIGlu dCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gZG91YmxlIG5lYXJieWludCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19uZWFyYnlpbnQgKGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKCgpleHRlcm4gZG91YmxlIHJvdW5kIChkb3VibGUgX194KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19yb3VuZCAoZG91 YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl cm4gZG91YmxlIHRydW5jIChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX190cnVuYyAoZG91YmxlIF9feCkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGRvdWJsZSByZW1x dW8gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93ICgpOyBleHRl cm4gZG91YmxlIF9fcmVtcXVvIChkb3VibGUgX194LCBkb3VibGUgX195LCBpbnQgKl9fcXVv KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50IChkb3VibGUgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnQgKGRvdWJsZSBfX3gpIHRocm93ICgp OwpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50IChkb3VibGUgX194 KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZCAoZG91YmxlIF9feCkgdGhy b3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZCAoZG91YmxlIF9feCkgdGhyb3cgKCk7 Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZCAoZG91YmxlIF9f eCkgdGhyb3cgKCk7CgoKCmV4dGVybiBkb3VibGUgZmRpbSAoZG91YmxlIF9feCwgZG91Ymxl IF9feSkgdGhyb3cgKCk7IGV4dGVybiBkb3VibGUgX19mZGltIChkb3VibGUgX194LCBkb3Vi bGUgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGRvdWJsZSBmbWF4IChkb3VibGUgX194LCBk b3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVy biBkb3VibGUgX19mbWF4IChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbWluIChkb3VibGUg X194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 IGV4dGVybiBkb3VibGUgX19mbWluIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBkb3VibGUgZm1hIChk b3VibGUgX194LCBkb3VibGUgX195LCBkb3VibGUgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGRv dWJsZSBfX2ZtYSAoZG91YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cg KCk7CgoKCgpleHRlcm4gZG91YmxlIHJvdW5kZXZlbiAoZG91YmxlIF9feCkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fcm91bmRldmVu IChkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK CmV4dGVybiBfX2ludG1heF90IGZyb21mcCAoZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVu c2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9faW50bWF4X3QgX19mcm9t ZnAgKGRvdWJsZSBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhy b3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKZXh0ZXJuIF9fdWludG1h eF90IHVmcm9tZnAgKGRvdWJsZSBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193 aWR0aCkgdGhyb3cgKCk7IGV4dGVybiBfX3VpbnRtYXhfdCBfX3Vmcm9tZnAgKGRvdWJsZSBf X3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9faW50bWF4X3QgZnJvbWZw eCAoZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJv dyAoKTsgZXh0ZXJuIF9faW50bWF4X3QgX19mcm9tZnB4IChkb3VibGUgX194LCBpbnQgX19y b3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9fdWludG1heF90IHVmcm9tZnB4IChkb3VibGUg X194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRl cm4gX191aW50bWF4X3QgX191ZnJvbWZweCAoZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVu c2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOwoKCmV4dGVybiBpbnQgY2Fub25pY2FsaXplIChkb3VibGUgKl9fY3gsIGNvbnN0 IGRvdWJsZSAqX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGRvdWJsZSBmbWF4bWFnIChk b3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBkb3VibGUgX19mbWF4bWFnIChkb3VibGUgX194LCBkb3VibGUgX195 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJs ZSBmbWlubWFnIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mbWlubWFnIChkb3VibGUgX194 LCBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK CgpleHRlcm4gZG91YmxlIGZtYXhpbXVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mbWF4 aW11bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUgZm1pbmltdW0gKGRvdWJsZSBfX3gsIGRv dWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu IGRvdWJsZSBfX2ZtaW5pbXVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJsZSBmbWF4aW11bV9u dW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtYXhpbXVtX251bSAoZG91YmxlIF9feCwg ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBkb3VibGUgZm1pbmltdW1fbnVtIChkb3VibGUgX194LCBkb3VibGUgX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBkb3VibGUgX19mbWlu aW11bV9udW0gKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZG91YmxlIGZtYXhpbXVtX21hZyAoZG91Ymxl IF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OyBleHRlcm4gZG91YmxlIF9fZm1heGltdW1fbWFnIChkb3VibGUgX194LCBkb3VibGUgX195 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGRvdWJs ZSBmbWluaW11bV9tYWcgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGRvdWJsZSBfX2ZtaW5pbXVtX21hZyAo ZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCmV4dGVybiBkb3VibGUgZm1heGltdW1fbWFnX251bSAoZG91YmxlIF9feCwg ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gZG91YmxlIF9fZm1heGltdW1fbWFnX251bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBkb3VibGUg Zm1pbmltdW1fbWFnX251bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gZG91YmxlIF9fZm1pbmltdW1fbWFn X251bSAoZG91YmxlIF9feCwgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0b3RhbG9yZGVyIChjb25zdCBkb3VibGUg Kl9feCwgY29uc3QgZG91YmxlICpfX3kpIHRocm93ICgpCgogICAgIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgdG90YWxvcmRlcm1hZyAoY29uc3QgZG91Ymxl ICpfX3gsIGNvbnN0IGRvdWJsZSAqX195KSB0aHJvdyAoKQoKICAgICBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKTsKCgpleHRlcm4gZG91YmxlIGdldHBheWxvYWQgKGNvbnN0IGRvdWJs ZSAqX194KSB0aHJvdyAoKTsgZXh0ZXJuIGRvdWJsZSBfX2dldHBheWxvYWQgKGNvbnN0IGRv dWJsZSAqX194KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNldHBheWxvYWQgKGRvdWJsZSAq X194LCBkb3VibGUgX19wYXlsb2FkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNldHBheWxv YWRzaWcgKGRvdWJsZSAqX194LCBkb3VibGUgX19wYXlsb2FkKSB0aHJvdyAoKTsKCgoKCgoK CmV4dGVybiBkb3VibGUgc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIHRocm93ICgp OyBleHRlcm4gZG91YmxlIF9fc2NhbGIgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX24pIHRocm93 ICgpOwojIDMxNCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKI3VuZGVmIF9NZG91Ymxl XwojdW5kZWYgX19NQVRIX1BSRUNOQU1FCiN1bmRlZiBfX01BVEhfREVDTEFSSU5HX0RPVUJM RQojdW5kZWYgX19NQVRIX0RFQ0xBUklOR19GTE9BVE4KCgoKCgoKCiNkZWZpbmUgX01kb3Vi bGVfIGZsb2F0CiNkZWZpbmUgX19NQVRIX1BSRUNOQU1FKG5hbWUscikgbmFtZSAjI2YgIyNy CiNkZWZpbmUgX19NQVRIX0RFQ0xBUklOR19ET1VCTEUgMAojZGVmaW5lIF9fTUFUSF9ERUNM QVJJTkdfRkxPQVROIDAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMtaGVscGVy LWZ1bmN0aW9ucy5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMt aGVscGVyLWZ1bmN0aW9ucy5oIiAzIDQKZXh0ZXJuIGludCBfX2ZwY2xhc3NpZnlmIChmbG9h dCBfX3ZhbHVlKSB0aHJvdyAoKQogICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgpleHRlcm4gaW50IF9fc2lnbmJpdGYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gaW50IF9faXNpbmZmIChm bG9hdCBfX3ZhbHVlKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgpleHRlcm4gaW50IF9fZmluaXRlZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGludCBfX2lzbmFuZiAoZmxvYXQg X192YWx1ZSkgdGhyb3cgKCkKICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0 ZXJuIGludCBfX2lzZXFzaWdmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoK ZXh0ZXJuIGludCBfX2lzc2lnbmFsaW5nZiAoZmxvYXQgX192YWx1ZSkgdGhyb3cgKCkKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CiMgMzMwICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMgNAoj IDUzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0CiBleHRlcm4gZmxvYXQg YWNvc2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2Fjb3NmIChmbG9h dCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBmbG9hdCBhc2luZiAoZmxvYXQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgogZXh0 ZXJuIGZsb2F0IGF0YW5mIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19h dGFuZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gZmxvYXQgYXRhbjJmIChmbG9h dCBfX3ksIGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2F0YW4yZiAoZmxv YXQgX195LCBmbG9hdCBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gZmxvYXQgY29zZiAoZmxv YXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fY29zZiAoZmxvYXQgX194KSB0aHJv dyAoKTsKCiBleHRlcm4gZmxvYXQgc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGZsb2F0IF9fc2luZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gZmxvYXQgdGFu ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fdGFuZiAoZmxvYXQgX194 KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gZmxvYXQgY29zaGYgKGZsb2F0IF9feCkgdGhyb3cg KCk7IGV4dGVybiBmbG9hdCBfX2Nvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKIGV4dGVy biBmbG9hdCBzaW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2lu aGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGZsb2F0IHRhbmhmIChmbG9hdCBf X3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX190YW5oZiAoZmxvYXQgX194KSB0aHJvdyAo KTsKCgoKIGV4dGVybiB2b2lkIHNpbmNvc2YgKGZsb2F0IF9feCwgZmxvYXQgKl9fc2lueCwg ZmxvYXQgKl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zZiAoZmxvYXQg X194LCBmbG9hdCAqX19zaW54LCBmbG9hdCAqX19jb3N4KSB0aHJvdyAoKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCiBl eHRlcm4gZmxvYXQgYWNvc2hmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQg X19hY29zaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGZsb2F0IGFzaW5oZiAo ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fYXNpbmhmIChmbG9hdCBfX3gp IHRocm93ICgpOwoKIGV4dGVybiBmbG9hdCBhdGFuaGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7 IGV4dGVybiBmbG9hdCBfX2F0YW5oZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCgogZXh0 ZXJuIGZsb2F0IGV4cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2V4 cGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZyZXhwZiAoZmxvYXQg X194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mcmV4cGYg KGZsb2F0IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQg bGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIGZs b2F0IF9fbGRleHBmIChmbG9hdCBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgog ZXh0ZXJuIGZsb2F0IGxvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf X2xvZ2YgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBmbG9hdCBsb2cxMGYgKGZs b2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzEwZiAoZmxvYXQgX194KSB0 aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgbW9kZmYgKGZsb2F0IF9feCwgZmxvYXQgKl9faXB0 cikgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX21vZGZmIChmbG9hdCBfX3gsIGZsb2F0ICpf X2lwdHIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoK IGV4dGVybiBmbG9hdCBleHAxMGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9h dCBfX2V4cDEwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gZmxvYXQgZXhw bTFmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19leHBtMWYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBmbG9hdCBsb2cxcGYgKGZsb2F0IF9feCkgdGhy b3cgKCk7IGV4dGVybiBmbG9hdCBfX2xvZzFwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgpl eHRlcm4gZmxvYXQgbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBf X2xvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBmbG9hdCBleHAyZiAo ZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXhwMmYgKGZsb2F0IF9feCkg dGhyb3cgKCk7CgoKIGV4dGVybiBmbG9hdCBsb2cyZiAoZmxvYXQgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGZsb2F0IF9fbG9nMmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgoKCiBleHRl cm4gZmxvYXQgcG93ZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4g ZmxvYXQgX19wb3dmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJu IGZsb2F0IHNxcnRmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19zcXJ0 ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKIGV4dGVybiBmbG9hdCBoeXBvdGYgKGZsb2F0 IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9faHlwb3RmIChmbG9h dCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCk7CgoKCgogZXh0ZXJuIGZsb2F0IGNicnRmIChm bG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19jYnJ0ZiAoZmxvYXQgX194KSB0 aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGNlaWxmIChmbG9hdCBfX3gpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fY2VpbGYgKGZs b2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy biBmbG9hdCBmYWJzZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZhYnNmIChmbG9hdCBfX3gpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZmxvb3JmIChmbG9h dCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZs b2F0IF9fZmxvb3JmIChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0 aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZm1vZGYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0 aHJvdyAoKTsKIyAxNzcgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0 ZXJuIGludCBpc2luZmYgKGZsb2F0IF9fdmFsdWUpIHRocm93ICgpCiAgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCBmaW5pdGVmIChmbG9hdCBfX3ZhbHVl KSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxv YXQgZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0 IF9fZHJlbWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZs b2F0IHNpZ25pZmljYW5kZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f c2lnbmlmaWNhbmRmIChmbG9hdCBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gZmxvYXQg Y29weXNpZ25mIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOyBleHRlcm4gZmxvYXQgX19jb3B5c2lnbmYgKGZsb2F0IF9feCwg ZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl eHRlcm4gZmxvYXQgbmFuZiAoY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKTsgZXh0ZXJu IGZsb2F0IF9fbmFuZiAoY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKTsKIyAyMTMgIi91 c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0ZXJuIGludCBpc25hbmYgKGZs b2F0IF9fdmFsdWUpIHRocm93ICgpCiAgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK CgoKCmV4dGVybiBmbG9hdCBqMGYgKGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9f ajBmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBqMWYgKGZsb2F0KSB0aHJvdyAo KTsgZXh0ZXJuIGZsb2F0IF9fajFmIChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBq bmYgKGludCwgZmxvYXQpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19qbmYgKGludCwgZmxv YXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTBmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVy biBmbG9hdCBfX3kwZiAoZmxvYXQpIHRocm93ICgpOwpleHRlcm4gZmxvYXQgeTFmIChmbG9h dCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3kxZiAoZmxvYXQpIHRocm93ICgpOwpleHRl cm4gZmxvYXQgeW5mIChpbnQsIGZsb2F0KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9feW5m IChpbnQsIGZsb2F0KSB0aHJvdyAoKTsKCgoKCgogZXh0ZXJuIGZsb2F0IGVyZmYgKGZsb2F0 KSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fZXJmZiAoZmxvYXQpIHRocm93ICgpOwogZXh0 ZXJuIGZsb2F0IGVyZmNmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2VyZmNm IChmbG9hdCkgdGhyb3cgKCk7CmV4dGVybiBmbG9hdCBsZ2FtbWFmIChmbG9hdCkgdGhyb3cg KCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCmV4dGVy biBmbG9hdCB0Z2FtbWFmIChmbG9hdCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3RnYW1t YWYgKGZsb2F0KSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gZmxvYXQgZ2FtbWFmIChmbG9hdCkg dGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX2dhbW1hZiAoZmxvYXQpIHRocm93ICgpOwoKCgoK CgoKZXh0ZXJuIGZsb2F0IGxnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2FtcCkgdGhy b3cgKCk7IGV4dGVybiBmbG9hdCBfX2xnYW1tYWZfciAoZmxvYXQsIGludCAqX19zaWduZ2Ft cCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBmbG9hdCByaW50ZiAoZmxvYXQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGZsb2F0IF9fcmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKZXh0 ZXJuIGZsb2F0IG5leHRhZnRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKTsg ZXh0ZXJuIGZsb2F0IF9fbmV4dGFmdGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93 ICgpOwoKZXh0ZXJuIGZsb2F0IG5leHR0b3dhcmRmIChmbG9hdCBfX3gsIGxvbmcgZG91Ymxl IF9feSkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25leHR0b3dhcmRmIChmbG9hdCBfX3gs IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgbmV4dGRvd25m IChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19uZXh0ZG93bmYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gZmxvYXQgbmV4dHVwZiAoZmxvYXQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIGZsb2F0IF9fbmV4dHVwZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoK ZXh0ZXJuIGZsb2F0IHJlbWFpbmRlcmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAo KTsgZXh0ZXJuIGZsb2F0IF9fcmVtYWluZGVyZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo cm93ICgpOwoKCgpleHRlcm4gZmxvYXQgc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0 aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2NhbGJuZiAoZmxvYXQgX194LCBpbnQgX19uKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBpbnQgX19pbG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9u ZyBpbnQgbGxvZ2JmIChmbG9hdCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19s bG9nYmYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gZmxvYXQgc2NhbGJsbmYg KGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIGZsb2F0IF9fc2Nh bGJsbmYgKGZsb2F0IF9feCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZs b2F0IG5lYXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX25l YXJieWludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCByb3VuZGYg KGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gZmxvYXQgX19yb3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCgpleHRlcm4gZmxvYXQgdHJ1bmNmIChmbG9hdCBfX3gpIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fdHJ1bmNm IChmbG9hdCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoK CmV4dGVybiBmbG9hdCByZW1xdW9mIChmbG9hdCBfX3gsIGZsb2F0IF9feSwgaW50ICpfX3F1 bykgdGhyb3cgKCk7IGV4dGVybiBmbG9hdCBfX3JlbXF1b2YgKGZsb2F0IF9feCwgZmxvYXQg X195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IGxyaW50 ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRmIChmbG9h dCBfX3gpIHRocm93ICgpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IGxs cmludGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxy aW50ZiAoZmxvYXQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3VuZGYg KGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGYgKGZsb2F0 IF9feCkgdGhyb3cgKCk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxy b3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxy b3VuZGYgKGZsb2F0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBmbG9hdCBmZGltZiAoZmxv YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19mZGltZiAoZmxv YXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gZmxvYXQgZm1heGYgKGZs b2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7IGV4dGVybiBmbG9hdCBfX2ZtYXhmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBmbG9hdCBmbWluZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBmbG9hdCBmbWFm IChmbG9hdCBfX3gsIGZsb2F0IF9feSwgZmxvYXQgX196KSB0aHJvdyAoKTsgZXh0ZXJuIGZs b2F0IF9fZm1hZiAoZmxvYXQgX194LCBmbG9hdCBfX3ksIGZsb2F0IF9feikgdGhyb3cgKCk7 CgoKCgpleHRlcm4gZmxvYXQgcm91bmRldmVuZiAoZmxvYXQgX194KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX3JvdW5kZXZlbmYgKGZs b2F0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl cm4gX19pbnRtYXhfdCBmcm9tZnBmIChmbG9hdCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25l ZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7IGV4dGVybiBfX2ludG1heF90IF9fZnJvbWZwZiAo ZmxvYXQgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCmV4dGVybiBfX3VpbnRtYXhfdCB1 ZnJvbWZwZiAoZmxvYXQgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgp IHRocm93ICgpOyBleHRlcm4gX191aW50bWF4X3QgX191ZnJvbWZwZiAoZmxvYXQgX194LCBp bnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4dGVybiBfX2ludG1heF90IGZyb21mcHhmIChm bG9hdCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7 IGV4dGVybiBfX2ludG1heF90IF9fZnJvbWZweGYgKGZsb2F0IF9feCwgaW50IF9fcm91bmQs IHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKCgoKCmV4dGVybiBfX3VpbnRtYXhfdCB1ZnJvbWZweGYgKGZsb2F0IF9feCwg aW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9f dWludG1heF90IF9fdWZyb21mcHhmIChmbG9hdCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25l ZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKCgpleHRlcm4gaW50IGNhbm9uaWNhbGl6ZWYgKGZsb2F0ICpfX2N4LCBjb25zdCBmbG9h dCAqX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGZsb2F0IGZtYXhtYWdmIChmbG9hdCBf X3gsIGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl eHRlcm4gZmxvYXQgX19mbWF4bWFnZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1pbm1hZ2Yg KGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZtaW5tYWdmIChmbG9hdCBfX3gsIGZsb2F0IF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGZsb2F0 IGZtYXhpbXVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGltdW1mIChmbG9hdCBfX3gs IGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBmbG9hdCBmbWluaW11bWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZtaW5pbXVtZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgpleHRlcm4gZmxvYXQgZm1heGltdW1fbnVtZiAoZmxvYXQgX194LCBmbG9hdCBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0 IF9fZm1heGltdW1fbnVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1pbmltdW1fbnVtZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1pbmltdW1fbnVtZiAoZmxvYXQgX194LCBmbG9hdCBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxv YXQgZm1heGltdW1fbWFnZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1heGltdW1fbWFnZiAo ZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgpleHRlcm4gZmxvYXQgZm1pbmltdW1fbWFnZiAoZmxvYXQgX194LCBmbG9hdCBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0 IF9fZm1pbmltdW1fbWFnZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gZmxvYXQgZm1heGltdW1fbWFnX251 bWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBmbG9hdCBfX2ZtYXhpbXVtX21hZ19udW1mIChmbG9hdCBfX3gs IGZsb2F0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBmbG9hdCBmbWluaW11bV9tYWdfbnVtZiAoZmxvYXQgX194LCBmbG9hdCBfX3kpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGZsb2F0IF9fZm1p bmltdW1fbWFnX251bWYgKGZsb2F0IF9feCwgZmxvYXQgX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJmIChjb25z dCBmbG9hdCAqX194LCBjb25zdCBmbG9hdCAqX195KSB0aHJvdyAoKQoKICAgICBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJtYWdmIChjb25z dCBmbG9hdCAqX194LCBjb25zdCBmbG9hdCAqX195KSB0aHJvdyAoKQoKICAgICBfX2F0dHJp YnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gZmxvYXQgZ2V0cGF5bG9hZGYgKGNvbnN0 IGZsb2F0ICpfX3gpIHRocm93ICgpOyBleHRlcm4gZmxvYXQgX19nZXRwYXlsb2FkZiAoY29u c3QgZmxvYXQgKl9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzZXRwYXlsb2FkZiAoZmxv YXQgKl9feCwgZmxvYXQgX19wYXlsb2FkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNldHBh eWxvYWRzaWdmIChmbG9hdCAqX194LCBmbG9hdCBfX3BheWxvYWQpIHRocm93ICgpOwoKCgoK CgoKZXh0ZXJuIGZsb2F0IHNjYWxiZiAoZmxvYXQgX194LCBmbG9hdCBfX24pIHRocm93ICgp OyBleHRlcm4gZmxvYXQgX19zY2FsYmYgKGZsb2F0IF9feCwgZmxvYXQgX19uKSB0aHJvdyAo KTsKIyAzMzEgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiN1bmRlZiBfTWRvdWJsZV8K I3VuZGVmIF9fTUFUSF9QUkVDTkFNRQojdW5kZWYgX19NQVRIX0RFQ0xBUklOR19ET1VCTEUK I3VuZGVmIF9fTUFUSF9ERUNMQVJJTkdfRkxPQVROCiMgMzkzICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAzIDQKI2RlZmluZSBfTWRvdWJsZV8gbG9uZyBkb3VibGUKI2RlZmluZSBfX01BVEhf UFJFQ05BTUUobmFtZSxyKSBuYW1lICMjbCAjI3IKI2RlZmluZSBfX01BVEhfREVDTEFSSU5H X0RPVUJMRSAwCiNkZWZpbmUgX19NQVRIX0RFQ0xBUklOR19GTE9BVE4gMAojZGVmaW5lIF9f TUFUSF9ERUNMQVJFX0xET1VCTEUgMQojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs cy1oZWxwZXItZnVuY3Rpb25zLmgiIDEgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL21h dGhjYWxscy1oZWxwZXItZnVuY3Rpb25zLmgiIDMgNApleHRlcm4gaW50IF9fZnBjbGFzc2lm eWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgICAgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19zaWduYml0bCAobG9uZyBkb3VibGUgX192 YWx1ZSkgdGhyb3cgKCkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4 dGVybiBpbnQgX19pc2luZmwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBpbnQgX19maW5pdGVsIChsb25n IGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsKCgpleHRlcm4gaW50IF9faXNuYW5sIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAo KQogIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gaW50IF9faXNlcXNp Z2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRl cm4gaW50IF9faXNzaWduYWxpbmdsIChsb25nIGRvdWJsZSBfX3ZhbHVlKSB0aHJvdyAoKQog ICAgIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKIyAzOTkgIi91c3IvaW5jbHVkZS9t YXRoLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMyA0 CiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKIGV4dGVybiBsb25n IGRvdWJsZSBhY29zbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fYWNvc2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGxv bmcgZG91YmxlIGFzaW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBkb3VibGUgX19hc2lubCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRlcm4g bG9uZyBkb3VibGUgYXRhbmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBs b25nIGRvdWJsZSBfX2F0YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKIGV4dGVy biBsb25nIGRvdWJsZSBhdGFuMmwgKGxvbmcgZG91YmxlIF9feSwgbG9uZyBkb3VibGUgX194 KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbjJsIChsb25nIGRvdWJsZSBf X3ksIGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBsb25nIGRvdWJsZSBj b3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19j b3NsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBsb25nIGRvdWJsZSBz aW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19z aW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBsb25nIGRvdWJsZSB0 YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX190 YW5sIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBsb25nIGRvdWJs ZSBjb3NobCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fY29zaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGxvbmcgZG91 YmxlIHNpbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19zaW5obCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gbG9uZyBk b3VibGUgdGFuaGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX3RhbmhsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgogZXh0ZXJuIHZv aWQgc2luY29zbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSAqX19zaW54LCBsb25n IGRvdWJsZSAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NsIChsb25n IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlICpfX3NpbngsIGxvbmcgZG91YmxlICpfX2Nvc3gp IHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoKCgoKIGV4dGVybiBsb25nIGRvdWJsZSBhY29zaGwgKGxvbmcgZG91 YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2Fjb3NobCAobG9uZyBk b3VibGUgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gbG9uZyBkb3VibGUgYXNpbmhsIChsb25n IGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19hc2luaGwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIGxvbmcgZG91YmxlIGF0YW5obCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fYXRhbmhs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCiBleHRlcm4gbG9uZyBkb3VibGUg ZXhwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f ZXhwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUg ZnJleHBsIChsb25nIGRvdWJsZSBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGRvdWJsZSBfX2ZyZXhwbCAobG9uZyBkb3VibGUgX194LCBpbnQgKl9fZXhw b25lbnQpIHRocm93ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBsZGV4cGwgKGxvbmcgZG91 YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg X19sZGV4cGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoK CiBleHRlcm4gbG9uZyBkb3VibGUgbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsg ZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK CgogZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbG9nMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93 ICgpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBtb2RmbCAobG9uZyBkb3VibGUgX194LCBsb25n IGRvdWJsZSAqX19pcHRyKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbW9kZmwg KGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgKl9faXB0cikgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgogZXh0ZXJuIGxvbmcgZG91YmxlIGV4 cDEwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9f ZXhwMTBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBsb25nIGRv dWJsZSBleHBtMWwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRv dWJsZSBfX2V4cG0xbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIGxv bmcgZG91YmxlIGxvZzFwbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxv bmcgZG91YmxlIF9fbG9nMXBsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCmV4dGVy biBsb25nIGRvdWJsZSBsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgZG91YmxlIF9fbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgog ZXh0ZXJuIGxvbmcgZG91YmxlIGV4cDJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBl eHRlcm4gbG9uZyBkb3VibGUgX19leHAybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK CgogZXh0ZXJuIGxvbmcgZG91YmxlIGxvZzJsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgp OyBleHRlcm4gbG9uZyBkb3VibGUgX19sb2cybCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAo KTsKCgoKCgoKIGV4dGVybiBsb25nIGRvdWJsZSBwb3dsIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3Bvd2wgKGxv bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9u ZyBkb3VibGUgc3FydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n IGRvdWJsZSBfX3NxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgogZXh0ZXJu IGxvbmcgZG91YmxlIGh5cG90bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp IHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19oeXBvdGwgKGxvbmcgZG91YmxlIF9f eCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gbG9uZyBkb3VibGUg Y2JydGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBf X2NicnRsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBk b3VibGUgY2VpbGwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19jZWlsbCAobG9uZyBkb3VibGUg X194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxv bmcgZG91YmxlIGZhYnNsIChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZmFic2wgKGxvbmcgZG91 YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVy biBsb25nIGRvdWJsZSBmbG9vcmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbG9vcmwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoK CmV4dGVybiBsb25nIGRvdWJsZSBmbW9kbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJs ZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbW9kbCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwojIDE3NyAiL3Vzci9pbmNsdWRl L2JpdHMvbWF0aGNhbGxzLmgiIDMgNApleHRlcm4gaW50IGlzaW5mbCAobG9uZyBkb3VibGUg X192YWx1ZSkgdGhyb3cgKCkKICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpl eHRlcm4gaW50IGZpbml0ZWwgKGxvbmcgZG91YmxlIF9fdmFsdWUpIHRocm93ICgpCiAgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBkcmVtbCAo bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBkb3VibGUgX19kcmVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRo cm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgc2lnbmlmaWNhbmRsIChsb25nIGRvdWJs ZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19zaWduaWZpY2FuZGwgKGxv bmcgZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBjb3B5 c2lnbmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2NvcHlzaWdu bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBuYW5sIChjb25z dCBjaGFyICpfX3RhZ2IpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uYW5sIChj b25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpOwojIDIxMyAiL3Vzci9pbmNsdWRlL2JpdHMv bWF0aGNhbGxzLmgiIDMgNApleHRlcm4gaW50IGlzbmFubCAobG9uZyBkb3VibGUgX192YWx1 ZSkgdGhyb3cgKCkKICBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgoKZXh0ZXJu IGxvbmcgZG91YmxlIGowbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBk b3VibGUgX19qMGwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91Ymxl IGoxbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19qMWwg KGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91YmxlIGpubCAoaW50LCBs b25nIGRvdWJsZSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2pubCAoaW50LCBs b25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MGwgKGxvbmcgZG91 YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTBsIChsb25nIGRvdWJsZSkg dGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB5MWwgKGxvbmcgZG91YmxlKSB0aHJvdyAo KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9feTFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CmV4 dGVybiBsb25nIGRvdWJsZSB5bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRl cm4gbG9uZyBkb3VibGUgX195bmwgKGludCwgbG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoK CiBleHRlcm4gbG9uZyBkb3VibGUgZXJmbCAobG9uZyBkb3VibGUpIHRocm93ICgpOyBleHRl cm4gbG9uZyBkb3VibGUgX19lcmZsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CiBleHRlcm4g bG9uZyBkb3VibGUgZXJmY2wgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fZXJmY2wgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgZG91 YmxlIGxnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fbGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgZG91 YmxlIHRnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fdGdhbW1hbCAobG9uZyBkb3VibGUpIHRocm93ICgpOwoKCgoKCmV4dGVybiBsb25nIGRv dWJsZSBnYW1tYWwgKGxvbmcgZG91YmxlKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91Ymxl IF9fZ2FtbWFsIChsb25nIGRvdWJsZSkgdGhyb3cgKCk7CgoKCgoKCgpleHRlcm4gbG9uZyBk b3VibGUgbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAo KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbGdhbW1hbF9yIChsb25nIGRvdWJsZSwgaW50ICpf X3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIHJpbnRsIChs b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19yaW50bCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dGFm dGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBleHRl cm4gbG9uZyBkb3VibGUgX19uZXh0YWZ0ZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91 YmxlIF9feSkgdGhyb3cgKCk7CgpleHRlcm4gbG9uZyBkb3VibGUgbmV4dHRvd2FyZGwgKGxv bmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fbmV4dHRvd2FyZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195 KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0ZG93bmwgKGxvbmcgZG91 YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX25leHRkb3dubCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJsZSBuZXh0dXBsIChs b25nIGRvdWJsZSBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUgX19uZXh0dXBs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgcmVt YWluZGVybCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOyBl eHRlcm4gbG9uZyBkb3VibGUgX19yZW1haW5kZXJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRvdWJsZSBzY2FsYm5sIChs b25nIGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gbG9uZyBkb3VibGUg X19zY2FsYm5sIChsb25nIGRvdWJsZSBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRl cm4gaW50IGlsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBf X2lsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGlu dCBsbG9nYmwgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBf X2xsb2dibCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRv dWJsZSBzY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBsb25nIGludCBfX24pIHRocm93ICgp OyBleHRlcm4gbG9uZyBkb3VibGUgX19zY2FsYmxubCAobG9uZyBkb3VibGUgX194LCBsb25n IGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBkb3VibGUgbmVhcmJ5aW50bCAo bG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fbmVhcmJ5 aW50bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgZG91Ymxl IHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3JvdW5kbCAobG9uZyBkb3VibGUgX194 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBsb25n IGRvdWJsZSB0cnVuY2wgKGxvbmcgZG91YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX190cnVuY2wgKGxvbmcgZG91 YmxlIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0 ZXJuIGxvbmcgZG91YmxlIHJlbXF1b2wgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUg X195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcmVtcXVv bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGludCAqX19xdW8pIHRocm93 ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRsIChsb25nIGRvdWJsZSBfX3gpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scmludGwgKGxvbmcgZG91YmxlIF9feCkgdGhy b3cgKCk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50bCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRs IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5k bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5k bCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25fXwpleHRlcm4gbG9u ZyBsb25nIGludCBsbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgbG9uZyBpbnQgX19sbHJvdW5kbCAobG9uZyBkb3VibGUgX194KSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZkaW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91 YmxlIF9feSkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZkaW1sIChsb25nIGRv dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWF4bCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1h eGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtaW5sIChsb25n IGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3VibGUgX19mbWlubCAobG9uZyBkb3VibGUg X194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgoKZXh0ZXJuIGxvbmcgZG91YmxlIGZtYWwgKGxvbmcgZG91YmxlIF9feCwgbG9u ZyBkb3VibGUgX195LCBsb25nIGRvdWJsZSBfX3opIHRocm93ICgpOyBleHRlcm4gbG9uZyBk b3VibGUgX19mbWFsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSwgbG9uZyBk b3VibGUgX196KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBsb25nIGRvdWJsZSByb3VuZGV2ZW5s IChsb25nIGRvdWJsZSBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fcm91bmRldmVubCAobG9uZyBkb3VibGUgX194KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBfX2ludG1h eF90IGZyb21mcGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGlu dCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9faW50bWF4X3QgX19mcm9tZnBsIChsb25n IGRvdWJsZSBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cg KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKZXh0ZXJuIF9fdWludG1heF90 IHVmcm9tZnBsIChsb25nIGRvdWJsZSBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQg X193aWR0aCkgdGhyb3cgKCk7IGV4dGVybiBfX3VpbnRtYXhfdCBfX3Vmcm9tZnBsIChsb25n IGRvdWJsZSBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cg KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9faW50bWF4 X3QgZnJvbWZweGwgKGxvbmcgZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGlu dCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9faW50bWF4X3QgX19mcm9tZnB4bCAobG9u ZyBkb3VibGUgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93 ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9fdWludG1h eF90IHVmcm9tZnB4bCAobG9uZyBkb3VibGUgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQg aW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX191aW50bWF4X3QgX191ZnJvbWZweGwg KGxvbmcgZG91YmxlIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0 aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQg Y2Fub25pY2FsaXplbCAobG9uZyBkb3VibGUgKl9fY3gsIGNvbnN0IGxvbmcgZG91YmxlICpf X3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBkb3VibGUgZm1heG1hZ2wgKGxvbmcg ZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBsb25nIGRvdWJsZSBfX2ZtYXhtYWdsIChsb25nIGRvdWJs ZSBfX3gsIGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBmbWlubWFnbCAobG9uZyBkb3VibGUgX194 LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsgZXh0ZXJuIGxvbmcgZG91YmxlIF9fZm1pbm1hZ2wgKGxvbmcgZG91YmxlIF9feCwgbG9u ZyBkb3VibGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK CgpleHRlcm4gbG9uZyBkb3VibGUgZm1heGltdW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gbG9uZyBkb3VibGUgX19mbWF4aW11bWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu IGxvbmcgZG91YmxlIGZtaW5pbXVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fZm1pbmltdW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWF4aW11bV9udW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19mbWF4aW11bV9udW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWluaW11bV9udW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19mbWluaW11bV9udW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWF4aW11bV9tYWdsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19mbWF4aW11bV9tYWdsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWluaW11bV9tYWdsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gbG9uZyBkb3Vi bGUgX19mbWluaW11bV9tYWdsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBsb25nIGRv dWJsZSBmbWF4aW11bV9tYWdfbnVtbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIGxvbmcg ZG91YmxlIF9fZm1heGltdW1fbWFnX251bWwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3Vi bGUgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu IGxvbmcgZG91YmxlIGZtaW5pbXVtX21hZ19udW1sIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gbG9uZyBkb3VibGUgX19mbWluaW11bV9tYWdfbnVtbCAobG9uZyBkb3VibGUgX194LCBs b25nIGRvdWJsZSBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgoKCmV4dGVybiBpbnQgdG90YWxvcmRlcmwgKGNvbnN0IGxvbmcgZG91YmxlICpfX3gsIGNv bnN0IGxvbmcgZG91YmxlICpfX3kpIHRocm93ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpOwoKCmV4dGVybiBpbnQgdG90YWxvcmRlcm1hZ2wgKGNvbnN0IGxvbmcgZG91 YmxlICpfX3gsIGNvbnN0IGxvbmcgZG91YmxlICpfX3kpIHRocm93ICgpCgogICAgIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBsb25nIGRvdWJsZSBnZXRwYXlsb2Fk bCAoY29uc3QgbG9uZyBkb3VibGUgKl9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJs ZSBfX2dldHBheWxvYWRsIChjb25zdCBsb25nIGRvdWJsZSAqX194KSB0aHJvdyAoKTsKCgpl eHRlcm4gaW50IHNldHBheWxvYWRsIChsb25nIGRvdWJsZSAqX194LCBsb25nIGRvdWJsZSBf X3BheWxvYWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2V0cGF5bG9hZHNpZ2wgKGxvbmcg ZG91YmxlICpfX3gsIGxvbmcgZG91YmxlIF9fcGF5bG9hZCkgdGhyb3cgKCk7CgoKCgoKCgpl eHRlcm4gbG9uZyBkb3VibGUgc2NhbGJsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcgZG91Ymxl IF9fbikgdGhyb3cgKCk7IGV4dGVybiBsb25nIGRvdWJsZSBfX3NjYWxibCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX24pIHRocm93ICgpOwojIDQwMCAiL3Vzci9pbmNsdWRl L21hdGguaCIgMiAzIDQKCiN1bmRlZiBfTWRvdWJsZV8KI3VuZGVmIF9fTUFUSF9QUkVDTkFN RQojdW5kZWYgX19NQVRIX0RFQ0xBUklOR19ET1VCTEUKI3VuZGVmIF9fTUFUSF9ERUNMQVJJ TkdfRkxPQVROCiMgNDQyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBfTWRv dWJsZV8gX0Zsb2F0MzIKI2RlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSxyKSBuYW1lICMj ZjMyICMjcgojZGVmaW5lIF9fTUFUSF9ERUNMQVJJTkdfRE9VQkxFIDAKI2RlZmluZSBfX01B VEhfREVDTEFSSU5HX0ZMT0FUTiAxCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj YWxscy5oIiAxIDMgNAojIDUzICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0 CiBleHRlcm4gX0Zsb2F0MzIgYWNvc2YzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0 ZXJuIF9GbG9hdDMyIF9fYWNvc2YzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCiBleHRl cm4gX0Zsb2F0MzIgYXNpbmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9G bG9hdDMyIF9fYXNpbmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zs b2F0MzIgYXRhbmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMy IF9fYXRhbmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MzIg YXRhbjJmMzIgKF9GbG9hdDMyIF9feSwgX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDMyIF9fYXRhbjJmMzIgKF9GbG9hdDMyIF9feSwgX0Zsb2F0MzIgX194KSB0aHJv dyAoKTsKCgogZXh0ZXJuIF9GbG9hdDMyIGNvc2YzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDMyIF9fY29zZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOwoK IGV4dGVybiBfRmxvYXQzMiBzaW5mMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVy biBfRmxvYXQzMiBfX3NpbmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCiBleHRlcm4g X0Zsb2F0MzIgdGFuZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0 MzIgX190YW5mMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKCgogZXh0ZXJuIF9GbG9h dDMyIGNvc2hmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBf X2Nvc2hmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDMyIHNp bmhmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX3Npbmhm MzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDMyIHRhbmhmMzIg KF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX3RhbmhmMzIgKF9G bG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gdm9pZCBzaW5jb3NmMzIgKF9GbG9h dDMyIF9feCwgX0Zsb2F0MzIgKl9fc2lueCwgX0Zsb2F0MzIgKl9fY29zeCkgdGhyb3cgKCk7 IGV4dGVybiB2b2lkIF9fc2luY29zZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyICpfX3Np bngsIF9GbG9hdDMyICpfX2Nvc3gpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKIGV4dGVybiBfRmxvYXQz MiBhY29zaGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9f YWNvc2hmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDMyIGFz aW5oZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19hc2lu aGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MzIgYXRhbmhm MzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX2F0YW5oZjMy IChfRmxvYXQzMiBfX3gpIHRocm93ICgpOwoKCgoKCiBleHRlcm4gX0Zsb2F0MzIgZXhwZjMy IChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19leHBmMzIgKF9G bG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGZyZXhwZjMyIChfRmxv YXQzMiBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBf X2ZyZXhwZjMyIChfRmxvYXQzMiBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoK ZXh0ZXJuIF9GbG9hdDMyIGxkZXhwZjMyIChfRmxvYXQzMiBfX3gsIGludCBfX2V4cG9uZW50 KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fbGRleHBmMzIgKF9GbG9hdDMyIF9feCwg aW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MzIgbG9nZjMyIChf RmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19sb2dmMzIgKF9GbG9h dDMyIF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBfRmxvYXQzMiBsb2cxMGYzMiAoX0Zsb2F0 MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fbG9nMTBmMzIgKF9GbG9hdDMy IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIG1vZGZmMzIgKF9GbG9hdDMyIF9f eCwgX0Zsb2F0MzIgKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX21vZGZm MzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgKl9faXB0cikgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgogZXh0ZXJuIF9GbG9hdDMyIGV4cDEwZjMy IChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19leHAxMGYzMiAo X0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gX0Zsb2F0MzIgZXhwbTFmMzIg KF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX2V4cG0xZjMyIChf RmxvYXQzMiBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MzIgbG9nMXBmMzIgKF9G bG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX2xvZzFwZjMyIChfRmxv YXQzMiBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBsb2diZjMyIChfRmxvYXQz MiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19sb2diZjMyIChfRmxvYXQzMiBf X3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQzMiBleHAyZjMyIChfRmxvYXQzMiBf X3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19leHAyZjMyIChfRmxvYXQzMiBfX3gp IHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MzIgbG9nMmYzMiAoX0Zsb2F0MzIgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fbG9nMmYzMiAoX0Zsb2F0MzIgX194KSB0aHJv dyAoKTsKCgoKCgoKIGV4dGVybiBfRmxvYXQzMiBwb3dmMzIgKF9GbG9hdDMyIF9feCwgX0Zs b2F0MzIgX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fcG93ZjMyIChfRmxvYXQz MiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIHNxcnRm MzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX3NxcnRmMzIg KF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gX0Zsb2F0MzIgaHlwb3RmMzIg KF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMy IF9faHlwb3RmMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKTsKCgoK CiBleHRlcm4gX0Zsb2F0MzIgY2JydGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0 ZXJuIF9GbG9hdDMyIF9fY2JydGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCgoKCgoK ZXh0ZXJuIF9GbG9hdDMyIGNlaWxmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzIgX19jZWlsZjMyIChfRmxv YXQzMiBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl cm4gX0Zsb2F0MzIgZmFic2YzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX2ZhYnNmMzIgKF9GbG9hdDMy IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBf RmxvYXQzMiBmbG9vcmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX2Zsb29yZjMyIChfRmxvYXQzMiBf X3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zs b2F0MzIgZm1vZGYzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0MzIgX19mbW9kZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkg dGhyb3cgKCk7CiMgMTk4ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0CmV4 dGVybiBfRmxvYXQzMiBjb3B5c2lnbmYzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kp IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDMy IF9fY29weXNpZ25mMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zsb2F0MzIgbmFuZjMy IChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19uYW5m MzIgKGNvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCk7CiMgMjIwICIvdXNyL2luY2x1ZGUv Yml0cy9tYXRoY2FsbHMuaCIgMyA0CmV4dGVybiBfRmxvYXQzMiBqMGYzMiAoX0Zsb2F0MzIp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19qMGYzMiAoX0Zsb2F0MzIpIHRocm93ICgp OwpleHRlcm4gX0Zsb2F0MzIgajFmMzIgKF9GbG9hdDMyKSB0aHJvdyAoKTsgZXh0ZXJuIF9G bG9hdDMyIF9fajFmMzIgKF9GbG9hdDMyKSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDMyIGpu ZjMyIChpbnQsIF9GbG9hdDMyKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fam5mMzIg KGludCwgX0Zsb2F0MzIpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0MzIgeTBmMzIgKF9GbG9h dDMyKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9feTBmMzIgKF9GbG9hdDMyKSB0aHJv dyAoKTsKZXh0ZXJuIF9GbG9hdDMyIHkxZjMyIChfRmxvYXQzMikgdGhyb3cgKCk7IGV4dGVy biBfRmxvYXQzMiBfX3kxZjMyIChfRmxvYXQzMikgdGhyb3cgKCk7CmV4dGVybiBfRmxvYXQz MiB5bmYzMiAoaW50LCBfRmxvYXQzMikgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX3lu ZjMyIChpbnQsIF9GbG9hdDMyKSB0aHJvdyAoKTsKCgoKCgogZXh0ZXJuIF9GbG9hdDMyIGVy ZmYzMiAoX0Zsb2F0MzIpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19lcmZmMzIgKF9G bG9hdDMyKSB0aHJvdyAoKTsKIGV4dGVybiBfRmxvYXQzMiBlcmZjZjMyIChfRmxvYXQzMikg dGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX2VyZmNmMzIgKF9GbG9hdDMyKSB0aHJvdyAo KTsKZXh0ZXJuIF9GbG9hdDMyIGxnYW1tYWYzMiAoX0Zsb2F0MzIpIHRocm93ICgpOyBleHRl cm4gX0Zsb2F0MzIgX19sZ2FtbWFmMzIgKF9GbG9hdDMyKSB0aHJvdyAoKTsKCgoKCmV4dGVy biBfRmxvYXQzMiB0Z2FtbWFmMzIgKF9GbG9hdDMyKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9h dDMyIF9fdGdhbW1hZjMyIChfRmxvYXQzMikgdGhyb3cgKCk7CiMgMjUyICIvdXNyL2luY2x1 ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0CmV4dGVybiBfRmxvYXQzMiBsZ2FtbWFmMzJfciAo X0Zsb2F0MzIsIGludCAqX19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBf X2xnYW1tYWYzMl9yIChfRmxvYXQzMiwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoK CgoKZXh0ZXJuIF9GbG9hdDMyIHJpbnRmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQzMiBfX3JpbnRmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKZXh0 ZXJuIF9GbG9hdDMyIG5leHRhZnRlcmYzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19uZXh0YWZ0ZXJmMzIgKF9GbG9hdDMyIF9f eCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9GbG9hdDMyIG5leHRk b3duZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19uZXh0 ZG93bmYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCmV4dGVybiBfRmxvYXQzMiBuZXh0 dXBmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMiBfX25leHR1 cGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDMyIHJlbWFp bmRlcmYzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kpIHRocm93ICgpOyBleHRlcm4g X0Zsb2F0MzIgX19yZW1haW5kZXJmMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDMyIHNjYWxibmYzMiAoX0Zsb2F0MzIgX194LCBp bnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fc2NhbGJuZjMyIChfRmxvYXQz MiBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGlsb2diZjMyIChfRmxv YXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gaW50IF9faWxvZ2JmMzIgKF9GbG9hdDMyIF9f eCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBpbnQgbGxvZ2JmMzIgKF9GbG9hdDMyIF9f eCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xsb2diZjMyIChfRmxvYXQzMiBfX3gp IHRocm93ICgpOwoKCgoKZXh0ZXJuIF9GbG9hdDMyIHNjYWxibG5mMzIgKF9GbG9hdDMyIF9f eCwgbG9uZyBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fc2NhbGJsbmYz MiAoX0Zsb2F0MzIgX194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gX0Zs b2F0MzIgbmVhcmJ5aW50ZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zs b2F0MzIgX19uZWFyYnlpbnRmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCk7CgoKCmV4dGVy biBfRmxvYXQzMiByb3VuZGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX3JvdW5kZjMyIChfRmxvYXQz MiBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJu IF9GbG9hdDMyIHRydW5jZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDMyIF9fdHJ1bmNmMzIgKF9GbG9hdDMy IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu IF9GbG9hdDMyIHJlbXF1b2YzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3ksIGludCAq X19xdW8pIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzIgX19yZW1xdW9mMzIgKF9GbG9hdDMy IF9feCwgX0Zsb2F0MzIgX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJu IGxvbmcgaW50IGxyaW50ZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9u ZyBpbnQgX19scmludGYzMiAoX0Zsb2F0MzIgX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25f XwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRmMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cg KCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZjMyIChfRmxvYXQzMiBfX3gpIHRo cm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZjMyIChfRmxvYXQzMiBfX3gpIHRo cm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scm91bmRmMzIgKF9GbG9hdDMyIF9feCkgdGhy b3cgKCk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3VuZGYzMiAo X0Zsb2F0MzIgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJvdW5k ZjMyIChfRmxvYXQzMiBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0MzIgZmRpbWYz MiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0 MzIgX19mZGltZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCk7CgoK CmV4dGVybiBfRmxvYXQzMiBmbWF4ZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzIg X19mbWF4ZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQzMiBmbWluZjMyIChfRmxv YXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOyBleHRlcm4gX0Zsb2F0MzIgX19mbWluZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9h dDMyIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl cm4gX0Zsb2F0MzIgZm1hZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSwgX0Zsb2F0 MzIgX196KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyIF9fZm1hZjMyIChfRmxvYXQzMiBf X3gsIF9GbG9hdDMyIF9feSwgX0Zsb2F0MzIgX196KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBf RmxvYXQzMiByb3VuZGV2ZW5mMzIgKF9GbG9hdDMyIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzIgX19yb3VuZGV2ZW5mMzIgKF9G bG9hdDMyIF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpl eHRlcm4gX19pbnRtYXhfdCBmcm9tZnBmMzIgKF9GbG9hdDMyIF9feCwgaW50IF9fcm91bmQs IHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9faW50bWF4X3QgX19m cm9tZnBmMzIgKF9GbG9hdDMyIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dp ZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgpleHRlcm4g X191aW50bWF4X3QgdWZyb21mcGYzMiAoX0Zsb2F0MzIgX194LCBpbnQgX19yb3VuZCwgdW5z aWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX191aW50bWF4X3QgX191ZnJv bWZwZjMyIChfRmxvYXQzMiBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0 aCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJu IF9faW50bWF4X3QgZnJvbWZweGYzMiAoX0Zsb2F0MzIgX194LCBpbnQgX19yb3VuZCwgdW5z aWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX19pbnRtYXhfdCBfX2Zyb21m cHhmMzIgKF9GbG9hdDMyIF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRo KSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4dGVybiBf X3VpbnRtYXhfdCB1ZnJvbWZweGYzMiAoX0Zsb2F0MzIgX194LCBpbnQgX19yb3VuZCwgdW5z aWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX191aW50bWF4X3QgX191ZnJv bWZweGYzMiAoX0Zsb2F0MzIgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lk dGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKZXh0ZXJu IGludCBjYW5vbmljYWxpemVmMzIgKF9GbG9hdDMyICpfX2N4LCBjb25zdCBfRmxvYXQzMiAq X194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9GbG9hdDMyIGZtYXhtYWdmMzIgKF9GbG9h dDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX2ZtYXhtYWdmMzIgKF9GbG9hdDMyIF9feCwgX0Zs b2F0MzIgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0 ZXJuIF9GbG9hdDMyIGZtaW5tYWdmMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBf X2ZtaW5tYWdmMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zsb2F0MzIgZm1heGltdW1m MzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX2ZtYXhpbXVtZjMyIChfRmxvYXQz MiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCmV4dGVybiBfRmxvYXQzMiBmbWluaW11bWYzMiAoX0Zsb2F0MzIgX194LCBfRmxv YXQzMiBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu IF9GbG9hdDMyIF9fZm1pbmltdW1mMzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMy IGZtYXhpbXVtX251bWYzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDMyIF9fZm1heGlt dW1fbnVtZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQzMiBmbWluaW11bV9udW1m MzIgKF9GbG9hdDMyIF9feCwgX0Zsb2F0MzIgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMiBfX2ZtaW5pbXVtX251bWYzMiAoX0Zs b2F0MzIgX194LCBfRmxvYXQzMiBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0MzIgZm1heGltdW1fbWFnZjMyIChfRmxvYXQzMiBf X3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OyBleHRlcm4gX0Zsb2F0MzIgX19mbWF4aW11bV9tYWdmMzIgKF9GbG9hdDMyIF9feCwgX0Zs b2F0MzIgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0 ZXJuIF9GbG9hdDMyIGZtaW5pbXVtX21hZ2YzMiAoX0Zsb2F0MzIgX194LCBfRmxvYXQzMiBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9h dDMyIF9fZm1pbmltdW1fbWFnZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQzMiBm bWF4aW11bV9tYWdfbnVtZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzIgX19mbWF4 aW11bV9tYWdfbnVtZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQzMiBmbWluaW11 bV9tYWdfbnVtZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzIgX19mbWluaW11bV9t YWdfbnVtZjMyIChfRmxvYXQzMiBfX3gsIF9GbG9hdDMyIF9feSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0b3RhbG9yZGVyZjMyIChj b25zdCBfRmxvYXQzMiAqX194LCBjb25zdCBfRmxvYXQzMiAqX195KSB0aHJvdyAoKQoKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJt YWdmMzIgKGNvbnN0IF9GbG9hdDMyICpfX3gsIGNvbnN0IF9GbG9hdDMyICpfX3kpIHRocm93 ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBfRmxvYXQz MiBnZXRwYXlsb2FkZjMyIChjb25zdCBfRmxvYXQzMiAqX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDMyIF9fZ2V0cGF5bG9hZGYzMiAoY29uc3QgX0Zsb2F0MzIgKl9feCkgdGhyb3cg KCk7CgoKZXh0ZXJuIGludCBzZXRwYXlsb2FkZjMyIChfRmxvYXQzMiAqX194LCBfRmxvYXQz MiBfX3BheWxvYWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2V0cGF5bG9hZHNpZ2YzMiAo X0Zsb2F0MzIgKl9feCwgX0Zsb2F0MzIgX19wYXlsb2FkKSB0aHJvdyAoKTsKIyA0NTEgIi91 c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CgojdW5kZWYgX01kb3VibGVfCiN1bmRlZiBfX01B VEhfUFJFQ05BTUUKI3VuZGVmIF9fTUFUSF9ERUNMQVJJTkdfRE9VQkxFCiN1bmRlZiBfX01B VEhfREVDTEFSSU5HX0ZMT0FUTgoKCgojZGVmaW5lIF9NZG91YmxlXyBfRmxvYXQ2NAojZGVm aW5lIF9fTUFUSF9QUkVDTkFNRShuYW1lLHIpIG5hbWUgIyNmNjQgIyNyCiNkZWZpbmUgX19N QVRIX0RFQ0xBUklOR19ET1VCTEUgMAojZGVmaW5lIF9fTUFUSF9ERUNMQVJJTkdfRkxPQVRO IDEKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDEgMyA0CiMgNTMg Ii91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKIGV4dGVybiBfRmxvYXQ2NCBh Y29zZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19hY29z ZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NCBhc2luZjY0 IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19hc2luZjY0IChf RmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NCBhdGFuZjY0IChfRmxv YXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19hdGFuZjY0IChfRmxvYXQ2 NCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NCBhdGFuMmY2NCAoX0Zsb2F0NjQg X195LCBfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19hdGFuMmY2 NCAoX0Zsb2F0NjQgX195LCBfRmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zs b2F0NjQgY29zZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQg X19jb3NmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDY0IHNp bmY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fc2luZjY0 IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NCB0YW5mNjQgKF9G bG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX3RhbmY2NCAoX0Zsb2F0 NjQgX194KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gX0Zsb2F0NjQgY29zaGY2NCAoX0Zsb2F0 NjQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fY29zaGY2NCAoX0Zsb2F0NjQg X194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0NjQgc2luaGY2NCAoX0Zsb2F0NjQgX194 KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fc2luaGY2NCAoX0Zsb2F0NjQgX194KSB0 aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0NjQgdGFuaGY2NCAoX0Zsb2F0NjQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fdGFuaGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAo KTsKCgoKIGV4dGVybiB2b2lkIHNpbmNvc2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCAq X19zaW54LCBfRmxvYXQ2NCAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5j b3NmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgKl9fc2lueCwgX0Zsb2F0NjQgKl9fY29z eCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CgoKCgogZXh0ZXJuIF9GbG9hdDY0IGFjb3NoZjY0IChfRmxvYXQ2 NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19hY29zaGY2NCAoX0Zsb2F0NjQg X194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0NjQgYXNpbmhmNjQgKF9GbG9hdDY0IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2FzaW5oZjY0IChfRmxvYXQ2NCBfX3gp IHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NCBhdGFuaGY2NCAoX0Zsb2F0NjQgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fYXRhbmhmNjQgKF9GbG9hdDY0IF9feCkgdGhy b3cgKCk7CgoKCgoKIGV4dGVybiBfRmxvYXQ2NCBleHBmNjQgKF9GbG9hdDY0IF9feCkgdGhy b3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2V4cGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAo KTsKCgpleHRlcm4gX0Zsb2F0NjQgZnJleHBmNjQgKF9GbG9hdDY0IF9feCwgaW50ICpfX2V4 cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fZnJleHBmNjQgKF9GbG9hdDY0 IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjQgbGRl eHBmNjQgKF9GbG9hdDY0IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4g X0Zsb2F0NjQgX19sZGV4cGY2NCAoX0Zsb2F0NjQgX194LCBpbnQgX19leHBvbmVudCkgdGhy b3cgKCk7CgoKIGV4dGVybiBfRmxvYXQ2NCBsb2dmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cg KCk7IGV4dGVybiBfRmxvYXQ2NCBfX2xvZ2Y2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsK CgogZXh0ZXJuIF9GbG9hdDY0IGxvZzEwZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0NjQgX19sb2cxMGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsKCgpl eHRlcm4gX0Zsb2F0NjQgbW9kZmY2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCAqX19pcHRy KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fbW9kZmY2NCAoX0Zsb2F0NjQgX194LCBf RmxvYXQ2NCAqX19pcHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDIpKSk7CgoKCiBleHRlcm4gX0Zsb2F0NjQgZXhwMTBmNjQgKF9GbG9hdDY0IF9feCkgdGhy b3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2V4cDEwZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93 ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQ2NCBleHBtMWY2NCAoX0Zsb2F0NjQgX194KSB0aHJv dyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fZXhwbTFmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cg KCk7CgoKIGV4dGVybiBfRmxvYXQ2NCBsb2cxcGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDY0IF9fbG9nMXBmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7 CgoKZXh0ZXJuIF9GbG9hdDY0IGxvZ2JmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQ2NCBfX2xvZ2JmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgoKCgog ZXh0ZXJuIF9GbG9hdDY0IGV4cDJmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4dGVy biBfRmxvYXQ2NCBfX2V4cDJmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgoKIGV4dGVy biBfRmxvYXQ2NCBsb2cyZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zs b2F0NjQgX19sb2cyZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKCgoKCgogZXh0ZXJu IF9GbG9hdDY0IHBvd2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgp OyBleHRlcm4gX0Zsb2F0NjQgX19wb3dmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195 KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjQgc3FydGY2NCAoX0Zsb2F0NjQgX194KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fc3FydGY2NCAoX0Zsb2F0NjQgX194KSB0aHJv dyAoKTsKCgoKIGV4dGVybiBfRmxvYXQ2NCBoeXBvdGY2NCAoX0Zsb2F0NjQgX194LCBfRmxv YXQ2NCBfX3kpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19oeXBvdGY2NCAoX0Zsb2F0 NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQ2NCBj YnJ0ZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19jYnJ0 ZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0NjQgY2Vp bGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7IGV4dGVybiBfRmxvYXQ2NCBfX2NlaWxmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQ2NCBmYWJzZjY0 IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIF9GbG9hdDY0IF9fZmFic2Y2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGZsb29yZjY0IChf RmxvYXQ2NCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIF9GbG9hdDY0IF9fZmxvb3JmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQ2NCBmbW9kZjY0IChfRmxv YXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2Zt b2RmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKTsKIyAxOTggIi91 c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0ZXJuIF9GbG9hdDY0IGNvcHlz aWduZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjQgX19jb3B5c2lnbmY2NCAoX0Zs b2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKCgoKCmV4dGVybiBfRmxvYXQ2NCBuYW5mNjQgKGNvbnN0IGNoYXIgKl9fdGFn YikgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX25hbmY2NCAoY29uc3QgY2hhciAqX190 YWdiKSB0aHJvdyAoKTsKIyAyMjAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAz IDQKZXh0ZXJuIF9GbG9hdDY0IGowZjY0IChfRmxvYXQ2NCkgdGhyb3cgKCk7IGV4dGVybiBf RmxvYXQ2NCBfX2owZjY0IChfRmxvYXQ2NCkgdGhyb3cgKCk7CmV4dGVybiBfRmxvYXQ2NCBq MWY2NCAoX0Zsb2F0NjQpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19qMWY2NCAoX0Zs b2F0NjQpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0NjQgam5mNjQgKGludCwgX0Zsb2F0NjQp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19qbmY2NCAoaW50LCBfRmxvYXQ2NCkgdGhy b3cgKCk7CmV4dGVybiBfRmxvYXQ2NCB5MGY2NCAoX0Zsb2F0NjQpIHRocm93ICgpOyBleHRl cm4gX0Zsb2F0NjQgX195MGY2NCAoX0Zsb2F0NjQpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0 NjQgeTFmNjQgKF9GbG9hdDY0KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9feTFmNjQg KF9GbG9hdDY0KSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDY0IHluZjY0IChpbnQsIF9GbG9h dDY0KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9feW5mNjQgKGludCwgX0Zsb2F0NjQp IHRocm93ICgpOwoKCgoKCiBleHRlcm4gX0Zsb2F0NjQgZXJmZjY0IChfRmxvYXQ2NCkgdGhy b3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2VyZmY2NCAoX0Zsb2F0NjQpIHRocm93ICgpOwog ZXh0ZXJuIF9GbG9hdDY0IGVyZmNmNjQgKF9GbG9hdDY0KSB0aHJvdyAoKTsgZXh0ZXJuIF9G bG9hdDY0IF9fZXJmY2Y2NCAoX0Zsb2F0NjQpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0NjQg bGdhbW1hZjY0IChfRmxvYXQ2NCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2xnYW1t YWY2NCAoX0Zsb2F0NjQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9GbG9hdDY0IHRnYW1tYWY2 NCAoX0Zsb2F0NjQpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX190Z2FtbWFmNjQgKF9G bG9hdDY0KSB0aHJvdyAoKTsKIyAyNTIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o IiAzIDQKZXh0ZXJuIF9GbG9hdDY0IGxnYW1tYWY2NF9yIChfRmxvYXQ2NCwgaW50ICpfX3Np Z25nYW1wKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fbGdhbW1hZjY0X3IgKF9GbG9h dDY0LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0NjQg cmludGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fcmlu dGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjQgbmV4dGFm dGVyZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBf RmxvYXQ2NCBfX25leHRhZnRlcmY2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRo cm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0NjQgbmV4dGRvd25mNjQgKF9GbG9hdDY0IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX25leHRkb3duZjY0IChfRmxvYXQ2NCBf X3gpIHRocm93ICgpOwoKZXh0ZXJuIF9GbG9hdDY0IG5leHR1cGY2NCAoX0Zsb2F0NjQgX194 KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0IF9fbmV4dHVwZjY0IChfRmxvYXQ2NCBfX3gp IHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0NjQgcmVtYWluZGVyZjY0IChfRmxvYXQ2NCBf X3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX3JlbWFpbmRl cmY2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4g X0Zsb2F0NjQgc2NhbGJuZjY0IChfRmxvYXQ2NCBfX3gsIGludCBfX24pIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0NjQgX19zY2FsYm5mNjQgKF9GbG9hdDY0IF9feCwgaW50IF9fbikgdGhy b3cgKCk7CgoKCmV4dGVybiBpbnQgaWxvZ2JmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7 IGV4dGVybiBpbnQgX19pbG9nYmY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBsb25nIGludCBsbG9nYmY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsgZXh0ZXJu IGxvbmcgaW50IF9fbGxvZ2JmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgoKCgpleHRl cm4gX0Zsb2F0NjQgc2NhbGJsbmY2NCAoX0Zsb2F0NjQgX194LCBsb25nIGludCBfX24pIHRo cm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19zY2FsYmxuZjY0IChfRmxvYXQ2NCBfX3gsIGxv bmcgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQ2NCBuZWFyYnlpbnRmNjQg KF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX25lYXJieWludGY2 NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0IHJvdW5kZjY0 IChfRmxvYXQ2NCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIF9GbG9hdDY0IF9fcm91bmRmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gX0Zsb2F0NjQgdHJ1bmNmNjQg KF9GbG9hdDY0IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBl eHRlcm4gX0Zsb2F0NjQgX190cnVuY2Y2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zsb2F0NjQgcmVtcXVvZjY0 IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQ2NCBfX3JlbXF1b2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3ks IGludCAqX19xdW8pIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmNjQg KF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyaW50ZjY0IChf RmxvYXQ2NCBfX3gpIHRocm93ICgpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg aW50IGxscmludGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgX19sbHJpbnRmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBs b25nIGludCBscm91bmRmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25n IGludCBfX2xyb3VuZGY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25f XwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJvdW5kZjY0IChfRmxvYXQ2NCBfX3gpIHRocm93 ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscm91bmRmNjQgKF9GbG9hdDY0IF9feCkg dGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQ2NCBmZGltZjY0IChfRmxvYXQ2NCBfX3gsIF9G bG9hdDY0IF9feSkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NCBfX2ZkaW1mNjQgKF9GbG9h dDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0IGZt YXhmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NCBfX2ZtYXhmNjQgKF9GbG9hdDY0 IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGZtaW5mNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQg X195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxv YXQ2NCBfX2ZtaW5mNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBfRmxvYXQ2NCBmbWFmNjQg KF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195LCBfRmxvYXQ2NCBfX3opIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0NjQgX19mbWFmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195LCBf RmxvYXQ2NCBfX3opIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9GbG9hdDY0IHJvdW5kZXZlbmY2 NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 IGV4dGVybiBfRmxvYXQ2NCBfX3JvdW5kZXZlbmY2NCAoX0Zsb2F0NjQgX194KSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBfX2ludG1heF90IGZy b21mcGY2NCAoX0Zsb2F0NjQgX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lk dGgpIHRocm93ICgpOyBleHRlcm4gX19pbnRtYXhfdCBfX2Zyb21mcGY2NCAoX0Zsb2F0NjQg X194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7CgoKCmV4dGVybiBfX3VpbnRtYXhfdCB1ZnJvbWZw ZjY0IChfRmxvYXQ2NCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkg dGhyb3cgKCk7IGV4dGVybiBfX3VpbnRtYXhfdCBfX3Vmcm9tZnBmNjQgKF9GbG9hdDY0IF9f eCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgpleHRlcm4gX19pbnRtYXhfdCBmcm9tZnB4 ZjY0IChfRmxvYXQ2NCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkg dGhyb3cgKCk7IGV4dGVybiBfX2ludG1heF90IF9fZnJvbWZweGY2NCAoX0Zsb2F0NjQgX194 LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9fdWludG1heF90IHVmcm9tZnB4 ZjY0IChfRmxvYXQ2NCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkg dGhyb3cgKCk7IGV4dGVybiBfX3VpbnRtYXhfdCBfX3Vmcm9tZnB4ZjY0IChfRmxvYXQ2NCBf X3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IGNhbm9uaWNhbGl6ZWY2 NCAoX0Zsb2F0NjQgKl9fY3gsIGNvbnN0IF9GbG9hdDY0ICpfX3gpIHRocm93ICgpOwoKCgoK CgpleHRlcm4gX0Zsb2F0NjQgZm1heG1hZ2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBf X3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9h dDY0IF9fZm1heG1hZ2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjQgZm1pbm1h Z2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0IF9fZm1pbm1hZ2Y2NCAoX0Zsb2F0 NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgoKCmV4dGVybiBfRmxvYXQ2NCBmbWF4aW11bWY2NCAoX0Zsb2F0NjQgX194LCBf RmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIF9GbG9hdDY0IF9fZm1heGltdW1mNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9h dDY0IGZtaW5pbXVtZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjQgX19mbWluaW11 bWY2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjQgZm1heGltdW1fbnVtZjY0IChf RmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjQgX19mbWF4aW11bV9udW1mNjQgKF9GbG9hdDY0 IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGZtaW5pbXVtX251bWY2NCAoX0Zsb2F0NjQgX194LCBf RmxvYXQ2NCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIF9GbG9hdDY0IF9fZm1pbmltdW1fbnVtZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0 IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBf RmxvYXQ2NCBmbWF4aW11bV9tYWdmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NCBf X2ZtYXhpbXVtX21hZ2Y2NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjQgZm1pbmlt dW1fbWFnZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjQgX19mbWluaW11bV9tYWdm NjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGZtYXhpbXVtX21hZ19udW1mNjQg KF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NCBfX2ZtYXhpbXVtX21hZ19udW1mNjQgKF9G bG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGZtaW5pbXVtX21hZ19udW1mNjQgKF9GbG9h dDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBfRmxvYXQ2NCBfX2ZtaW5pbXVtX21hZ19udW1mNjQgKF9GbG9hdDY0 IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7CgoKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJmNjQgKGNvbnN0IF9GbG9hdDY0ICpfX3gs IGNvbnN0IF9GbG9hdDY0ICpfX3kpIHRocm93ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpOwoKCmV4dGVybiBpbnQgdG90YWxvcmRlcm1hZ2Y2NCAoY29uc3QgX0Zsb2F0 NjQgKl9feCwgY29uc3QgX0Zsb2F0NjQgKl9feSkgdGhyb3cgKCkKCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0IGdldHBheWxvYWRmNjQgKGNv bnN0IF9GbG9hdDY0ICpfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjQgX19nZXRwYXls b2FkZjY0IChjb25zdCBfRmxvYXQ2NCAqX194KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNl dHBheWxvYWRmNjQgKF9GbG9hdDY0ICpfX3gsIF9GbG9hdDY0IF9fcGF5bG9hZCkgdGhyb3cg KCk7CgoKZXh0ZXJuIGludCBzZXRwYXlsb2Fkc2lnZjY0IChfRmxvYXQ2NCAqX194LCBfRmxv YXQ2NCBfX3BheWxvYWQpIHRocm93ICgpOwojIDQ2OCAiL3Vzci9pbmNsdWRlL21hdGguaCIg MiAzIDQKCiN1bmRlZiBfTWRvdWJsZV8KI3VuZGVmIF9fTUFUSF9QUkVDTkFNRQojdW5kZWYg X19NQVRIX0RFQ0xBUklOR19ET1VCTEUKI3VuZGVmIF9fTUFUSF9ERUNMQVJJTkdfRkxPQVRO CgoKCiNkZWZpbmUgX01kb3VibGVfIF9GbG9hdDEyOAojZGVmaW5lIF9fTUFUSF9QUkVDTkFN RShuYW1lLHIpIG5hbWUgIyNmMTI4ICMjcgojZGVmaW5lIF9fTUFUSF9ERUNMQVJJTkdfRE9V QkxFIDAKI2RlZmluZSBfX01BVEhfREVDTEFSSU5HX0ZMT0FUTiAxCgoKCgojIDEgIi91c3Iv aW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAxIDMgNAojIDUzICIvdXNyL2luY2x1ZGUvYml0 cy9tYXRoY2FsbHMuaCIgMyA0CiBleHRlcm4gX0Zsb2F0MTI4IGFjb3NmMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2Fjb3NmMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MTI4IGFzaW5mMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2FzaW5mMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MTI4IGF0YW5mMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2F0YW5mMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MTI4IGF0YW4yZjEyOCAoX0Zsb2F0 MTI4IF9feSwgX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19h dGFuMmYxMjggKF9GbG9hdDEyOCBfX3ksIF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCiBl eHRlcm4gX0Zsb2F0MTI4IGNvc2YxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRl cm4gX0Zsb2F0MTI4IF9fY29zZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgogZXh0 ZXJuIF9GbG9hdDEyOCBzaW5mMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDEyOCBfX3NpbmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKIGV4dGVy biBfRmxvYXQxMjggdGFuZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBf RmxvYXQxMjggX190YW5mMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKCiBleHRl cm4gX0Zsb2F0MTI4IGNvc2hmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDEyOCBfX2Nvc2hmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCiBleHRl cm4gX0Zsb2F0MTI4IHNpbmhmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDEyOCBfX3NpbmhmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCiBleHRl cm4gX0Zsb2F0MTI4IHRhbmhmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJu IF9GbG9hdDEyOCBfX3RhbmhmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKIGV4 dGVybiB2b2lkIHNpbmNvc2YxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCAqX19zaW54 LCBfRmxvYXQxMjggKl9fY29zeCkgdGhyb3cgKCk7IGV4dGVybiB2b2lkIF9fc2luY29zZjEy OCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4ICpfX3NpbngsIF9GbG9hdDEyOCAqX19jb3N4 KSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKCgoKCiBleHRlcm4gX0Zsb2F0MTI4IGFjb3NoZjEyOCAoX0Zsb2F0 MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19hY29zaGYxMjggKF9GbG9h dDEyOCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQxMjggYXNpbmhmMTI4IChfRmxv YXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2FzaW5oZjEyOCAoX0Zs b2F0MTI4IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDEyOCBhdGFuaGYxMjggKF9G bG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fYXRhbmhmMTI4IChf RmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKCgogZXh0ZXJuIF9GbG9hdDEyOCBleHBmMTI4 IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2V4cGYxMjgg KF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQxMjggZnJleHBmMTI4 IChfRmxvYXQxMjggX194LCBpbnQgKl9fZXhwb25lbnQpIHRocm93ICgpOyBleHRlcm4gX0Zs b2F0MTI4IF9fZnJleHBmMTI4IChfRmxvYXQxMjggX194LCBpbnQgKl9fZXhwb25lbnQpIHRo cm93ICgpOwoKCmV4dGVybiBfRmxvYXQxMjggbGRleHBmMTI4IChfRmxvYXQxMjggX194LCBp bnQgX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19sZGV4cGYxMjgg KF9GbG9hdDEyOCBfX3gsIGludCBfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgogZXh0ZXJuIF9G bG9hdDEyOCBsb2dmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9h dDEyOCBfX2xvZ2YxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zs b2F0MTI4IGxvZzEwZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQxMjggX19sb2cxMGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBf RmxvYXQxMjggbW9kZmYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCAqX19pcHRyKSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX21vZGZmMTI4IChfRmxvYXQxMjggX194LCBf RmxvYXQxMjggKl9faXB0cikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgyKSkpOwoKCgogZXh0ZXJuIF9GbG9hdDEyOCBleHAxMGYxMjggKF9GbG9hdDEyOCBfX3gp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZXhwMTBmMTI4IChfRmxvYXQxMjggX194 KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gX0Zsb2F0MTI4IGV4cG0xZjEyOCAoX0Zsb2F0MTI4 IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19leHBtMWYxMjggKF9GbG9hdDEy OCBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MTI4IGxvZzFwZjEyOCAoX0Zsb2F0 MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19sb2cxcGYxMjggKF9GbG9h dDEyOCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQxMjggbG9nYmYxMjggKF9GbG9h dDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fbG9nYmYxMjggKF9GbG9h dDEyOCBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQxMjggZXhwMmYxMjggKF9G bG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZXhwMmYxMjggKF9G bG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MTI4IGxvZzJmMTI4IChf RmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2xvZzJmMTI4IChf RmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKCgoKIGV4dGVybiBfRmxvYXQxMjggcG93ZjEy OCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQxMjggX19wb3dmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAo KTsKCgpleHRlcm4gX0Zsb2F0MTI4IHNxcnRmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3NxcnRmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAo KTsKCgoKIGV4dGVybiBfRmxvYXQxMjggaHlwb3RmMTI4IChfRmxvYXQxMjggX194LCBfRmxv YXQxMjggX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2h5cG90ZjEyOCAoX0Zs b2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7CgoKCgogZXh0ZXJuIF9GbG9h dDEyOCBjYnJ0ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQx MjggX19jYnJ0ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBf RmxvYXQxMjggY2VpbGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2NlaWxmMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJu IF9GbG9hdDEyOCBmYWJzZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZmFic2YxMjggKF9GbG9h dDEyOCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl cm4gX0Zsb2F0MTI4IGZsb29yZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZmxvb3JmMTI4IChf RmxvYXQxMjggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoK ZXh0ZXJuIF9GbG9hdDEyOCBmbW9kZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9f eSkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19mbW9kZjEyOCAoX0Zsb2F0MTI4IF9f eCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7CiMgMTk4ICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoY2FsbHMuaCIgMyA0CmV4dGVybiBfRmxvYXQxMjggY29weXNpZ25mMTI4IChfRmxvYXQx MjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBfRmxvYXQxMjggX19jb3B5c2lnbmYxMjggKF9GbG9hdDEyOCBfX3gs IF9GbG9hdDEyOCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgoKCmV4dGVybiBfRmxvYXQxMjggbmFuZjEyOCAoY29uc3QgY2hhciAqX190YWdiKSB0aHJv dyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX25hbmYxMjggKGNvbnN0IGNoYXIgKl9fdGFnYikg dGhyb3cgKCk7CiMgMjIwICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMuaCIgMyA0CmV4 dGVybiBfRmxvYXQxMjggajBmMTI4IChfRmxvYXQxMjgpIHRocm93ICgpOyBleHRlcm4gX0Zs b2F0MTI4IF9fajBmMTI4IChfRmxvYXQxMjgpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0MTI4 IGoxZjEyOCAoX0Zsb2F0MTI4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2oxZjEy OCAoX0Zsb2F0MTI4KSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDEyOCBqbmYxMjggKGludCwg X0Zsb2F0MTI4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2puZjEyOCAoaW50LCBf RmxvYXQxMjgpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0MTI4IHkwZjEyOCAoX0Zsb2F0MTI4 KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3kwZjEyOCAoX0Zsb2F0MTI4KSB0aHJv dyAoKTsKZXh0ZXJuIF9GbG9hdDEyOCB5MWYxMjggKF9GbG9hdDEyOCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQxMjggX195MWYxMjggKF9GbG9hdDEyOCkgdGhyb3cgKCk7CmV4dGVybiBf RmxvYXQxMjggeW5mMTI4IChpbnQsIF9GbG9hdDEyOCkgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQxMjggX195bmYxMjggKGludCwgX0Zsb2F0MTI4KSB0aHJvdyAoKTsKCgoKCgogZXh0ZXJu IF9GbG9hdDEyOCBlcmZmMTI4IChfRmxvYXQxMjgpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0 MTI4IF9fZXJmZjEyOCAoX0Zsb2F0MTI4KSB0aHJvdyAoKTsKIGV4dGVybiBfRmxvYXQxMjgg ZXJmY2YxMjggKF9GbG9hdDEyOCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19lcmZj ZjEyOCAoX0Zsb2F0MTI4KSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDEyOCBsZ2FtbWFmMTI4 IChfRmxvYXQxMjgpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fbGdhbW1hZjEyOCAo X0Zsb2F0MTI4KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfRmxvYXQxMjggdGdhbW1hZjEyOCAo X0Zsb2F0MTI4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3RnYW1tYWYxMjggKF9G bG9hdDEyOCkgdGhyb3cgKCk7CiMgMjUyICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMu aCIgMyA0CmV4dGVybiBfRmxvYXQxMjggbGdhbW1hZjEyOF9yIChfRmxvYXQxMjgsIGludCAq X19zaWduZ2FtcCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19sZ2FtbWFmMTI4X3Ig KF9GbG9hdDEyOCwgaW50ICpfX3NpZ25nYW1wKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9G bG9hdDEyOCByaW50ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQxMjggX19yaW50ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9G bG9hdDEyOCBuZXh0YWZ0ZXJmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX25leHRhZnRlcmYxMjggKF9GbG9hdDEyOCBf X3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0MTI4IG5l eHRkb3duZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjgg X19uZXh0ZG93bmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKZXh0ZXJuIF9GbG9h dDEyOCBuZXh0dXBmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9h dDEyOCBfX25leHR1cGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4g X0Zsb2F0MTI4IHJlbWFpbmRlcmYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fcmVtYWluZGVyZjEyOCAoX0Zsb2F0MTI4 IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQxMjggc2Nh bGJuZjEyOCAoX0Zsb2F0MTI4IF9feCwgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQxMjggX19zY2FsYm5mMTI4IChfRmxvYXQxMjggX194LCBpbnQgX19uKSB0aHJvdyAoKTsK CgoKZXh0ZXJuIGludCBpbG9nYmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRl cm4gaW50IF9faWxvZ2JmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKCmV4dGVy biBsb25nIGludCBsbG9nYmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4g bG9uZyBpbnQgX19sbG9nYmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOwoKCgoKZXh0 ZXJuIF9GbG9hdDEyOCBzY2FsYmxuZjEyOCAoX0Zsb2F0MTI4IF9feCwgbG9uZyBpbnQgX19u KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3NjYWxibG5mMTI4IChfRmxvYXQxMjgg X194LCBsb25nIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0MTI4IG5lYXJi eWludGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9f bmVhcmJ5aW50ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxv YXQxMjggcm91bmRmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQxMjggX19yb3VuZGYxMjggKF9GbG9hdDEy OCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJu IF9GbG9hdDEyOCB0cnVuY2YxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3RydW5jZjEyOCAoX0Zs b2F0MTI4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoK ZXh0ZXJuIF9GbG9hdDEyOCByZW1xdW9mMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjgg X195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3JlbXF1b2Yx MjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3ksIGludCAqX19xdW8pIHRocm93ICgp OwoKCgoKCgpleHRlcm4gbG9uZyBpbnQgbHJpbnRmMTI4IChfRmxvYXQxMjggX194KSB0aHJv dyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJpbnRmMTI4IChfRmxvYXQxMjggX194KSB0aHJv dyAoKTsKX19leHRlbnNpb25fXwpleHRlcm4gbG9uZyBsb25nIGludCBsbHJpbnRmMTI4IChf RmxvYXQxMjggX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgbG9uZyBpbnQgX19sbHJpbnRm MTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGxvbmcgaW50IGxyb3Vu ZGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBpbnQgX19scm91 bmRmMTI4IChfRmxvYXQxMjggX194KSB0aHJvdyAoKTsKX19leHRlbnNpb25fXwpleHRlcm4g bG9uZyBsb25nIGludCBsbHJvdW5kZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBsb25nIGxvbmcgaW50IF9fbGxyb3VuZGYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93 ICgpOwoKCgpleHRlcm4gX0Zsb2F0MTI4IGZkaW1mMTI4IChfRmxvYXQxMjggX194LCBfRmxv YXQxMjggX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2ZkaW1mMTI4IChfRmxv YXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDEy OCBmbWF4ZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZm1heGYxMjgg KF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0MTI4IGZtaW5mMTI4IChfRmxvYXQxMjgg X194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9f KSk7IGV4dGVybiBfRmxvYXQxMjggX19mbWluZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0 MTI4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRl cm4gX0Zsb2F0MTI4IGZtYWYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3ksIF9G bG9hdDEyOCBfX3opIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZm1hZjEyOCAoX0Zs b2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSwgX0Zsb2F0MTI4IF9feikgdGhyb3cgKCk7CgoK CgpleHRlcm4gX0Zsb2F0MTI4IHJvdW5kZXZlbmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX3Jv dW5kZXZlbmYxMjggKF9GbG9hdDEyOCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgoKZXh0ZXJuIF9faW50bWF4X3QgZnJvbWZwZjEyOCAoX0Zsb2F0MTI4 IF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0 ZXJuIF9faW50bWF4X3QgX19mcm9tZnBmMTI4IChfRmxvYXQxMjggX194LCBpbnQgX19yb3Vu ZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CgoKCmV4dGVybiBfX3VpbnRtYXhfdCB1ZnJvbWZwZjEyOCAoX0Zsb2F0MTI4 IF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0 ZXJuIF9fdWludG1heF90IF9fdWZyb21mcGYxMjggKF9GbG9hdDEyOCBfX3gsIGludCBfX3Jv dW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIF9faW50bWF4X3QgZnJvbWZweGYxMjggKF9GbG9h dDEyOCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7 IGV4dGVybiBfX2ludG1heF90IF9fZnJvbWZweGYxMjggKF9GbG9hdDEyOCBfX3gsIGludCBf X3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CgoKCgpleHRlcm4gX191aW50bWF4X3QgdWZyb21mcHhmMTI4IChf RmxvYXQxMjggX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93 ICgpOyBleHRlcm4gX191aW50bWF4X3QgX191ZnJvbWZweGYxMjggKF9GbG9hdDEyOCBfX3gs IGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKCgpleHRlcm4gaW50IGNhbm9uaWNhbGl6ZWYxMjgg KF9GbG9hdDEyOCAqX19jeCwgY29uc3QgX0Zsb2F0MTI4ICpfX3gpIHRocm93ICgpOwoKCgoK CgpleHRlcm4gX0Zsb2F0MTI4IGZtYXhtYWdmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQx MjggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBf RmxvYXQxMjggX19mbWF4bWFnZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQx MjggZm1pbm1hZ2YxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2ZtaW5t YWdmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zsb2F0MTI4IGZtYXhpbXVtZjEy OCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZm1heGltdW1mMTI4IChfRmxv YXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDEyOCBmbWluaW11bWYxMjggKF9GbG9hdDEyOCBf X3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2ZtaW5pbXVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zs b2F0MTI4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4 dGVybiBfRmxvYXQxMjggZm1heGltdW1fbnVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0 MTI4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g X0Zsb2F0MTI4IF9fZm1heGltdW1fbnVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4 IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBf RmxvYXQxMjggZm1pbmltdW1fbnVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9f eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0 MTI4IF9fZm1pbmltdW1fbnVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQx MjggZm1heGltdW1fbWFnZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9f Zm1heGltdW1fbWFnZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQxMjggZm1p bmltdW1fbWFnZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZm1pbmlt dW1fbWFnZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQxMjggZm1heGltdW1f bWFnX251bWYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDEyOCBfX2ZtYXhpbXVt X21hZ19udW1mMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDEyOCBmbWluaW11 bV9tYWdfbnVtZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MTI4IF9fZm1pbmlt dW1fbWFnX251bWYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBpbnQgdG90YWxvcmRl cmYxMjggKGNvbnN0IF9GbG9hdDEyOCAqX194LCBjb25zdCBfRmxvYXQxMjggKl9feSkgdGhy b3cgKCkKCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIGludCB0 b3RhbG9yZGVybWFnZjEyOCAoY29uc3QgX0Zsb2F0MTI4ICpfX3gsIGNvbnN0IF9GbG9hdDEy OCAqX195KSB0aHJvdyAoKQoKICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl eHRlcm4gX0Zsb2F0MTI4IGdldHBheWxvYWRmMTI4IChjb25zdCBfRmxvYXQxMjggKl9feCkg dGhyb3cgKCk7IGV4dGVybiBfRmxvYXQxMjggX19nZXRwYXlsb2FkZjEyOCAoY29uc3QgX0Zs b2F0MTI4ICpfX3gpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2V0cGF5bG9hZGYxMjggKF9G bG9hdDEyOCAqX194LCBfRmxvYXQxMjggX19wYXlsb2FkKSB0aHJvdyAoKTsKCgpleHRlcm4g aW50IHNldHBheWxvYWRzaWdmMTI4IChfRmxvYXQxMjggKl9feCwgX0Zsb2F0MTI4IF9fcGF5 bG9hZCkgdGhyb3cgKCk7CiMgNDg1ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoKI3Vu ZGVmIF9NZG91YmxlXwojdW5kZWYgX19NQVRIX1BSRUNOQU1FCiN1bmRlZiBfX01BVEhfREVD TEFSSU5HX0RPVUJMRQojdW5kZWYgX19NQVRIX0RFQ0xBUklOR19GTE9BVE4KCgoKI2RlZmlu ZSBfTWRvdWJsZV8gX0Zsb2F0MzJ4CiNkZWZpbmUgX19NQVRIX1BSRUNOQU1FKG5hbWUscikg bmFtZSAjI2YzMnggIyNyCiNkZWZpbmUgX19NQVRIX0RFQ0xBUklOR19ET1VCTEUgMAojZGVm aW5lIF9fTUFUSF9ERUNMQVJJTkdfRkxPQVROIDEKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvbWF0aGNhbGxzLmgiIDEgMyA0CiMgNTMgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxs cy5oIiAzIDQKIGV4dGVybiBfRmxvYXQzMnggYWNvc2YzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fYWNvc2YzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOwoKIGV4dGVybiBfRmxvYXQzMnggYXNpbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fYXNpbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOwoKIGV4dGVybiBfRmxvYXQzMnggYXRhbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fYXRhbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpOwoKIGV4dGVybiBfRmxvYXQzMnggYXRhbjJmMzJ4IChfRmxvYXQzMnggX195LCBf RmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2F0YW4yZjMyeCAo X0Zsb2F0MzJ4IF9feSwgX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBfRmxv YXQzMnggY29zZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQz MnggX19jb3NmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0 MzJ4IHNpbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4 IF9fc2luZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDMy eCB0YW5mMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBf X3RhbmYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQz MnggY29zaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4 IF9fY29zaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQz Mnggc2luaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4 IF9fc2luaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQz MnggdGFuaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4 IF9fdGFuaGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKCgogZXh0ZXJuIHZvaWQg c2luY29zZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4ICpfX3NpbngsIF9GbG9hdDMy eCAqX19jb3N4KSB0aHJvdyAoKTsgZXh0ZXJuIHZvaWQgX19zaW5jb3NmMzJ4IChfRmxvYXQz MnggX194LCBfRmxvYXQzMnggKl9fc2lueCwgX0Zsb2F0MzJ4ICpfX2Nvc3gpIHRocm93ICgp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOwoKCgoKIGV4dGVybiBfRmxvYXQzMnggYWNvc2hmMzJ4IChfRmxvYXQzMnggX194KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2Fjb3NoZjMyeCAoX0Zsb2F0MzJ4IF9feCkg dGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDMyeCBhc2luaGYzMnggKF9GbG9hdDMyeCBfX3gp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fYXNpbmhmMzJ4IChfRmxvYXQzMnggX194 KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0MzJ4IGF0YW5oZjMyeCAoX0Zsb2F0MzJ4IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19hdGFuaGYzMnggKF9GbG9hdDMyeCBf X3gpIHRocm93ICgpOwoKCgoKCiBleHRlcm4gX0Zsb2F0MzJ4IGV4cGYzMnggKF9GbG9hdDMy eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fZXhwZjMyeCAoX0Zsb2F0MzJ4 IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmcmV4cGYzMnggKF9GbG9hdDMy eCBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19m cmV4cGYzMnggKF9GbG9hdDMyeCBfX3gsIGludCAqX19leHBvbmVudCkgdGhyb3cgKCk7CgoK ZXh0ZXJuIF9GbG9hdDMyeCBsZGV4cGYzMnggKF9GbG9hdDMyeCBfX3gsIGludCBfX2V4cG9u ZW50KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2xkZXhwZjMyeCAoX0Zsb2F0MzJ4 IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93ICgpOwoKCiBleHRlcm4gX0Zsb2F0MzJ4IGxv Z2YzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fbG9n ZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKIGV4dGVybiBfRmxvYXQzMnggbG9n MTBmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2xv ZzEwZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBt b2RmZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4ICpfX2lwdHIpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0MzJ4IF9fbW9kZmYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCAq X19pcHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoK CiBleHRlcm4gX0Zsb2F0MzJ4IGV4cDEwZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQzMnggX19leHAxMGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgp OwoKCgoKIGV4dGVybiBfRmxvYXQzMnggZXhwbTFmMzJ4IChfRmxvYXQzMnggX194KSB0aHJv dyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2V4cG0xZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhy b3cgKCk7CgoKIGV4dGVybiBfRmxvYXQzMnggbG9nMXBmMzJ4IChfRmxvYXQzMnggX194KSB0 aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2xvZzFwZjMyeCAoX0Zsb2F0MzJ4IF9feCkg dGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBsb2diZjMyeCAoX0Zsb2F0MzJ4IF9feCkg dGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19sb2diZjMyeCAoX0Zsb2F0MzJ4IF9feCkg dGhyb3cgKCk7CgoKCgogZXh0ZXJuIF9GbG9hdDMyeCBleHAyZjMyeCAoX0Zsb2F0MzJ4IF9f eCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19leHAyZjMyeCAoX0Zsb2F0MzJ4IF9f eCkgdGhyb3cgKCk7CgoKIGV4dGVybiBfRmxvYXQzMnggbG9nMmYzMnggKF9GbG9hdDMyeCBf X3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fbG9nMmYzMnggKF9GbG9hdDMyeCBf X3gpIHRocm93ICgpOwoKCgoKCgogZXh0ZXJuIF9GbG9hdDMyeCBwb3dmMzJ4IChfRmxvYXQz MnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX3Bv d2YzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kpIHRocm93ICgpOwoKCmV4dGVy biBfRmxvYXQzMnggc3FydGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4g X0Zsb2F0MzJ4IF9fc3FydGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKCgogZXh0 ZXJuIF9GbG9hdDMyeCBoeXBvdGYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9faHlwb3RmMzJ4IChfRmxvYXQzMnggX194 LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKTsKCgoKCiBleHRlcm4gX0Zsb2F0MzJ4IGNicnRm MzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2NicnRm MzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9GbG9hdDMyeCBj ZWlsZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fY2VpbGYzMnggKF9GbG9hdDMyeCBfX3gpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0MzJ4 IGZhYnNmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mYWJzZjMyeCAoX0Zsb2F0MzJ4IF9feCkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQz MnggZmxvb3JmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbG9vcmYzMnggKF9GbG9hdDMyeCBf X3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zs b2F0MzJ4IGZtb2RmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2Ztb2RmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQz MnggX195KSB0aHJvdyAoKTsKIyAxOTggIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5o IiAzIDQKZXh0ZXJuIF9GbG9hdDMyeCBjb3B5c2lnbmYzMnggKF9GbG9hdDMyeCBfX3gsIF9G bG9hdDMyeCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIF9GbG9hdDMyeCBfX2NvcHlzaWduZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4 IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJu IF9GbG9hdDMyeCBuYW5mMzJ4IChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpOyBleHRl cm4gX0Zsb2F0MzJ4IF9fbmFuZjMyeCAoY29uc3QgY2hhciAqX190YWdiKSB0aHJvdyAoKTsK IyAyMjAgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0ZXJuIF9GbG9h dDMyeCBqMGYzMnggKF9GbG9hdDMyeCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19q MGYzMnggKF9GbG9hdDMyeCkgdGhyb3cgKCk7CmV4dGVybiBfRmxvYXQzMnggajFmMzJ4IChf RmxvYXQzMngpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fajFmMzJ4IChfRmxvYXQz MngpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0MzJ4IGpuZjMyeCAoaW50LCBfRmxvYXQzMngp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fam5mMzJ4IChpbnQsIF9GbG9hdDMyeCkg dGhyb3cgKCk7CmV4dGVybiBfRmxvYXQzMnggeTBmMzJ4IChfRmxvYXQzMngpIHRocm93ICgp OyBleHRlcm4gX0Zsb2F0MzJ4IF9feTBmMzJ4IChfRmxvYXQzMngpIHRocm93ICgpOwpleHRl cm4gX0Zsb2F0MzJ4IHkxZjMyeCAoX0Zsb2F0MzJ4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9h dDMyeCBfX3kxZjMyeCAoX0Zsb2F0MzJ4KSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDMyeCB5 bmYzMnggKGludCwgX0Zsb2F0MzJ4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX3lu ZjMyeCAoaW50LCBfRmxvYXQzMngpIHRocm93ICgpOwoKCgoKCiBleHRlcm4gX0Zsb2F0MzJ4 IGVyZmYzMnggKF9GbG9hdDMyeCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19lcmZm MzJ4IChfRmxvYXQzMngpIHRocm93ICgpOwogZXh0ZXJuIF9GbG9hdDMyeCBlcmZjZjMyeCAo X0Zsb2F0MzJ4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2VyZmNmMzJ4IChfRmxv YXQzMngpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0MzJ4IGxnYW1tYWYzMnggKF9GbG9hdDMy eCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19sZ2FtbWFmMzJ4IChfRmxvYXQzMngp IHRocm93ICgpOwoKCgoKZXh0ZXJuIF9GbG9hdDMyeCB0Z2FtbWFmMzJ4IChfRmxvYXQzMngp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fdGdhbW1hZjMyeCAoX0Zsb2F0MzJ4KSB0 aHJvdyAoKTsKIyAyNTIgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy5oIiAzIDQKZXh0 ZXJuIF9GbG9hdDMyeCBsZ2FtbWFmMzJ4X3IgKF9GbG9hdDMyeCwgaW50ICpfX3NpZ25nYW1w KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX2xnYW1tYWYzMnhfciAoX0Zsb2F0MzJ4 LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0MzJ4IHJp bnRmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX3Jp bnRmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4IG5l eHRhZnRlcmYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0MzJ4IF9fbmV4dGFmdGVyZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0 MzJ4IF9feSkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBfRmxvYXQzMnggbmV4dGRvd25mMzJ4 IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX25leHRkb3du ZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgpleHRlcm4gX0Zsb2F0MzJ4IG5leHR1 cGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fbmV4 dHVwZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQzMngg cmVtYWluZGVyZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQzMnggX19yZW1haW5kZXJmMzJ4IChfRmxvYXQzMnggX194LCBfRmxv YXQzMnggX195KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDMyeCBzY2FsYm5mMzJ4IChf RmxvYXQzMnggX194LCBpbnQgX19uKSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX3Nj YWxibmYzMnggKF9GbG9hdDMyeCBfX3gsIGludCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4g aW50IGlsb2diZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBpbnQgX19p bG9nYmYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGxvbmcgaW50 IGxsb2diZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBf X2xsb2diZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gX0Zsb2F0 MzJ4IHNjYWxibG5mMzJ4IChfRmxvYXQzMnggX194LCBsb25nIGludCBfX24pIHRocm93ICgp OyBleHRlcm4gX0Zsb2F0MzJ4IF9fc2NhbGJsbmYzMnggKF9GbG9hdDMyeCBfX3gsIGxvbmcg aW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQzMnggbmVhcmJ5aW50ZjMyeCAo X0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19uZWFyYnlpbnRm MzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDMyeCByb3Vu ZGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsgZXh0ZXJuIF9GbG9hdDMyeCBfX3JvdW5kZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgpleHRlcm4gX0Zsb2F0MzJ4 IHRydW5jZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f Y29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fdHJ1bmNmMzJ4IChfRmxvYXQzMnggX194 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zs b2F0MzJ4IHJlbXF1b2YzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3ksIGludCAq X19xdW8pIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fcmVtcXVvZjMyeCAoX0Zsb2F0 MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSwgaW50ICpfX3F1bykgdGhyb3cgKCk7CgoKCgoKCmV4 dGVybiBsb25nIGludCBscmludGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOyBleHRl cm4gbG9uZyBpbnQgX19scmludGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwpfX2V4 dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcgaW50IGxscmludGYzMnggKF9GbG9hdDMyeCBf X3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBfX2xscmludGYzMnggKF9GbG9h dDMyeCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gbG9uZyBpbnQgbHJvdW5kZjMyeCAoX0Zs b2F0MzJ4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGludCBfX2xyb3VuZGYzMnggKF9G bG9hdDMyeCBfX3gpIHRocm93ICgpOwpfX2V4dGVuc2lvbl9fCmV4dGVybiBsb25nIGxvbmcg aW50IGxscm91bmRmMzJ4IChfRmxvYXQzMnggX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcg bG9uZyBpbnQgX19sbHJvdW5kZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCk7CgoKCmV4 dGVybiBfRmxvYXQzMnggZmRpbWYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fZmRpbWYzMnggKF9GbG9hdDMyeCBfX3gs IF9GbG9hdDMyeCBfX3kpIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0MzJ4IGZtYXhmMzJ4 IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWF4ZjMyeCAoX0Zsb2F0MzJ4 IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3Rf XykpOwoKCmV4dGVybiBfRmxvYXQzMnggZm1pbmYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9h dDMyeCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJu IF9GbG9hdDMyeCBfX2ZtaW5mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBfRmxvYXQz MnggZm1hZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSwgX0Zsb2F0MzJ4IF9f eikgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQzMnggX19mbWFmMzJ4IChfRmxvYXQzMnggX194 LCBfRmxvYXQzMnggX195LCBfRmxvYXQzMnggX196KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBf RmxvYXQzMnggcm91bmRldmVuZjMyeCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fcm91bmRldmVuZjMy eCAoX0Zsb2F0MzJ4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCgpleHRlcm4gX19pbnRtYXhfdCBmcm9tZnBmMzJ4IChfRmxvYXQzMnggX194LCBpbnQg X19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX19pbnRt YXhfdCBfX2Zyb21mcGYzMnggKF9GbG9hdDMyeCBfX3gsIGludCBfX3JvdW5kLCB1bnNpZ25l ZCBpbnQgX193aWR0aCkgdGhyb3cgKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK CgoKZXh0ZXJuIF9fdWludG1heF90IHVmcm9tZnBmMzJ4IChfRmxvYXQzMnggX194LCBpbnQg X19yb3VuZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX191aW50 bWF4X3QgX191ZnJvbWZwZjMyeCAoX0Zsb2F0MzJ4IF9feCwgaW50IF9fcm91bmQsIHVuc2ln bmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CgoKCgpleHRlcm4gX19pbnRtYXhfdCBmcm9tZnB4ZjMyeCAoX0Zsb2F0MzJ4IF9feCwg aW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9f aW50bWF4X3QgX19mcm9tZnB4ZjMyeCAoX0Zsb2F0MzJ4IF9feCwgaW50IF9fcm91bmQsIHVu c2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKCgoKCmV4dGVybiBfX3VpbnRtYXhfdCB1ZnJvbWZweGYzMnggKF9GbG9hdDMyeCBf X3gsIGludCBfX3JvdW5kLCB1bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7IGV4dGVy biBfX3VpbnRtYXhfdCBfX3Vmcm9tZnB4ZjMyeCAoX0Zsb2F0MzJ4IF9feCwgaW50IF9fcm91 bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOwoKCmV4dGVybiBpbnQgY2Fub25pY2FsaXplZjMyeCAoX0Zsb2F0MzJ4 ICpfX2N4LCBjb25zdCBfRmxvYXQzMnggKl9feCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBf RmxvYXQzMnggZm1heG1hZ2YzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDMyeCBf X2ZtYXhtYWdmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmbWlubWFn ZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fZm1pbm1hZ2YzMnggKF9G bG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgoKCmV4dGVybiBfRmxvYXQzMnggZm1heGltdW1mMzJ4IChfRmxvYXQz MnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWF4aW11bWYzMnggKF9GbG9hdDMyeCBfX3gs IF9GbG9hdDMyeCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsK CgpleHRlcm4gX0Zsb2F0MzJ4IGZtaW5pbXVtZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0 MzJ4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4g X0Zsb2F0MzJ4IF9fZm1pbmltdW1mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195 KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9h dDMyeCBmbWF4aW11bV9udW1mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMngg X19mbWF4aW11bV9udW1mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBm bWluaW11bV9udW1mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWlu aW11bV9udW1mMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmbWF4aW11 bV9tYWdmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWF4aW11bV9t YWdmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmbWluaW11bV9tYWdm MzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWluaW11bV9tYWdmMzJ4 IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmbWF4aW11bV9tYWdfbnVtZjMy eCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0MzJ4IF9fZm1heGltdW1fbWFnX251bWYz MnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0MzJ4IGZtaW5pbXVtX21hZ19udW1m MzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQzMnggX19mbWluaW11bV9tYWdfbnVt ZjMyeCAoX0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKZXh0ZXJuIGludCB0b3RhbG9yZGVyZjMyeCAoY29u c3QgX0Zsb2F0MzJ4ICpfX3gsIGNvbnN0IF9GbG9hdDMyeCAqX195KSB0aHJvdyAoKQoKICAg ICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJt YWdmMzJ4IChjb25zdCBfRmxvYXQzMnggKl9feCwgY29uc3QgX0Zsb2F0MzJ4ICpfX3kpIHRo cm93ICgpCgogICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBfRmxv YXQzMnggZ2V0cGF5bG9hZGYzMnggKGNvbnN0IF9GbG9hdDMyeCAqX194KSB0aHJvdyAoKTsg ZXh0ZXJuIF9GbG9hdDMyeCBfX2dldHBheWxvYWRmMzJ4IChjb25zdCBfRmxvYXQzMnggKl9f eCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzZXRwYXlsb2FkZjMyeCAoX0Zsb2F0MzJ4ICpf X3gsIF9GbG9hdDMyeCBfX3BheWxvYWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2V0cGF5 bG9hZHNpZ2YzMnggKF9GbG9hdDMyeCAqX194LCBfRmxvYXQzMnggX19wYXlsb2FkKSB0aHJv dyAoKTsKIyA1MDIgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CgojdW5kZWYgX01kb3Vi bGVfCiN1bmRlZiBfX01BVEhfUFJFQ05BTUUKI3VuZGVmIF9fTUFUSF9ERUNMQVJJTkdfRE9V QkxFCiN1bmRlZiBfX01BVEhfREVDTEFSSU5HX0ZMT0FUTgoKCgojZGVmaW5lIF9NZG91Ymxl XyBfRmxvYXQ2NHgKI2RlZmluZSBfX01BVEhfUFJFQ05BTUUobmFtZSxyKSBuYW1lICMjZjY0 eCAjI3IKI2RlZmluZSBfX01BVEhfREVDTEFSSU5HX0RPVUJMRSAwCiNkZWZpbmUgX19NQVRI X0RFQ0xBUklOR19GTE9BVE4gMQoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2Fs bHMuaCIgMSAzIDQKIyA1MyAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNAog ZXh0ZXJuIF9GbG9hdDY0eCBhY29zZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQ2NHggX19hY29zZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7Cgog ZXh0ZXJuIF9GbG9hdDY0eCBhc2luZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQ2NHggX19hc2luZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7Cgog ZXh0ZXJuIF9GbG9hdDY0eCBhdGFuZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4 dGVybiBfRmxvYXQ2NHggX19hdGFuZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7Cgog ZXh0ZXJuIF9GbG9hdDY0eCBhdGFuMmY2NHggKF9GbG9hdDY0eCBfX3ksIF9GbG9hdDY0eCBf X3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fYXRhbjJmNjR4IChfRmxvYXQ2NHgg X195LCBfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIF9GbG9hdDY0eCBjb3Nm NjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2Nvc2Y2 NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOwoKIGV4dGVybiBfRmxvYXQ2NHggc2luZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19zaW5mNjR4 IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCiBleHRlcm4gX0Zsb2F0NjR4IHRhbmY2NHgg KF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fdGFuZjY0eCAo X0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgoKCgogZXh0ZXJuIF9GbG9hdDY0eCBjb3NoZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19jb3NoZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDY0eCBzaW5oZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19zaW5oZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgogZXh0ZXJuIF9GbG9hdDY0eCB0YW5oZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX190YW5oZjY0 eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gdm9pZCBzaW5jb3NmNjR4 IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggKl9fc2lueCwgX0Zsb2F0NjR4ICpfX2Nvc3gp IHRocm93ICgpOyBleHRlcm4gdm9pZCBfX3NpbmNvc2Y2NHggKF9GbG9hdDY0eCBfX3gsIF9G bG9hdDY0eCAqX19zaW54LCBfRmxvYXQ2NHggKl9fY29zeCkgdGhyb3cgKCkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgog ZXh0ZXJuIF9GbG9hdDY0eCBhY29zaGY2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0NjR4IF9fYWNvc2hmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsK CiBleHRlcm4gX0Zsb2F0NjR4IGFzaW5oZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQ2NHggX19hc2luaGY2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgp OwoKIGV4dGVybiBfRmxvYXQ2NHggYXRhbmhmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2F0YW5oZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cg KCk7CgoKCgoKIGV4dGVybiBfRmxvYXQ2NHggZXhwZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhy b3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19leHBmNjR4IChfRmxvYXQ2NHggX194KSB0aHJv dyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZyZXhwZjY0eCAoX0Zsb2F0NjR4IF9feCwgaW50 ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZyZXhwZjY0eCAo X0Zsb2F0NjR4IF9feCwgaW50ICpfX2V4cG9uZW50KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zs b2F0NjR4IGxkZXhwZjY0eCAoX0Zsb2F0NjR4IF9feCwgaW50IF9fZXhwb25lbnQpIHRocm93 ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fbGRleHBmNjR4IChfRmxvYXQ2NHggX194LCBpbnQg X19leHBvbmVudCkgdGhyb3cgKCk7CgoKIGV4dGVybiBfRmxvYXQ2NHggbG9nZjY0eCAoX0Zs b2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19sb2dmNjR4IChfRmxv YXQ2NHggX194KSB0aHJvdyAoKTsKCgogZXh0ZXJuIF9GbG9hdDY0eCBsb2cxMGY2NHggKF9G bG9hdDY0eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fbG9nMTBmNjR4IChf RmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4IG1vZGZmNjR4IChf RmxvYXQ2NHggX194LCBfRmxvYXQ2NHggKl9faXB0cikgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQ2NHggX19tb2RmZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4ICpfX2lwdHIpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKIGV4dGVybiBf RmxvYXQ2NHggZXhwMTBmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsgZXh0ZXJuIF9G bG9hdDY0eCBfX2V4cDEwZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgoKCgogZXh0 ZXJuIF9GbG9hdDY0eCBleHBtMWY2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOyBleHRl cm4gX0Zsb2F0NjR4IF9fZXhwbTFmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgog ZXh0ZXJuIF9GbG9hdDY0eCBsb2cxcGY2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOyBl eHRlcm4gX0Zsb2F0NjR4IF9fbG9nMXBmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsK CgpleHRlcm4gX0Zsb2F0NjR4IGxvZ2JmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsg ZXh0ZXJuIF9GbG9hdDY0eCBfX2xvZ2JmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsK CgoKCiBleHRlcm4gX0Zsb2F0NjR4IGV4cDJmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2V4cDJmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAo KTsKCgogZXh0ZXJuIF9GbG9hdDY0eCBsb2cyZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cg KCk7IGV4dGVybiBfRmxvYXQ2NHggX19sb2cyZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cg KCk7CgoKCgoKCiBleHRlcm4gX0Zsb2F0NjR4IHBvd2Y2NHggKF9GbG9hdDY0eCBfX3gsIF9G bG9hdDY0eCBfX3kpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fcG93ZjY0eCAoX0Zs b2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDY0 eCBzcXJ0ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHgg X19zcXJ0ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgoKCiBleHRlcm4gX0Zsb2F0 NjR4IGh5cG90ZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQ2NHggX19oeXBvdGY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0 eCBfX3kpIHRocm93ICgpOwoKCgoKIGV4dGVybiBfRmxvYXQ2NHggY2JydGY2NHggKF9GbG9h dDY0eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fY2JydGY2NHggKF9GbG9h dDY0eCBfX3gpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gX0Zsb2F0NjR4IGNlaWxmNjR4IChf RmxvYXQ2NHggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4 dGVybiBfRmxvYXQ2NHggX19jZWlsZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQ2NHggZmFic2Y2NHgg KF9GbG9hdDY0eCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsg ZXh0ZXJuIF9GbG9hdDY0eCBfX2ZhYnNmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0eCBmbG9vcmY2 NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18p KTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2Zsb29yZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBfRmxvYXQ2NHggZm1v ZGY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpOyBleHRlcm4g X0Zsb2F0NjR4IF9fZm1vZGY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRo cm93ICgpOwojIDE5OCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNApleHRl cm4gX0Zsb2F0NjR4IGNvcHlzaWduZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9f eSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0 NjR4IF9fY29weXNpZ25mNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCgpleHRlcm4gX0Zsb2F0NjR4 IG5hbmY2NHggKGNvbnN0IGNoYXIgKl9fdGFnYikgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2 NHggX19uYW5mNjR4IChjb25zdCBjaGFyICpfX3RhZ2IpIHRocm93ICgpOwojIDIyMCAiL3Vz ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNApleHRlcm4gX0Zsb2F0NjR4IGowZjY0 eCAoX0Zsb2F0NjR4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2owZjY0eCAoX0Zs b2F0NjR4KSB0aHJvdyAoKTsKZXh0ZXJuIF9GbG9hdDY0eCBqMWY2NHggKF9GbG9hdDY0eCkg dGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19qMWY2NHggKF9GbG9hdDY0eCkgdGhyb3cg KCk7CmV4dGVybiBfRmxvYXQ2NHggam5mNjR4IChpbnQsIF9GbG9hdDY0eCkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQ2NHggX19qbmY2NHggKGludCwgX0Zsb2F0NjR4KSB0aHJvdyAoKTsK ZXh0ZXJuIF9GbG9hdDY0eCB5MGY2NHggKF9GbG9hdDY0eCkgdGhyb3cgKCk7IGV4dGVybiBf RmxvYXQ2NHggX195MGY2NHggKF9GbG9hdDY0eCkgdGhyb3cgKCk7CmV4dGVybiBfRmxvYXQ2 NHggeTFmNjR4IChfRmxvYXQ2NHgpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9feTFm NjR4IChfRmxvYXQ2NHgpIHRocm93ICgpOwpleHRlcm4gX0Zsb2F0NjR4IHluZjY0eCAoaW50 LCBfRmxvYXQ2NHgpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9feW5mNjR4IChpbnQs IF9GbG9hdDY0eCkgdGhyb3cgKCk7CgoKCgoKIGV4dGVybiBfRmxvYXQ2NHggZXJmZjY0eCAo X0Zsb2F0NjR4KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2VyZmY2NHggKF9GbG9h dDY0eCkgdGhyb3cgKCk7CiBleHRlcm4gX0Zsb2F0NjR4IGVyZmNmNjR4IChfRmxvYXQ2NHgp IHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fZXJmY2Y2NHggKF9GbG9hdDY0eCkgdGhy b3cgKCk7CmV4dGVybiBfRmxvYXQ2NHggbGdhbW1hZjY0eCAoX0Zsb2F0NjR4KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2xnYW1tYWY2NHggKF9GbG9hdDY0eCkgdGhyb3cgKCk7 CgoKCgpleHRlcm4gX0Zsb2F0NjR4IHRnYW1tYWY2NHggKF9GbG9hdDY0eCkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQ2NHggX190Z2FtbWFmNjR4IChfRmxvYXQ2NHgpIHRocm93ICgpOwoj IDI1MiAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLmgiIDMgNApleHRlcm4gX0Zsb2F0 NjR4IGxnYW1tYWY2NHhfciAoX0Zsb2F0NjR4LCBpbnQgKl9fc2lnbmdhbXApIHRocm93ICgp OyBleHRlcm4gX0Zsb2F0NjR4IF9fbGdhbW1hZjY0eF9yIChfRmxvYXQ2NHgsIGludCAqX19z aWduZ2FtcCkgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBfRmxvYXQ2NHggcmludGY2NHggKF9G bG9hdDY0eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fcmludGY2NHggKF9G bG9hdDY0eCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQ2NHggbmV4dGFmdGVyZjY0 eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7IGV4dGVybiBfRmxv YXQ2NHggX19uZXh0YWZ0ZXJmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0 aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9GbG9hdDY0eCBuZXh0ZG93bmY2NHggKF9GbG9hdDY0 eCBfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fbmV4dGRvd25mNjR4IChfRmxv YXQ2NHggX194KSB0aHJvdyAoKTsKCmV4dGVybiBfRmxvYXQ2NHggbmV4dHVwZjY0eCAoX0Zs b2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19uZXh0dXBmNjR4IChf RmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0eCByZW1haW5kZXJm NjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKTsgZXh0ZXJuIF9G bG9hdDY0eCBfX3JlbWFpbmRlcmY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kp IHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0NjR4IHNjYWxibmY2NHggKF9GbG9hdDY0eCBf X3gsIGludCBfX24pIHRocm93ICgpOyBleHRlcm4gX0Zsb2F0NjR4IF9fc2NhbGJuZjY0eCAo X0Zsb2F0NjR4IF9feCwgaW50IF9fbikgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaWxvZ2Jm NjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsgZXh0ZXJuIGludCBfX2lsb2diZjY0eCAo X0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7CgoKCgpleHRlcm4gbG9uZyBpbnQgbGxvZ2JmNjR4 IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbGxvZ2JmNjR4 IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgoKCmV4dGVybiBfRmxvYXQ2NHggc2NhbGJs bmY2NHggKF9GbG9hdDY0eCBfX3gsIGxvbmcgaW50IF9fbikgdGhyb3cgKCk7IGV4dGVybiBf RmxvYXQ2NHggX19zY2FsYmxuZjY0eCAoX0Zsb2F0NjR4IF9feCwgbG9uZyBpbnQgX19uKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0eCBuZWFyYnlpbnRmNjR4IChfRmxvYXQ2NHgg X194KSB0aHJvdyAoKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX25lYXJieWludGY2NHggKF9GbG9h dDY0eCBfX3gpIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0NjR4IHJvdW5kZjY0eCAoX0Zs b2F0NjR4IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRl cm4gX0Zsb2F0NjR4IF9fcm91bmRmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVybiBfRmxvYXQ2NHggdHJ1bmNmNjR4 IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 IGV4dGVybiBfRmxvYXQ2NHggX190cnVuY2Y2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCmV4dGVybiBfRmxvYXQ2NHggcmVt cXVvZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSwgaW50ICpfX3F1bykgdGhy b3cgKCk7IGV4dGVybiBfRmxvYXQ2NHggX19yZW1xdW9mNjR4IChfRmxvYXQ2NHggX194LCBf RmxvYXQ2NHggX195LCBpbnQgKl9fcXVvKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcg aW50IGxyaW50ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7IGV4dGVybiBsb25nIGlu dCBfX2xyaW50ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7Cl9fZXh0ZW5zaW9uX18K ZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyaW50ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cg KCk7IGV4dGVybiBsb25nIGxvbmcgaW50IF9fbGxyaW50ZjY0eCAoX0Zsb2F0NjR4IF9feCkg dGhyb3cgKCk7CgoKCmV4dGVybiBsb25nIGludCBscm91bmRmNjR4IChfRmxvYXQ2NHggX194 KSB0aHJvdyAoKTsgZXh0ZXJuIGxvbmcgaW50IF9fbHJvdW5kZjY0eCAoX0Zsb2F0NjR4IF9f eCkgdGhyb3cgKCk7Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgbGxyb3Vu ZGY2NHggKF9GbG9hdDY0eCBfX3gpIHRocm93ICgpOyBleHRlcm4gbG9uZyBsb25nIGludCBf X2xscm91bmRmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9h dDY0eCBmZGltZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7 IGV4dGVybiBfRmxvYXQ2NHggX19mZGltZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4 IF9feSkgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQ2NHggZm1heGY2NHggKF9GbG9hdDY0 eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtYXhmNjR4IChfRmxvYXQ2NHggX194LCBfRmxv YXQ2NHggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0 ZXJuIF9GbG9hdDY0eCBmbWluZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjR4 IF9fZm1pbmY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIF9GbG9hdDY0eCBmbWFmNjR4 IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195LCBfRmxvYXQ2NHggX196KSB0aHJvdyAo KTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtYWY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0 eCBfX3ksIF9GbG9hdDY0eCBfX3opIHRocm93ICgpOwoKCgoKZXh0ZXJuIF9GbG9hdDY0eCBy b3VuZGV2ZW5mNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NHggX19yb3VuZGV2ZW5mNjR4IChfRmxvYXQ2 NHggX194KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKCmV4dGVy biBfX2ludG1heF90IGZyb21mcGY2NHggKF9GbG9hdDY0eCBfX3gsIGludCBfX3JvdW5kLCB1 bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7IGV4dGVybiBfX2ludG1heF90IF9fZnJv bWZwZjY0eCAoX0Zsb2F0NjR4IF9feCwgaW50IF9fcm91bmQsIHVuc2lnbmVkIGludCBfX3dp ZHRoKSB0aHJvdyAoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgpleHRlcm4g X191aW50bWF4X3QgdWZyb21mcGY2NHggKF9GbG9hdDY0eCBfX3gsIGludCBfX3JvdW5kLCB1 bnNpZ25lZCBpbnQgX193aWR0aCkgdGhyb3cgKCk7IGV4dGVybiBfX3VpbnRtYXhfdCBfX3Vm cm9tZnBmNjR4IChfRmxvYXQ2NHggX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50IF9f d2lkdGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4 dGVybiBfX2ludG1heF90IGZyb21mcHhmNjR4IChfRmxvYXQ2NHggX194LCBpbnQgX19yb3Vu ZCwgdW5zaWduZWQgaW50IF9fd2lkdGgpIHRocm93ICgpOyBleHRlcm4gX19pbnRtYXhfdCBf X2Zyb21mcHhmNjR4IChfRmxvYXQ2NHggX194LCBpbnQgX19yb3VuZCwgdW5zaWduZWQgaW50 IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoK ZXh0ZXJuIF9fdWludG1heF90IHVmcm9tZnB4ZjY0eCAoX0Zsb2F0NjR4IF9feCwgaW50IF9f cm91bmQsIHVuc2lnbmVkIGludCBfX3dpZHRoKSB0aHJvdyAoKTsgZXh0ZXJuIF9fdWludG1h eF90IF9fdWZyb21mcHhmNjR4IChfRmxvYXQ2NHggX194LCBpbnQgX19yb3VuZCwgdW5zaWdu ZWQgaW50IF9fd2lkdGgpIHRocm93ICgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CgoKZXh0ZXJuIGludCBjYW5vbmljYWxpemVmNjR4IChfRmxvYXQ2NHggKl9fY3gsIGNv bnN0IF9GbG9hdDY0eCAqX194KSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIF9GbG9hdDY0eCBm bWF4bWFnZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOyBleHRlcm4gX0Zsb2F0NjR4IF9fZm1heG1hZ2Y2 NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtaW5tYWdmNjR4IChfRmxv YXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NHggX19mbWlubWFnZjY0eCAoX0Zsb2F0NjR4IF9f eCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp OwoKCgoKZXh0ZXJuIF9GbG9hdDY0eCBmbWF4aW11bWY2NHggKF9GbG9hdDY0eCBfX3gsIF9G bG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0 ZXJuIF9GbG9hdDY0eCBfX2ZtYXhpbXVtZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4 IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCmV4dGVybiBf RmxvYXQ2NHggZm1pbmltdW1mNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7IGV4dGVybiBfRmxvYXQ2NHgg X19mbWluaW11bWY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtYXhp bXVtX251bWY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtYXhpbXVt X251bWY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtaW5pbXVtX251 bWY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtaW5pbXVtX251bWY2 NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtYXhpbXVtX21hZ2Y2NHgg KF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtYXhpbXVtX21hZ2Y2NHggKF9G bG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X2NvbnN0X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtaW5pbXVtX21hZ2Y2NHggKF9GbG9h dDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtaW5pbXVtX21hZ2Y2NHggKF9GbG9hdDY0 eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0 X18pKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGZtYXhpbXVtX21hZ19udW1mNjR4IChfRmxvYXQ2 NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25z dF9fKSk7IGV4dGVybiBfRmxvYXQ2NHggX19mbWF4aW11bV9tYWdfbnVtZjY0eCAoX0Zsb2F0 NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCmV4dGVybiBfRmxvYXQ2NHggZm1pbmltdW1fbWFnX251bWY2NHggKF9GbG9h dDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsgZXh0ZXJuIF9GbG9hdDY0eCBfX2ZtaW5pbXVtX21hZ19udW1mNjR4IChfRmxv YXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19j b25zdF9fKSk7CgoKCgpleHRlcm4gaW50IHRvdGFsb3JkZXJmNjR4IChjb25zdCBfRmxvYXQ2 NHggKl9feCwgY29uc3QgX0Zsb2F0NjR4ICpfX3kpIHRocm93ICgpCgogICAgIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpOwoKCmV4dGVybiBpbnQgdG90YWxvcmRlcm1hZ2Y2NHggKGNv bnN0IF9GbG9hdDY0eCAqX194LCBjb25zdCBfRmxvYXQ2NHggKl9feSkgdGhyb3cgKCkKCiAg ICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJuIF9GbG9hdDY0eCBnZXRw YXlsb2FkZjY0eCAoY29uc3QgX0Zsb2F0NjR4ICpfX3gpIHRocm93ICgpOyBleHRlcm4gX0Zs b2F0NjR4IF9fZ2V0cGF5bG9hZGY2NHggKGNvbnN0IF9GbG9hdDY0eCAqX194KSB0aHJvdyAo KTsKCgpleHRlcm4gaW50IHNldHBheWxvYWRmNjR4IChfRmxvYXQ2NHggKl9feCwgX0Zsb2F0 NjR4IF9fcGF5bG9hZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzZXRwYXlsb2Fkc2lnZjY0 eCAoX0Zsb2F0NjR4ICpfX3gsIF9GbG9hdDY0eCBfX3BheWxvYWQpIHRocm93ICgpOwojIDUx OSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKCiN1bmRlZiBfTWRvdWJsZV8KI3VuZGVm IF9fTUFUSF9QUkVDTkFNRQojdW5kZWYgX19NQVRIX0RFQ0xBUklOR19ET1VCTEUKI3VuZGVm IF9fTUFUSF9ERUNMQVJJTkdfRkxPQVROCiMgNTQzICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAz IDQKI3VuZGVmIF9fTUFUSERFQ0xfMV9JTVBMCiN1bmRlZiBfX01BVEhERUNMXzEKI3VuZGVm IF9fTUFUSERFQ0xfQUxJQVMKI3VuZGVmIF9fTUFUSERFQ0wKI3VuZGVmIF9fTUFUSENBTEwK CgojZGVmaW5lIF9fTUFUSENBTExfTkFSUk9XX0FSR1NfMSAoX01hcmdfIF9feCkKI2RlZmlu ZSBfX01BVEhDQUxMX05BUlJPV19BUkdTXzIgKF9NYXJnXyBfX3gsIF9NYXJnXyBfX3kpCiNk ZWZpbmUgX19NQVRIQ0FMTF9OQVJST1dfQVJHU18zIChfTWFyZ18gX194LCBfTWFyZ18gX195 LCBfTWFyZ18gX196KQojZGVmaW5lIF9fTUFUSENBTExfTkFSUk9XX05PUk1BTChmdW5jLG5h cmdzKSBleHRlcm4gX01yZXRfIGZ1bmMgX19NQVRIQ0FMTF9OQVJST1dfQVJHU18gIyMgbmFy Z3MgX19USFJPVwoKI2RlZmluZSBfX01BVEhDQUxMX05BUlJPV19SRURJUihmdW5jLHJlZGly LG5hcmdzKSBleHRlcm4gX01yZXRfIF9fUkVESVJFQ1RfTlRIIChmdW5jLCBfX01BVEhDQUxM X05BUlJPV19BUkdTXyAjIyBuYXJncywgcmVkaXIpCgoKI2RlZmluZSBfX01BVEhDQUxMX05B UlJPVyhmdW5jLHJlZGlyLG5hcmdzKSBfX01BVEhDQUxMX05BUlJPV19OT1JNQUwgKGZ1bmMs IG5hcmdzKQoKCgoKI2RlZmluZSBfTXJldF8gZmxvYXQKI2RlZmluZSBfTWFyZ18gZG91Ymxl CiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUpIGYgIyMgbmFtZQojIDEgIi91c3IvaW5j bHVkZS9iaXRzL21hdGhjYWxscy1uYXJyb3cuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRl L2JpdHMvbWF0aGNhbGxzLW5hcnJvdy5oIiAzIDQKZXh0ZXJuIGZsb2F0IGZhZGQgKGRvdWJs ZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmZGl2IChkb3Vi bGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZmZtYSAoZG91 YmxlIF9feCwgZG91YmxlIF9feSwgZG91YmxlIF9feikgdGhyb3cgKCk7CgoKZXh0ZXJuIGZs b2F0IGZtdWwgKGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBm bG9hdCBmc3FydCAoZG91YmxlIF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZzdWIg KGRvdWJsZSBfX3gsIGRvdWJsZSBfX3kpIHRocm93ICgpOwojIDU2NyAiL3Vzci9pbmNsdWRl L21hdGguaCIgMiAzIDQKI3VuZGVmIF9NcmV0XwojdW5kZWYgX01hcmdfCiN1bmRlZiBfX01B VEhDQUxMX05BTUUKCiNkZWZpbmUgX01yZXRfIGZsb2F0CiNkZWZpbmUgX01hcmdfIGxvbmcg ZG91YmxlCiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUpIGYgIyMgbmFtZSAjIyBsCiMg NTg3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoY2FsbHMtbmFycm93LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhj YWxscy1uYXJyb3cuaCIgMyA0CmV4dGVybiBmbG9hdCBmYWRkbCAobG9uZyBkb3VibGUgX194 LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9hdCBmZGl2bCAobG9u ZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBmbG9h dCBmZm1hbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91Ymxl IF9feikgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZtdWxsIChsb25nIGRvdWJsZSBfX3gs IGxvbmcgZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGZsb2F0IGZzcXJ0bCAobG9u ZyBkb3VibGUgX194KSB0aHJvdyAoKTsKCgpleHRlcm4gZmxvYXQgZnN1YmwgKGxvbmcgZG91 YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0aHJvdyAoKTsKIyA1ODggIi91c3IvaW5jbHVk ZS9tYXRoLmgiIDIgMyA0CiN1bmRlZiBfTXJldF8KI3VuZGVmIF9NYXJnXwojdW5kZWYgX19N QVRIQ0FMTF9OQU1FCiMgNjAwICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBf TXJldF8gZG91YmxlCiNkZWZpbmUgX01hcmdfIGxvbmcgZG91YmxlCiNkZWZpbmUgX19NQVRI Q0FMTF9OQU1FKG5hbWUpIGQgIyMgbmFtZSAjIyBsCiMgNjE2ICIvdXNyL2luY2x1ZGUvbWF0 aC5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMtbmFycm93LmgiIDEg MyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy1uYXJyb3cuaCIgMyA0CmV4 dGVybiBkb3VibGUgZGFkZGwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBkb3VibGUgX195KSB0 aHJvdyAoKTsKCgpleHRlcm4gZG91YmxlIGRkaXZsIChsb25nIGRvdWJsZSBfX3gsIGxvbmcg ZG91YmxlIF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGRvdWJsZSBkZm1hbCAobG9uZyBkb3Vi bGUgX194LCBsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feikgdGhyb3cgKCk7CgoK ZXh0ZXJuIGRvdWJsZSBkbXVsbCAobG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kp IHRocm93ICgpOwoKCmV4dGVybiBkb3VibGUgZHNxcnRsIChsb25nIGRvdWJsZSBfX3gpIHRo cm93ICgpOwoKCmV4dGVybiBkb3VibGUgZHN1YmwgKGxvbmcgZG91YmxlIF9feCwgbG9uZyBk b3VibGUgX195KSB0aHJvdyAoKTsKIyA2MTcgIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0 CiN1bmRlZiBfTXJldF8KI3VuZGVmIF9NYXJnXwojdW5kZWYgX19NQVRIQ0FMTF9OQU1FCiMg Njk0ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBfTXJldF8gX0Zsb2F0MzIK I2RlZmluZSBfTWFyZ18gX0Zsb2F0MzJ4CiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUp IGYzMiAjIyBuYW1lICMjIGYzMngKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMt bmFycm93LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy1uYXJy b3cuaCIgMyA0CmV4dGVybiBfRmxvYXQzMiBmMzJhZGRmMzJ4IChfRmxvYXQzMnggX194LCBf RmxvYXQzMnggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMyZGl2ZjMyeCAo X0Zsb2F0MzJ4IF9feCwgX0Zsb2F0MzJ4IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9h dDMyIGYzMmZtYWYzMnggKF9GbG9hdDMyeCBfX3gsIF9GbG9hdDMyeCBfX3ksIF9GbG9hdDMy eCBfX3opIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBmMzJtdWxmMzJ4IChfRmxvYXQz MnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMy c3FydGYzMnggKF9GbG9hdDMyeCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBm MzJzdWJmMzJ4IChfRmxvYXQzMnggX194LCBfRmxvYXQzMnggX195KSB0aHJvdyAoKTsKIyA2 OTggIi91c3IvaW5jbHVkZS9tYXRoLmgiIDIgMyA0CiN1bmRlZiBfTXJldF8KI3VuZGVmIF9N YXJnXwojdW5kZWYgX19NQVRIQ0FMTF9OQU1FCgoKCiNkZWZpbmUgX01yZXRfIF9GbG9hdDMy CiNkZWZpbmUgX01hcmdfIF9GbG9hdDY0CiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUp IGYzMiAjIyBuYW1lICMjIGY2NAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy1u YXJyb3cuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLW5hcnJv dy5oIiAzIDQKZXh0ZXJuIF9GbG9hdDMyIGYzMmFkZGY2NCAoX0Zsb2F0NjQgX194LCBfRmxv YXQ2NCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBmMzJkaXZmNjQgKF9GbG9h dDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMy Zm1hZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSwgX0Zsb2F0NjQgX196KSB0aHJv dyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMybXVsZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9h dDY0IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGYzMnNxcnRmNjQgKF9GbG9h dDY0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGYzMnN1YmY2NCAoX0Zsb2F0 NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpOwojIDcwOCAiL3Vzci9pbmNsdWRlL21h dGguaCIgMiAzIDQKI3VuZGVmIF9NcmV0XwojdW5kZWYgX01hcmdfCiN1bmRlZiBfX01BVEhD QUxMX05BTUUKCgoKI2RlZmluZSBfTXJldF8gX0Zsb2F0MzIKI2RlZmluZSBfTWFyZ18gX0Zs b2F0NjR4CiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUpIGYzMiAjIyBuYW1lICMjIGY2 NHgKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMtbmFycm93LmgiIDEgMyA0CiMg MjQgIi91c3IvaW5jbHVkZS9iaXRzL21hdGhjYWxscy1uYXJyb3cuaCIgMyA0CmV4dGVybiBf RmxvYXQzMiBmMzJhZGRmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJv dyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMyZGl2ZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zs b2F0NjR4IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGYzMmZtYWY2NHggKF9G bG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3ksIF9GbG9hdDY0eCBfX3opIHRocm93ICgpOwoK CmV4dGVybiBfRmxvYXQzMiBmMzJtdWxmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHgg X195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMyc3FydGY2NHggKF9GbG9hdDY0 eCBfX3gpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBmMzJzdWJmNjR4IChfRmxvYXQ2 NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKTsKIyA3MTggIi91c3IvaW5jbHVkZS9t YXRoLmgiIDIgMyA0CiN1bmRlZiBfTXJldF8KI3VuZGVmIF9NYXJnXwojdW5kZWYgX19NQVRI Q0FMTF9OQU1FCgoKCiNkZWZpbmUgX01yZXRfIF9GbG9hdDMyCiNkZWZpbmUgX01hcmdfIF9G bG9hdDEyOAojZGVmaW5lIF9fTUFUSENBTExfTkFNRShuYW1lKSBmMzIgIyMgbmFtZSAjIyBm MTI4CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLW5hcnJvdy5oIiAxIDMgNAoj IDI0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMtbmFycm93LmgiIDMgNApleHRlcm4g X0Zsb2F0MzIgZjMyYWRkZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhy b3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGYzMmRpdmYxMjggKF9GbG9hdDEyOCBfX3gsIF9G bG9hdDEyOCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMiBmMzJmbWFmMTI4IChf RmxvYXQxMjggX194LCBfRmxvYXQxMjggX195LCBfRmxvYXQxMjggX196KSB0aHJvdyAoKTsK CgpleHRlcm4gX0Zsb2F0MzIgZjMybXVsZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4 IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyIGYzMnNxcnRmMTI4IChfRmxvYXQx MjggX194KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzIgZjMyc3ViZjEyOCAoX0Zsb2F0 MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7CiMgNzI4ICIvdXNyL2luY2x1ZGUv bWF0aC5oIiAyIDMgNAojdW5kZWYgX01yZXRfCiN1bmRlZiBfTWFyZ18KI3VuZGVmIF9fTUFU SENBTExfTkFNRQojIDc0NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0CiNkZWZpbmUgX01y ZXRfIF9GbG9hdDMyeAojZGVmaW5lIF9NYXJnXyBfRmxvYXQ2NAojZGVmaW5lIF9fTUFUSENB TExfTkFNRShuYW1lKSBmMzJ4ICMjIG5hbWUgIyMgZjY0CiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvbWF0aGNhbGxzLW5hcnJvdy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoY2FsbHMtbmFycm93LmgiIDMgNApleHRlcm4gX0Zsb2F0MzJ4IGYzMnhhZGRmNjQgKF9G bG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4 IGYzMnhkaXZmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195KSB0aHJvdyAoKTsKCgpl eHRlcm4gX0Zsb2F0MzJ4IGYzMnhmbWFmNjQgKF9GbG9hdDY0IF9feCwgX0Zsb2F0NjQgX195 LCBfRmxvYXQ2NCBfX3opIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQzMnggZjMyeG11bGY2 NCAoX0Zsb2F0NjQgX194LCBfRmxvYXQ2NCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBfRmxv YXQzMnggZjMyeHNxcnRmNjQgKF9GbG9hdDY0IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9G bG9hdDMyeCBmMzJ4c3ViZjY0IChfRmxvYXQ2NCBfX3gsIF9GbG9hdDY0IF9feSkgdGhyb3cg KCk7CiMgNzQ4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojdW5kZWYgX01yZXRfCiN1 bmRlZiBfTWFyZ18KI3VuZGVmIF9fTUFUSENBTExfTkFNRQoKCgojZGVmaW5lIF9NcmV0XyBf RmxvYXQzMngKI2RlZmluZSBfTWFyZ18gX0Zsb2F0NjR4CiNkZWZpbmUgX19NQVRIQ0FMTF9O QU1FKG5hbWUpIGYzMnggIyMgbmFtZSAjIyBmNjR4CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv bWF0aGNhbGxzLW5hcnJvdy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRo Y2FsbHMtbmFycm93LmgiIDMgNApleHRlcm4gX0Zsb2F0MzJ4IGYzMnhhZGRmNjR4IChfRmxv YXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4 IGYzMnhkaXZmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKTsK CgpleHRlcm4gX0Zsb2F0MzJ4IGYzMnhmbWFmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2 NHggX195LCBfRmxvYXQ2NHggX196KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4IGYz MnhtdWxmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHggX195KSB0aHJvdyAoKTsKCgpl eHRlcm4gX0Zsb2F0MzJ4IGYzMnhzcXJ0ZjY0eCAoX0Zsb2F0NjR4IF9feCkgdGhyb3cgKCk7 CgoKZXh0ZXJuIF9GbG9hdDMyeCBmMzJ4c3ViZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0 NjR4IF9feSkgdGhyb3cgKCk7CiMgNzU4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAoj dW5kZWYgX01yZXRfCiN1bmRlZiBfTWFyZ18KI3VuZGVmIF9fTUFUSENBTExfTkFNRQoKCgoj ZGVmaW5lIF9NcmV0XyBfRmxvYXQzMngKI2RlZmluZSBfTWFyZ18gX0Zsb2F0MTI4CiNkZWZp bmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUpIGYzMnggIyMgbmFtZSAjIyBmMTI4CiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLW5hcnJvdy5oIiAxIDMgNAojIDI0ICIvdXNyL2lu Y2x1ZGUvYml0cy9tYXRoY2FsbHMtbmFycm93LmgiIDMgNApleHRlcm4gX0Zsb2F0MzJ4IGYz MnhhZGRmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKTsKCgpl eHRlcm4gX0Zsb2F0MzJ4IGYzMnhkaXZmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjgg X195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4IGYzMnhmbWFmMTI4IChfRmxvYXQx MjggX194LCBfRmxvYXQxMjggX195LCBfRmxvYXQxMjggX196KSB0aHJvdyAoKTsKCgpleHRl cm4gX0Zsb2F0MzJ4IGYzMnhtdWxmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195 KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0MzJ4IGYzMnhzcXJ0ZjEyOCAoX0Zsb2F0MTI4 IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDMyeCBmMzJ4c3ViZjEyOCAoX0Zsb2F0 MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7CiMgNzY4ICIvdXNyL2luY2x1ZGUv bWF0aC5oIiAyIDMgNAojdW5kZWYgX01yZXRfCiN1bmRlZiBfTWFyZ18KI3VuZGVmIF9fTUFU SENBTExfTkFNRQojIDc4NCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0CiNkZWZpbmUgX01y ZXRfIF9GbG9hdDY0CiNkZWZpbmUgX01hcmdfIF9GbG9hdDY0eAojZGVmaW5lIF9fTUFUSENB TExfTkFNRShuYW1lKSBmNjQgIyMgbmFtZSAjIyBmNjR4CiMgMSAiL3Vzci9pbmNsdWRlL2Jp dHMvbWF0aGNhbGxzLW5hcnJvdy5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9t YXRoY2FsbHMtbmFycm93LmgiIDMgNApleHRlcm4gX0Zsb2F0NjQgZjY0YWRkZjY0eCAoX0Zs b2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDY0 IGY2NGRpdmY2NHggKF9GbG9hdDY0eCBfX3gsIF9GbG9hdDY0eCBfX3kpIHRocm93ICgpOwoK CmV4dGVybiBfRmxvYXQ2NCBmNjRmbWFmNjR4IChfRmxvYXQ2NHggX194LCBfRmxvYXQ2NHgg X195LCBfRmxvYXQ2NHggX196KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjQgZjY0bXVs ZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkgdGhyb3cgKCk7CgoKZXh0ZXJu IF9GbG9hdDY0IGY2NHNxcnRmNjR4IChfRmxvYXQ2NHggX194KSB0aHJvdyAoKTsKCgpleHRl cm4gX0Zsb2F0NjQgZjY0c3ViZjY0eCAoX0Zsb2F0NjR4IF9feCwgX0Zsb2F0NjR4IF9feSkg dGhyb3cgKCk7CiMgNzg4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojdW5kZWYgX01y ZXRfCiN1bmRlZiBfTWFyZ18KI3VuZGVmIF9fTUFUSENBTExfTkFNRQoKCgojZGVmaW5lIF9N cmV0XyBfRmxvYXQ2NAojZGVmaW5lIF9NYXJnXyBfRmxvYXQxMjgKI2RlZmluZSBfX01BVEhD QUxMX05BTUUobmFtZSkgZjY0ICMjIG5hbWUgIyMgZjEyOAojIDEgIi91c3IvaW5jbHVkZS9i aXRzL21hdGhjYWxscy1uYXJyb3cuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2JpdHMv bWF0aGNhbGxzLW5hcnJvdy5oIiAzIDQKZXh0ZXJuIF9GbG9hdDY0IGY2NGFkZGYxMjggKF9G bG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpOwoKCmV4dGVybiBfRmxvYXQ2 NCBmNjRkaXZmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKTsK CgpleHRlcm4gX0Zsb2F0NjQgZjY0Zm1hZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4 IF9feSwgX0Zsb2F0MTI4IF9feikgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDY0IGY2NG11 bGYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kpIHRocm93ICgpOwoKCmV4dGVy biBfRmxvYXQ2NCBmNjRzcXJ0ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgoKZXh0 ZXJuIF9GbG9hdDY0IGY2NHN1YmYxMjggKF9GbG9hdDEyOCBfX3gsIF9GbG9hdDEyOCBfX3kp IHRocm93ICgpOwojIDc5OCAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKI3VuZGVmIF9N cmV0XwojdW5kZWYgX01hcmdfCiN1bmRlZiBfX01BVEhDQUxMX05BTUUKIyA4MTQgIi91c3Iv aW5jbHVkZS9tYXRoLmgiIDMgNAojZGVmaW5lIF9NcmV0XyBfRmxvYXQ2NHgKI2RlZmluZSBf TWFyZ18gX0Zsb2F0MTI4CiNkZWZpbmUgX19NQVRIQ0FMTF9OQU1FKG5hbWUpIGY2NHggIyMg bmFtZSAjIyBmMTI4CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvbWF0aGNhbGxzLW5hcnJvdy5o IiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy9tYXRoY2FsbHMtbmFycm93LmgiIDMg NApleHRlcm4gX0Zsb2F0NjR4IGY2NHhhZGRmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQx MjggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGY2NHhkaXZmMTI4IChfRmxv YXQxMjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4 IGY2NHhmbWFmMTI4IChfRmxvYXQxMjggX194LCBfRmxvYXQxMjggX195LCBfRmxvYXQxMjgg X196KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGY2NHhtdWxmMTI4IChfRmxvYXQx MjggX194LCBfRmxvYXQxMjggX195KSB0aHJvdyAoKTsKCgpleHRlcm4gX0Zsb2F0NjR4IGY2 NHhzcXJ0ZjEyOCAoX0Zsb2F0MTI4IF9feCkgdGhyb3cgKCk7CgoKZXh0ZXJuIF9GbG9hdDY0 eCBmNjR4c3ViZjEyOCAoX0Zsb2F0MTI4IF9feCwgX0Zsb2F0MTI4IF9feSkgdGhyb3cgKCk7 CiMgODE4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAyIDMgNAojdW5kZWYgX01yZXRfCiN1bmRl ZiBfTWFyZ18KI3VuZGVmIF9fTUFUSENBTExfTkFNRQojIDg0NSAiL3Vzci9pbmNsdWRlL21h dGguaCIgMyA0CiN1bmRlZiBfX01BVEhDQUxMX05BUlJPV19BUkdTXzEKI3VuZGVmIF9fTUFU SENBTExfTkFSUk9XX0FSR1NfMgojdW5kZWYgX19NQVRIQ0FMTF9OQVJST1dfQVJHU18zCiN1 bmRlZiBfX01BVEhDQUxMX05BUlJPV19OT1JNQUwKI3VuZGVmIF9fTUFUSENBTExfTkFSUk9X X1JFRElSCiN1bmRlZiBfX01BVEhDQUxMX05BUlJPVwoKCgpleHRlcm4gaW50IHNpZ25nYW07 CiMgOTIyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBfX01BVEhfVEcoVEdf QVJHLEZVTkMsQVJHUykgKHNpemVvZiAoVEdfQVJHKSA9PSBzaXplb2YgKGZsb2F0KSA/IEZV TkMgIyMgZiBBUkdTIDogc2l6ZW9mIChUR19BUkcpID09IHNpemVvZiAoZG91YmxlKSA/IEZV TkMgQVJHUyA6IEZVTkMgIyMgbCBBUkdTKQojIDkzNCAiL3Vzci9pbmNsdWRlL21hdGguaCIg MyA0CmVudW0KICB7CiAgICBGUF9OQU4gPQojZGVmaW5lIEZQX05BTiAwCiAgICAgIDAsCiAg ICBGUF9JTkZJTklURSA9CiNkZWZpbmUgRlBfSU5GSU5JVEUgMQogICAgICAxLAogICAgRlBf WkVSTyA9CiNkZWZpbmUgRlBfWkVSTyAyCiAgICAgIDIsCiAgICBGUF9TVUJOT1JNQUwgPQoj ZGVmaW5lIEZQX1NVQk5PUk1BTCAzCiAgICAgIDMsCiAgICBGUF9OT1JNQUwgPQojZGVmaW5l IEZQX05PUk1BTCA0CiAgICAgIDQKICB9OwojIDk2NyAiL3Vzci9pbmNsdWRlL21hdGguaCIg MyA0CiNkZWZpbmUgZnBjbGFzc2lmeSh4KSBfX2J1aWx0aW5fZnBjbGFzc2lmeSAoRlBfTkFO LCBGUF9JTkZJTklURSwgRlBfTk9STUFMLCBGUF9TVUJOT1JNQUwsIEZQX1pFUk8sIHgpCgoK CgoKCgojZGVmaW5lIHNpZ25iaXQoeCkgX19idWlsdGluX3NpZ25iaXQgKHgpCiMgOTk0ICIv dXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBpc2Zpbml0ZSh4KSBfX2J1aWx0aW5f aXNmaW5pdGUgKHgpCgoKCgoKCgojZGVmaW5lIGlzbm9ybWFsKHgpIF9fYnVpbHRpbl9pc25v cm1hbCAoeCkKIyAxMDExICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBpc25h bih4KSBfX2J1aWx0aW5faXNuYW4gKHgpCiMgMTAyOSAiL3Vzci9pbmNsdWRlL21hdGguaCIg MyA0CiNkZWZpbmUgaXNpbmYoeCkgX19idWlsdGluX2lzaW5mX3NpZ24gKHgpCgoKCgoKI2Rl ZmluZSBNQVRIX0VSUk5PIDEKI2RlZmluZSBNQVRIX0VSUkVYQ0VQVCAyCiMgMTA0OCAiL3Vz ci9pbmNsdWRlL21hdGguaCIgMyA0CiNkZWZpbmUgbWF0aF9lcnJoYW5kbGluZyAoTUFUSF9F UlJOTyB8IE1BVEhfRVJSRVhDRVBUKQoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvaXNj YW5vbmljYWwuaCIgMSAzIDQKIyAyOCAiL3Vzci9pbmNsdWRlL2JpdHMvaXNjYW5vbmljYWwu aCIgMyA0CiNkZWZpbmUgaXNjYW5vbmljYWwoeCkgKCh2b2lkKSAoX190eXBlb2YgKHgpKSAo eCksIDEpCiMgMTA1NSAiL3Vzci9pbmNsdWRlL21hdGguaCIgMiAzIDQKIyAxMDY2ICIvdXNy L2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuICJDKysiIHsKaW5saW5lIGludCBpc3NpZ25h bGluZyAoZmxvYXQgX192YWwpIHsgcmV0dXJuIF9faXNzaWduYWxpbmdmIChfX3ZhbCk7IH0K aW5saW5lIGludCBpc3NpZ25hbGluZyAoZG91YmxlIF9fdmFsKSB7IHJldHVybiBfX2lzc2ln bmFsaW5nIChfX3ZhbCk7IH0KaW5saW5lIGludAppc3NpZ25hbGluZyAobG9uZyBkb3VibGUg X192YWwpCnsKCgoKICByZXR1cm4gX19pc3NpZ25hbGluZ2wgKF9fdmFsKTsKCn0KCgoKCgp9 CgoKCiNkZWZpbmUgaXNzdWJub3JtYWwoeCkgKGZwY2xhc3NpZnkgKHgpID09IEZQX1NVQk5P Uk1BTCkKIyAxMDk3ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKZXh0ZXJuICJDKysiIHsK IyAxMTI4ICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKdGVtcGxhdGUgPGNsYXNzIF9fVD4g aW5saW5lIGJvb2wKaXN6ZXJvIChfX1QgX192YWwpCnsKICByZXR1cm4gX192YWwgPT0gMDsK fQoKfQoKCgoKCiNkZWZpbmUgTUFYRkxPQVQgMy40MDI4MjM0N2UrMzhGCgoKCgoKI2RlZmlu ZSBNX0UgMi43MTgyODE4Mjg0NTkwNDUyMzU0CiNkZWZpbmUgTV9MT0cyRSAxLjQ0MjY5NTA0 MDg4ODk2MzQwNzQKI2RlZmluZSBNX0xPRzEwRSAwLjQzNDI5NDQ4MTkwMzI1MTgyNzY1CiNk ZWZpbmUgTV9MTjIgMC42OTMxNDcxODA1NTk5NDUzMDk0MgojZGVmaW5lIE1fTE4xMCAyLjMw MjU4NTA5Mjk5NDA0NTY4NDAyCiNkZWZpbmUgTV9QSSAzLjE0MTU5MjY1MzU4OTc5MzIzODQ2 CiNkZWZpbmUgTV9QSV8yIDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMKI2RlZmluZSBNX1BJXzQg MC43ODUzOTgxNjMzOTc0NDgzMDk2MgojZGVmaW5lIE1fMV9QSSAwLjMxODMwOTg4NjE4Mzc5 MDY3MTU0CiNkZWZpbmUgTV8yX1BJIDAuNjM2NjE5NzcyMzY3NTgxMzQzMDgKI2RlZmluZSBN XzJfU1FSVFBJIDEuMTI4Mzc5MTY3MDk1NTEyNTczOTAKI2RlZmluZSBNX1NRUlQyIDEuNDE0 MjEzNTYyMzczMDk1MDQ4ODAKI2RlZmluZSBNX1NRUlQxXzIgMC43MDcxMDY3ODExODY1NDc1 MjQ0MAoKCgoKI2RlZmluZSBNX0VmIDIuNzE4MjgxODI4NDU5MDQ1MjM1NGYKI2RlZmluZSBN X0xPRzJFZiAxLjQ0MjY5NTA0MDg4ODk2MzQwNzRmCiNkZWZpbmUgTV9MT0cxMEVmIDAuNDM0 Mjk0NDgxOTAzMjUxODI3NjVmCiNkZWZpbmUgTV9MTjJmIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5 NDJmCiNkZWZpbmUgTV9MTjEwZiAyLjMwMjU4NTA5Mjk5NDA0NTY4NDAyZgojZGVmaW5lIE1f UElmIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDZmCiNkZWZpbmUgTV9QSV8yZiAxLjU3MDc5NjMy Njc5NDg5NjYxOTIzZgojZGVmaW5lIE1fUElfNGYgMC43ODUzOTgxNjMzOTc0NDgzMDk2MmYK I2RlZmluZSBNXzFfUElmIDAuMzE4MzA5ODg2MTgzNzkwNjcxNTRmCiNkZWZpbmUgTV8yX1BJ ZiAwLjYzNjYxOTc3MjM2NzU4MTM0MzA4ZgojZGVmaW5lIE1fMl9TUVJUUElmIDEuMTI4Mzc5 MTY3MDk1NTEyNTczOTBmCiNkZWZpbmUgTV9TUVJUMmYgMS40MTQyMTM1NjIzNzMwOTUwNDg4 MGYKI2RlZmluZSBNX1NRUlQxXzJmIDAuNzA3MTA2NzgxMTg2NTQ3NTI0NDBmCgoKCgoKCiNk ZWZpbmUgTV9FbCAyLjcxODI4MTgyODQ1OTA0NTIzNTM2MDI4NzQ3MTM1MjY2MjQ5OEwKI2Rl ZmluZSBNX0xPRzJFbCAxLjQ0MjY5NTA0MDg4ODk2MzQwNzM1OTkyNDY4MTAwMTg5MjEzN0wK I2RlZmluZSBNX0xPRzEwRWwgMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUw ODJMCiNkZWZpbmUgTV9MTjJsIDAuNjkzMTQ3MTgwNTU5OTQ1MzA5NDE3MjMyMTIxNDU4MTc2 NTY4TAojZGVmaW5lIE1fTE4xMGwgMi4zMDI1ODUwOTI5OTQwNDU2ODQwMTc5OTE0NTQ2ODQz NjQyMDhMCiNkZWZpbmUgTV9QSWwgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1 MDI4ODRMCiNkZWZpbmUgTV9QSV8ybCAxLjU3MDc5NjMyNjc5NDg5NjYxOTIzMTMyMTY5MTYz OTc1MTQ0MkwKI2RlZmluZSBNX1BJXzRsIDAuNzg1Mzk4MTYzMzk3NDQ4MzA5NjE1NjYwODQ1 ODE5ODc1NzIxTAojZGVmaW5lIE1fMV9QSWwgMC4zMTgzMDk4ODYxODM3OTA2NzE1Mzc3Njc1 MjY3NDUwMjg3MjRMCiNkZWZpbmUgTV8yX1BJbCAwLjYzNjYxOTc3MjM2NzU4MTM0MzA3NTUz NTA1MzQ5MDA1NzQ0OEwKI2RlZmluZSBNXzJfU1FSVFBJbCAxLjEyODM3OTE2NzA5NTUxMjU3 Mzg5NjE1ODkwMzEyMTU0NTE3MkwKI2RlZmluZSBNX1NRUlQybCAxLjQxNDIxMzU2MjM3MzA5 NTA0ODgwMTY4ODcyNDIwOTY5ODA3OUwKI2RlZmluZSBNX1NRUlQxXzJsIDAuNzA3MTA2Nzgx MTg2NTQ3NTI0NDAwODQ0MzYyMTA0ODQ5MDM5TAojIDEyMTQgIi91c3IvaW5jbHVkZS9tYXRo LmgiIDMgNAojZGVmaW5lIE1fRWYzMiBfX2YzMiAoMi43MTgyODE4Mjg0NTkwNDUyMzUzNjAy ODc0NzEzNTI2NjI0OTgpCiNkZWZpbmUgTV9MT0cyRWYzMiBfX2YzMiAoMS40NDI2OTUwNDA4 ODg5NjM0MDczNTk5MjQ2ODEwMDE4OTIxMzcpCiNkZWZpbmUgTV9MT0cxMEVmMzIgX19mMzIg KDAuNDM0Mjk0NDgxOTAzMjUxODI3NjUxMTI4OTE4OTE2NjA1MDgyKQojZGVmaW5lIE1fTE4y ZjMyIF9fZjMyICgwLjY5MzE0NzE4MDU1OTk0NTMwOTQxNzIzMjEyMTQ1ODE3NjU2OCkKI2Rl ZmluZSBNX0xOMTBmMzIgX19mMzIgKDIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0 MzY0MjA4KQojZGVmaW5lIE1fUElmMzIgX19mMzIgKDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYy NjQzMzgzMjc5NTAyODg0KQojZGVmaW5lIE1fUElfMmYzMiBfX2YzMiAoMS41NzA3OTYzMjY3 OTQ4OTY2MTkyMzEzMjE2OTE2Mzk3NTE0NDIpCiNkZWZpbmUgTV9QSV80ZjMyIF9fZjMyICgw Ljc4NTM5ODE2MzM5NzQ0ODMwOTYxNTY2MDg0NTgxOTg3NTcyMSkKI2RlZmluZSBNXzFfUElm MzIgX19mMzIgKDAuMzE4MzA5ODg2MTgzNzkwNjcxNTM3NzY3NTI2NzQ1MDI4NzI0KQojZGVm aW5lIE1fMl9QSWYzMiBfX2YzMiAoMC42MzY2MTk3NzIzNjc1ODEzNDMwNzU1MzUwNTM0OTAw NTc0NDgpCiNkZWZpbmUgTV8yX1NRUlRQSWYzMiBfX2YzMiAoMS4xMjgzNzkxNjcwOTU1MTI1 NzM4OTYxNTg5MDMxMjE1NDUxNzIpCiNkZWZpbmUgTV9TUVJUMmYzMiBfX2YzMiAoMS40MTQy MTM1NjIzNzMwOTUwNDg4MDE2ODg3MjQyMDk2OTgwNzkpCiNkZWZpbmUgTV9TUVJUMV8yZjMy IF9fZjMyICgwLjcwNzEwNjc4MTE4NjU0NzUyNDQwMDg0NDM2MjEwNDg0OTAzOSkKCgoKI2Rl ZmluZSBNX0VmNjQgX19mNjQgKDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3NDcxMzUyNjYy NDk4KQojZGVmaW5lIE1fTE9HMkVmNjQgX19mNjQgKDEuNDQyNjk1MDQwODg4OTYzNDA3MzU5 OTI0NjgxMDAxODkyMTM3KQojZGVmaW5lIE1fTE9HMTBFZjY0IF9fZjY0ICgwLjQzNDI5NDQ4 MTkwMzI1MTgyNzY1MTEyODkxODkxNjYwNTA4MikKI2RlZmluZSBNX0xOMmY2NCBfX2Y2NCAo MC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjgpCiNkZWZpbmUgTV9MTjEw ZjY0IF9fZjY0ICgyLjMwMjU4NTA5Mjk5NDA0NTY4NDAxNzk5MTQ1NDY4NDM2NDIwOCkKI2Rl ZmluZSBNX1BJZjY0IF9fZjY0ICgzLjE0MTU5MjY1MzU4OTc5MzIzODQ2MjY0MzM4MzI3OTUw Mjg4NCkKI2RlZmluZSBNX1BJXzJmNjQgX19mNjQgKDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMx MzIxNjkxNjM5NzUxNDQyKQojZGVmaW5lIE1fUElfNGY2NCBfX2Y2NCAoMC43ODUzOTgxNjMz OTc0NDgzMDk2MTU2NjA4NDU4MTk4NzU3MjEpCiNkZWZpbmUgTV8xX1BJZjY0IF9fZjY0ICgw LjMxODMwOTg4NjE4Mzc5MDY3MTUzNzc2NzUyNjc0NTAyODcyNCkKI2RlZmluZSBNXzJfUElm NjQgX19mNjQgKDAuNjM2NjE5NzcyMzY3NTgxMzQzMDc1NTM1MDUzNDkwMDU3NDQ4KQojZGVm aW5lIE1fMl9TUVJUUElmNjQgX19mNjQgKDEuMTI4Mzc5MTY3MDk1NTEyNTczODk2MTU4OTAz MTIxNTQ1MTcyKQojZGVmaW5lIE1fU1FSVDJmNjQgX19mNjQgKDEuNDE0MjEzNTYyMzczMDk1 MDQ4ODAxNjg4NzI0MjA5Njk4MDc5KQojZGVmaW5lIE1fU1FSVDFfMmY2NCBfX2Y2NCAoMC43 MDcxMDY3ODExODY1NDc1MjQ0MDA4NDQzNjIxMDQ4NDkwMzkpCgoKCiNkZWZpbmUgTV9FZjEy OCBfX2YxMjggKDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3NDcxMzUyNjYyNDk4KQojZGVm aW5lIE1fTE9HMkVmMTI4IF9fZjEyOCAoMS40NDI2OTUwNDA4ODg5NjM0MDczNTk5MjQ2ODEw MDE4OTIxMzcpCiNkZWZpbmUgTV9MT0cxMEVmMTI4IF9fZjEyOCAoMC40MzQyOTQ0ODE5MDMy NTE4Mjc2NTExMjg5MTg5MTY2MDUwODIpCiNkZWZpbmUgTV9MTjJmMTI4IF9fZjEyOCAoMC42 OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjgpCiNkZWZpbmUgTV9MTjEwZjEy OCBfX2YxMjggKDIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA4KQojZGVm aW5lIE1fUElmMTI4IF9fZjEyOCAoMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1 MDI4ODQpCiNkZWZpbmUgTV9QSV8yZjEyOCBfX2YxMjggKDEuNTcwNzk2MzI2Nzk0ODk2NjE5 MjMxMzIxNjkxNjM5NzUxNDQyKQojZGVmaW5lIE1fUElfNGYxMjggX19mMTI4ICgwLjc4NTM5 ODE2MzM5NzQ0ODMwOTYxNTY2MDg0NTgxOTg3NTcyMSkKI2RlZmluZSBNXzFfUElmMTI4IF9f ZjEyOCAoMC4zMTgzMDk4ODYxODM3OTA2NzE1Mzc3Njc1MjY3NDUwMjg3MjQpCiNkZWZpbmUg TV8yX1BJZjEyOCBfX2YxMjggKDAuNjM2NjE5NzcyMzY3NTgxMzQzMDc1NTM1MDUzNDkwMDU3 NDQ4KQojZGVmaW5lIE1fMl9TUVJUUElmMTI4IF9fZjEyOCAoMS4xMjgzNzkxNjcwOTU1MTI1 NzM4OTYxNTg5MDMxMjE1NDUxNzIpCiNkZWZpbmUgTV9TUVJUMmYxMjggX19mMTI4ICgxLjQx NDIxMzU2MjM3MzA5NTA0ODgwMTY4ODcyNDIwOTY5ODA3OSkKI2RlZmluZSBNX1NRUlQxXzJm MTI4IF9fZjEyOCAoMC43MDcxMDY3ODExODY1NDc1MjQ0MDA4NDQzNjIxMDQ4NDkwMzkpCgoK CiNkZWZpbmUgTV9FZjMyeCBfX2YzMnggKDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3NDcx MzUyNjYyNDk4KQojZGVmaW5lIE1fTE9HMkVmMzJ4IF9fZjMyeCAoMS40NDI2OTUwNDA4ODg5 NjM0MDczNTk5MjQ2ODEwMDE4OTIxMzcpCiNkZWZpbmUgTV9MT0cxMEVmMzJ4IF9fZjMyeCAo MC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUwODIpCiNkZWZpbmUgTV9MTjJm MzJ4IF9fZjMyeCAoMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIxMjE0NTgxNzY1NjgpCiNk ZWZpbmUgTV9MTjEwZjMyeCBfX2YzMnggKDIuMzAyNTg1MDkyOTk0MDQ1Njg0MDE3OTkxNDU0 Njg0MzY0MjA4KQojZGVmaW5lIE1fUElmMzJ4IF9fZjMyeCAoMy4xNDE1OTI2NTM1ODk3OTMy Mzg0NjI2NDMzODMyNzk1MDI4ODQpCiNkZWZpbmUgTV9QSV8yZjMyeCBfX2YzMnggKDEuNTcw Nzk2MzI2Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUxNDQyKQojZGVmaW5lIE1fUElfNGYzMngg X19mMzJ4ICgwLjc4NTM5ODE2MzM5NzQ0ODMwOTYxNTY2MDg0NTgxOTg3NTcyMSkKI2RlZmlu ZSBNXzFfUElmMzJ4IF9fZjMyeCAoMC4zMTgzMDk4ODYxODM3OTA2NzE1Mzc3Njc1MjY3NDUw Mjg3MjQpCiNkZWZpbmUgTV8yX1BJZjMyeCBfX2YzMnggKDAuNjM2NjE5NzcyMzY3NTgxMzQz MDc1NTM1MDUzNDkwMDU3NDQ4KQojZGVmaW5lIE1fMl9TUVJUUElmMzJ4IF9fZjMyeCAoMS4x MjgzNzkxNjcwOTU1MTI1NzM4OTYxNTg5MDMxMjE1NDUxNzIpCiNkZWZpbmUgTV9TUVJUMmYz MnggX19mMzJ4ICgxLjQxNDIxMzU2MjM3MzA5NTA0ODgwMTY4ODcyNDIwOTY5ODA3OSkKI2Rl ZmluZSBNX1NRUlQxXzJmMzJ4IF9fZjMyeCAoMC43MDcxMDY3ODExODY1NDc1MjQ0MDA4NDQz NjIxMDQ4NDkwMzkpCgoKCiNkZWZpbmUgTV9FZjY0eCBfX2Y2NHggKDIuNzE4MjgxODI4NDU5 MDQ1MjM1MzYwMjg3NDcxMzUyNjYyNDk4KQojZGVmaW5lIE1fTE9HMkVmNjR4IF9fZjY0eCAo MS40NDI2OTUwNDA4ODg5NjM0MDczNTk5MjQ2ODEwMDE4OTIxMzcpCiNkZWZpbmUgTV9MT0cx MEVmNjR4IF9fZjY0eCAoMC40MzQyOTQ0ODE5MDMyNTE4Mjc2NTExMjg5MTg5MTY2MDUwODIp CiNkZWZpbmUgTV9MTjJmNjR4IF9fZjY0eCAoMC42OTMxNDcxODA1NTk5NDUzMDk0MTcyMzIx MjE0NTgxNzY1NjgpCiNkZWZpbmUgTV9MTjEwZjY0eCBfX2Y2NHggKDIuMzAyNTg1MDkyOTk0 MDQ1Njg0MDE3OTkxNDU0Njg0MzY0MjA4KQojZGVmaW5lIE1fUElmNjR4IF9fZjY0eCAoMy4x NDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMzODMyNzk1MDI4ODQpCiNkZWZpbmUgTV9QSV8yZjY0 eCBfX2Y2NHggKDEuNTcwNzk2MzI2Nzk0ODk2NjE5MjMxMzIxNjkxNjM5NzUxNDQyKQojZGVm aW5lIE1fUElfNGY2NHggX19mNjR4ICgwLjc4NTM5ODE2MzM5NzQ0ODMwOTYxNTY2MDg0NTgx OTg3NTcyMSkKI2RlZmluZSBNXzFfUElmNjR4IF9fZjY0eCAoMC4zMTgzMDk4ODYxODM3OTA2 NzE1Mzc3Njc1MjY3NDUwMjg3MjQpCiNkZWZpbmUgTV8yX1BJZjY0eCBfX2Y2NHggKDAuNjM2 NjE5NzcyMzY3NTgxMzQzMDc1NTM1MDUzNDkwMDU3NDQ4KQojZGVmaW5lIE1fMl9TUVJUUElm NjR4IF9fZjY0eCAoMS4xMjgzNzkxNjcwOTU1MTI1NzM4OTYxNTg5MDMxMjE1NDUxNzIpCiNk ZWZpbmUgTV9TUVJUMmY2NHggX19mNjR4ICgxLjQxNDIxMzU2MjM3MzA5NTA0ODgwMTY4ODcy NDIwOTY5ODA3OSkKI2RlZmluZSBNX1NRUlQxXzJmNjR4IF9fZjY0eCAoMC43MDcxMDY3ODEx ODY1NDc1MjQ0MDA4NDQzNjIxMDQ4NDkwMzkpCiMgMTMwNSAiL3Vzci9pbmNsdWRlL21hdGgu aCIgMyA0CiNkZWZpbmUgaXNncmVhdGVyKHgseSkgX19idWlsdGluX2lzZ3JlYXRlcih4LCB5 KQojZGVmaW5lIGlzZ3JlYXRlcmVxdWFsKHgseSkgX19idWlsdGluX2lzZ3JlYXRlcmVxdWFs KHgsIHkpCiNkZWZpbmUgaXNsZXNzKHgseSkgX19idWlsdGluX2lzbGVzcyh4LCB5KQojZGVm aW5lIGlzbGVzc2VxdWFsKHgseSkgX19idWlsdGluX2lzbGVzc2VxdWFsKHgsIHkpCiNkZWZp bmUgaXNsZXNzZ3JlYXRlcih4LHkpIF9fYnVpbHRpbl9pc2xlc3NncmVhdGVyKHgsIHkpCiNk ZWZpbmUgaXN1bm9yZGVyZWQoeCx5KSBfX2J1aWx0aW5faXN1bm9yZGVyZWQoeCwgeSkKIyAx MzQyICIvdXNyL2luY2x1ZGUvbWF0aC5oIiAzIDQKI2RlZmluZSBfX01BVEhfRVZBTF9GTVQy KHgseSkgKCh4KSArICh5KSArIDAuMGYpCiMgMTM2MyAiL3Vzci9pbmNsdWRlL21hdGguaCIg MyA0CmV4dGVybiAiQysrIiB7CnRlbXBsYXRlPHR5cGVuYW1lPiBzdHJ1Y3QgX19pc2Vxc2ln X3R5cGU7Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX2lzZXFzaWdfdHlwZTxmbG9hdD4KewogIHN0 YXRpYyBpbnQgX19jYWxsIChmbG9hdCBfX3gsIGZsb2F0IF9feSkgdGhyb3cgKCkKICB7CiAg ICByZXR1cm4gX19pc2Vxc2lnZiAoX194LCBfX3kpOwogIH0KfTsKCnRlbXBsYXRlPD4gc3Ry dWN0IF9faXNlcXNpZ190eXBlPGRvdWJsZT4KewogIHN0YXRpYyBpbnQgX19jYWxsIChkb3Vi bGUgX194LCBkb3VibGUgX195KSB0aHJvdyAoKQogIHsKICAgIHJldHVybiBfX2lzZXFzaWcg KF9feCwgX195KTsKICB9Cn07Cgp0ZW1wbGF0ZTw+IHN0cnVjdCBfX2lzZXFzaWdfdHlwZTxs b25nIGRvdWJsZT4KewogIHN0YXRpYyBpbnQgX19jYWxsIChsb25nIGRvdWJsZSBfX3gsIGxv bmcgZG91YmxlIF9feSkgdGhyb3cgKCkKICB7CgogICAgcmV0dXJuIF9faXNlcXNpZ2wgKF9f eCwgX195KTsKCgoKICB9Cn07CiMgMTQwNiAiL3Vzci9pbmNsdWRlL21hdGguaCIgMyA0CnRl bXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgppbmxpbmUgaW50CmlzZXFzaWcg KF9UMSBfX3gsIF9UMiBfX3kpIHRocm93ICgpCnsKCgoKICB0eXBlZGVmIF9fdHlwZW9mICgo KF9feCkgKyAoX195KSArIDAuMGYpKSBfVDM7CgogIHJldHVybiBfX2lzZXFzaWdfdHlwZTxf VDM+OjpfX2NhbGwgKF9feCwgX195KTsKfQoKfQoKCgoKfQojIDQ4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2NtYXRoIiAyIDMKI3VuZGVmIF9HTElCQ1hYX0lOQ0xVREVfTkVYVF9D X0hFQURFUlMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RkX2Ficy5o IiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0ZF9hYnMuaCIg MwojZGVmaW5lIF9HTElCQ1hYX0JJVFNfU1REX0FCU19IIAoKICAgICAgIAojIDM0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RkX2Ficy5oIiAzCgoKCiNkZWZpbmUgX0dM SUJDWFhfSU5DTFVERV9ORVhUX0NfSEVBREVSUyAKIyAxICIvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDEgMyA0CiMgMjUgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CiNkZWZpbmUgX19H TElCQ19JTlRFUk5BTF9TVEFSVElOR19IRUFERVJfSU1QTEVNRU5UQVRJT04gCiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMSAzIDQKIyAzMSAiL3Vzci9p bmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX0lO VEVSTkFMX1NUQVJUSU5HX0hFQURFUl9JTVBMRU1FTlRBVElPTgoKCgoKCiN1bmRlZiBfX0dM SUJDX1VTRV9MSUJfRVhUMgoKCiNkZWZpbmUgX19HTElCQ19VU0VfTElCX0VYVDIgMQojIDY3 ICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3VuZGVmIF9f R0xJQkNfVVNFX0lFQ182MDU1OV9CRlBfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182 MDU1OV9CRlBfRVhUIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBfRVhU X0MyWAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVF9DMlggMQoKCgoj dW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9J RUNfNjA1NTlfRVhUIDEKIyA5MCAiL3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3Rh cnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUCgojZGVm aW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFQgMQoKCgojdW5kZWYgX19HTElC Q19VU0VfSUVDXzYwNTU5X0ZVTkNTX0VYVF9DMlgKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVD XzYwNTU5X0ZVTkNTX0VYVF9DMlggMQoKCgoKCgojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYw NTU5X1RZUEVTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfVFlQRVNfRVhU IDEKIyAyNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAyIDMgNAoKCiNkZWZpbmUgX19uZWVk X3NpemVfdCAKI2RlZmluZSBfX25lZWRfd2NoYXJfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1 ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMTg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1s aW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVmaW5lIF9fc2l6ZV90 X18gCiNkZWZpbmUgX19TSVpFX1RfXyAKI2RlZmluZSBfU0laRV9UIAojZGVmaW5lIF9TWVNf U0laRV9UX0ggCiNkZWZpbmUgX1RfU0laRV8gCiNkZWZpbmUgX1RfU0laRSAKI2RlZmluZSBf X1NJWkVfVCAKI2RlZmluZSBfU0laRV9UXyAKI2RlZmluZSBfQlNEX1NJWkVfVF8gCiNkZWZp bmUgX1NJWkVfVF9ERUZJTkVEXyAKI2RlZmluZSBfU0laRV9UX0RFRklORUQgCiNkZWZpbmUg X0JTRF9TSVpFX1RfREVGSU5FRF8gCiNkZWZpbmUgX1NJWkVfVF9ERUNMQVJFRCAKI2RlZmlu ZSBfX0RFRklORURfc2l6ZV90IAojZGVmaW5lIF9fX2ludF9zaXplX3RfaCAKI2RlZmluZSBf R0NDX1NJWkVfVCAKI2RlZmluZSBfU0laRVRfIAoKCgoKCgojZGVmaW5lIF9fc2l6ZV90IAoK CgoKCnR5cGVkZWYgbG9uZyB1bnNpZ25lZCBpbnQgc2l6ZV90OwojIDIzNyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xp Yi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAz IDQKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAyNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJj aDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiNkZWZpbmUgX193 Y2hhcl90X18gCiNkZWZpbmUgX19XQ0hBUl9UX18gCiNkZWZpbmUgX1dDSEFSX1QgCiNkZWZp bmUgX1RfV0NIQVJfIAojZGVmaW5lIF9UX1dDSEFSIAojZGVmaW5lIF9fV0NIQVJfVCAKI2Rl ZmluZSBfV0NIQVJfVF8gCiNkZWZpbmUgX0JTRF9XQ0hBUl9UXyAKI2RlZmluZSBfV0NIQVJf VF9ERUZJTkVEXyAKI2RlZmluZSBfV0NIQVJfVF9ERUZJTkVEIAojZGVmaW5lIF9XQ0hBUl9U X0ggCiNkZWZpbmUgX19faW50X3djaGFyX3RfaCAKI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gg CiNkZWZpbmUgX0dDQ19XQ0hBUl9UIAojZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVEIAojZGVm aW5lIF9fREVGSU5FRF93Y2hhcl90IAojIDI5NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9CU0Rf V0NIQVJfVF8KIyAzNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8x NC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfd2NoYXJfdAojIDM5 OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRl L3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwKCiNkZWZpbmUgTlVMTCBfX251bGwKIyA0MTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS9z dGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAojIDMzICIvdXNyL2luY2x1ZGUvc3Rk bGliLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCiNkZWZpbmUgX1NURExJQl9IIDEKCgoKIyAx ICIvdXNyL2luY2x1ZGUvYml0cy93YWl0ZmxhZ3MuaCIgMSAzIDQKIyAyNSAiL3Vzci9pbmNs dWRlL2JpdHMvd2FpdGZsYWdzLmgiIDMgNAojZGVmaW5lIFdOT0hBTkcgMQojZGVmaW5lIFdV TlRSQUNFRCAyCgoKCiNkZWZpbmUgV1NUT1BQRUQgMgojZGVmaW5lIFdFWElURUQgNAojZGVm aW5lIFdDT05USU5VRUQgOAojZGVmaW5lIFdOT1dBSVQgMHgwMTAwMDAwMAoKCiNkZWZpbmUg X19XTk9USFJFQUQgMHgyMDAwMDAwMAoKI2RlZmluZSBfX1dBTEwgMHg0MDAwMDAwMAojZGVm aW5lIF9fV0NMT05FIDB4ODAwMDAwMDAKIyA0MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAy IDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dhaXRzdGF0dXMuaCIgMSAzIDQKIyAyOCAi L3Vzci9pbmNsdWRlL2JpdHMvd2FpdHN0YXR1cy5oIiAzIDQKI2RlZmluZSBfX1dFWElUU1RB VFVTKHN0YXR1cykgKCgoc3RhdHVzKSAmIDB4ZmYwMCkgPj4gOCkKCgojZGVmaW5lIF9fV1RF Uk1TSUcoc3RhdHVzKSAoKHN0YXR1cykgJiAweDdmKQoKCiNkZWZpbmUgX19XU1RPUFNJRyhz dGF0dXMpIF9fV0VYSVRTVEFUVVMoc3RhdHVzKQoKCiNkZWZpbmUgX19XSUZFWElURUQoc3Rh dHVzKSAoX19XVEVSTVNJRyhzdGF0dXMpID09IDApCgoKI2RlZmluZSBfX1dJRlNJR05BTEVE KHN0YXR1cykgKCgoc2lnbmVkIGNoYXIpICgoKHN0YXR1cykgJiAweDdmKSArIDEpID4+IDEp ID4gMCkKCgoKI2RlZmluZSBfX1dJRlNUT1BQRUQoc3RhdHVzKSAoKChzdGF0dXMpICYgMHhm ZikgPT0gMHg3ZikKCgoKCiNkZWZpbmUgX19XSUZDT05USU5VRUQoc3RhdHVzKSAoKHN0YXR1 cykgPT0gX19XX0NPTlRJTlVFRCkKCgoKI2RlZmluZSBfX1dDT1JFRFVNUChzdGF0dXMpICgo c3RhdHVzKSAmIF9fV0NPUkVGTEFHKQoKCiNkZWZpbmUgX19XX0VYSVRDT0RFKHJldCxzaWcp ICgocmV0KSA8PCA4IHwgKHNpZykpCiNkZWZpbmUgX19XX1NUT1BDT0RFKHNpZykgKChzaWcp IDw8IDggfCAweDdmKQojZGVmaW5lIF9fV19DT05USU5VRUQgMHhmZmZmCiNkZWZpbmUgX19X Q09SRUZMQUcgMHg4MAojIDQyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgoKI2Rl ZmluZSBXRVhJVFNUQVRVUyhzdGF0dXMpIF9fV0VYSVRTVEFUVVMgKHN0YXR1cykKI2RlZmlu ZSBXVEVSTVNJRyhzdGF0dXMpIF9fV1RFUk1TSUcgKHN0YXR1cykKI2RlZmluZSBXU1RPUFNJ RyhzdGF0dXMpIF9fV1NUT1BTSUcgKHN0YXR1cykKI2RlZmluZSBXSUZFWElURUQoc3RhdHVz KSBfX1dJRkVYSVRFRCAoc3RhdHVzKQojZGVmaW5lIFdJRlNJR05BTEVEKHN0YXR1cykgX19X SUZTSUdOQUxFRCAoc3RhdHVzKQojZGVmaW5lIFdJRlNUT1BQRUQoc3RhdHVzKSBfX1dJRlNU T1BQRUQgKHN0YXR1cykKCiNkZWZpbmUgV0lGQ09OVElOVUVEKHN0YXR1cykgX19XSUZDT05U SU5VRUQgKHN0YXR1cykKCgoKCgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgaW50IHF1b3Q7 CiAgICBpbnQgcmVtOwogIH0gZGl2X3Q7CgoKCnR5cGVkZWYgc3RydWN0CiAgewogICAgbG9u ZyBpbnQgcXVvdDsKICAgIGxvbmcgaW50IHJlbTsKICB9IGxkaXZfdDsKI2RlZmluZSBfX2xk aXZfdF9kZWZpbmVkIDEKCgoKCl9fZXh0ZW5zaW9uX18gdHlwZWRlZiBzdHJ1Y3QKICB7CiAg ICBsb25nIGxvbmcgaW50IHF1b3Q7CiAgICBsb25nIGxvbmcgaW50IHJlbTsKICB9IGxsZGl2 X3Q7CiNkZWZpbmUgX19sbGRpdl90X2RlZmluZWQgMQoKCgoKI2RlZmluZSBSQU5EX01BWCAy MTQ3NDgzNjQ3CgoKCgojZGVmaW5lIEVYSVRfRkFJTFVSRSAxCiNkZWZpbmUgRVhJVF9TVUND RVNTIDAKCgoKI2RlZmluZSBNQl9DVVJfTUFYIChfX2N0eXBlX2dldF9tYl9jdXJfbWF4ICgp KQpleHRlcm4gc2l6ZV90IF9fY3R5cGVfZ2V0X21iX2N1cl9tYXggKHZvaWQpIHRocm93ICgp IDsKCgoKZXh0ZXJuIGRvdWJsZSBhdG9mIChjb25zdCBjaGFyICpfX25wdHIpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpIDsKCmV4dGVybiBpbnQgYXRvaSAoY29uc3QgY2hhciAqX19ucHRyKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSkpKSA7CgpleHRlcm4gbG9uZyBpbnQgYXRvbCAoY29uc3QgY2hh ciAqX19ucHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CgoKCl9fZXh0ZW5zaW9uX18gZXh0 ZXJuIGxvbmcgbG9uZyBpbnQgYXRvbGwgKGNvbnN0IGNoYXIgKl9fbnB0cikKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEpKSkgOwoKCgpleHRlcm4gZG91YmxlIHN0cnRvZCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX25wdHIsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIpCiAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRl cm4gZmxvYXQgc3RydG9mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg IGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CgpleHRlcm4gbG9uZyBkb3VibGUgc3RydG9sZCAoY29uc3Qg Y2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2Vu ZHB0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CiMgMTQxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gX0Zsb2F0MzIgc3Ry dG9mMzIgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIF9GbG9hdDY0IHN0cnRvZjY0IChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0cikKICAg ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVy biBfRmxvYXQxMjggc3RydG9mMTI4IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK ICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIF9GbG9hdDMyeCBzdHJ0 b2YzMnggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgY2hhciAqKl9f cmVzdHJpY3QgX19lbmRwdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwoKCgpleHRlcm4gX0Zsb2F0NjR4IHN0cnRvZjY0eCAoY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0 cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMg MTc3ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gbG9uZyBpbnQgc3RydG9s IChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgY2hhciAqKl9fcmVzdHJpY3Qg X19lbmRwdHIsIGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxKSkpOwoKZXh0ZXJuIHVuc2lnbmVkIGxvbmcgaW50IHN0cnRvdWwgKGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICBjaGFyICoqX19yZXN0cmljdCBf X2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQg c3RydG9xIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICBjaGFyICoq X19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVybiB1bnNp Z25lZCBsb25nIGxvbmcgaW50IHN0cnRvdXEgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNl KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoK Cl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9uZyBpbnQgc3RydG9sbCAoY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5k cHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQgc3RydG91bGwgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgIGNoYXIg KipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVybiBpbnQgc3RyZnJvbWQg KGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqX19mb3JtYXQsCiAg ICAgICBkb3VibGUgX19mKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMykpKTsKCmV4dGVybiBpbnQgc3RyZnJvbWYgKGNoYXIgKl9fZGVzdCwgc2l6ZV90 IF9fc2l6ZSwgY29uc3QgY2hhciAqX19mb3JtYXQsCiAgICAgICBmbG9hdCBfX2YpCiAgICAg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKZXh0ZXJuIGlu dCBzdHJmcm9tbCAoY2hhciAqX19kZXN0LCBzaXplX3QgX19zaXplLCBjb25zdCBjaGFyICpf X2Zvcm1hdCwKICAgICAgIGxvbmcgZG91YmxlIF9fZikKICAgICB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19ub25udWxsX18gKDMpKSk7CiMgMjMzICIvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDMgNApleHRlcm4gaW50IHN0cmZyb21mMzIgKGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9f c2l6ZSwgY29uc3QgY2hhciAqIF9fZm9ybWF0LAogICAgICAgICBfRmxvYXQzMiBfX2YpCiAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCgpleHRl cm4gaW50IHN0cmZyb21mNjQgKGNoYXIgKl9fZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3Qg Y2hhciAqIF9fZm9ybWF0LAogICAgICAgICBfRmxvYXQ2NCBfX2YpCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoKCgpleHRlcm4gaW50IHN0cmZy b21mMTI4IChjaGFyICpfX2Rlc3QsIHNpemVfdCBfX3NpemUsIGNvbnN0IGNoYXIgKiBfX2Zv cm1hdCwKICAgX0Zsb2F0MTI4IF9fZikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDMpKSk7CgoKCmV4dGVybiBpbnQgc3RyZnJvbWYzMnggKGNoYXIgKl9f ZGVzdCwgc2l6ZV90IF9fc2l6ZSwgY29uc3QgY2hhciAqIF9fZm9ybWF0LAogICBfRmxvYXQz MnggX19mKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykp KTsKCgoKZXh0ZXJuIGludCBzdHJmcm9tZjY0eCAoY2hhciAqX19kZXN0LCBzaXplX3QgX19z aXplLCBjb25zdCBjaGFyICogX19mb3JtYXQsCiAgIF9GbG9hdDY0eCBfX2YpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwojIDI3MyAiL3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9sb2Nh bGVfdC5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9sb2NhbGVfdC5o IiAzIDQKI2RlZmluZSBfQklUU19UWVBFU19MT0NBTEVfVF9IIDEKCiMgMSAiL3Vzci9pbmNs dWRlL2JpdHMvdHlwZXMvX19sb2NhbGVfdC5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy9fX2xvY2FsZV90LmgiIDMgNAojZGVmaW5lIF9CSVRTX1RZUEVTX19fTE9D QUxFX1RfSCAxCgoKCgoKCnN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QKewoKICBzdHJ1Y3QgX19s b2NhbGVfZGF0YSAqX19sb2NhbGVzWzEzXTsKCgogIGNvbnN0IHVuc2lnbmVkIHNob3J0IGlu dCAqX19jdHlwZV9iOwogIGNvbnN0IGludCAqX19jdHlwZV90b2xvd2VyOwogIGNvbnN0IGlu dCAqX19jdHlwZV90b3VwcGVyOwoKCiAgY29uc3QgY2hhciAqX19uYW1lc1sxM107Cn07Cgp0 eXBlZGVmIHN0cnVjdCBfX2xvY2FsZV9zdHJ1Y3QgKl9fbG9jYWxlX3Q7CiMgMjMgIi91c3Iv aW5jbHVkZS9iaXRzL3R5cGVzL2xvY2FsZV90LmgiIDIgMyA0Cgp0eXBlZGVmIF9fbG9jYWxl X3QgbG9jYWxlX3Q7CiMgMjc0ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDIgMyA0CgpleHRl cm4gbG9uZyBpbnQgc3RydG9sX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAog ICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlLAogICAgIGxvY2Fs ZV90IF9fbG9jKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQp KSk7CgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgc3RydG91bF9sIChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwK ICAgICAgICBpbnQgX19iYXNlLCBsb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpfX2V4dGVuc2lvbl9fCmV4dGVy biBsb25nIGxvbmcgaW50IHN0cnRvbGxfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25w dHIsCiAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSwKICAgIGxv Y2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSwgNCkpKTsKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBp bnQgc3RydG91bGxfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICBj aGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgIGludCBfX2Jhc2UsIGxvY2FsZV90 IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg NCkpKTsKCmV4dGVybiBkb3VibGUgc3RydG9kX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19ucHRyLAogICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwgbG9jYWxlX3QgX19sb2Mp CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoK ZXh0ZXJuIGZsb2F0IHN0cnRvZl9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbnB0ciwK ICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGxvY2FsZV90IF9fbG9jKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMykpKTsKCmV4 dGVybiBsb25nIGRvdWJsZSBzdHJ0b2xkX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgbG9j YWxlX3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAzKSkpOwojIDMxNyAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIF9G bG9hdDMyIHN0cnRvZjMyX2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg ICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICBsb2NhbGVfdCBfX2xvYykK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoK CmV4dGVybiBfRmxvYXQ2NCBzdHJ0b2Y2NF9sIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f bnB0ciwKICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgICAgbG9jYWxl X3QgX19sb2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx LCAzKSkpOwoKCgpleHRlcm4gX0Zsb2F0MTI4IHN0cnRvZjEyOF9sIChjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX19lbmRwdHIs CiAgICAgICAgIGxvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMykpKTsKCgoKZXh0ZXJuIF9GbG9hdDMyeCBzdHJ0b2YzMnhf bCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIGNoYXIgKipfX3Jl c3RyaWN0IF9fZW5kcHRyLAogICAgICAgICBsb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDMpKSk7CgoKCmV4dGVybiBfRmxv YXQ2NHggc3RydG9mNjR4X2wgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19ucHRyLAogICAg ICAgICBjaGFyICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19s b2MpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkp OwojIDM2MSAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApfX2F0dHJpYnV0ZV9fICgoX19s ZWFmX18pKSBhdG9pIChjb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4g KGludCkgc3RydG9sIChfX25wdHIsIChjaGFyICoqKSBfX251bGwsIDEwKTsKfQpleHRlcm4g X19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgbG9uZyBpbnQKX19h dHRyaWJ1dGVfXyAoKF9fbGVhZl9fKSkgYXRvbCAoY29uc3QgY2hhciAqX19ucHRyKSB0aHJv dyAoKQp7CiAgcmV0dXJuIHN0cnRvbCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsLCAxMCk7 Cn0KCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19n bnVfaW5saW5lX18pKSBsb25nIGxvbmcgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykp IGF0b2xsIChjb25zdCBjaGFyICpfX25wdHIpIHRocm93ICgpCnsKICByZXR1cm4gc3RydG9s bCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsLCAxMCk7Cn0KIyAzODYgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBjaGFyICpsNjRhIChsb25nIGludCBfX24pIHRocm93 ICgpIDsKCgpleHRlcm4gbG9uZyBpbnQgYTY0bCAoY29uc3QgY2hhciAqX19zKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSA7CgoKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMSAz IDQKIyAyMyAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAzIDQKI2RlZmluZSBfU1lTX1RZ UEVTX0ggMQoKCgpleHRlcm4gIkMiIHsKCgoKCgp0eXBlZGVmIF9fdV9jaGFyIHVfY2hhcjsK dHlwZWRlZiBfX3Vfc2hvcnQgdV9zaG9ydDsKdHlwZWRlZiBfX3VfaW50IHVfaW50Owp0eXBl ZGVmIF9fdV9sb25nIHVfbG9uZzsKdHlwZWRlZiBfX3F1YWRfdCBxdWFkX3Q7CnR5cGVkZWYg X191X3F1YWRfdCB1X3F1YWRfdDsKdHlwZWRlZiBfX2ZzaWRfdCBmc2lkX3Q7CiNkZWZpbmUg X191X2NoYXJfZGVmaW5lZCAKCnR5cGVkZWYgX19sb2ZmX3QgbG9mZl90OwoKCgoKdHlwZWRl ZiBfX2lub190IGlub190OwoKCgojZGVmaW5lIF9faW5vX3RfZGVmaW5lZCAKCgp0eXBlZGVm IF9faW5vNjRfdCBpbm82NF90OwojZGVmaW5lIF9faW5vNjRfdF9kZWZpbmVkIAoKCgp0eXBl ZGVmIF9fZGV2X3QgZGV2X3Q7CiNkZWZpbmUgX19kZXZfdF9kZWZpbmVkIAoKCgp0eXBlZGVm IF9fZ2lkX3QgZ2lkX3Q7CiNkZWZpbmUgX19naWRfdF9kZWZpbmVkIAoKCgp0eXBlZGVmIF9f bW9kZV90IG1vZGVfdDsKI2RlZmluZSBfX21vZGVfdF9kZWZpbmVkIAoKCgp0eXBlZGVmIF9f bmxpbmtfdCBubGlua190OwojZGVmaW5lIF9fbmxpbmtfdF9kZWZpbmVkIAoKCgp0eXBlZGVm IF9fdWlkX3QgdWlkX3Q7CiNkZWZpbmUgX191aWRfdF9kZWZpbmVkIAoKCgoKdHlwZWRlZiBf X29mZl90IG9mZl90OwoKCgojZGVmaW5lIF9fb2ZmX3RfZGVmaW5lZCAKCgp0eXBlZGVmIF9f b2ZmNjRfdCBvZmY2NF90OwojZGVmaW5lIF9fb2ZmNjRfdF9kZWZpbmVkIAoKCgp0eXBlZGVm IF9fcGlkX3QgcGlkX3Q7CiNkZWZpbmUgX19waWRfdF9kZWZpbmVkIAoKCgoKdHlwZWRlZiBf X2lkX3QgaWRfdDsKI2RlZmluZSBfX2lkX3RfZGVmaW5lZCAKCgoKdHlwZWRlZiBfX3NzaXpl X3Qgc3NpemVfdDsKI2RlZmluZSBfX3NzaXplX3RfZGVmaW5lZCAKCgoKCnR5cGVkZWYgX19k YWRkcl90IGRhZGRyX3Q7CnR5cGVkZWYgX19jYWRkcl90IGNhZGRyX3Q7CiNkZWZpbmUgX19k YWRkcl90X2RlZmluZWQgCgoKCgp0eXBlZGVmIF9fa2V5X3Qga2V5X3Q7CiNkZWZpbmUgX19r ZXlfdF9kZWZpbmVkIAoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL2Nsb2NrX3Qu aCIgMSAzIDQKCiNkZWZpbmUgX19jbG9ja190X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBfX2Ns b2NrX3QgY2xvY2tfdDsKIyAxMjcgIi91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCIgMiAzIDQK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvY2xvY2tpZF90LmgiIDEgMyA0CgojZGVm aW5lIF9fY2xvY2tpZF90X2RlZmluZWQgMQoKCgoKdHlwZWRlZiBfX2Nsb2NraWRfdCBjbG9j a2lkX3Q7CiMgMTI5ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vz ci9pbmNsdWRlL2JpdHMvdHlwZXMvdGltZV90LmgiIDEgMyA0CgojZGVmaW5lIF9fdGltZV90 X2RlZmluZWQgMQoKCgoKCgoKdHlwZWRlZiBfX3RpbWVfdCB0aW1lX3Q7CiMgMTMwICIvdXNy L2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXMvdGltZXJfdC5oIiAxIDMgNAoKI2RlZmluZSBfX3RpbWVyX3RfZGVmaW5lZCAxCgoKCgp0 eXBlZGVmIF9fdGltZXJfdCB0aW1lcl90OwojIDEzMSAiL3Vzci9pbmNsdWRlL3N5cy90eXBl cy5oIiAyIDMgNAoKCgp0eXBlZGVmIF9fdXNlY29uZHNfdCB1c2Vjb25kc190OwojZGVmaW5l IF9fdXNlY29uZHNfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19zdXNlY29uZHNfdCBzdXNlY29u ZHNfdDsKI2RlZmluZSBfX3N1c2Vjb25kc190X2RlZmluZWQgCgoKCiNkZWZpbmUgX19uZWVk X3NpemVfdCAKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29u Z2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYg X19uZWVkX3NpemVfdAojIDQxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgt Z251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMg MTQ1ICIvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgiIDIgMyA0CgoKCnR5cGVkZWYgdW5zaWdu ZWQgbG9uZyBpbnQgdWxvbmc7CnR5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHVzaG9ydDsK dHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv c3RkaW50LWludG4uaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW50LWlu dG4uaCIgMyA0CiNkZWZpbmUgX0JJVFNfU1RESU5UX0lOVE5fSCAxCgoKCnR5cGVkZWYgX19p bnQ4X3QgaW50OF90Owp0eXBlZGVmIF9faW50MTZfdCBpbnQxNl90Owp0eXBlZGVmIF9faW50 MzJfdCBpbnQzMl90Owp0eXBlZGVmIF9faW50NjRfdCBpbnQ2NF90OwojIDE1NiAiL3Vzci9p bmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCnR5cGVkZWYgX191aW50OF90IHVfaW50OF90 Owp0eXBlZGVmIF9fdWludDE2X3QgdV9pbnQxNl90Owp0eXBlZGVmIF9fdWludDMyX3QgdV9p bnQzMl90Owp0eXBlZGVmIF9fdWludDY0X3QgdV9pbnQ2NF90OwoKCnR5cGVkZWYgaW50IHJl Z2lzdGVyX3QgX19hdHRyaWJ1dGVfXyAoKF9fbW9kZV9fIChfX3dvcmRfXykpKTsKCgoKCgoK I2RlZmluZSBfX0JJVF9UWVBFU19ERUZJTkVEX18gMQoKCgoKIyAxICIvdXNyL2luY2x1ZGUv ZW5kaWFuLmgiIDEgMyA0CiMgMTkgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMyA0CiNkZWZp bmUgX0VORElBTl9IIDEKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZW5kaWFuLmgiIDEg MyA0CiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAzIDQKI2RlZmluZSBfQklU U19FTkRJQU5fSCAxCiMgMzAgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlhbi5oIiAzIDQKI2Rl ZmluZSBfX0xJVFRMRV9FTkRJQU4gMTIzNAojZGVmaW5lIF9fQklHX0VORElBTiA0MzIxCiNk ZWZpbmUgX19QRFBfRU5ESUFOIDM0MTIKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2VuZGlh bm5lc3MuaCIgMSAzIDQKCiNkZWZpbmUgX0JJVFNfRU5ESUFOTkVTU19IIDEKCgoKCgoKI2Rl ZmluZSBfX0JZVEVfT1JERVIgX19MSVRUTEVfRU5ESUFOCiMgMzYgIi91c3IvaW5jbHVkZS9i aXRzL2VuZGlhbi5oIiAyIDMgNAoKCgoKI2RlZmluZSBfX0ZMT0FUX1dPUkRfT1JERVIgX19C WVRFX09SREVSCgoKCiNkZWZpbmUgX19MT05HX0xPTkdfUEFJUihISSxMTykgTE8sIEhJCiMg MjUgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzIDQKCgojZGVmaW5lIExJVFRMRV9FTkRJ QU4gX19MSVRUTEVfRU5ESUFOCiNkZWZpbmUgQklHX0VORElBTiBfX0JJR19FTkRJQU4KI2Rl ZmluZSBQRFBfRU5ESUFOIF9fUERQX0VORElBTgojZGVmaW5lIEJZVEVfT1JERVIgX19CWVRF X09SREVSCgoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDEgMyA0CiMg MjQgIi91c3IvaW5jbHVkZS9iaXRzL2J5dGVzd2FwLmgiIDMgNAojZGVmaW5lIF9CSVRTX0JZ VEVTV0FQX0ggMQoKCgoKCiNkZWZpbmUgX19ic3dhcF9jb25zdGFudF8xNih4KSAoKF9fdWlu dDE2X3QpICgoKCh4KSA+PiA4KSAmIDB4ZmYpIHwgKCgoeCkgJiAweGZmKSA8PCA4KSkpCgoK c3RhdGljIF9faW5saW5lIF9fdWludDE2X3QKX19ic3dhcF8xNiAoX191aW50MTZfdCBfX2Jz eCkKewoKICByZXR1cm4gX19idWlsdGluX2Jzd2FwMTYgKF9fYnN4KTsKCgoKfQoKCiNkZWZp bmUgX19ic3dhcF9jb25zdGFudF8zMih4KSAoKCgoeCkgJiAweGZmMDAwMDAwdSkgPj4gMjQp IHwgKCgoeCkgJiAweDAwZmYwMDAwdSkgPj4gOCkgfCAoKCh4KSAmIDB4MDAwMGZmMDB1KSA8 PCA4KSB8ICgoKHgpICYgMHgwMDAwMDBmZnUpIDw8IDI0KSkKCgoKc3RhdGljIF9faW5saW5l IF9fdWludDMyX3QKX19ic3dhcF8zMiAoX191aW50MzJfdCBfX2JzeCkKewoKICByZXR1cm4g X19idWlsdGluX2Jzd2FwMzIgKF9fYnN4KTsKCgoKfQoKCiNkZWZpbmUgX19ic3dhcF9jb25z dGFudF82NCh4KSAoKCgoeCkgJiAweGZmMDAwMDAwMDAwMDAwMDB1bGwpID4+IDU2KSB8ICgo KHgpICYgMHgwMGZmMDAwMDAwMDAwMDAwdWxsKSA+PiA0MCkgfCAoKCh4KSAmIDB4MDAwMGZm MDAwMDAwMDAwMHVsbCkgPj4gMjQpIHwgKCgoeCkgJiAweDAwMDAwMGZmMDAwMDAwMDB1bGwp ID4+IDgpIHwgKCgoeCkgJiAweDAwMDAwMDAwZmYwMDAwMDB1bGwpIDw8IDgpIHwgKCgoeCkg JiAweDAwMDAwMDAwMDBmZjAwMDB1bGwpIDw8IDI0KSB8ICgoKHgpICYgMHgwMDAwMDAwMDAw MDBmZjAwdWxsKSA8PCA0MCkgfCAoKCh4KSAmIDB4MDAwMDAwMDAwMDAwMDBmZnVsbCkgPDwg NTYpKQojIDY5ICIvdXNyL2luY2x1ZGUvYml0cy9ieXRlc3dhcC5oIiAzIDQKX19leHRlbnNp b25fXyBzdGF0aWMgX19pbmxpbmUgX191aW50NjRfdApfX2Jzd2FwXzY0IChfX3VpbnQ2NF90 IF9fYnN4KQp7CgogIHJldHVybiBfX2J1aWx0aW5fYnN3YXA2NCAoX19ic3gpOwoKCgp9CiMg MzYgIi91c3IvaW5jbHVkZS9lbmRpYW4uaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0 cy91aW50bi1pZGVudGl0eS5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0cy91aW50 bi1pZGVudGl0eS5oIiAzIDQKI2RlZmluZSBfQklUU19VSU5UTl9JREVOVElUWV9IIDEKCgoK CgoKCnN0YXRpYyBfX2lubGluZSBfX3VpbnQxNl90Cl9fdWludDE2X2lkZW50aXR5IChfX3Vp bnQxNl90IF9feCkKewogIHJldHVybiBfX3g7Cn0KCnN0YXRpYyBfX2lubGluZSBfX3VpbnQz Ml90Cl9fdWludDMyX2lkZW50aXR5IChfX3VpbnQzMl90IF9feCkKewogIHJldHVybiBfX3g7 Cn0KCnN0YXRpYyBfX2lubGluZSBfX3VpbnQ2NF90Cl9fdWludDY0X2lkZW50aXR5IChfX3Vp bnQ2NF90IF9feCkKewogIHJldHVybiBfX3g7Cn0KIyAzNyAiL3Vzci9pbmNsdWRlL2VuZGlh bi5oIiAyIDMgNAoKCiNkZWZpbmUgaHRvYmUxNih4KSBfX2Jzd2FwXzE2ICh4KQojZGVmaW5l IGh0b2xlMTYoeCkgX191aW50MTZfaWRlbnRpdHkgKHgpCiNkZWZpbmUgYmUxNnRvaCh4KSBf X2Jzd2FwXzE2ICh4KQojZGVmaW5lIGxlMTZ0b2goeCkgX191aW50MTZfaWRlbnRpdHkgKHgp CgojZGVmaW5lIGh0b2JlMzIoeCkgX19ic3dhcF8zMiAoeCkKI2RlZmluZSBodG9sZTMyKHgp IF9fdWludDMyX2lkZW50aXR5ICh4KQojZGVmaW5lIGJlMzJ0b2goeCkgX19ic3dhcF8zMiAo eCkKI2RlZmluZSBsZTMydG9oKHgpIF9fdWludDMyX2lkZW50aXR5ICh4KQoKI2RlZmluZSBo dG9iZTY0KHgpIF9fYnN3YXBfNjQgKHgpCiNkZWZpbmUgaHRvbGU2NCh4KSBfX3VpbnQ2NF9p ZGVudGl0eSAoeCkKI2RlZmluZSBiZTY0dG9oKHgpIF9fYnN3YXBfNjQgKHgpCiNkZWZpbmUg bGU2NHRvaCh4KSBfX3VpbnQ2NF9pZGVudGl0eSAoeCkKIyAxNzcgIi91c3IvaW5jbHVkZS9z eXMvdHlwZXMuaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDEg MyA0CiMgMjIgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAojZGVmaW5lIF9TWVNf U0VMRUNUX0ggMQoKCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zZWxlY3QuaCIgMSAz IDQKIyAyNSAiL3Vzci9pbmNsdWRlL2JpdHMvc2VsZWN0LmgiIDMgNAojZGVmaW5lIF9fRkRf WkVSTyhzKSBkbyB7IHVuc2lnbmVkIGludCBfX2k7IGZkX3NldCAqX19hcnIgPSAocyk7IGZv ciAoX19pID0gMDsgX19pIDwgc2l6ZW9mIChmZF9zZXQpIC8gc2l6ZW9mIChfX2ZkX21hc2sp OyArK19faSkgX19GRFNfQklUUyAoX19hcnIpW19faV0gPSAwOyB9IHdoaWxlICgwKQoKCgoK CgojZGVmaW5lIF9fRkRfU0VUKGQscykgKCh2b2lkKSAoX19GRFNfQklUUyAocylbX19GRF9F TFQoZCldIHw9IF9fRkRfTUFTSyhkKSkpCgojZGVmaW5lIF9fRkRfQ0xSKGQscykgKCh2b2lk KSAoX19GRFNfQklUUyAocylbX19GRF9FTFQoZCldICY9IH5fX0ZEX01BU0soZCkpKQoKI2Rl ZmluZSBfX0ZEX0lTU0VUKGQscykgKChfX0ZEU19CSVRTIChzKVtfX0ZEX0VMVCAoZCldICYg X19GRF9NQVNLIChkKSkgIT0gMCkKIyAzMSAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIg MiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3NpZ3NldF90LmgiIDEgMyA0 CgojZGVmaW5lIF9fc2lnc2V0X3RfZGVmaW5lZCAxCgojIDEgIi91c3IvaW5jbHVkZS9iaXRz L3R5cGVzL19fc2lnc2V0X3QuaCIgMSAzIDQKCiNkZWZpbmUgX19fX3NpZ3NldF90X2RlZmlu ZWQgCgojZGVmaW5lIF9TSUdTRVRfTldPUkRTICgxMDI0IC8gKDggKiBzaXplb2YgKHVuc2ln bmVkIGxvbmcgaW50KSkpCnR5cGVkZWYgc3RydWN0CnsKICB1bnNpZ25lZCBsb25nIGludCBf X3ZhbFsoMTAyNCAvICg4ICogc2l6ZW9mICh1bnNpZ25lZCBsb25nIGludCkpKV07Cn0gX19z aWdzZXRfdDsKIyA1ICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zaWdzZXRfdC5oIiAyIDMg NAoKCnR5cGVkZWYgX19zaWdzZXRfdCBzaWdzZXRfdDsKIyAzNCAiL3Vzci9pbmNsdWRlL3N5 cy9zZWxlY3QuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1 Y3RfdGltZXZhbC5oIiAxIDMgNAoKI2RlZmluZSBfX3RpbWV2YWxfZGVmaW5lZCAxCgoKCgoK c3RydWN0IHRpbWV2YWwKewoKCgoKICBfX3RpbWVfdCB0dl9zZWM7CiAgX19zdXNlY29uZHNf dCB0dl91c2VjOwoKfTsKIyAzOCAiL3Vzci9pbmNsdWRlL3N5cy9zZWxlY3QuaCIgMiAzIDQK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X3RpbWVzcGVjLmgiIDEgMyA0 CgoKI2RlZmluZSBfU1RSVUNUX1RJTUVTUEVDIDEKCgoKCgoKCnN0cnVjdCB0aW1lc3BlYwp7 CgoKCiAgX190aW1lX3QgdHZfc2VjOwoKCgoKICBfX3N5c2NhbGxfc2xvbmdfdCB0dl9uc2Vj OwojIDMxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3RfdGltZXNwZWMuaCIgMyA0 Cn07CiMgNDAgIi91c3IvaW5jbHVkZS9zeXMvc2VsZWN0LmgiIDIgMyA0CiMgNDkgIi91c3Iv aW5jbHVkZS9zeXMvc2VsZWN0LmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IF9fZmRfbWFzazsK CgojdW5kZWYgX19ORkRCSVRTCgojZGVmaW5lIF9fTkZEQklUUyAoOCAqIChpbnQpIHNpemVv ZiAoX19mZF9tYXNrKSkKI2RlZmluZSBfX0ZEX0VMVChkKSAoKGQpIC8gX19ORkRCSVRTKQoj ZGVmaW5lIF9fRkRfTUFTSyhkKSAoKF9fZmRfbWFzaykgKDFVTCA8PCAoKGQpICUgX19ORkRC SVRTKSkpCgoKdHlwZWRlZiBzdHJ1Y3QKICB7CgoKCiAgICBfX2ZkX21hc2sgZmRzX2JpdHNb MTAyNCAvICg4ICogKGludCkgc2l6ZW9mIChfX2ZkX21hc2spKV07CiNkZWZpbmUgX19GRFNf QklUUyhzZXQpICgoc2V0KS0+ZmRzX2JpdHMpCgoKCgogIH0gZmRfc2V0OwoKCiNkZWZpbmUg RkRfU0VUU0laRSBfX0ZEX1NFVFNJWkUKCgoKdHlwZWRlZiBfX2ZkX21hc2sgZmRfbWFzazsK CgojZGVmaW5lIE5GREJJVFMgX19ORkRCSVRTCgoKCgojZGVmaW5lIEZEX1NFVChmZCxmZHNl dHApIF9fRkRfU0VUIChmZCwgZmRzZXRwKQojZGVmaW5lIEZEX0NMUihmZCxmZHNldHApIF9f RkRfQ0xSIChmZCwgZmRzZXRwKQojZGVmaW5lIEZEX0lTU0VUKGZkLGZkc2V0cCkgX19GRF9J U1NFVCAoZmQsIGZkc2V0cCkKI2RlZmluZSBGRF9aRVJPKGZkc2V0cCkgX19GRF9aRVJPIChm ZHNldHApCgoKZXh0ZXJuICJDIiB7CiMgMTAyICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o IiAzIDQKZXh0ZXJuIGludCBzZWxlY3QgKGludCBfX25mZHMsIGZkX3NldCAqX19yZXN0cmlj dCBfX3JlYWRmZHMsCiAgICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fd3JpdGVmZHMsCiAgICAg ZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgIHN0cnVjdCB0aW1ldmFsICpf X3Jlc3RyaWN0IF9fdGltZW91dCk7CiMgMTI3ICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVjdC5o IiAzIDQKZXh0ZXJuIGludCBwc2VsZWN0IChpbnQgX19uZmRzLCBmZF9zZXQgKl9fcmVzdHJp Y3QgX19yZWFkZmRzLAogICAgICBmZF9zZXQgKl9fcmVzdHJpY3QgX193cml0ZWZkcywKICAg ICAgZmRfc2V0ICpfX3Jlc3RyaWN0IF9fZXhjZXB0ZmRzLAogICAgICBjb25zdCBzdHJ1Y3Qg dGltZXNwZWMgKl9fcmVzdHJpY3QgX190aW1lb3V0LAogICAgICBjb25zdCBfX3NpZ3NldF90 ICpfX3Jlc3RyaWN0IF9fc2lnbWFzayk7CiMgMTUzICIvdXNyL2luY2x1ZGUvc3lzL3NlbGVj dC5oIiAzIDQKfQojIDE4MCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMgNAoKCgoK CnR5cGVkZWYgX19ibGtzaXplX3QgYmxrc2l6ZV90OwojZGVmaW5lIF9fYmxrc2l6ZV90X2Rl ZmluZWQgCgoKCgoKdHlwZWRlZiBfX2Jsa2NudF90IGJsa2NudF90OwojZGVmaW5lIF9fYmxr Y250X3RfZGVmaW5lZCAKCgp0eXBlZGVmIF9fZnNibGtjbnRfdCBmc2Jsa2NudF90OwojZGVm aW5lIF9fZnNibGtjbnRfdF9kZWZpbmVkIAoKCnR5cGVkZWYgX19mc2ZpbGNudF90IGZzZmls Y250X3Q7CiNkZWZpbmUgX19mc2ZpbGNudF90X2RlZmluZWQgCiMgMjE5ICIvdXNyL2luY2x1 ZGUvc3lzL3R5cGVzLmgiIDMgNAp0eXBlZGVmIF9fYmxrY250NjRfdCBibGtjbnQ2NF90Owp0 eXBlZGVmIF9fZnNibGtjbnQ2NF90IGZzYmxrY250NjRfdDsKdHlwZWRlZiBfX2ZzZmlsY250 NjRfdCBmc2ZpbGNudDY0X3Q7CgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFk dHlwZXMuaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLmgi IDMgNAojZGVmaW5lIF9CSVRTX1BUSFJFQURUWVBFU19DT01NT05fSCAxCgoKIyAxICIvdXNy L2luY2x1ZGUvYml0cy90aHJlYWQtc2hhcmVkLXR5cGVzLmgiIDEgMyA0CiMgMjAgIi91c3Iv aW5jbHVkZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMyA0CiNkZWZpbmUgX1RIUkVB RF9TSEFSRURfVFlQRVNfSCAxCiMgNDQgIi91c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1zaGFy ZWQtdHlwZXMuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLWFy Y2guaCIgMSAzIDQKIyAyMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZHR5cGVzLWFyY2gu aCIgMyA0CiNkZWZpbmUgX0JJVFNfUFRIUkVBRFRZUEVTX0FSQ0hfSCAxCgojIDEgIi91c3Iv aW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDEgMyA0CiMgMTggIi91c3IvaW5jbHVkZS9iaXRz L3dvcmRzaXplLmgiIDMgNAojZGVmaW5lIF9fV09SRFNJWkUgNjQKI2RlZmluZSBfX1dPUkRT SVpFX1RJTUU2NF9DT01QQVQzMiAwCiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0 eXBlcy1hcmNoLmgiIDIgMyA0CgoKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0FUVFJfVCA1 NgojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfTVVURVhfVCA0MAojZGVmaW5lIF9fU0laRU9G X1BUSFJFQURfUldMT0NLX1QgNTYKI2RlZmluZSBfX1NJWkVPRl9QVEhSRUFEX0JBUlJJRVJf VCAzMgoKCgoKCgojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfTVVURVhBVFRSX1QgNAojZGVm aW5lIF9fU0laRU9GX1BUSFJFQURfUldMT0NLQVRUUl9UIDgKI2RlZmluZSBfX1NJWkVPRl9Q VEhSRUFEX0JBUlJJRVJBVFRSX1QgNAojZGVmaW5lIF9fU0laRU9GX1BUSFJFQURfQ09ORF9U IDQ4CiNkZWZpbmUgX19TSVpFT0ZfUFRIUkVBRF9DT05EQVRUUl9UIDQKCiNkZWZpbmUgX19M T0NLX0FMSUdOTUVOVCAKI2RlZmluZSBfX09OQ0VfQUxJR05NRU5UIAojIDQ1ICIvdXNyL2lu Y2x1ZGUvYml0cy90aHJlYWQtc2hhcmVkLXR5cGVzLmgiIDIgMyA0CgojIDEgIi91c3IvaW5j bHVkZS9iaXRzL2F0b21pY193aWRlX2NvdW50ZXIuaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNs dWRlL2JpdHMvYXRvbWljX3dpZGVfY291bnRlci5oIiAzIDQKI2RlZmluZSBfQklUU19BVE9N SUNfV0lERV9DT1VOVEVSX0ggCgoKCgp0eXBlZGVmIHVuaW9uCnsKICBfX2V4dGVuc2lvbl9f IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX192YWx1ZTY0OwogIHN0cnVjdAogIHsKICAgIHVu c2lnbmVkIGludCBfX2xvdzsKICAgIHVuc2lnbmVkIGludCBfX2hpZ2g7CiAgfSBfX3ZhbHVl MzI7Cn0gX19hdG9taWNfd2lkZV9jb3VudGVyOwojIDQ3ICIvdXNyL2luY2x1ZGUvYml0cy90 aHJlYWQtc2hhcmVkLXR5cGVzLmgiIDIgMyA0CgoKCgp0eXBlZGVmIHN0cnVjdCBfX3B0aHJl YWRfaW50ZXJuYWxfbGlzdAp7CiAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpf X3ByZXY7CiAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9saXN0ICpfX25leHQ7Cn0gX19w dGhyZWFkX2xpc3RfdDsKCnR5cGVkZWYgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlz dAp7CiAgc3RydWN0IF9fcHRocmVhZF9pbnRlcm5hbF9zbGlzdCAqX19uZXh0Owp9IF9fcHRo cmVhZF9zbGlzdF90OwojIDc2ICIvdXNyL2luY2x1ZGUvYml0cy90aHJlYWQtc2hhcmVkLXR5 cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9tdXRleC5oIiAxIDMg NAojIDIwICIvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3RfbXV0ZXguaCIgMyA0CiNkZWZpbmUg X1RIUkVBRF9NVVRFWF9JTlRFUk5BTF9IIDEKCgoKCgoKc3RydWN0IF9fcHRocmVhZF9tdXRl eF9zCnsKICBpbnQgX19sb2NrIDsKICB1bnNpZ25lZCBpbnQgX19jb3VudDsKICBpbnQgX19v d25lcjsKCiAgdW5zaWduZWQgaW50IF9fbnVzZXJzOwojIDU4ICIvdXNyL2luY2x1ZGUvYml0 cy9zdHJ1Y3RfbXV0ZXguaCIgMyA0CiAgaW50IF9fa2luZDsKCgoKCiAgaW50IF9fc3BpbnM7 CiAgX19wdGhyZWFkX2xpc3RfdCBfX2xpc3Q7CiNkZWZpbmUgX19QVEhSRUFEX01VVEVYX0hB VkVfUFJFViAxCiMgNzQgIi91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9tdXRleC5oIiAzIDQK fTsKCgojZGVmaW5lIF9fUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUihfX2tpbmQpIDAsIDAs IDAsIDAsIF9fa2luZCwgMCwgeyAwLCAwIH0KIyA3NyAiL3Vzci9pbmNsdWRlL2JpdHMvdGhy ZWFkLXNoYXJlZC10eXBlcy5oIiAyIDMgNAojIDg5ICIvdXNyL2luY2x1ZGUvYml0cy90aHJl YWQtc2hhcmVkLXR5cGVzLmgiIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0cnVjdF9y d2xvY2suaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvc3RydWN0X3J3bG9jay5o IiAzIDQKI2RlZmluZSBfX1JXTE9DS19JTlRFUk5BTF9IIAojIDI5ICIvdXNyL2luY2x1ZGUv Yml0cy9zdHJ1Y3Rfcndsb2NrLmgiIDMgNApzdHJ1Y3QgX19wdGhyZWFkX3J3bG9ja19hcmNo X3QKewogIHVuc2lnbmVkIGludCBfX3JlYWRlcnM7CiAgdW5zaWduZWQgaW50IF9fd3JpdGVy czsKICB1bnNpZ25lZCBpbnQgX193cnBoYXNlX2Z1dGV4OwogIHVuc2lnbmVkIGludCBfX3dy aXRlcnNfZnV0ZXg7CiAgdW5zaWduZWQgaW50IF9fcGFkMzsKICB1bnNpZ25lZCBpbnQgX19w YWQ0OwojIDQ1ICIvdXNyL2luY2x1ZGUvYml0cy9zdHJ1Y3Rfcndsb2NrLmgiIDMgNAogIHVu c2lnbmVkIGNoYXIgX19mbGFnczsKICB1bnNpZ25lZCBjaGFyIF9fc2hhcmVkOwogIHVuc2ln bmVkIGNoYXIgX19wYWQxOwogIHVuc2lnbmVkIGNoYXIgX19wYWQyOwoKICBpbnQgX19jdXJf d3JpdGVyOwp9OwoKCgoKCiNkZWZpbmUgX19QVEhSRUFEX1JXTE9DS19JTklUSUFMSVpFUihf X2ZsYWdzKSAwLCAwLCAwLCAwLCAwLCAwLCBfX2ZsYWdzLCAwLCAwLCAwLCAwCiMgOTAgIi91 c3IvaW5jbHVkZS9iaXRzL3RocmVhZC1zaGFyZWQtdHlwZXMuaCIgMiAzIDQKCgoKCnN0cnVj dCBfX3B0aHJlYWRfY29uZF9zCnsKICBfX2F0b21pY193aWRlX2NvdW50ZXIgX193c2VxOwog IF9fYXRvbWljX3dpZGVfY291bnRlciBfX2cxX3N0YXJ0OwogIHVuc2lnbmVkIGludCBfX2df cmVmc1syXSA7CiAgdW5zaWduZWQgaW50IF9fZ19zaXplWzJdOwogIHVuc2lnbmVkIGludCBf X2cxX29yaWdfc2l6ZTsKICB1bnNpZ25lZCBpbnQgX193cmVmczsKICB1bnNpZ25lZCBpbnQg X19nX3NpZ25hbHNbMl07Cn07Cgp0eXBlZGVmIHVuc2lnbmVkIGludCBfX3Rzc190Owp0eXBl ZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fdGhyZF90OwoKdHlwZWRlZiBzdHJ1Y3QKewogIGlu dCBfX2RhdGEgOwp9IF9fb25jZV9mbGFnOwoKI2RlZmluZSBfX09OQ0VfRkxBR19JTklUIHsg MCB9CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3B0aHJlYWR0eXBlcy5oIiAyIDMgNAoKCgp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IHB0aHJlYWRfdDsKCgoKCnR5cGVkZWYgdW5pb24K ewogIGNoYXIgX19zaXplWzRdOwogIGludCBfX2FsaWduOwp9IHB0aHJlYWRfbXV0ZXhhdHRy X3Q7CgoKCgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs0XTsKICBpbnQgX19hbGln bjsKfSBwdGhyZWFkX2NvbmRhdHRyX3Q7CgoKCnR5cGVkZWYgdW5zaWduZWQgaW50IHB0aHJl YWRfa2V5X3Q7CgoKCnR5cGVkZWYgaW50IHB0aHJlYWRfb25jZV90OwoKCnVuaW9uIHB0aHJl YWRfYXR0cl90CnsKICBjaGFyIF9fc2l6ZVs1Nl07CiAgbG9uZyBpbnQgX19hbGlnbjsKfTsK CnR5cGVkZWYgdW5pb24gcHRocmVhZF9hdHRyX3QgcHRocmVhZF9hdHRyX3Q7CiNkZWZpbmUg X19oYXZlX3B0aHJlYWRfYXR0cl90IDEKCgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0IF9f cHRocmVhZF9tdXRleF9zIF9fZGF0YTsKICBjaGFyIF9fc2l6ZVs0MF07CiAgbG9uZyBpbnQg X19hbGlnbjsKfSBwdGhyZWFkX211dGV4X3Q7CgoKdHlwZWRlZiB1bmlvbgp7CiAgc3RydWN0 IF9fcHRocmVhZF9jb25kX3MgX19kYXRhOwogIGNoYXIgX19zaXplWzQ4XTsKICBfX2V4dGVu c2lvbl9fIGxvbmcgbG9uZyBpbnQgX19hbGlnbjsKfSBwdGhyZWFkX2NvbmRfdDsKCgoKCgp0 eXBlZGVmIHVuaW9uCnsKICBzdHJ1Y3QgX19wdGhyZWFkX3J3bG9ja19hcmNoX3QgX19kYXRh OwogIGNoYXIgX19zaXplWzU2XTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfcnds b2NrX3Q7Cgp0eXBlZGVmIHVuaW9uCnsKICBjaGFyIF9fc2l6ZVs4XTsKICBsb25nIGludCBf X2FsaWduOwp9IHB0aHJlYWRfcndsb2NrYXR0cl90OwoKCgoKCnR5cGVkZWYgdm9sYXRpbGUg aW50IHB0aHJlYWRfc3BpbmxvY2tfdDsKCgoKCnR5cGVkZWYgdW5pb24KewogIGNoYXIgX19z aXplWzMyXTsKICBsb25nIGludCBfX2FsaWduOwp9IHB0aHJlYWRfYmFycmllcl90OwoKdHlw ZWRlZiB1bmlvbgp7CiAgY2hhciBfX3NpemVbNF07CiAgaW50IF9fYWxpZ247Cn0gcHRocmVh ZF9iYXJyaWVyYXR0cl90OwojIDIyOCAiL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIiAyIDMg NAoKCn0KIyAzOTYgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMiAzIDQKCgoKCgoKZXh0ZXJu IGxvbmcgaW50IHJhbmRvbSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQgc3JhbmRv bSAodW5zaWduZWQgaW50IF9fc2VlZCkgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKmlu aXRzdGF0ZSAodW5zaWduZWQgaW50IF9fc2VlZCwgY2hhciAqX19zdGF0ZWJ1ZiwKICAgc2l6 ZV90IF9fc3RhdGVsZW4pIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MikpKTsKCgoKZXh0ZXJuIGNoYXIgKnNldHN0YXRlIChjaGFyICpfX3N0YXRlYnVmKSB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoKCgpzdHJ1Y3Qg cmFuZG9tX2RhdGEKICB7CiAgICBpbnQzMl90ICpmcHRyOwogICAgaW50MzJfdCAqcnB0cjsK ICAgIGludDMyX3QgKnN0YXRlOwogICAgaW50IHJhbmRfdHlwZTsKICAgIGludCByYW5kX2Rl ZzsKICAgIGludCByYW5kX3NlcDsKICAgIGludDMyX3QgKmVuZF9wdHI7CiAgfTsKCmV4dGVy biBpbnQgcmFuZG9tX3IgKHN0cnVjdCByYW5kb21fZGF0YSAqX19yZXN0cmljdCBfX2J1ZiwK ICAgICAgIGludDMyX3QgKl9fcmVzdHJpY3QgX19yZXN1bHQpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBpbnQgc3JhbmRvbV9yICh1 bnNpZ25lZCBpbnQgX19zZWVkLCBzdHJ1Y3QgcmFuZG9tX2RhdGEgKl9fYnVmKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCmV4dGVybiBpbnQg aW5pdHN0YXRlX3IgKHVuc2lnbmVkIGludCBfX3NlZWQsIGNoYXIgKl9fcmVzdHJpY3QgX19z dGF0ZWJ1ZiwKICAgc2l6ZV90IF9fc3RhdGVsZW4sCiAgIHN0cnVjdCByYW5kb21fZGF0YSAq X19yZXN0cmljdCBfX2J1ZikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDIsIDQpKSk7CgpleHRlcm4gaW50IHNldHN0YXRlX3IgKGNoYXIgKl9fcmVzdHJp Y3QgX19zdGF0ZWJ1ZiwKICAgICAgICAgc3RydWN0IHJhbmRvbV9kYXRhICpfX3Jlc3RyaWN0 IF9fYnVmKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsKCgoKCgpleHRlcm4gaW50IHJhbmQgKHZvaWQpIHRocm93ICgpOwoKZXh0ZXJuIHZv aWQgc3JhbmQgKHVuc2lnbmVkIGludCBfX3NlZWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50 IHJhbmRfciAodW5zaWduZWQgaW50ICpfX3NlZWQpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu IGRvdWJsZSBkcmFuZDQ4ICh2b2lkKSB0aHJvdyAoKTsKZXh0ZXJuIGRvdWJsZSBlcmFuZDQ4 ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBsb25nIGludCBscmFuZDQ4ICh2b2lk KSB0aHJvdyAoKTsKZXh0ZXJuIGxvbmcgaW50IG5yYW5kNDggKHVuc2lnbmVkIHNob3J0IGlu dCBfX3hzdWJpWzNdKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxf XyAoMSkpKTsKCgpleHRlcm4gbG9uZyBpbnQgbXJhbmQ0OCAodm9pZCkgdGhyb3cgKCk7CmV4 dGVybiBsb25nIGludCBqcmFuZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSkK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0 ZXJuIHZvaWQgc3JhbmQ0OCAobG9uZyBpbnQgX19zZWVkdmFsKSB0aHJvdyAoKTsKZXh0ZXJu IHVuc2lnbmVkIHNob3J0IGludCAqc2VlZDQ4ICh1bnNpZ25lZCBzaG9ydCBpbnQgX19zZWVk MTZ2WzNdKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKZXh0ZXJuIHZvaWQgbGNvbmc0OCAodW5zaWduZWQgc2hvcnQgaW50IF9fcGFyYW1bN10p IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpzdHJ1 Y3QgZHJhbmQ0OF9kYXRhCiAgewogICAgdW5zaWduZWQgc2hvcnQgaW50IF9feFszXTsKICAg IHVuc2lnbmVkIHNob3J0IGludCBfX29sZF94WzNdOwogICAgdW5zaWduZWQgc2hvcnQgaW50 IF9fYzsKICAgIHVuc2lnbmVkIHNob3J0IGludCBfX2luaXQ7CiAgICBfX2V4dGVuc2lvbl9f IHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgX19hOwoKICB9OwoKCmV4dGVybiBpbnQgZHJhbmQ0 OF9yIChzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAg IGRvdWJsZSAqX19yZXN0cmljdCBfX3Jlc3VsdCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gaW50IGVyYW5kNDhfciAodW5zaWduZWQg c2hvcnQgaW50IF9feHN1YmlbM10sCiAgICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19y ZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBkb3VibGUgKl9fcmVzdHJpY3QgX19yZXN1bHQp IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRl cm4gaW50IGxyYW5kNDhfciAoc3RydWN0IGRyYW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1 ZmZlciwKICAgICAgICBsb25nIGludCAqX19yZXN0cmljdCBfX3Jlc3VsdCkKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQg bnJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1 Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50 ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IG1yYW5kNDhfciAoc3RydWN0IGRy YW5kNDhfZGF0YSAqX19yZXN0cmljdCBfX2J1ZmZlciwKICAgICAgICBsb25nIGludCAqX19y ZXN0cmljdCBfX3Jlc3VsdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7CmV4dGVybiBpbnQganJhbmQ0OF9yICh1bnNpZ25lZCBzaG9ydCBp bnQgX194c3ViaVszXSwKICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhICpfX3Jlc3RyaWN0 IF9fYnVmZmVyLAogICAgICAgIGxvbmcgaW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0KQogICAg IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRl cm4gaW50IHNyYW5kNDhfciAobG9uZyBpbnQgX19zZWVkdmFsLCBzdHJ1Y3QgZHJhbmQ0OF9k YXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDIpKSk7CgpleHRlcm4gaW50IHNlZWQ0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19z ZWVkMTZ2WzNdLAogICAgICAgc3RydWN0IGRyYW5kNDhfZGF0YSAqX19idWZmZXIpIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBpbnQg bGNvbmc0OF9yICh1bnNpZ25lZCBzaG9ydCBpbnQgX19wYXJhbVs3XSwKICAgICAgICBzdHJ1 Y3QgZHJhbmQ0OF9kYXRhICpfX2J1ZmZlcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKCgpleHRlcm4gdm9pZCAqbWFsbG9jIChzaXpl X3QgX19zaXplKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiAgICAg X19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgxKSkpIDsKCmV4dGVybiB2b2lkICpj YWxsb2MgKHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6 ZV9fICgxLCAyKSkpIDsKCgoKCgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2MgKHZvaWQgKl9fcHRy LCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3dhcm5f dW51c2VkX3Jlc3VsdF9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgyKSkp OwoKCmV4dGVybiB2b2lkIGZyZWUgKHZvaWQgKl9fcHRyKSB0aHJvdyAoKTsKCgoKCgoKCmV4 dGVybiB2b2lkICpyZWFsbG9jYXJyYXkgKHZvaWQgKl9fcHRyLCBzaXplX3QgX19ubWVtYiwg c2l6ZV90IF9fc2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX193YXJuX3Vu dXNlZF9yZXN1bHRfXykpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgy LCAzKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoX19idWlsdGluX2ZyZWUs IDEpKSk7CgoKZXh0ZXJuIHZvaWQgKnJlYWxsb2NhcnJheSAodm9pZCAqX19wdHIsIHNpemVf dCBfX25tZW1iLCBzaXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX21hbGxvY19fIChyZWFsbG9jYXJyYXksIDEpKSk7CgoKCiMgMSAiL3Vzci9pbmNsdWRl L2FsbG9jYS5oIiAxIDMgNAojIDE5ICIvdXNyL2luY2x1ZGUvYWxsb2NhLmgiIDMgNAojZGVm aW5lIF9BTExPQ0FfSCAxCgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKIyAxICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgi IDEgMyA0CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDQxMCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0 ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMjUgIi91c3IvaW5jbHVkZS9hbGxv Y2EuaCIgMiAzIDQKCmV4dGVybiAiQyIgewoKCiN1bmRlZiBhbGxvY2EKCgpleHRlcm4gdm9p ZCAqYWxsb2NhIChzaXplX3QgX19zaXplKSB0aHJvdyAoKTsKCgojZGVmaW5lIGFsbG9jYShz aXplKSBfX2J1aWx0aW5fYWxsb2NhIChzaXplKQoKCn0KIyA1NzUgIi91c3IvaW5jbHVkZS9z dGRsaWIuaCIgMiAzIDQKCgoKCgpleHRlcm4gdm9pZCAqdmFsbG9jIChzaXplX3QgX19zaXpl KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpCiAgICAgX19hdHRyaWJ1 dGVfXyAoKF9fYWxsb2Nfc2l6ZV9fICgxKSkpIDsKCgoKCmV4dGVybiBpbnQgcG9zaXhfbWVt YWxpZ24gKHZvaWQgKipfX21lbXB0ciwgc2l6ZV90IF9fYWxpZ25tZW50LCBzaXplX3QgX19z aXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7 CgoKCgpleHRlcm4gdm9pZCAqYWxpZ25lZF9hbGxvYyAoc2l6ZV90IF9fYWxpZ25tZW50LCBz aXplX3QgX19zaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f KSkgX19hdHRyaWJ1dGVfXyAoKF9fYWxsb2NfYWxpZ25fXyAoMSkpKQogICAgIF9fYXR0cmli dXRlX18gKChfX2FsbG9jX3NpemVfXyAoMikpKSA7CgoKCmV4dGVybiB2b2lkIGFib3J0ICh2 b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCmV4dGVy biBpbnQgYXRleGl0ICh2b2lkICgqX19mdW5jKSAodm9pZCkpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVybiAiQysrIiBpbnQgYXRfcXVp Y2tfZXhpdCAodm9pZCAoKl9fZnVuYykgKHZvaWQpKQogICAgIHRocm93ICgpIF9fYXNtICgi YXRfcXVpY2tfZXhpdCIpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKIyA2 MTcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgb25fZXhpdCAodm9p ZCAoKl9fZnVuYykgKGludCBfX3N0YXR1cywgdm9pZCAqX19hcmcpLCB2b2lkICpfX2FyZykK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgoK ZXh0ZXJuIHZvaWQgZXhpdCAoaW50IF9fc3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19ub3JldHVybl9fKSk7CgoKCgoKZXh0ZXJuIHZvaWQgcXVpY2tfZXhpdCAoaW50IF9f c3RhdHVzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7CgoKCgoK ZXh0ZXJuIHZvaWQgX0V4aXQgKGludCBfX3N0YXR1cykgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKZXh0ZXJuIGNoYXIgKmdldGVudiAoY29uc3QgY2hh ciAqX19uYW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkg OwoKCgoKZXh0ZXJuIGNoYXIgKnNlY3VyZV9nZXRlbnYgKGNvbnN0IGNoYXIgKl9fbmFtZSkK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwoKCgoK CgpleHRlcm4gaW50IHB1dGVudiAoY2hhciAqX19zdHJpbmcpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHNldGVudiAoY29u c3QgY2hhciAqX19uYW1lLCBjb25zdCBjaGFyICpfX3ZhbHVlLCBpbnQgX19yZXBsYWNlKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgpleHRl cm4gaW50IHVuc2V0ZW52IChjb25zdCBjaGFyICpfX25hbWUpIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGludCBjbGVhcmVudiAo dm9pZCkgdGhyb3cgKCk7CiMgNjgyICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRl cm4gY2hhciAqbWt0ZW1wIChjaGFyICpfX3RlbXBsYXRlKSB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgNjk1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNApleHRlcm4gaW50IG1rc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNzA1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNApleHRlcm4gaW50IG1rc3RlbXA2NCAoY2hhciAqX190ZW1wbGF0ZSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3MTcgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMyA0CmV4dGVybiBpbnQgbWtzdGVtcHMgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX3N1 ZmZpeGxlbikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3MjcgIi91 c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtzdGVtcHM2NCAoY2hhciAq X190ZW1wbGF0ZSwgaW50IF9fc3VmZml4bGVuKQogICAgIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKSA7CiMgNzM4ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNApleHRl cm4gY2hhciAqbWtkdGVtcCAoY2hhciAqX190ZW1wbGF0ZSkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIDsKIyA3NDkgIi91c3IvaW5jbHVkZS9zdGRsaWIu aCIgMyA0CmV4dGVybiBpbnQgbWtvc3RlbXAgKGNoYXIgKl9fdGVtcGxhdGUsIGludCBfX2Zs YWdzKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgOwojIDc1OSAiL3Vzci9p bmNsdWRlL3N0ZGxpYi5oIiAzIDQKZXh0ZXJuIGludCBta29zdGVtcDY0IChjaGFyICpfX3Rl bXBsYXRlLCBpbnQgX19mbGFncykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp IDsKIyA3NjkgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgbWtvc3Rl bXBzIChjaGFyICpfX3RlbXBsYXRlLCBpbnQgX19zdWZmaXhsZW4sIGludCBfX2ZsYWdzKQog ICAgIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNzgxICIvdXNyL2lu Y2x1ZGUvc3RkbGliLmgiIDMgNApleHRlcm4gaW50IG1rb3N0ZW1wczY0IChjaGFyICpfX3Rl bXBsYXRlLCBpbnQgX19zdWZmaXhsZW4sIGludCBfX2ZsYWdzKQogICAgIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKSA7CiMgNzkxICIvdXNyL2luY2x1ZGUvc3RkbGliLmgi IDMgNApleHRlcm4gaW50IHN5c3RlbSAoY29uc3QgY2hhciAqX19jb21tYW5kKSA7CgoKCgoK ZXh0ZXJuIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUgKGNvbnN0IGNoYXIgKl9fbmFt ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSkgX19h dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKQogICAgIF9fYXR0cmlidXRlX18gKChfX21hbGxv Y19fIChfX2J1aWx0aW5fZnJlZSwgMSkpKSA7CiMgODA4ICIvdXNyL2luY2x1ZGUvc3RkbGli LmgiIDMgNApleHRlcm4gY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19uYW1lLAogICAgICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fcmVzb2x2ZWQpIHRocm93ICgp IDsKCgoKCgojZGVmaW5lIF9fQ09NUEFSX0ZOX1QgCnR5cGVkZWYgaW50ICgqX19jb21wYXJf Zm5fdCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKCgp0eXBlZGVmIF9fY29tcGFy X2ZuX3QgY29tcGFyaXNvbl9mbl90OwoKCgp0eXBlZGVmIGludCAoKl9fY29tcGFyX2RfZm5f dCkgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCB2b2lkICopOwoKCgoKZXh0ZXJuIHZv aWQgKmJzZWFyY2ggKGNvbnN0IHZvaWQgKl9fa2V5LCBjb25zdCB2b2lkICpfX2Jhc2UsCiAg ICAgICAgc2l6ZV90IF9fbm1lbWIsIHNpemVfdCBfX3NpemUsIF9fY29tcGFyX2ZuX3QgX19j b21wYXIpCiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA1KSkpIDsK CgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi1ic2VhcmNoLmgiIDEgMyA0CiMgMTkg Ii91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi1ic2VhcmNoLmgiIDMgNApleHRlcm4gX19pbmxp bmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgdm9pZCAqCmJzZWFyY2ggKGNv bnN0IHZvaWQgKl9fa2V5LCBjb25zdCB2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBz aXplX3QgX19zaXplLAogIF9fY29tcGFyX2ZuX3QgX19jb21wYXIpCnsKICBzaXplX3QgX19s LCBfX3UsIF9faWR4OwogIGNvbnN0IHZvaWQgKl9fcDsKICBpbnQgX19jb21wYXJpc29uOwoK ICBfX2wgPSAwOwogIF9fdSA9IF9fbm1lbWI7CiAgd2hpbGUgKF9fbCA8IF9fdSkKICAgIHsK ICAgICAgX19pZHggPSAoX19sICsgX191KSAvIDI7CiAgICAgIF9fcCA9IChjb25zdCB2b2lk ICopICgoKGNvbnN0IGNoYXIgKikgX19iYXNlKSArIChfX2lkeCAqIF9fc2l6ZSkpOwogICAg ICBfX2NvbXBhcmlzb24gPSAoKl9fY29tcGFyKSAoX19rZXksIF9fcCk7CiAgICAgIGlmIChf X2NvbXBhcmlzb24gPCAwKQogX191ID0gX19pZHg7CiAgICAgIGVsc2UgaWYgKF9fY29tcGFy aXNvbiA+IDApCiBfX2wgPSBfX2lkeCArIDE7CiAgICAgIGVsc2UKIHsKCiNwcmFnbWEgR0ND IGRpYWdub3N0aWMgcHVzaAojcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XY2Fz dC1xdWFsIgoKICAgcmV0dXJuICh2b2lkICopIF9fcDsKCiNwcmFnbWEgR0NDIGRpYWdub3N0 aWMgcG9wCgogfQogICAgfQoKICByZXR1cm4gX19udWxsOwp9CiMgODM0ICIvdXNyL2luY2x1 ZGUvc3RkbGliLmgiIDIgMyA0CgoKCgpleHRlcm4gdm9pZCBxc29ydCAodm9pZCAqX19iYXNl LCBzaXplX3QgX19ubWVtYiwgc2l6ZV90IF9fc2l6ZSwKICAgICBfX2NvbXBhcl9mbl90IF9f Y29tcGFyKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgpleHRlcm4g dm9pZCBxc29ydF9yICh2b2lkICpfX2Jhc2UsIHNpemVfdCBfX25tZW1iLCBzaXplX3QgX19z aXplLAogICAgICAgX19jb21wYXJfZF9mbl90IF9fY29tcGFyLCB2b2lkICpfX2FyZykKICBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDQpKSk7CgoKCgpleHRlcm4gaW50IGFi cyAoaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpIDsKZXh0 ZXJuIGxvbmcgaW50IGxhYnMgKGxvbmcgaW50IF9feCkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpIDsKCgpfX2V4dGVuc2lvbl9fIGV4dGVybiBsb25nIGxvbmcgaW50 IGxsYWJzIChsb25nIGxvbmcgaW50IF9feCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19jb25zdF9fKSkgOwoKCgoKCgpleHRlcm4gZGl2X3QgZGl2IChpbnQgX19udW1lciwg aW50IF9fZGVub20pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykp IDsKZXh0ZXJuIGxkaXZfdCBsZGl2IChsb25nIGludCBfX251bWVyLCBsb25nIGludCBfX2Rl bm9tKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKSA7CgoKX19l eHRlbnNpb25fXyBleHRlcm4gbGxkaXZfdCBsbGRpdiAobG9uZyBsb25nIGludCBfX251bWVy LAogICAgICAgIGxvbmcgbG9uZyBpbnQgX19kZW5vbSkKICAgICB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19jb25zdF9fKSkgOwojIDg4MCAiL3Vzci9pbmNsdWRlL3N0ZGxpYi5oIiAz IDQKZXh0ZXJuIGNoYXIgKmVjdnQgKGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsIGlu dCAqX19yZXN0cmljdCBfX2RlY3B0LAogICAgIGludCAqX19yZXN0cmljdCBfX3NpZ24pIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CgoKCgpleHRl cm4gY2hhciAqZmN2dCAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jl c3RyaWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0KSkpIDsKCgoKCmV4dGVybiBjaGFy ICpnY3Z0IChkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LCBjaGFyICpfX2J1ZikKICAg ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMpKSkgOwoKCgoKZXh0 ZXJuIGNoYXIgKnFlY3Z0IChsb25nIGRvdWJsZSBfX3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAg ICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBpbnQgKl9fcmVzdHJpY3QgX19zaWduKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMywgNCkpKSA7CmV4 dGVybiBjaGFyICpxZmN2dCAobG9uZyBkb3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAog ICAgICBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbikK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDMsIDQpKSkgOwpl eHRlcm4gY2hhciAqcWdjdnQgKGxvbmcgZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwg Y2hhciAqX19idWYpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgzKSkpIDsKCgoKCmV4dGVybiBpbnQgZWN2dF9yIChkb3VibGUgX192YWx1ZSwgaW50IF9f bmRpZ2l0LCBpbnQgKl9fcmVzdHJpY3QgX19kZWNwdCwKICAgICBpbnQgKl9fcmVzdHJpY3Qg X19zaWduLCBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLAogICAgIHNpemVfdCBfX2xlbikgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzLCA0LCA1KSkpOwpleHRlcm4g aW50IGZjdnRfciAoZG91YmxlIF9fdmFsdWUsIGludCBfX25kaWdpdCwgaW50ICpfX3Jlc3Ry aWN0IF9fZGVjcHQsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwgY2hhciAqX19yZXN0 cmljdCBfX2J1ZiwKICAgICBzaXplX3QgX19sZW4pIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMywgNCwgNSkpKTsKCmV4dGVybiBpbnQgcWVjdnRfciAobG9uZyBk b3VibGUgX192YWx1ZSwgaW50IF9fbmRpZ2l0LAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19k ZWNwdCwgaW50ICpfX3Jlc3RyaWN0IF9fc2lnbiwKICAgICAgY2hhciAqX19yZXN0cmljdCBf X2J1Ziwgc2l6ZV90IF9fbGVuKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMywgNCwgNSkpKTsKZXh0ZXJuIGludCBxZmN2dF9yIChsb25nIGRvdWJsZSBf X3ZhbHVlLCBpbnQgX19uZGlnaXQsCiAgICAgIGludCAqX19yZXN0cmljdCBfX2RlY3B0LCBp bnQgKl9fcmVzdHJpY3QgX19zaWduLAogICAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBz aXplX3QgX19sZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgzLCA0LCA1KSkpOwoKCgoKCmV4dGVybiBpbnQgbWJsZW4gKGNvbnN0IGNoYXIgKl9fcywg c2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBtYnRvd2MgKHdjaGFyX3QgKl9f cmVzdHJpY3QgX19wd2MsCiAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVf dCBfX24pIHRocm93ICgpOwoKCmV4dGVybiBpbnQgd2N0b21iIChjaGFyICpfX3MsIHdjaGFy X3QgX193Y2hhcikgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3QgbWJzdG93Y3MgKHdjaGFy X3QgKl9fcmVzdHJpY3QgX19wd2NzLAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcywg c2l6ZV90IF9fbikgdGhyb3cgKCkKICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChf X3JlYWRfb25seV9fLCAyKSkpOwoKZXh0ZXJuIHNpemVfdCB3Y3N0b21icyAoY2hhciAqX19y ZXN0cmljdCBfX3MsCiAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19wd2NzLCBzaXpl X3QgX19uKQogICAgIHRocm93ICgpCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9f d3JpdGVfb25seV9fLCAxLCAzKSkpCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9f cmVhZF9vbmx5X18sIDIpKSk7CgoKCgoKCmV4dGVybiBpbnQgcnBtYXRjaCAoY29uc3QgY2hh ciAqX19yZXNwb25zZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpIDsKIyA5NjcgIi91c3IvaW5jbHVkZS9zdGRsaWIuaCIgMyA0CmV4dGVybiBpbnQgZ2V0 c3Vib3B0IChjaGFyICoqX19yZXN0cmljdCBfX29wdGlvbnAsCiAgICAgICAgY2hhciAqY29u c3QgKl9fcmVzdHJpY3QgX190b2tlbnMsCiAgICAgICAgY2hhciAqKl9fcmVzdHJpY3QgX192 YWx1ZXApCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAy LCAzKSkpIDsKCgoKCgoKCmV4dGVybiBpbnQgcG9zaXhfb3BlbnB0IChpbnQgX19vZmxhZykg OwoKCgoKCgoKZXh0ZXJuIGludCBncmFudHB0IChpbnQgX19mZCkgdGhyb3cgKCk7CgoKCmV4 dGVybiBpbnQgdW5sb2NrcHQgKGludCBfX2ZkKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBjaGFy ICpwdHNuYW1lIChpbnQgX19mZCkgdGhyb3cgKCkgOwoKCgoKCgpleHRlcm4gaW50IHB0c25h bWVfciAoaW50IF9fZmQsIGNoYXIgKl9fYnVmLCBzaXplX3QgX19idWZsZW4pCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpIF9fYXR0cmlidXRlX18g KChfX2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMiwgMykpKTsKCgpleHRlcm4gaW50IGdl dHB0ICh2b2lkKTsKCgoKCgoKZXh0ZXJuIGludCBnZXRsb2FkYXZnIChkb3VibGUgX19sb2Fk YXZnW10sIGludCBfX25lbGVtKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKTsKIyAxMDIzICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAojIDEg Ii91c3IvaW5jbHVkZS9iaXRzL3N0ZGxpYi1mbG9hdC5oIiAxIDMgNAojIDI0ICIvdXNyL2lu Y2x1ZGUvYml0cy9zdGRsaWItZmxvYXQuaCIgMyA0CmV4dGVybiBfX2lubGluZSBfX2F0dHJp YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBkb3VibGUKX19hdHRyaWJ1dGVfXyAoKF9fbGVh Zl9fKSkgYXRvZiAoY29uc3QgY2hhciAqX19ucHRyKSB0aHJvdyAoKQp7CiAgcmV0dXJuIHN0 cnRvZCAoX19ucHRyLCAoY2hhciAqKikgX19udWxsKTsKfQojIDEwMjQgIi91c3IvaW5jbHVk ZS9zdGRsaWIuaCIgMiAzIDQKIyAxMDM1ICIvdXNyL2luY2x1ZGUvc3RkbGliLmgiIDMgNAp9 CiMgMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGRfYWJzLmgiIDIgMwoK CgojdW5kZWYgX0dMSUJDWFhfSU5DTFVERV9ORVhUX0NfSEVBREVSUwoKI3VuZGVmIGFicwoK ZXh0ZXJuICJDKysiCnsKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmls aXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB1c2luZyA6OmFiczsKCgogIGlubGluZSBsb25n CiAgYWJzKGxvbmcgX19pKSB7IHJldHVybiBfX2J1aWx0aW5fbGFicyhfX2kpOyB9CgoKCiAg aW5saW5lIGxvbmcgbG9uZwogIGFicyhsb25nIGxvbmcgX194KSB7IHJldHVybiBfX2J1aWx0 aW5fbGxhYnMgKF9feCk7IH0KIyA3MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3N0ZF9hYnMuaCIgMwogIGlubGluZSBkb3VibGUKICBhYnMoZG91YmxlIF9feCkKICB7IHJl dHVybiBfX2J1aWx0aW5fZmFicyhfX3gpOyB9CgogIGlubGluZSBmbG9hdAogIGFicyhmbG9h dCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2ZhYnNmKF9feCk7IH0KCiAgaW5saW5lIGxv bmcgZG91YmxlCiAgYWJzKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5f ZmFic2woX194KTsgfQojIDE1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0 ZF9hYnMuaCIgMwoKfQp9CiMgNTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY21hdGgi IDIgMwoKCiNkZWZpbmUgX0dMSUJDWFhfQ01BVEggMQoKI2RlZmluZSBfX2dsaWJjeHhfd2Fu dF9oeXBvdCAKI2RlZmluZSBfX2dsaWJjeHhfd2FudF9pbnRlcnBvbGF0ZSAKIyAxICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAxIDMKIyA0NyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwogICAgICAgCiMgNDggIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKCgoKCgoKI2RlZmlu ZSBfX2dsaWJjeHhfaW5jb21wbGV0ZV9jb250YWluZXJfZWxlbWVudHMgMjAxNTA1TAoKCgoK CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbmNvbXBsZXRlX2NvbnRhaW5lcl9lbGVtZW50cwoj IDcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF91bmNhdWdodF9leGNlcHRpb25zCiMgODIgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2FsbG9jYXRvcl90cmFpdHNfaXNfYWx3YXlzX2VxdWFsCiMgOTMgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lz X251bGxfcG9pbnRlcgojIDEwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVzdWx0X29mX3NmaW5hZQojIDEy MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc2hhcmVkX3B0cl9hcnJheXMKIyAxMzEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lz X3N3YXBwYWJsZQojIDE0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdm9pZF90CiMgMTUzICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcwojIDE2NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWF0aF9zcGVj X2Z1bmNzCiMgMTc1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb3JvdXRpbmUKIyAxODYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2V4Y2hhbmdlX2Z1bmN0aW9uCiMgMTk3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbnRlZ2VyX3NlcXVlbmNl CiMgMjA4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9pbnRlZ3JhbF9jb25zdGFudF9jYWxsYWJsZQojIDIxOSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfaXNfZmluYWwKIyAyMzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21ha2VfcmV2ZXJzZV9p dGVyYXRvcgojIDI0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbnVsbF9pdGVyYXRvcnMKIyAyNTIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X3RyYW5zZm9ybWF0aW9uX3RyYWl0X2FsaWFzZXMKIyAyNjMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3RyYW5zcGFyZW50X29wZXJhdG9ycwojIDI3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHVwbGVfZWxlbWVu dF90CiMgMjg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90dXBsZXNfYnlfdHlwZQojIDI5NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcm9idXN0X25vbm1vZGlmeWluZ19zZXFfb3BzCiMgMzEyICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b19j aGFycwojIDMyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2hyb25vX3VkbHMKIyAzMzQgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2NvbXBsZXhfdWRscwojIDM0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2VuZXJpY19hc3NvY2lhdGl2ZV9s b29rdXAKIyAzNTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21ha2VfdW5pcXVlCiMgMzY3ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9xdW90ZWRfc3RyaW5nX2lvCiMgMzc4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfdGltZWRfbXV0 ZXgKIyAzODkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ191ZGxzCiMgNDAwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9h ZGRyZXNzb2ZfY29uc3RleHByCiMgNDExICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hbnkKIyA0MjIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2FwcGx5CiMgNDMzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hc19jb25zdAojIDQ0NCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfYXRvbWljX2lzX2Fsd2F5c19sb2NrX2ZyZWUKIyA0NTUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Jv b2xfY29uc3RhbnQKIyA0NjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2J5dGUKIyA0NzcgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2hhc191bmlxdWVfb2JqZWN0X3JlcHJlc2VudGF0aW9ucwojIDQ4OCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf aGFyZHdhcmVfaW50ZXJmZXJlbmNlX3NpemUKIyA0OTkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludm9rZQoj IDUxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfaXNfYWdncmVnYXRlCiMgNTIxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19p bnZvY2FibGUKIyA1MzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xhdW5kZXIKIyA1NDMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2xvZ2ljYWxfdHJhaXRzCiMgNTU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX2Zyb21fdHVwbGUKIyA1 NjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X25vdF9mbgojIDU3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHlwZV90cmFpdF92 YXJpYWJsZV90ZW1wbGF0ZXMKIyA1OTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ZhcmlhbnQKIyA2MDMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2xjbQojIDYxNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2NkCiMgNjI1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9nY2RfbGNtCiMgNjM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYXdfbWVtb3J5X2FsZ29yaXRobXMKIyA2 NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2FycmF5X2NvbnN0ZXhwcgojIDY2MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm9u bWVtYmVyX2NvbnRhaW5lcl9hY2Nlc3MKIyA2NzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NsYW1wCiMgNjg1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9zYW1wbGUKIyA2OTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2JveWVyX21vb3JlX3Nl YXJjaGVyCiMgNzEyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jaHJvbm8KIyA3MjMgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2V4 ZWN1dGlvbgojIDczNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZmlsZXN5c3RlbQojIDc0NSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfaHlwb3QKIyA3NTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hcF90cnlfZW1wbGFjZQojIDc2NyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbWF0aF9zcGVjaWFsX2Z1bmN0aW9ucwojIDc4MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWVt b3J5X3Jlc291cmNlCiMgNzk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub2RlX2V4dHJhY3QKIyA4MDUgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3BhcmFsbGVsX2FsZ29yaXRobQojIDgxNiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2NvcGVk X2xvY2sKIyA4MjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9tdXRleAojIDgzOCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfc2hhcmVkX3B0cl93ZWFrX3R5cGUKIyA4NDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ192aWV3 CiMgODYwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF91bm9yZGVyZWRfbWFwX3RyeV9lbXBsYWNlCiMgODcxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9hc3N1bWVfYWxpZ25lZAojIDg4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2Zs YWdfdGVzdAojIDg5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2Zsb2F0CiMgOTA0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9hdG9taWNfbG9ja19mcmVlX3R5cGVfYWxpYXNlcwojIDkxNSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf YXRvbWljX3JlZgojIDkyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX3ZhbHVlX2luaXRpYWxpemF0 aW9uCiMgOTM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iaW5kX2Zyb250CiMgOTQ4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z dGFydHNfZW5kc193aXRoCiMgOTU5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iaXRfY2FzdAojIDk3MCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfYml0b3BzCiMgOTgxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ib3VuZGVkX2FycmF5X3RyYWl0 cwojIDk5MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfY29uY2VwdHMKIyAxMDEzICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9vcHRp b25hbAojIDEwMjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Rlc3Ryb3lpbmdfZGVsZXRlCiMgMTAzNSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfY29uc3RleHByX3N0cmluZ192aWV3CiMgMTA0NiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZW5k aWFuCiMgMTA1NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50X3BvdzIKIyAxMDY4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9p bnRlZ2VyX2NvbXBhcmlzb25fZnVuY3Rpb25zCiMgMTA3OSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfY29u c3RhbnRfZXZhbHVhdGVkCiMgMTA5NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2NoYXJfdHJh aXRzCiMgMTEwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbGF5b3V0X2NvbXBhdGlibGUKIyAxMTE3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19ub3Rocm93X2NvbnZlcnRpYmxlCiMgMTEyOCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf aXNfcG9pbnRlcl9pbnRlcmNvbnZlcnRpYmxlCiMgMTEzOSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWF0aF9j b25zdGFudHMKIyAxMTUwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX29ial91c2luZ19hbGxvY2F0b3IK IyAxMTYxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9yZW1vdmVfY3ZyZWYKIyAxMTcyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z b3VyY2VfbG9jYXRpb24KIyAxMTg4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zcGFuCiMgMTE5OSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfc3NpemUKIyAxMjEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90aHJlZV93YXlfY29tcGFyaXNvbgoj IDEyMjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3RvX2FkZHJlc3MKIyAxMjMyICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b19h cnJheQojIDEyNDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3R5cGVfaWRlbnRpdHkKIyAxMjU0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF91bndyYXBfcmVmCiMgMTI2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2l0ZXJhdG9y CiMgMTI3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZXJwb2xhdGUKIyAxMjg3ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9j b25zdGV4cHJfdXRpbGl0eQojIDEyOTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoaWZ0CiMgMTMxNCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfcmFuZ2VzCiMgMTMyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX251bWVyaWMK IyAxMzM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfZnVuY3Rpb25hbAojIDEzNDcgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2NvbnN0ZXhwcl9hbGdvcml0aG1zCiMgMTM1OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3Rl eHByX3R1cGxlCiMgMTM3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX21lbW9yeQojIDEzODUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY19zaGFyZWRfcHRyCiMgMTQwMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRv bWljX3dhaXQKIyAxNDEyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iYXJyaWVyCiMgMTQyMyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfZm9ybWF0CiMgMTQzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2NvbXBsZXgKIyAxNDQ1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb25zdGV4cHJfZHluYW1pY19hbGxvYwojIDE0NjYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2NvbnN0ZXhwcl9zdHJpbmcKIyAxNDc3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfdmVj dG9yCiMgMTQ4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXJhc2VfaWYKIyAxNDk5ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9n ZW5lcmljX3Vub3JkZXJlZF9sb29rdXAKIyAxNTEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9qdGhyZWFkCiMg MTUyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfbGF0Y2gKIyAxNTMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9saXN0X3JlbW92 ZV9yZXR1cm5fdHlwZQojIDE1NDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3BvbHltb3JwaGljX2FsbG9jYXRv cgojIDE1NTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X21vdmVfaXRlcmF0b3JfY29uY2VwdAojIDE1NjUgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3NlbWFwaG9yZQojIDE1NzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NtYXJ0X3B0cl9mb3Jf b3ZlcndyaXRlCiMgMTU4NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3luY2J1ZgojIDE1OTggIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2J5dGVzd2FwCiMgMTYwOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2NoYXJjb252CiMg MTYyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3R5cGVpbmZvCiMgMTYzMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfZXhwZWN0ZWQKIyAxNjQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdfYWxnb3JpdGht CiMgMTY1MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX2FycmF5CiMgMTY2NCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZnJlZXN0YW5kaW5nX2NzdHJpbmcKIyAxNjc1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3Rh bmRpbmdfZXhwZWN0ZWQKIyAxNjg2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdfb3B0aW9u YWwKIyAxNjk3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdfc3RyaW5nX3ZpZXcKIyAxNzA4 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdfdmFyaWFudAojIDE3MTkgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2ludm9rZV9yCiMgMTczMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfc2NvcGVkX2VudW0KIyAxNzQxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yZWZlcmVuY2VfZnJvbV90ZW1wb3JhcnkKIyAxNzUyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9yYW5nZXNfdG9fY29udGFpbmVyCiMgMTc2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3ppcAoj IDE3NzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19jaHVuawojIDE3ODUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jh bmdlc19zbGlkZQojIDE3OTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19jaHVua19ieQojIDE4MDcg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3Jhbmdlc19qb2luX3dpdGgKIyAxODE4ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5n ZXNfcmVwZWF0CiMgMTgyOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3N0cmlkZQojIDE4NDAgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3Jhbmdlc19jYXJ0ZXNpYW5fcHJvZHVjdAojIDE4NTEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc19hc19ydmFsdWUKIyAxODYyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfY29uc3QK IyAxODczICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZW51bWVyYXRlCiMgMTg4NCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcmFuZ2VzX2ZvbGQKIyAxODk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY29udGFpbnMKIyAx OTA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfaW90YQojIDE5MTcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdl c19maW5kX2xhc3QKIyAxOTI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfYml0c2V0CiMgMTkz OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc3RkYXRvbWljX2gKIyAxOTUwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hZGFwdG9y X2l0ZXJhdG9yX3BhaXJfY29uc3RydWN0b3IKIyAxOTYxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mb3JtYXR0 ZXJzCiMgMTk3MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfZm9yd2FyZF9saWtlCiMgMTk4MyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfaW9zX25vcmVwbGFjZQojIDE5OTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21vdmVfb25seV9mdW5jdGlv bgojIDIwMDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X291dF9wdHIKIyAyMDE2ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wcmlu dAojIDIwMjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3NwYW5zdHJlYW0KIyAyMDM4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z dGFja3RyYWNlCiMgMjA0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RyaW5nX2NvbnRhaW5zCiMgMjA2MCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc3RyaW5nX3Jlc2l6ZV9hbmRfb3ZlcndyaXRlCiMgMjA3MSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdG9fdW5kZXJseWluZwojIDIwODIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3VucmVhY2hhYmxlCiMg MjA5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfZnN0cmVhbV9uYXRpdmVfaGFuZGxlCiMgMjEwNCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfcmF0aW8KIyAyMTE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zYXR1cmF0aW9uX2FyaXRobWV0aWMK IyAyMTI2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF90b19zdHJpbmcKIyAyMTM3ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9nZW5l cmF0b3IKCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hbGwKIyA1NyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9jbWF0aCIgMiAzCgoKI3VuZGVmIGRpdgojdW5kZWYgYWNvcwojdW5kZWYg YXNpbgojdW5kZWYgYXRhbgojdW5kZWYgYXRhbjIKI3VuZGVmIGNlaWwKI3VuZGVmIGNvcwoj dW5kZWYgY29zaAojdW5kZWYgZXhwCiN1bmRlZiBmYWJzCiN1bmRlZiBmbG9vcgojdW5kZWYg Zm1vZAojdW5kZWYgZnJleHAKI3VuZGVmIGxkZXhwCiN1bmRlZiBsb2cKI3VuZGVmIGxvZzEw CiN1bmRlZiBtb2RmCiN1bmRlZiBwb3cKI3VuZGVmIHNpbgojdW5kZWYgc2luaAojdW5kZWYg c3FydAojdW5kZWYgdGFuCiN1bmRlZiB0YW5oCgpleHRlcm4gIkMrKyIKewpuYW1lc3BhY2Ug c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgog IHVzaW5nIDo6YWNvczsKCgogIGlubGluZSBmbG9hdAogIGFjb3MoZmxvYXQgX194KQogIHsg cmV0dXJuIF9fYnVpbHRpbl9hY29zZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQog IGFjb3MobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9hY29zbChfX3gp OyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1l IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAg YWNvcyhfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX2Fjb3MoX194KTsgfQoKICB1 c2luZyA6OmFzaW47CgoKICBpbmxpbmUgZmxvYXQKICBhc2luKGZsb2F0IF9feCkKICB7IHJl dHVybiBfX2J1aWx0aW5fYXNpbmYoX194KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBh c2luKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXNpbmwoX194KTsg fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBf X2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGFz aW4oX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9hc2luKF9feCk7IH0KCiAgdXNp bmcgOjphdGFuOwoKCiAgaW5saW5lIGZsb2F0CiAgYXRhbihmbG9hdCBfX3gpCiAgeyByZXR1 cm4gX19idWlsdGluX2F0YW5mKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgYXRh bihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2F0YW5sKF9feCk7IH0K CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgdHlwZW5hbWUgX19n bnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBhdGFu KF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbihfX3gpOyB9CgogIHVzaW5n IDo6YXRhbjI7CgoKICBpbmxpbmUgZmxvYXQKICBhdGFuMihmbG9hdCBfX3ksIGZsb2F0IF9f eCkKICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbjJmKF9feSwgX194KTsgfQoKICBpbmxpbmUg bG9uZyBkb3VibGUKICBhdGFuMihsb25nIGRvdWJsZSBfX3ksIGxvbmcgZG91YmxlIF9feCkK ICB7IHJldHVybiBfX2J1aWx0aW5fYXRhbjJsKF9feSwgX194KTsgfQoKCiAgdXNpbmcgOjpj ZWlsOwoKCiAgaW5saW5lIGZsb2F0CiAgY2VpbChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19i dWlsdGluX2NlaWxmKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgY2VpbChsb25n IGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2NlaWxsKF9feCk7IH0KCgogIHRl bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgdHlwZW5hbWUgX19nbnVfY3h4 OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICBjZWlsKF9UcCBf X3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fY2VpbChfX3gpOyB9CgogIHVzaW5nIDo6Y29z OwoKCiAgaW5saW5lIGZsb2F0CiAgY29zKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0 aW5fY29zZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGNvcyhsb25nIGRvdWJs ZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2Nvc2woX194KTsgfQoKCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX1RwPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5h YmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGNvcyhfVHAgX194KQogICAg eyByZXR1cm4gX19idWlsdGluX2NvcyhfX3gpOyB9CgogIHVzaW5nIDo6Y29zaDsKCgogIGlu bGluZSBmbG9hdAogIGNvc2goZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3No ZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGNvc2gobG9uZyBkb3VibGUgX194 KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9jb3NobChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfVHA+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVf aWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgY29zaChfVHAgX194KQogICAgeyBy ZXR1cm4gX19idWlsdGluX2Nvc2goX194KTsgfQoKICB1c2luZyA6OmV4cDsKCgogIGlubGlu ZSBmbG9hdAogIGV4cChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX2V4cGYoX194 KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBleHAobG9uZyBkb3VibGUgX194KQogIHsg cmV0dXJuIF9fYnVpbHRpbl9leHBsKF9feCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9U cD4KICAgIGlubGluZQogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lz X2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZG91YmxlPjo6X190eXBlCiAgICBleHAoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9f YnVpbHRpbl9leHAoX194KTsgfQoKICB1c2luZyA6OmZhYnM7CgoKICBpbmxpbmUgZmxvYXQK ICBmYWJzKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmFic2YoX194KTsgfQoK ICBpbmxpbmUgbG9uZyBkb3VibGUKICBmYWJzKGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVy biBfX2J1aWx0aW5fZmFic2woX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgog ICAgaW5saW5lCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50 ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkb3VibGU+OjpfX3R5cGUKICAgIGZhYnMoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVp bHRpbl9mYWJzKF9feCk7IH0KCiAgdXNpbmcgOjpmbG9vcjsKCgogIGlubGluZSBmbG9hdAog IGZsb29yKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fZmxvb3JmKF9feCk7IH0K CiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZmxvb3IobG9uZyBkb3VibGUgX194KQogIHsgcmV0 dXJuIF9fYnVpbHRpbl9mbG9vcmwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw PgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNf aW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGZsb29yKF9UcCBfX3gpCiAgICB7IHJldHVybiBf X2J1aWx0aW5fZmxvb3IoX194KTsgfQoKICB1c2luZyA6OmZtb2Q7CgoKICBpbmxpbmUgZmxv YXQKICBmbW9kKGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9m bW9kZihfX3gsIF9feSk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZm1vZChsb25nIGRv dWJsZSBfX3gsIGxvbmcgZG91YmxlIF9feSkKICB7IHJldHVybiBfX2J1aWx0aW5fZm1vZGwo X194LCBfX3kpOyB9CgoKICB1c2luZyA6OmZyZXhwOwoKCiAgaW5saW5lIGZsb2F0CiAgZnJl eHAoZmxvYXQgX194LCBpbnQqIF9fZXhwKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mcmV4cGYo X194LCBfX2V4cCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgZnJleHAobG9uZyBkb3Vi bGUgX194LCBpbnQqIF9fZXhwKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9mcmV4cGwoX194LCBf X2V4cCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgdHlw ZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1 ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBl CiAgICBmcmV4cChfVHAgX194LCBpbnQqIF9fZXhwKQogICAgeyByZXR1cm4gX19idWlsdGlu X2ZyZXhwKF9feCwgX19leHApOyB9CgogIHVzaW5nIDo6bGRleHA7CgoKICBpbmxpbmUgZmxv YXQKICBsZGV4cChmbG9hdCBfX3gsIGludCBfX2V4cCkKICB7IHJldHVybiBfX2J1aWx0aW5f bGRleHBmKF9feCwgX19leHApOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIGxkZXhwKGxv bmcgZG91YmxlIF9feCwgaW50IF9fZXhwKQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sZGV4cGwo X194LCBfX2V4cCk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQog ICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6 X192YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6 X190eXBlCiAgICBsZGV4cChfVHAgX194LCBpbnQgX19leHApCiAgICB7IHJldHVybiBfX2J1 aWx0aW5fbGRleHAoX194LCBfX2V4cCk7IH0KCiAgdXNpbmcgOjpsb2c7CgoKICBpbmxpbmUg ZmxvYXQKICBsb2coZmxvYXQgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9sb2dmKF9feCk7 IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgbG9nKGxvbmcgZG91YmxlIF9feCkKICB7IHJl dHVybiBfX2J1aWx0aW5fbG9nbChfX3gpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+ CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19p bnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvdWJsZT46Ol9fdHlwZQogICAgbG9nKF9UcCBfX3gpCiAgICB7IHJldHVybiBfX2J1 aWx0aW5fbG9nKF9feCk7IH0KCiAgdXNpbmcgOjpsb2cxMDsKCgogIGlubGluZSBmbG9hdAog IGxvZzEwKGZsb2F0IF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fbG9nMTBmKF9feCk7IH0K CiAgaW5saW5lIGxvbmcgZG91YmxlCiAgbG9nMTAobG9uZyBkb3VibGUgX194KQogIHsgcmV0 dXJuIF9fYnVpbHRpbl9sb2cxMGwoX194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Rw PgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNf aW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkb3VibGU+OjpfX3R5cGUKICAgIGxvZzEwKF9UcCBfX3gpCiAgICB7IHJldHVybiBf X2J1aWx0aW5fbG9nMTAoX194KTsgfQoKICB1c2luZyA6Om1vZGY7CgoKICBpbmxpbmUgZmxv YXQKICBtb2RmKGZsb2F0IF9feCwgZmxvYXQqIF9faXB0cikKICB7IHJldHVybiBfX2J1aWx0 aW5fbW9kZmYoX194LCBfX2lwdHIpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIG1vZGYo bG9uZyBkb3VibGUgX194LCBsb25nIGRvdWJsZSogX19pcHRyKQogIHsgcmV0dXJuIF9fYnVp bHRpbl9tb2RmbChfX3gsIF9faXB0cik7IH0KCgogIHVzaW5nIDo6cG93OwoKCiAgaW5saW5l IGZsb2F0CiAgcG93KGZsb2F0IF9feCwgZmxvYXQgX195KQogIHsgcmV0dXJuIF9fYnVpbHRp bl9wb3dmKF9feCwgX195KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBwb3cobG9uZyBk b3VibGUgX194LCBsb25nIGRvdWJsZSBfX3kpCiAgeyByZXR1cm4gX19idWlsdGluX3Bvd2wo X194LCBfX3kpOyB9CgoKCgogIGlubGluZSBkb3VibGUKICBwb3coZG91YmxlIF9feCwgaW50 IF9faSkKICB7IHJldHVybiBfX2J1aWx0aW5fcG93aShfX3gsIF9faSk7IH0KCiAgaW5saW5l IGZsb2F0CiAgcG93KGZsb2F0IF9feCwgaW50IF9fbikKICB7IHJldHVybiBfX2J1aWx0aW5f cG93aWYoX194LCBfX24pOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQogIHBvdyhsb25nIGRv dWJsZSBfX3gsIGludCBfX24pCiAgeyByZXR1cm4gX19idWlsdGluX3Bvd2lsKF9feCwgX19u KTsgfQoKCgogIHVzaW5nIDo6c2luOwoKCiAgaW5saW5lIGZsb2F0CiAgc2luKGZsb2F0IF9f eCkKICB7IHJldHVybiBfX2J1aWx0aW5fc2luZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRv dWJsZQogIHNpbihsb25nIGRvdWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3Npbmwo X194KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lCiAgICB0eXBl bmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUK ICAgIHNpbihfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX3NpbihfX3gpOyB9Cgog IHVzaW5nIDo6c2luaDsKCgogIGlubGluZSBmbG9hdAogIHNpbmgoZmxvYXQgX194KQogIHsg cmV0dXJuIF9fYnVpbHRpbl9zaW5oZihfX3gpOyB9CgogIGlubGluZSBsb25nIGRvdWJsZQog IHNpbmgobG9uZyBkb3VibGUgX194KQogIHsgcmV0dXJuIF9fYnVpbHRpbl9zaW5obChfX3gp OyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1l IF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAg c2luaChfVHAgX194KQogICAgeyByZXR1cm4gX19idWlsdGluX3NpbmgoX194KTsgfQoKICB1 c2luZyA6OnNxcnQ7CgoKICBpbmxpbmUgZmxvYXQKICBzcXJ0KGZsb2F0IF9feCkKICB7IHJl dHVybiBfX2J1aWx0aW5fc3FydGYoX194KTsgfQoKICBpbmxpbmUgbG9uZyBkb3VibGUKICBz cXJ0KGxvbmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fc3FydGwoX194KTsg fQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBf X2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGU+OjpfX3R5cGUKICAgIHNx cnQoX1RwIF9feCkKICAgIHsgcmV0dXJuIF9fYnVpbHRpbl9zcXJ0KF9feCk7IH0KCiAgdXNp bmcgOjp0YW47CgoKICBpbmxpbmUgZmxvYXQKICB0YW4oZmxvYXQgX194KQogIHsgcmV0dXJu IF9fYnVpbHRpbl90YW5mKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgdGFuKGxv bmcgZG91YmxlIF9feCkKICB7IHJldHVybiBfX2J1aWx0aW5fdGFubChfX3gpOyB9CgoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4 eDo6X19lbmFibGVfaWY8X19pc19pbnRlZ2VyPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZT46Ol9fdHlwZQogICAgdGFuKF9UcCBf X3gpCiAgICB7IHJldHVybiBfX2J1aWx0aW5fdGFuKF9feCk7IH0KCiAgdXNpbmcgOjp0YW5o OwoKCiAgaW5saW5lIGZsb2F0CiAgdGFuaChmbG9hdCBfX3gpCiAgeyByZXR1cm4gX19idWls dGluX3RhbmhmKF9feCk7IH0KCiAgaW5saW5lIGxvbmcgZG91YmxlCiAgdGFuaChsb25nIGRv dWJsZSBfX3gpCiAgeyByZXR1cm4gX19idWlsdGluX3RhbmhsKF9feCk7IH0KCgogIHRlbXBs YXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZQogICAgdHlwZW5hbWUgX19nbnVfY3h4Ojpf X2VuYWJsZV9pZjxfX2lzX2ludGVnZXI8X1RwPjo6X192YWx1ZSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZG91YmxlPjo6X190eXBlCiAgICB0YW5oKF9UcCBfX3gp CiAgICB7IHJldHVybiBfX2J1aWx0aW5fdGFuaChfX3gpOyB9CiMgMTA1MyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9jbWF0aCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlw ZW5hbWUgX1VwPgogICAgaW5saW5lCiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90 ZV8yPF9UcCwgX1VwPjo6X190eXBlCiAgICBhdGFuMihfVHAgX195LCBfVXAgX194KQogICAg ewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBf VXA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gYXRhbjIoX190eXBlKF9feSksIF9f dHlwZShfX3gpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBf VXA+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1Rw LCBfVXA+OjpfX3R5cGUKICAgIGZtb2QoX1RwIF9feCwgX1VwIF9feSkKICAgIHsKICAgICAg dHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZV8yPF9UcCwgX1VwPjo6X190 eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIGZtb2QoX190eXBlKF9feCksIF9fdHlwZShfX3kp KTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+CiAgICBp bmxpbmUKICAgIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+Ojpf X3R5cGUKICAgIHBvdyhfVHAgX194LCBfVXAgX195KQogICAgewogICAgICB0eXBlZGVmIHR5 cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlXzI8X1RwLCBfVXA+OjpfX3R5cGUgX190eXBl OwogICAgICByZXR1cm4gcG93KF9fdHlwZShfX3gpLCBfX3R5cGUoX195KSk7CiAgICB9CgoK CgoKI3VuZGVmIGZwY2xhc3NpZnkKI3VuZGVmIGlzZmluaXRlCiN1bmRlZiBpc2luZgojdW5k ZWYgaXNuYW4KI3VuZGVmIGlzbm9ybWFsCiN1bmRlZiBzaWduYml0CiN1bmRlZiBpc2dyZWF0 ZXIKI3VuZGVmIGlzZ3JlYXRlcmVxdWFsCiN1bmRlZiBpc2xlc3MKI3VuZGVmIGlzbGVzc2Vx dWFsCiN1bmRlZiBpc2xlc3NncmVhdGVyCiN1bmRlZiBpc3Vub3JkZXJlZAojIDE0MDMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY21hdGgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf VHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2Fy aXRobWV0aWM8X1RwPjo6X192YWx1ZSwKICAgICAgICBpbnQ+OjpfX3R5cGUKICAgIGZwY2xh c3NpZnkoX1RwIF9fZikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6 Ol9fcHJvbW90ZTxfVHA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGlu X2ZwY2xhc3NpZnkoMCwgMSwgNCwKICAgICAgMywgMiwgX190eXBlKF9fZikpOwogICAgfQoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4 OjpfX2VuYWJsZV9pZjxfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZSwKICAgICAgICBp bnQ+OjpfX3R5cGUKICAgIGlzZmluaXRlKF9UcCBfX2YpCiAgICB7CiAgICAgIHR5cGVkZWYg dHlwZW5hbWUgX19nbnVfY3h4OjpfX3Byb21vdGU8X1RwPjo6X190eXBlIF9fdHlwZTsKICAg ICAgcmV0dXJuIF9fYnVpbHRpbl9pc2Zpbml0ZShfX3R5cGUoX19mKSk7CiAgICB9CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f ZW5hYmxlX2lmPF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlLAogICAgICAgIGludD46 Ol9fdHlwZQogICAgaXNpbmYoX1RwIF9fZikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFt ZSBfX2dudV9jeHg6Ol9fcHJvbW90ZTxfVHA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1 cm4gX19idWlsdGluX2lzaW5mKF9fdHlwZShfX2YpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX1RwPgogICAgaW5saW5lIHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8 X19pc19hcml0aG1ldGljPF9UcD46Ol9fdmFsdWUsCiAgICAgICAgaW50Pjo6X190eXBlCiAg ICBpc25hbihfVHAgX19mKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4 eDo6X19wcm9tb3RlPF9UcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBfX2J1aWx0 aW5faXNuYW4oX190eXBlKF9fZikpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+ CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2FyaXRo bWV0aWM8X1RwPjo6X192YWx1ZSwKICAgICAgICBpbnQ+OjpfX3R5cGUKICAgIGlzbm9ybWFs KF9UcCBfX2YpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4OjpfX3By b21vdGU8X1RwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIF9fYnVpbHRpbl9pc25v cm1hbChfX3R5cGUoX19mKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg IGlubGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfYXJpdGhtZXRp YzxfVHA+OjpfX3ZhbHVlLAogICAgICAgIGludD46Ol9fdHlwZQogICAgc2lnbmJpdChfVHAg X19mKQogICAgewogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3Rl PF9UcD46Ol9fdHlwZSBfX3R5cGU7CiAgICAgIHJldHVybiBfX2J1aWx0aW5fc2lnbmJpdChf X3R5cGUoX19mKSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGlu ZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfYXJpdGhtZXRpYzxfVHA+ OjpfX3ZhbHVlLAogICAgICAgIGludD46Ol9fdHlwZQogICAgaXNncmVhdGVyKF9UcCBfX2Yx LCBfVHAgX19mMikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f cHJvbW90ZTxfVHA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lz Z3JlYXRlcihfX3R5cGUoX19mMSksIF9fdHlwZShfX2YyKSk7CiAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxl X2lmPF9faXNfYXJpdGhtZXRpYzxfVHA+OjpfX3ZhbHVlLAogICAgICAgIGludD46Ol9fdHlw ZQogICAgaXNncmVhdGVyZXF1YWwoX1RwIF9fZjEsIF9UcCBfX2YyKQogICAgewogICAgICB0 eXBlZGVmIHR5cGVuYW1lIF9fZ251X2N4eDo6X19wcm9tb3RlPF9UcD46Ol9fdHlwZSBfX3R5 cGU7CiAgICAgIHJldHVybiBfX2J1aWx0aW5faXNncmVhdGVyZXF1YWwoX190eXBlKF9fZjEp LCBfX3R5cGUoX19mMikpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBp bmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2FyaXRobWV0aWM8 X1RwPjo6X192YWx1ZSwKICAgICAgICBpbnQ+OjpfX3R5cGUKICAgIGlzbGVzcyhfVHAgX19m MSwgX1RwIF9fZjIpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19nbnVfY3h4Ojpf X3Byb21vdGU8X1RwPjo6X190eXBlIF9fdHlwZTsKICAgICAgcmV0dXJuIF9fYnVpbHRpbl9p c2xlc3MoX190eXBlKF9fZjEpLCBfX3R5cGUoX19mMikpOwogICAgfQoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9p ZjxfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZSwKICAgICAgICBpbnQ+OjpfX3R5cGUK ICAgIGlzbGVzc2VxdWFsKF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsKICAgICAgdHlwZWRl ZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZTxfVHA+OjpfX3R5cGUgX190eXBlOwog ICAgICByZXR1cm4gX19idWlsdGluX2lzbGVzc2VxdWFsKF9fdHlwZShfX2YxKSwgX190eXBl KF9fZjIpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIHR5 cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19hcml0aG1ldGljPF9UcD46Ol9f dmFsdWUsCiAgICAgICAgaW50Pjo6X190eXBlCiAgICBpc2xlc3NncmVhdGVyKF9UcCBfX2Yx LCBfVHAgX19mMikKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f cHJvbW90ZTxfVHA+OjpfX3R5cGUgX190eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lz bGVzc2dyZWF0ZXIoX190eXBlKF9fZjEpLCBfX3R5cGUoX19mMikpOwogICAgfQoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBpbmxpbmUgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2Vu YWJsZV9pZjxfX2lzX2FyaXRobWV0aWM8X1RwPjo6X192YWx1ZSwKICAgICAgICBpbnQ+Ojpf X3R5cGUKICAgIGlzdW5vcmRlcmVkKF9UcCBfX2YxLCBfVHAgX19mMikKICAgIHsKICAgICAg dHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fcHJvbW90ZTxfVHA+OjpfX3R5cGUgX190 eXBlOwogICAgICByZXR1cm4gX19idWlsdGluX2lzdW5vcmRlcmVkKF9fdHlwZShfX2YxKSwg X190eXBlKF9fZjIpKTsKICAgIH0KIyAzODk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2NtYXRoIiAzCgp9CgoKCgoKfQojIDM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL21h dGguaCIgMiAzCgp1c2luZyBzdGQ6OmFiczsKdXNpbmcgc3RkOjphY29zOwp1c2luZyBzdGQ6 OmFzaW47CnVzaW5nIHN0ZDo6YXRhbjsKdXNpbmcgc3RkOjphdGFuMjsKdXNpbmcgc3RkOjpj b3M7CnVzaW5nIHN0ZDo6c2luOwp1c2luZyBzdGQ6OnRhbjsKdXNpbmcgc3RkOjpjb3NoOwp1 c2luZyBzdGQ6OnNpbmg7CnVzaW5nIHN0ZDo6dGFuaDsKdXNpbmcgc3RkOjpleHA7CnVzaW5n IHN0ZDo6ZnJleHA7CnVzaW5nIHN0ZDo6bGRleHA7CnVzaW5nIHN0ZDo6bG9nOwp1c2luZyBz dGQ6OmxvZzEwOwp1c2luZyBzdGQ6Om1vZGY7CnVzaW5nIHN0ZDo6cG93Owp1c2luZyBzdGQ6 OnNxcnQ7CnVzaW5nIHN0ZDo6Y2VpbDsKdXNpbmcgc3RkOjpmYWJzOwp1c2luZyBzdGQ6OmZs b29yOwp1c2luZyBzdGQ6OmZtb2Q7CgoKdXNpbmcgc3RkOjpmcGNsYXNzaWZ5Owp1c2luZyBz dGQ6OmlzZmluaXRlOwp1c2luZyBzdGQ6OmlzaW5mOwp1c2luZyBzdGQ6OmlzbmFuOwp1c2lu ZyBzdGQ6Omlzbm9ybWFsOwp1c2luZyBzdGQ6OnNpZ25iaXQ7CnVzaW5nIHN0ZDo6aXNncmVh dGVyOwp1c2luZyBzdGQ6OmlzZ3JlYXRlcmVxdWFsOwp1c2luZyBzdGQ6OmlzbGVzczsKdXNp bmcgc3RkOjppc2xlc3NlcXVhbDsKdXNpbmcgc3RkOjppc2xlc3NncmVhdGVyOwp1c2luZyBz dGQ6OmlzdW5vcmRlcmVkOwojIDIyICJleGFtcGxlLmNjIiAyCiMgMSAiL3Vzci9pbmNsdWRl L3N0cmluZy5oIiAxIDMgNAojIDIzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNAojZGVm aW5lIF9TVFJJTkdfSCAxCgojZGVmaW5lIF9fR0xJQkNfSU5URVJOQUxfU1RBUlRJTkdfSEVB REVSX0lNUExFTUVOVEFUSU9OIAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVy LXN0YXJ0LmgiIDEgMyA0CiMgMzEgIi91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0 YXJ0LmgiIDMgNAojdW5kZWYgX19HTElCQ19JTlRFUk5BTF9TVEFSVElOR19IRUFERVJfSU1Q TEVNRU5UQVRJT04KCgoKCgojdW5kZWYgX19HTElCQ19VU0VfTElCX0VYVDIKCgojZGVmaW5l IF9fR0xJQkNfVVNFX0xJQl9FWFQyIDEKIyA2NyAiL3Vzci9pbmNsdWRlL2JpdHMvbGliYy1o ZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VY VAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVCAxCgoKCiN1bmRlZiBf X0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVF9DMlgKCiNkZWZpbmUgX19HTElCQ19VU0Vf SUVDXzYwNTU5X0JGUF9FWFRfQzJYIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1 OV9FWFQKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVDXzYwNTU5X0VYVCAxCiMgOTAgIi91c3Iv aW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0LmgiIDMgNAojdW5kZWYgX19HTElCQ19V U0VfSUVDXzYwNTU5X0ZVTkNTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlf RlVOQ1NfRVhUIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRf QzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFRfQzJYIDEKCgoK CgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9UWVBFU19FWFQKCiNkZWZpbmUgX19H TElCQ19VU0VfSUVDXzYwNTU5X1RZUEVTX0VYVCAxCiMgMjcgIi91c3IvaW5jbHVkZS9zdHJp bmcuaCIgMiAzIDQKCmV4dGVybiAiQyIgewoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2Rl ZmluZSBfX25lZWRfTlVMTCAKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51 eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjM3ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGli L2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMg NAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwK CiNkZWZpbmUgTlVMTCBfX251bGwKIyA0MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0 LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRf TlVMTAojIDM0ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgoKCgojZGVmaW5lIF9f Q09SUkVDVF9JU09fQ1BQX1NUUklOR19IX1BST1RPIAoKCgoKZXh0ZXJuIHZvaWQgKm1lbWNw eSAodm9pZCAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19z cmMsCiAgICAgICBzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25u dWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIHZvaWQgKm1lbW1vdmUgKHZvaWQgKl9fZGVzdCwg Y29uc3Qgdm9pZCAqX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKCmV4dGVybiB2b2lkICptZW1jY3B5 ICh2b2lkICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3Ny YywKICAgICAgICBpbnQgX19jLCBzaXplX3QgX19uKQogICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19f IChfX3dyaXRlX29ubHlfXywgMSwgNCkpKTsKCgoKCmV4dGVybiB2b2lkICptZW1zZXQgKHZv aWQgKl9fcywgaW50IF9fYywgc2l6ZV90IF9fbikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgbWVtY21wIChjb25zdCB2b2lkICpf X3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsKIyA4MCAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJuIGludCBfX21l bWNtcGVxIChjb25zdCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19u KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuICJDKysiCnsKZXh0ZXJuIHZv aWQgKm1lbWNociAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJv dyAoKSBfX2FzbSAoIm1lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNvbnN0IHZvaWQgKm1lbWNo ciAoY29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKQogICAgICB0aHJvdyAo KSBfX2FzbSAoIm1lbWNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1 dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGlu ZV9fKSkgdm9pZCAqCm1lbWNociAodm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSB0 aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9tZW1jaHIgKF9fcywgX19jLCBfX24pOwp9 CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkg X19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgY29uc3Qgdm9pZCAqCm1lbWNociAo Y29uc3Qgdm9pZCAqX19zLCBpbnQgX19jLCBzaXplX3QgX19uKSB0aHJvdyAoKQp7CiAgcmV0 dXJuIF9fYnVpbHRpbl9tZW1jaHIgKF9fcywgX19jLCBfX24pOwp9Cgp9CiMgMTE1ICIvdXNy L2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gIkMrKyIgdm9pZCAqcmF3bWVtY2hyICh2 b2lkICpfX3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJyYXdtZW1jaHIiKSBf X2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CmV4dGVybiAiQysrIiBjb25zdCB2b2lkICpyYXdtZW1jaHIgKGNvbnN0IHZvaWQg Kl9fcywgaW50IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAoInJhd21lbWNociIpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKCgoKCgoKCmV4dGVybiAiQysrIiB2b2lkICptZW1yY2hyICh2b2lkICpfX3MsIGludCBf X2MsIHNpemVfdCBfX24pCiAgICAgIHRocm93ICgpIF9fYXNtICgibWVtcmNociIpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KQogICAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlfXywgMSwg MykpKTsKZXh0ZXJuICJDKysiIGNvbnN0IHZvaWQgKm1lbXJjaHIgKGNvbnN0IHZvaWQgKl9f cywgaW50IF9fYywgc2l6ZV90IF9fbikKICAgICAgdGhyb3cgKCkgX19hc20gKCJtZW1yY2hy IikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpCiAgICAgIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3JlYWRfb25s eV9fLCAxLCAzKSkpOwojIDE0MSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKZXh0ZXJu IGNoYXIgKnN0cmNweSAoY2hhciAqX19yZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9f cmVzdHJpY3QgX19zcmMpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwoKZXh0ZXJuIGNoYXIgKnN0cm5jcHkgKGNoYXIgKl9fcmVzdHJpY3Qg X19kZXN0LAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBf X24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkp OwoKCmV4dGVybiBjaGFyICpzdHJjYXQgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LCBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKCmV4dGVybiBjaGFyICpzdHJuY2F0IChjaGFyICpf X3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywKICAgICAg ICBzaXplX3QgX19uKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDIpKSk7CgoKZXh0ZXJuIGludCBzdHJjbXAgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNo YXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0ZXJuIGludCBzdHJuY21w IChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBzaXplX3QgX19uKQogICAg IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHN0cmNvbGwgKGNvbnN0IGNoYXIg Kl9fczEsIGNvbnN0IGNoYXIgKl9fczIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKZXh0 ZXJuIHNpemVfdCBzdHJ4ZnJtIChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgICAgICAg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90IF9fbikKICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKSBfX2F0dHJpYnV0ZV9fICgoX19h Y2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDMpKSk7CgoKCgoKCmV4dGVybiBpbnQgc3Ry Y29sbF9sIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLCBsb2NhbGVfdCBf X2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKCmV4dGVybiBzaXplX3Qgc3RyeGZy bV9sIChjaGFyICpfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fc3JjLCBzaXplX3QgX19uLAogICAg bG9jYWxlX3QgX19sKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIs IDQpKSkKICAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18s IDEsIDMpKSk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmR1cCAoY29uc3QgY2hhciAqX19zKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gY2hhciAqc3RybmR1cCAoY29u c3QgY2hhciAqX19zdHJpbmcsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CgoKCgojZGVmaW5lIHN0cmR1cGEocykgKF9fZXh0ZW5zaW9uX18gKHsgY29uc3QgY2hhciAq X19vbGQgPSAocyk7IHNpemVfdCBfX2xlbiA9IHN0cmxlbiAoX19vbGQpICsgMTsgY2hhciAq X19uZXcgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhIChfX2xlbik7IChjaGFyICopIG1l bWNweSAoX19uZXcsIF9fb2xkLCBfX2xlbik7IH0pKQojIDIxMSAiL3Vzci9pbmNsdWRlL3N0 cmluZy5oIiAzIDQKI2RlZmluZSBzdHJuZHVwYShzLG4pIChfX2V4dGVuc2lvbl9fICh7IGNv bnN0IGNoYXIgKl9fb2xkID0gKHMpOyBzaXplX3QgX19sZW4gPSBzdHJubGVuIChfX29sZCwg KG4pKTsgY2hhciAqX19uZXcgPSAoY2hhciAqKSBfX2J1aWx0aW5fYWxsb2NhIChfX2xlbiAr IDEpOyBfX25ld1tfX2xlbl0gPSAnXDAnOyAoY2hhciAqKSBtZW1jcHkgKF9fbmV3LCBfX29s ZCwgX19sZW4pOyB9KSkKIyAyMjQgIi91c3IvaW5jbHVkZS9zdHJpbmcuaCIgMyA0CmV4dGVy biAiQysrIgp7CmV4dGVybiBjaGFyICpzdHJjaHIgKGNoYXIgKl9fcywgaW50IF9fYykKICAg ICB0aHJvdyAoKSBfX2FzbSAoInN0cmNociIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0ZXJuIGNvbnN0IGNoYXIg KnN0cmNociAoY29uc3QgY2hhciAqX19zLCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNt ICgic3RyY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgo X19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBj aGFyICoKc3RyY2hyIChjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4g X19idWlsdGluX3N0cmNociAoX19zLCBfX2MpOwp9CgpleHRlcm4gX19pbmxpbmUgX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu bGluZV9fKSkgY29uc3QgY2hhciAqCnN0cmNociAoY29uc3QgY2hhciAqX19zLCBpbnQgX19j KSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9zdHJjaHIgKF9fcywgX19jKTsKfQoK fQoKCgoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqc3RycmNociAoY2hhciAqX19z LCBpbnQgX19jKQogICAgIHRocm93ICgpIF9fYXNtICgic3RycmNociIpIF9fYXR0cmlidXRl X18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKZXh0 ZXJuIGNvbnN0IGNoYXIgKnN0cnJjaHIgKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAg ICB0aHJvdyAoKSBfX2FzbSAoInN0cnJjaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIF9faW5saW5l IF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChf X2dudV9pbmxpbmVfXykpIGNoYXIgKgpzdHJyY2hyIChjaGFyICpfX3MsIGludCBfX2MpIHRo cm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnJjaHIgKF9fcywgX19jKTsKfQoKZXh0 ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0 cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGNvbnN0IGNoYXIgKgpzdHJyY2hyIChjb25z dCBjaGFyICpfX3MsIGludCBfX2MpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0 cnJjaHIgKF9fcywgX19jKTsKfQoKfQojIDI4MSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAz IDQKZXh0ZXJuICJDKysiIGNoYXIgKnN0cmNocm51bCAoY2hhciAqX19zLCBpbnQgX19jKQog ICAgIHRocm93ICgpIF9fYXNtICgic3RyY2hybnVsIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVy ZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gIkMrKyIg Y29uc3QgY2hhciAqc3RyY2hybnVsIChjb25zdCBjaGFyICpfX3MsIGludCBfX2MpCiAgICAg dGhyb3cgKCkgX19hc20gKCJzdHJjaHJudWwiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMjkzICIvdXNyL2luY2x1 ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gc2l6ZV90IHN0cmNzcG4gKGNvbnN0IGNoYXIgKl9f cywgY29uc3QgY2hhciAqX19yZWplY3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4 dGVybiBzaXplX3Qgc3Ryc3BuIChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fYWNj ZXB0KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gIkMrKyIKewpleHRlcm4g Y2hhciAqc3RycGJyayAoY2hhciAqX19zLCBjb25zdCBjaGFyICpfX2FjY2VwdCkKICAgICB0 aHJvdyAoKSBfX2FzbSAoInN0cnBicmsiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBf X2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiBjb25zdCBjaGFy ICpzdHJwYnJrIChjb25zdCBjaGFyICpfX3MsIGNvbnN0IGNoYXIgKl9fYWNjZXB0KQogICAg IHRocm93ICgpIF9fYXNtICgic3RycGJyayIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gX19pbmxp bmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fZ251X2lubGluZV9fKSkgY2hhciAqCnN0cnBicmsgKGNoYXIgKl9fcywgY29uc3QgY2hh ciAqX19hY2NlcHQpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnBicmsgKF9f cywgX19hY2NlcHQpOwp9CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fYWx3 YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgY29uc3Qg Y2hhciAqCnN0cnBicmsgKGNvbnN0IGNoYXIgKl9fcywgY29uc3QgY2hhciAqX19hY2NlcHQp IHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnBicmsgKF9fcywgX19hY2NlcHQp Owp9Cgp9CgoKCgoKCmV4dGVybiAiQysrIgp7CmV4dGVybiBjaGFyICpzdHJzdHIgKGNoYXIg Kl9faGF5c3RhY2ssIGNvbnN0IGNoYXIgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNt ICgic3Ryc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gY29uc3QgY2hhciAqc3Ryc3RyIChjb25z dCBjaGFyICpfX2hheXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAo KSBfX2FzbSAoInN0cnN0ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gX19pbmxpbmUgX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu bGluZV9fKSkgY2hhciAqCnN0cnN0ciAoY2hhciAqX19oYXlzdGFjaywgY29uc3QgY2hhciAq X19uZWVkbGUpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnN0ciAoX19oYXlz dGFjaywgX19uZWVkbGUpOwp9CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9f YWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgY29u c3QgY2hhciAqCnN0cnN0ciAoY29uc3QgY2hhciAqX19oYXlzdGFjaywgY29uc3QgY2hhciAq X19uZWVkbGUpIHRocm93ICgpCnsKICByZXR1cm4gX19idWlsdGluX3N0cnN0ciAoX19oYXlz dGFjaywgX19uZWVkbGUpOwp9Cgp9CgoKCgoKCgpleHRlcm4gY2hhciAqc3RydG9rIChjaGFy ICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2RlbGltKQogICAg IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsKCgoKZXh0ZXJu IGNoYXIgKl9fc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2RlbGltLAogICAgY2hhciAqKl9fcmVzdHJpY3QgX19zYXZlX3B0 cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIsIDMpKSk7 CgpleHRlcm4gY2hhciAqc3RydG9rX3IgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgICAgICAgIGNoYXIgKipfX3Jlc3RyaWN0IF9f c2F2ZV9wdHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgy LCAzKSkpOwoKCgoKCmV4dGVybiAiQysrIiBjaGFyICpzdHJjYXNlc3RyIChjaGFyICpfX2hh eXN0YWNrLCBjb25zdCBjaGFyICpfX25lZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0 cmNhc2VzdHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7CmV4dGVybiAiQysrIiBjb25zdCBjaGFyICpzdHJjYXNl c3RyIChjb25zdCBjaGFyICpfX2hheXN0YWNrLAogICAgICAgICBjb25zdCBjaGFyICpfX25l ZWRsZSkKICAgICB0aHJvdyAoKSBfX2FzbSAoInN0cmNhc2VzdHIiKSBfX2F0dHJpYnV0ZV9f ICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMg Mzg5ICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDMgNApleHRlcm4gdm9pZCAqbWVtbWVtIChj b25zdCB2b2lkICpfX2hheXN0YWNrLCBzaXplX3QgX19oYXlzdGFja2xlbiwKICAgICAgIGNv bnN0IHZvaWQgKl9fbmVlZGxlLCBzaXplX3QgX19uZWVkbGVsZW4pCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9f ICgxLCAzKSkpCiAgICBfX2F0dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX19yZWFkX29ubHlf XywgMSwgMikpKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fcmVhZF9vbmx5 X18sIDMsIDQpKSk7CgoKCmV4dGVybiB2b2lkICpfX21lbXBjcHkgKHZvaWQgKl9fcmVzdHJp Y3QgX19kZXN0LAogICBjb25zdCB2b2lkICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19u KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsK ZXh0ZXJuIHZvaWQgKm1lbXBjcHkgKHZvaWQgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAg IGNvbnN0IHZvaWQgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cg KCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIHNp emVfdCBzdHJsZW4gKGNvbnN0IGNoYXIgKl9fcykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK CgpleHRlcm4gc2l6ZV90IHN0cm5sZW4gKGNvbnN0IGNoYXIgKl9fc3RyaW5nLCBzaXplX3Qg X19tYXhsZW4pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVy cm9yIChpbnQgX19lcnJudW0pIHRocm93ICgpOwojIDQ0NCAiL3Vzci9pbmNsdWRlL3N0cmlu Zy5oIiAzIDQKZXh0ZXJuIGNoYXIgKnN0cmVycm9yX3IgKGludCBfX2Vycm51bSwgY2hhciAq X19idWYsIHNpemVfdCBfX2J1ZmxlbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDIpKSkgX19hdHRyaWJ1dGVfXyAoKF9fYWNjZXNzX18gKF9fd3JpdGVf b25seV9fLCAyLCAzKSkpOwoKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmVycm9yZGVzY19u cCAoaW50IF9fZXJyKSB0aHJvdyAoKTsKCmV4dGVybiBjb25zdCBjaGFyICpzdHJlcnJvcm5h bWVfbnAgKGludCBfX2VycikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGNoYXIgKnN0cmVycm9y X2wgKGludCBfX2Vycm51bSwgbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKCgoKIyAxICIvdXNy L2luY2x1ZGUvc3RyaW5ncy5oIiAxIDMgNAojIDE5ICIvdXNyL2luY2x1ZGUvc3RyaW5ncy5o IiAzIDQKI2RlZmluZSBfU1RSSU5HU19IIDEKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiMg MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRl L3N0ZGRlZi5oIiAxIDMgNAojIDIzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGlu dXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXpl X3QKIyA0MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAv aW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAojIDI0ICIvdXNyL2lu Y2x1ZGUvc3RyaW5ncy5oIiAyIDMgNAoKCgojZGVmaW5lIF9fQ09SUkVDVF9JU09fQ1BQX1NU UklOR1NfSF9QUk9UTyAKCgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGludCBiY21wIChjb25z dCB2b2lkICpfX3MxLCBjb25zdCB2b2lkICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gdm9pZCBiY29weSAoY29uc3Qgdm9pZCAqX19zcmMs IHZvaWQgKl9fZGVzdCwgc2l6ZV90IF9fbikKICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJuIHZvaWQgYnplcm8gKHZvaWQgKl9fcywg c2l6ZV90IF9fbikgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkp OwoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqaW5kZXggKGNoYXIgKl9fcywgaW50 IF9fYykKICAgICB0aHJvdyAoKSBfX2FzbSAoImluZGV4IikgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwpleHRlcm4gY29u c3QgY2hhciAqaW5kZXggKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAgICB0aHJvdyAo KSBfX2FzbSAoImluZGV4IikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0 ZV9fICgoX19hbHdheXNfaW5saW5lX18pKSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5l X18pKSBjaGFyICoKaW5kZXggKGNoYXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkKewogIHJl dHVybiBfX2J1aWx0aW5faW5kZXggKF9fcywgX19jKTsKfQoKZXh0ZXJuIF9faW5saW5lIF9f YXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmlidXRlX18gKChfX2du dV9pbmxpbmVfXykpIGNvbnN0IGNoYXIgKgppbmRleCAoY29uc3QgY2hhciAqX19zLCBpbnQg X19jKSB0aHJvdyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9pbmRleCAoX19zLCBfX2MpOwp9 Cgp9CgoKCgoKCgpleHRlcm4gIkMrKyIKewpleHRlcm4gY2hhciAqcmluZGV4IChjaGFyICpf X3MsIGludCBfX2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJyaW5kZXgiKSBfX2F0dHJpYnV0 ZV9fICgoX19wdXJlX18pKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4 dGVybiBjb25zdCBjaGFyICpyaW5kZXggKGNvbnN0IGNoYXIgKl9fcywgaW50IF9fYykKICAg ICB0aHJvdyAoKSBfX2FzbSAoInJpbmRleCIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gX19pbmxpbmUg X19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fKSkgX19hdHRyaWJ1dGVfXyAoKF9f Z251X2lubGluZV9fKSkgY2hhciAqCnJpbmRleCAoY2hhciAqX19zLCBpbnQgX19jKSB0aHJv dyAoKQp7CiAgcmV0dXJuIF9fYnVpbHRpbl9yaW5kZXggKF9fcywgX19jKTsKfQoKZXh0ZXJu IF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXykpIF9fYXR0cmli dXRlX18gKChfX2dudV9pbmxpbmVfXykpIGNvbnN0IGNoYXIgKgpyaW5kZXggKGNvbnN0IGNo YXIgKl9fcywgaW50IF9fYykgdGhyb3cgKCkKewogIHJldHVybiBfX2J1aWx0aW5fcmluZGV4 IChfX3MsIF9fYyk7Cn0KCn0KIyAxMDQgIi91c3IvaW5jbHVkZS9zdHJpbmdzLmgiIDMgNApl eHRlcm4gaW50IGZmcyAoaW50IF9faSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fY29u c3RfXykpOwoKCgoKCmV4dGVybiBpbnQgZmZzbCAobG9uZyBpbnQgX19sKSB0aHJvdyAoKSBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7Cl9fZXh0ZW5zaW9uX18gZXh0ZXJuIGludCBm ZnNsbCAobG9uZyBsb25nIGludCBfX2xsKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX2NvbnN0X18pKTsKCgoKZXh0ZXJuIGludCBzdHJjYXNlY21wIChjb25zdCBjaGFyICpf X3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRl cm4gaW50IHN0cm5jYXNlY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3My LCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCgoKZXh0ZXJuIGlu dCBzdHJjYXNlY21wX2wgKGNvbnN0IGNoYXIgKl9fczEsIGNvbnN0IGNoYXIgKl9fczIsIGxv Y2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwgMykpKTsKCgoKZXh0ZXJuIGlu dCBzdHJuY2FzZWNtcF9sIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyLAog ICAgIHNpemVfdCBfX24sIGxvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMiwg NCkpKTsKCgp9CiMgNDYzICIvdXNyL2luY2x1ZGUvc3RyaW5nLmgiIDIgMyA0CgoKCmV4dGVy biB2b2lkIGV4cGxpY2l0X2J6ZXJvICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKQogICAgX19hdHRyaWJ1dGVfXyAo KF9fYWNjZXNzX18gKF9fd3JpdGVfb25seV9fLCAxLCAyKSkpOwoKCgpleHRlcm4gY2hhciAq c3Ryc2VwIChjaGFyICoqX19yZXN0cmljdCBfX3N0cmluZ3AsCiAgICAgICBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZGVsaW0pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9f bm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnNpZ25hbCAoaW50IF9f c2lnKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGNvbnN0IGNoYXIgKnNpZ2FiYnJldl9ucCAoaW50 IF9fc2lnKSB0aHJvdyAoKTsKCgpleHRlcm4gY29uc3QgY2hhciAqc2lnZGVzY3JfbnAgKGlu dCBfX3NpZykgdGhyb3cgKCk7CgoKCmV4dGVybiBjaGFyICpfX3N0cGNweSAoY2hhciAqX19y ZXN0cmljdCBfX2Rlc3QsIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwpleHRlcm4gY2hh ciAqc3RwY3B5IChjaGFyICpfX3Jlc3RyaWN0IF9fZGVzdCwgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3NyYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDIpKSk7CgoKCmV4dGVybiBjaGFyICpfX3N0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3Qg X19kZXN0LAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKZXh0 ZXJuIGNoYXIgKnN0cG5jcHkgKGNoYXIgKl9fcmVzdHJpY3QgX19kZXN0LAogICAgICAgIGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX24pCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgoKZXh0ZXJuIGludCBz dHJ2ZXJzY21wIChjb25zdCBjaGFyICpfX3MxLCBjb25zdCBjaGFyICpfX3MyKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gY2hhciAqc3RyZnJ5IChjaGFyICpfX3N0cmlu ZykgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVy biB2b2lkICptZW1mcm9iICh2b2lkICpfX3MsIHNpemVfdCBfX24pIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKQogICAgX19hdHRyaWJ1dGVfXyAoKF9fYWNj ZXNzX18gKF9fcmVhZF93cml0ZV9fLCAxLCAyKSkpOwoKCgoKCgoKZXh0ZXJuICJDKysiIGNo YXIgKmJhc2VuYW1lIChjaGFyICpfX2ZpbGVuYW1lKQogICAgIHRocm93ICgpIF9fYXNtICgi YmFzZW5hbWUiKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CmV4dGVybiAi QysrIiBjb25zdCBjaGFyICpiYXNlbmFtZSAoY29uc3QgY2hhciAqX19maWxlbmFtZSkKICAg ICB0aHJvdyAoKSBfX2FzbSAoImJhc2VuYW1lIikgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxKSkpOwojIDUzOSAiL3Vzci9pbmNsdWRlL3N0cmluZy5oIiAzIDQKfQojIDIzICJl eGFtcGxlLmNjIiAyCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3N0cmVhbSIg MSAzCiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9zdHJlYW0iIDMKI2RlZmlu ZSBfR0xJQkNYWF9JT1NUUkVBTSAxCgogICAgICAgCiMgMzcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvaW9zdHJlYW0iIDMKCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9vc3RyZWFtIiAxIDMKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFt IiAzCiNkZWZpbmUgX0dMSUJDWFhfT1NUUkVBTSAxCgogICAgICAgCiMgMzcgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvb3N0cmVhbSIgMwoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvaW9zIiAxIDMKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3Mi IDMKI2RlZmluZSBfR0xJQkNYWF9JT1MgMQoKICAgICAgIAojIDM3ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2lvcyIgMwoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv aW9zZndkIiAxIDMKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3Nmd2QiIDMK I2RlZmluZSBfR0xJQkNYWF9JT1NGV0QgMQoKICAgICAgIAojIDM3ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2lvc2Z3ZCIgMwoKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvc3RyaW5nZndkLmgiIDEgMwojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvc3RyaW5nZndkLmgiIDMKI2RlZmluZSBfU1RSSU5HRldEX0ggMQoKICAgICAg IAojIDM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RyaW5nZndkLmgiIDMK CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9tZW1vcnlmd2QuaCIgMSAz CiMgNDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9tZW1vcnlmd2QuaCIgMwoj ZGVmaW5lIF9NRU1PUllGV0RfSCAxCgogICAgICAgCiMgNDcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9tZW1vcnlmd2QuaCIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9tZW1vcnlmd2QuaCIgMwogIHRlbXBsYXRlPHR5cGVu YW1lPgogICAgY2xhc3MgYWxsb2NhdG9yOwoKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBhbGxv Y2F0b3I8dm9pZD47CiMgODEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9tZW1v cnlmd2QuaCIgMwoKfQojIDQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3Ry aW5nZndkLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmls aXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgoKICB0ZW1wbGF0ZTxjbGFzcyBfQ2hhclQ+ CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7CgogIHRlbXBsYXRlPD4gc3RydWN0IGNoYXJfdHJh aXRzPGNoYXI+OwoKICB0ZW1wbGF0ZTw+IHN0cnVjdCBjaGFyX3RyYWl0czx3Y2hhcl90PjsK IyA2OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmluZ2Z3ZC5oIiAzCm5h bWVzcGFjZSBfX2N4eDExIHsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgICAgICAgICB0eXBlbmFtZSBf QWxsb2MgPSBhbGxvY2F0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmc7Cgp9 CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZzxjaGFyPiBzdHJpbmc7CgoKICB0eXBlZGVmIGJh c2ljX3N0cmluZzx3Y2hhcl90PiB3c3RyaW5nOwojIDk3ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvc3RyaW5nZndkLmgiIDMKCn0KIyA0MiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9pb3Nmd2QiIDIgMwojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9wb3N0eXBlcy5oIiAxIDMKIyAzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3Bvc3R5cGVzLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9QT1NUWVBFU19IIDEKCiAgICAgICAK IyAzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Bvc3R5cGVzLmgiIDMKCiMg MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jd2NoYXIiIDEgMwojIDM5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2N3Y2hhciIgMwogICAgICAgCiMgNDAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvY3djaGFyIiAzCgoKCgojIDEgIi91c3IvaW5jbHVkZS93Y2hhci5o IiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CiNkZWZpbmUgX1dDSEFS X0ggMQoKI2RlZmluZSBfX0dMSUJDX0lOVEVSTkFMX1NUQVJUSU5HX0hFQURFUl9JTVBMRU1F TlRBVElPTiAKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAx IDMgNAojIDMxICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQK I3VuZGVmIF9fR0xJQkNfSU5URVJOQUxfU1RBUlRJTkdfSEVBREVSX0lNUExFTUVOVEFUSU9O CgoKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0xJQl9FWFQyCgoKI2RlZmluZSBfX0dMSUJDX1VT RV9MSUJfRVhUMiAxCiMgNjcgIi91c3IvaW5jbHVkZS9iaXRzL2xpYmMtaGVhZGVyLXN0YXJ0 LmgiIDMgNAojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQKCiNkZWZpbmUg X19HTElCQ19VU0VfSUVDXzYwNTU5X0JGUF9FWFQgMQoKCgojdW5kZWYgX19HTElCQ19VU0Vf SUVDXzYwNTU5X0JGUF9FWFRfQzJYCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9C RlBfRVhUX0MyWCAxCgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRVhUCgojZGVm aW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9FWFQgMQojIDkwICIvdXNyL2luY2x1ZGUvYml0 cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1 OV9GVU5DU19FWFQKCiNkZWZpbmUgX19HTElCQ19VU0VfSUVDXzYwNTU5X0ZVTkNTX0VYVCAx CgoKCiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUX0MyWAoKI2RlZmlu ZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhUX0MyWCAxCgoKCgoKCiN1bmRlZiBf X0dMSUJDX1VTRV9JRUNfNjA1NTlfVFlQRVNfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNFX0lF Q182MDU1OV9UWVBFU19FWFQgMQojIDI4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMiAzIDQK CgoKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfd2NoYXJfdCAKI2Rl ZmluZSBfX25lZWRfTlVMTCAKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51 eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDEgMyA0CiMgMjM3ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGli L2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMg NAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNo NjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVl ZF93Y2hhcl90CiMgMzk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUv MTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKI2RlZmluZSBOVUxM IF9fbnVsbAojIDQxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0 LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCiMgMzYgIi91 c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAoKI2RlZmluZSBfX25lZWRfX192YV9saXN0IAoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS9zdGRhcmcuaCIgMSAzIDQKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGlu dXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGFyZy5oIiAzIDQKI3VuZGVmIF9fbmVlZF9fX3Zh X2xpc3QKCgoKCiNkZWZpbmUgX19HTlVDX1ZBX0xJU1QgCnR5cGVkZWYgX19idWlsdGluX3Zh X2xpc3QgX19nbnVjX3ZhX2xpc3Q7CiMgMzkgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMg NAoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy93Y2hhci5oIiAxIDMgNAojIDIwICIvdXNyL2lu Y2x1ZGUvYml0cy93Y2hhci5oIiAzIDQKI2RlZmluZSBfQklUU19XQ0hBUl9IIDEKIyAzNCAi L3Vzci9pbmNsdWRlL2JpdHMvd2NoYXIuaCIgMyA0CiNkZWZpbmUgX19XQ0hBUl9NQVggX19X Q0hBUl9NQVhfXwoKCgoKCgoKI2RlZmluZSBfX1dDSEFSX01JTiBfX1dDSEFSX01JTl9fCiMg NDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRz L3R5cGVzL3dpbnRfdC5oIiAxIDMgNAoKI2RlZmluZSBfX3dpbnRfdF9kZWZpbmVkIDEKCgoK CgoKCiNkZWZpbmUgX1dJTlRfVCAxCiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL3dp bnRfdC5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBpbnQgd2ludF90OwojIDQyICIvdXNyL2lu Y2x1ZGUvd2NoYXIuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9tYnN0 YXRlX3QuaCIgMSAzIDQKCiNkZWZpbmUgX19tYnN0YXRlX3RfZGVmaW5lZCAxCgojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL3R5cGVzL19fbWJzdGF0ZV90LmgiIDEgMyA0CgojZGVmaW5lIF9f X19tYnN0YXRlX3RfZGVmaW5lZCAxCiMgMTMgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVzL19f bWJzdGF0ZV90LmgiIDMgNAp0eXBlZGVmIHN0cnVjdAp7CiAgaW50IF9fY291bnQ7CiAgdW5p b24KICB7CiAgICB1bnNpZ25lZCBpbnQgX193Y2g7CiAgICBjaGFyIF9fd2NoYls0XTsKICB9 IF9fdmFsdWU7Cn0gX19tYnN0YXRlX3Q7CiMgNSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMv bWJzdGF0ZV90LmgiIDIgMyA0Cgp0eXBlZGVmIF9fbWJzdGF0ZV90IG1ic3RhdGVfdDsKIyA0 MyAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvX19GSUxFLmgiIDEgMyA0CgojZGVmaW5lIF9fX19GSUxFX2RlZmluZWQgMQoKc3Ry dWN0IF9JT19GSUxFOwp0eXBlZGVmIHN0cnVjdCBfSU9fRklMRSBfX0ZJTEU7CiMgNDQgIi91 c3IvaW5jbHVkZS93Y2hhci5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlw ZXMvRklMRS5oIiAxIDMgNAoKI2RlZmluZSBfX0ZJTEVfZGVmaW5lZCAxCgpzdHJ1Y3QgX0lP X0ZJTEU7CgoKdHlwZWRlZiBzdHJ1Y3QgX0lPX0ZJTEUgRklMRTsKIyA0NyAiL3Vzci9pbmNs dWRlL3djaGFyLmgiIDIgMyA0CgoKCgoKCgojZGVmaW5lIF9fQ09SUkVDVF9JU09fQ1BQX1dD SEFSX0hfUFJPVE8gCgoKCgojZGVmaW5lIFdDSEFSX01JTiBfX1dDSEFSX01JTgojZGVmaW5l IFdDSEFSX01BWCBfX1dDSEFSX01BWAoKCgojZGVmaW5lIFdFT0YgKDB4ZmZmZmZmZmZ1KQoj IDc5ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiAiQyIgewoKCgpzdHJ1Y3Qg dG07CgoKCmV4dGVybiB3Y2hhcl90ICp3Y3NjcHkgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19k ZXN0LAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKQogICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gd2NoYXJf dCAqd2NzbmNweSAod2NoYXJfdCAqX19yZXN0cmljdCBfX2Rlc3QsCiAgICBjb25zdCB3Y2hh cl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gd2NoYXJfdCAqd2Nz Y2F0ICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fZGVzdCwKICAgY29uc3Qgd2NoYXJfdCAqX19y ZXN0cmljdCBfX3NyYykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDEsIDIpKSk7CgpleHRlcm4gd2NoYXJfdCAqd2NzbmNhdCAod2NoYXJfdCAqX19yZXN0 cmljdCBfX2Rlc3QsCiAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjLCBzaXpl X3QgX19uKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MikpKTsKCgpleHRlcm4gaW50IHdjc2NtcCAoY29uc3Qgd2NoYXJfdCAqX19zMSwgY29uc3Qg d2NoYXJfdCAqX19zMikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18p KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgpleHRlcm4gaW50IHdj c25jbXAgKGNvbnN0IHdjaGFyX3QgKl9fczEsIGNvbnN0IHdjaGFyX3QgKl9fczIsIHNpemVf dCBfX24pCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IHdjc2Nhc2Vj bXAgKGNvbnN0IHdjaGFyX3QgKl9fczEsIGNvbnN0IHdjaGFyX3QgKl9fczIpIHRocm93ICgp OwoKCmV4dGVybiBpbnQgd2NzbmNhc2VjbXAgKGNvbnN0IHdjaGFyX3QgKl9fczEsIGNvbnN0 IHdjaGFyX3QgKl9fczIsCiAgIHNpemVfdCBfX24pIHRocm93ICgpOwoKCgpleHRlcm4gaW50 IHdjc2Nhc2VjbXBfbCAoY29uc3Qgd2NoYXJfdCAqX19zMSwgY29uc3Qgd2NoYXJfdCAqX19z MiwKICAgIGxvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgd2NzbmNhc2Vj bXBfbCAoY29uc3Qgd2NoYXJfdCAqX19zMSwgY29uc3Qgd2NoYXJfdCAqX19zMiwKICAgICBz aXplX3QgX19uLCBsb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50IHdj c2NvbGwgKGNvbnN0IHdjaGFyX3QgKl9fczEsIGNvbnN0IHdjaGFyX3QgKl9fczIpIHRocm93 ICgpOwoKCgpleHRlcm4gc2l6ZV90IHdjc3hmcm0gKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19z MSwKICAgICAgICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MyLCBzaXplX3QgX19u KSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiBpbnQgd2NzY29sbF9sIChjb25zdCB3Y2hhcl90 ICpfX3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyLAogICAgICAgIGxvY2FsZV90IF9fbG9jKSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBzaXplX3Qgd2NzeGZybV9sICh3Y2hhcl90ICpfX3MxLCBj b25zdCB3Y2hhcl90ICpfX3MyLAogICAgc2l6ZV90IF9fbiwgbG9jYWxlX3QgX19sb2MpIHRo cm93ICgpOwoKCmV4dGVybiB3Y2hhcl90ICp3Y3NkdXAgKGNvbnN0IHdjaGFyX3QgKl9fcykg dGhyb3cgKCkKICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18g KChfX21hbGxvY19fIChfX2J1aWx0aW5fZnJlZSwgMSkpKTsKCgoKCmV4dGVybiAiQysrIiB3 Y2hhcl90ICp3Y3NjaHIgKHdjaGFyX3QgKl9fd2NzLCB3Y2hhcl90IF9fd2MpCiAgICAgdGhy b3cgKCkgX19hc20gKCJ3Y3NjaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKZXh0 ZXJuICJDKysiIGNvbnN0IHdjaGFyX3QgKndjc2NociAoY29uc3Qgd2NoYXJfdCAqX193Y3Ms IHdjaGFyX3QgX193YykKICAgICB0aHJvdyAoKSBfX2FzbSAoIndjc2NociIpIF9fYXR0cmli dXRlX18gKChfX3B1cmVfXykpOwoKCgoKCgpleHRlcm4gIkMrKyIgd2NoYXJfdCAqd2NzcmNo ciAod2NoYXJfdCAqX193Y3MsIHdjaGFyX3QgX193YykKICAgICB0aHJvdyAoKSBfX2FzbSAo Indjc3JjaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKZXh0ZXJuICJDKysiIGNv bnN0IHdjaGFyX3QgKndjc3JjaHIgKGNvbnN0IHdjaGFyX3QgKl9fd2NzLCB3Y2hhcl90IF9f d2MpCiAgICAgdGhyb3cgKCkgX19hc20gKCJ3Y3NyY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9f cHVyZV9fKSk7CiMgMTgyICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiB3Y2hh cl90ICp3Y3NjaHJudWwgKGNvbnN0IHdjaGFyX3QgKl9fcywgd2NoYXJfdCBfX3djKQogICAg IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwoKCgoKZXh0ZXJuIHNpemVf dCB3Y3Njc3BuIChjb25zdCB3Y2hhcl90ICpfX3djcywgY29uc3Qgd2NoYXJfdCAqX19yZWpl Y3QpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKZXh0ZXJu IHNpemVfdCB3Y3NzcG4gKGNvbnN0IHdjaGFyX3QgKl9fd2NzLCBjb25zdCB3Y2hhcl90ICpf X2FjY2VwdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgpl eHRlcm4gIkMrKyIgd2NoYXJfdCAqd2NzcGJyayAod2NoYXJfdCAqX193Y3MsIGNvbnN0IHdj aGFyX3QgKl9fYWNjZXB0KQogICAgIHRocm93ICgpIF9fYXNtICgid2NzcGJyayIpIF9fYXR0 cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4gIkMrKyIgY29uc3Qgd2NoYXJfdCAqd2Nz cGJyayAoY29uc3Qgd2NoYXJfdCAqX193Y3MsCiAgICAgICAgIGNvbnN0IHdjaGFyX3QgKl9f YWNjZXB0KQogICAgIHRocm93ICgpIF9fYXNtICgid2NzcGJyayIpIF9fYXR0cmlidXRlX18g KChfX3B1cmVfXykpOwoKCgoKCgpleHRlcm4gIkMrKyIgd2NoYXJfdCAqd2Nzc3RyICh3Y2hh cl90ICpfX2hheXN0YWNrLCBjb25zdCB3Y2hhcl90ICpfX25lZWRsZSkKICAgICB0aHJvdyAo KSBfX2FzbSAoIndjc3N0ciIpIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpOwpleHRlcm4g IkMrKyIgY29uc3Qgd2NoYXJfdCAqd2Nzc3RyIChjb25zdCB3Y2hhcl90ICpfX2hheXN0YWNr LAogICAgICAgIGNvbnN0IHdjaGFyX3QgKl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNt ICgid2Nzc3RyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoKCgoKCmV4dGVybiB3 Y2hhcl90ICp3Y3N0b2sgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLAogICBjb25zdCB3Y2hh cl90ICpfX3Jlc3RyaWN0IF9fZGVsaW0sCiAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fcHRy KSB0aHJvdyAoKTsKCgpleHRlcm4gc2l6ZV90IHdjc2xlbiAoY29uc3Qgd2NoYXJfdCAqX19z KSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCmV4dGVybiAiQysr IiB3Y2hhcl90ICp3Y3N3Y3MgKHdjaGFyX3QgKl9faGF5c3RhY2ssIGNvbnN0IHdjaGFyX3Qg Kl9fbmVlZGxlKQogICAgIHRocm93ICgpIF9fYXNtICgid2Nzd2NzIikgX19hdHRyaWJ1dGVf XyAoKF9fcHVyZV9fKSk7CmV4dGVybiAiQysrIiBjb25zdCB3Y2hhcl90ICp3Y3N3Y3MgKGNv bnN0IHdjaGFyX3QgKl9faGF5c3RhY2ssCiAgICAgICAgY29uc3Qgd2NoYXJfdCAqX19uZWVk bGUpCiAgICAgdGhyb3cgKCkgX19hc20gKCJ3Y3N3Y3MiKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKTsKIyAyNDEgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQKZXh0ZXJuIHNpemVf dCB3Y3NubGVuIChjb25zdCB3Y2hhcl90ICpfX3MsIHNpemVfdCBfX21heGxlbikKICAgICB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKCgpleHRlcm4gIkMrKyIg d2NoYXJfdCAqd21lbWNociAod2NoYXJfdCAqX19zLCB3Y2hhcl90IF9fYywgc2l6ZV90IF9f bikKICAgICB0aHJvdyAoKSBfX2FzbSAoIndtZW1jaHIiKSBfX2F0dHJpYnV0ZV9fICgoX19w dXJlX18pKTsKZXh0ZXJuICJDKysiIGNvbnN0IHdjaGFyX3QgKndtZW1jaHIgKGNvbnN0IHdj aGFyX3QgKl9fcywgd2NoYXJfdCBfX2MsCiAgICAgICAgIHNpemVfdCBfX24pCiAgICAgdGhy b3cgKCkgX19hc20gKCJ3bWVtY2hyIikgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CgoK CgoKCmV4dGVybiBpbnQgd21lbWNtcCAoY29uc3Qgd2NoYXJfdCAqX19zMSwgY29uc3Qgd2No YXJfdCAqX19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19wdXJlX18pKTsKCgpleHRlcm4gd2NoYXJfdCAqd21lbWNweSAod2NoYXJfdCAqX19yZXN0 cmljdCBfX3MxLAogICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MyLCBzaXplX3Qg X19uKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHdjaGFyX3QgKndtZW1tb3ZlICh3Y2hhcl90ICpf X3MxLCBjb25zdCB3Y2hhcl90ICpfX3MyLCBzaXplX3QgX19uKQogICAgIHRocm93ICgpOwoK CmV4dGVybiB3Y2hhcl90ICp3bWVtc2V0ICh3Y2hhcl90ICpfX3MsIHdjaGFyX3QgX19jLCBz aXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB3Y2hhcl90ICp3bWVtcGNweSAod2No YXJfdCAqX19yZXN0cmljdCBfX3MxLAogICAgIGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3Qg X19zMiwgc2l6ZV90IF9fbikKICAgICB0aHJvdyAoKTsKCgoKCgpleHRlcm4gd2ludF90IGJ0 b3djIChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB3Y3RvYiAod2ludF90IF9f YykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgbWJzaW5pdCAoY29uc3QgbWJzdGF0ZV90ICpf X3BzKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKTsKCgoKZXh0ZXJuIHNp emVfdCBtYnJ0b3djICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fcHdjLAogICAgICAgICBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbiwKICAgICAgICAgbWJzdGF0ZV90 ICpfX3Jlc3RyaWN0IF9fcCkgdGhyb3cgKCk7CgoKZXh0ZXJuIHNpemVfdCB3Y3J0b21iIChj aGFyICpfX3Jlc3RyaWN0IF9fcywgd2NoYXJfdCBfX3djLAogICAgICAgICBtYnN0YXRlX3Qg Kl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKZXh0ZXJuIHNpemVfdCBfX21icmxlbiAo Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsIHNpemVfdCBfX24sCiAgIG1ic3RhdGVfdCAq X19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKZXh0ZXJuIHNpemVfdCBtYnJsZW4gKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAogICAgICAgIG1ic3RhdGVfdCAq X19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgoKCmV4dGVybiB3aW50X3QgX19idG93 Y19hbGlhcyAoaW50IF9fYykgX19hc20gKCJidG93YyIpOwpleHRlcm4gX19pbmxpbmUgX19h dHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgd2ludF90Cl9fYXR0cmlidXRlX18gKChf X2xlYWZfXykpIGJ0b3djIChpbnQgX19jKSB0aHJvdyAoKQp7IHJldHVybiAoX19idWlsdGlu X2NvbnN0YW50X3AgKF9fYykgJiYgX19jID49ICdcMCcgJiYgX19jIDw9ICdceDdmJwogICA/ ICh3aW50X3QpIF9fYyA6IF9fYnRvd2NfYWxpYXMgKF9fYykpOyB9CgpleHRlcm4gaW50IF9f d2N0b2JfYWxpYXMgKHdpbnRfdCBfX2MpIF9fYXNtICgid2N0b2IiKTsKZXh0ZXJuIF9faW5s aW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9pbmxpbmVfXykpIGludApfX2F0dHJpYnV0ZV9f ICgoX19sZWFmX18pKSB3Y3RvYiAod2ludF90IF9fd2MpIHRocm93ICgpCnsgcmV0dXJuIChf X2J1aWx0aW5fY29uc3RhbnRfcCAoX193YykgJiYgX193YyA+PSBMJ1wwJyAmJiBfX3djIDw9 IEwnXHg3ZicKICAgPyAoaW50KSBfX3djIDogX193Y3RvYl9hbGlhcyAoX193YykpOyB9Cgpl eHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgc2l6ZV90 Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIG1icmxlbiAoY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX3MsIHNpemVfdCBfX24sIG1ic3RhdGVfdCAqX19yZXN0cmljdCBfX3BzKSB0aHJv dyAoKQoKeyByZXR1cm4gKF9fcHMgIT0gX19udWxsCiAgID8gbWJydG93YyAoX19udWxsLCBf X3MsIF9fbiwgX19wcykgOiBfX21icmxlbiAoX19zLCBfX24sIF9fbnVsbCkpOyB9CgoKCgpl eHRlcm4gc2l6ZV90IG1ic3J0b3djcyAod2NoYXJfdCAqX19yZXN0cmljdCBfX2RzdCwKICAg IGNvbnN0IGNoYXIgKipfX3Jlc3RyaWN0IF9fc3JjLCBzaXplX3QgX19sZW4sCiAgICBtYnN0 YXRlX3QgKl9fcmVzdHJpY3QgX19wcykgdGhyb3cgKCk7CgoKCmV4dGVybiBzaXplX3Qgd2Nz cnRvbWJzIChjaGFyICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgY29uc3Qgd2NoYXJfdCAqKl9f cmVzdHJpY3QgX19zcmMsIHNpemVfdCBfX2xlbiwKICAgIG1ic3RhdGVfdCAqX19yZXN0cmlj dCBfX3BzKSB0aHJvdyAoKTsKCgoKCgpleHRlcm4gc2l6ZV90IG1ic25ydG93Y3MgKHdjaGFy X3QgKl9fcmVzdHJpY3QgX19kc3QsCiAgICAgY29uc3QgY2hhciAqKl9fcmVzdHJpY3QgX19z cmMsIHNpemVfdCBfX25tYywKICAgICBzaXplX3QgX19sZW4sIG1ic3RhdGVfdCAqX19yZXN0 cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHNpemVfdCB3Y3NucnRvbWJzIChjaGFy ICpfX3Jlc3RyaWN0IF9fZHN0LAogICAgIGNvbnN0IHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9f c3JjLAogICAgIHNpemVfdCBfX253Yywgc2l6ZV90IF9fbGVuLAogICAgIG1ic3RhdGVfdCAq X19yZXN0cmljdCBfX3BzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCB3Y3dpZHRoICh3 Y2hhcl90IF9fYykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgd2Nzd2lkdGggKGNvbnN0IHdj aGFyX3QgKl9fcywgc2l6ZV90IF9fbikgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGRvdWJsZSB3 Y3N0b2QgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgIHdjaGFy X3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGZsb2F0IHdj c3RvZiAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICB3Y2hhcl90 ICoqX19yZXN0cmljdCBfX2VuZHB0cikgdGhyb3cgKCk7CmV4dGVybiBsb25nIGRvdWJsZSB3 Y3N0b2xkIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIHdjaGFy X3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKIyAzOTcgIi91c3IvaW5jbHVk ZS93Y2hhci5oIiAzIDQKZXh0ZXJuIF9GbG9hdDMyIHdjc3RvZjMyIChjb25zdCB3Y2hhcl90 ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0 cikgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQ2NCB3Y3N0b2Y2NCAoY29uc3Qgd2NoYXJf dCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRw dHIpIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0MTI4IHdjc3RvZjEyOCAoY29uc3Qgd2No YXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBf X2VuZHB0cikgdGhyb3cgKCk7CgoKCmV4dGVybiBfRmxvYXQzMnggd2NzdG9mMzJ4IChjb25z dCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgIHdjaGFyX3QgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0eCB3Y3N0b2Y2NHgg KGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgd2NoYXJfdCAqKl9f cmVzdHJpY3QgX19lbmRwdHIpIHRocm93ICgpOwojIDQyOSAiL3Vzci9pbmNsdWRlL3djaGFy LmgiIDMgNApleHRlcm4gbG9uZyBpbnQgd2NzdG9sIChjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry aWN0IF9fbnB0ciwKICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsIGludCBfX2Jh c2UpIHRocm93ICgpOwoKCgpleHRlcm4gdW5zaWduZWQgbG9uZyBpbnQgd2NzdG91bCAoY29u c3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIsCiAgICAgIHdjaGFyX3QgKipfX3Jlc3Ry aWN0IF9fZW5kcHRyLCBpbnQgX19iYXNlKQogICAgIHRocm93ICgpOwoKCgoKX19leHRlbnNp b25fXwpleHRlcm4gbG9uZyBsb25nIGludCB3Y3N0b2xsIChjb25zdCB3Y2hhcl90ICpfX3Jl c3RyaWN0IF9fbnB0ciwKICAgICAgICAgd2NoYXJfdCAqKl9fcmVzdHJpY3QgX19lbmRwdHIs IGludCBfX2Jhc2UpCiAgICAgdGhyb3cgKCk7CgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIHVu c2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91bGwgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJp Y3QgX19ucHRyLAogICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLAogICAgIGlu dCBfX2Jhc2UpIHRocm93ICgpOwoKCgoKCl9fZXh0ZW5zaW9uX18KZXh0ZXJuIGxvbmcgbG9u ZyBpbnQgd2NzdG9xIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAg ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwgaW50IF9fYmFzZSkKICAgICB0aHJv dyAoKTsKCgoKX19leHRlbnNpb25fXwpleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCB3 Y3N0b3VxIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgICB3 Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgICBpbnQgX19iYXNlKSB0 aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGxvbmcgaW50IHdjc3RvbF9sIChjb25zdCB3Y2hhcl90 ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0 ciwgaW50IF9fYmFzZSwKICAgICBsb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpleHRlcm4g dW5zaWduZWQgbG9uZyBpbnQgd2NzdG91bF9sIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0 IF9fbnB0ciwKICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAg ICBpbnQgX19iYXNlLCBsb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgpfX2V4dGVuc2lvbl9f CmV4dGVybiBsb25nIGxvbmcgaW50IHdjc3RvbGxfbCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0 cmljdCBfX25wdHIsCiAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgIGlu dCBfX2Jhc2UsIGxvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKCl9fZXh0ZW5zaW9uX18KZXh0 ZXJuIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgd2NzdG91bGxfbCAoY29uc3Qgd2NoYXJfdCAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0 ciwKICAgICAgIGludCBfX2Jhc2UsIGxvY2FsZV90IF9fbG9jKQogICAgIHRocm93ICgpOwoK ZXh0ZXJuIGRvdWJsZSB3Y3N0b2RfbCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25w dHIsCiAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5kcHRyLCBsb2NhbGVfdCBfX2xvYykK ICAgICB0aHJvdyAoKTsKCmV4dGVybiBmbG9hdCB3Y3N0b2ZfbCAoY29uc3Qgd2NoYXJfdCAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5k cHRyLCBsb2NhbGVfdCBfX2xvYykKICAgICB0aHJvdyAoKTsKCmV4dGVybiBsb25nIGRvdWJs ZSB3Y3N0b2xkX2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAg ICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAgbG9jYWxlX3QgX19s b2MpIHRocm93ICgpOwojIDUxMiAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4g X0Zsb2F0MzIgd2NzdG9mMzJfbCAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX25wdHIs CiAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgIGxvY2FsZV90 IF9fbG9jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0IHdjc3RvZjY0X2wgKGNvbnN0 IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19ucHRyLAogICAgICAgd2NoYXJfdCAqKl9fcmVzdHJp Y3QgX19lbmRwdHIsCiAgICAgICBsb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CgoKCmV4dGVy biBfRmxvYXQxMjggd2NzdG9mMTI4X2wgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19u cHRyLAogICAgICAgICB3Y2hhcl90ICoqX19yZXN0cmljdCBfX2VuZHB0ciwKICAgICAgICAg bG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpleHRlcm4gX0Zsb2F0MzJ4IHdjc3RvZjMy eF9sIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fbnB0ciwKICAgICAgICAgd2NoYXJf dCAqKl9fcmVzdHJpY3QgX19lbmRwdHIsCiAgICAgICAgIGxvY2FsZV90IF9fbG9jKSB0aHJv dyAoKTsKCgoKZXh0ZXJuIF9GbG9hdDY0eCB3Y3N0b2Y2NHhfbCAoY29uc3Qgd2NoYXJfdCAq X19yZXN0cmljdCBfX25wdHIsCiAgICAgICAgIHdjaGFyX3QgKipfX3Jlc3RyaWN0IF9fZW5k cHRyLAogICAgICAgICBsb2NhbGVfdCBfX2xvYykgdGhyb3cgKCk7CiMgNTUyICIvdXNyL2lu Y2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiB3Y2hhcl90ICp3Y3BjcHkgKHdjaGFyX3QgKl9f cmVzdHJpY3QgX19kZXN0LAogICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fc3JjKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIHdjaGFyX3QgKndjcG5jcHkgKHdjaGFyX3QgKl9fcmVzdHJp Y3QgX19kZXN0LAogICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3NyYywgc2l6ZV90 IF9fbikKICAgICB0aHJvdyAoKTsKIyA1NzYgIi91c3IvaW5jbHVkZS93Y2hhci5oIiAzIDQK I2RlZmluZSBfX2F0dHJfZGVhbGxvY19mY2xvc2UgCgoKCgpleHRlcm4gX19GSUxFICpvcGVu X3dtZW1zdHJlYW0gKHdjaGFyX3QgKipfX2J1ZmxvYywgc2l6ZV90ICpfX3NpemVsb2MpIHRo cm93ICgpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSA7CgoKCgoKZXh0ZXJuIGlu dCBmd2lkZSAoX19GSUxFICpfX2ZwLCBpbnQgX19tb2RlKSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGludCBmd3ByaW50ZiAoX19GSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICAg Y29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoKCmV4 dGVybiBpbnQgd3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zvcm1hdCwg Li4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKCmV4dGVybiBpbnQgc3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3Qg X19zLCBzaXplX3QgX19uLAogICAgICAgY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX2Zv cm1hdCwgLi4uKQogICAgIHRocm93ICgpIDsKCgoKCgpleHRlcm4gaW50IHZmd3ByaW50ZiAo X19GSUxFICpfX3Jlc3RyaWN0IF9fcywKICAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3Ry aWN0IF9fZm9ybWF0LAogICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCgoK CmV4dGVybiBpbnQgdndwcmludGYgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3Jt YXQsCiAgICAgICBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKZXh0ZXJuIGludCB2 c3dwcmludGYgKHdjaGFyX3QgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19uLAogICAgICAg IGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgICAgX19nbnVjX3Zh X2xpc3QgX19hcmcpCiAgICAgdGhyb3cgKCkgOwoKCgoKCgpleHRlcm4gaW50IGZ3c2NhbmYg KF9fRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICAgY29uc3Qgd2NoYXJfdCAqX19y ZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoKZXh0ZXJuIGludCB3c2NhbmYgKGNv bnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCmV4dGVybiBp bnQgc3dzY2FuZiAoY29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MsCiAgICAgIGNvbnN0 IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikKICAgICB0aHJvdyAoKSA7CiMg Njg4ICIvdXNyL2luY2x1ZGUvd2NoYXIuaCIgMyA0CmV4dGVybiBpbnQgdmZ3c2NhbmYgKF9f RklMRSAqX19yZXN0cmljdCBfX3MsCiAgICAgICBjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0 IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgoKCgpleHRl cm4gaW50IHZ3c2NhbmYgKGNvbnN0IHdjaGFyX3QgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAg ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKZXh0ZXJuIGludCB2c3dzY2FuZiAo Y29uc3Qgd2NoYXJfdCAqX19yZXN0cmljdCBfX3MsCiAgICAgICBjb25zdCB3Y2hhcl90ICpf X3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAg dGhyb3cgKCkgOwojIDc0NCAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2lu dF90IGZnZXR3YyAoX19GSUxFICpfX3N0cmVhbSk7CmV4dGVybiB3aW50X3QgZ2V0d2MgKF9f RklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiB3aW50X3QgZ2V0d2NoYXIgKHZvaWQpOwoK CgoKCgpleHRlcm4gd2ludF90IGZwdXR3YyAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3Ry ZWFtKTsKZXh0ZXJuIHdpbnRfdCBwdXR3YyAod2NoYXJfdCBfX3djLCBfX0ZJTEUgKl9fc3Ry ZWFtKTsKCgoKCgpleHRlcm4gd2ludF90IHB1dHdjaGFyICh3Y2hhcl90IF9fd2MpOwoKCgoK CgoKZXh0ZXJuIHdjaGFyX3QgKmZnZXR3cyAod2NoYXJfdCAqX19yZXN0cmljdCBfX3dzLCBp bnQgX19uLAogICBfX0ZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pOwoKCgoKCmV4dGVybiBp bnQgZnB1dHdzIChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fd3MsCiAgICAgX19GSUxF ICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgoKZXh0ZXJuIHdpbnRfdCB1bmdldHdjICh3 aW50X3QgX193YywgX19GSUxFICpfX3N0cmVhbSk7CiMgNzk5ICIvdXNyL2luY2x1ZGUvd2No YXIuaCIgMyA0CmV4dGVybiB3aW50X3QgZ2V0d2NfdW5sb2NrZWQgKF9fRklMRSAqX19zdHJl YW0pOwpleHRlcm4gd2ludF90IGdldHdjaGFyX3VubG9ja2VkICh2b2lkKTsKCgoKCgoKCmV4 dGVybiB3aW50X3QgZmdldHdjX3VubG9ja2VkIChfX0ZJTEUgKl9fc3RyZWFtKTsKCgoKCgoK CmV4dGVybiB3aW50X3QgZnB1dHdjX3VubG9ja2VkICh3Y2hhcl90IF9fd2MsIF9fRklMRSAq X19zdHJlYW0pOwojIDgyNSAiL3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2lu dF90IHB1dHdjX3VubG9ja2VkICh3Y2hhcl90IF9fd2MsIF9fRklMRSAqX19zdHJlYW0pOwpl eHRlcm4gd2ludF90IHB1dHdjaGFyX3VubG9ja2VkICh3Y2hhcl90IF9fd2MpOwojIDgzNSAi L3Vzci9pbmNsdWRlL3djaGFyLmgiIDMgNApleHRlcm4gd2NoYXJfdCAqZmdldHdzX3VubG9j a2VkICh3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fd3MsIGludCBfX24sCiAgICAgX19GSUxFICpf X3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHdzX3VubG9ja2Vk IChjb25zdCB3Y2hhcl90ICpfX3Jlc3RyaWN0IF9fd3MsCiAgICAgICBfX0ZJTEUgKl9fcmVz dHJpY3QgX19zdHJlYW0pOwoKCgoKCgpleHRlcm4gc2l6ZV90IHdjc2Z0aW1lICh3Y2hhcl90 ICpfX3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgY29uc3Qgd2NoYXJfdCAq X19yZXN0cmljdCBfX2Zvcm1hdCwKICAgY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9f dHApIHRocm93ICgpOwoKCgoKZXh0ZXJuIHNpemVfdCB3Y3NmdGltZV9sICh3Y2hhcl90ICpf X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgICBjb25zdCB3Y2hhcl90ICpf X3Jlc3RyaWN0IF9fZm9ybWF0LAogICAgIGNvbnN0IHN0cnVjdCB0bSAqX19yZXN0cmljdCBf X3RwLAogICAgIGxvY2FsZV90IF9fbG9jKSB0aHJvdyAoKTsKIyA4NzUgIi91c3IvaW5jbHVk ZS93Y2hhci5oIiAzIDQKfQojIDQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2N3Y2hh ciIgMiAzCgoKCiNkZWZpbmUgX0dMSUJDWFhfQ1dDSEFSIDEKIyA2MiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9jd2NoYXIiIDMKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjptYnN0 YXRlX3Q7Cn0KCgojdW5kZWYgYnRvd2MKI3VuZGVmIGZnZXR3YwojdW5kZWYgZmdldHdzCiN1 bmRlZiBmcHV0d2MKI3VuZGVmIGZwdXR3cwojdW5kZWYgZndpZGUKI3VuZGVmIGZ3cHJpbnRm CiN1bmRlZiBmd3NjYW5mCiN1bmRlZiBnZXR3YwojdW5kZWYgZ2V0d2NoYXIKI3VuZGVmIG1i cmxlbgojdW5kZWYgbWJydG93YwojdW5kZWYgbWJzaW5pdAojdW5kZWYgbWJzcnRvd2NzCiN1 bmRlZiBwdXR3YwojdW5kZWYgcHV0d2NoYXIKI3VuZGVmIHN3cHJpbnRmCiN1bmRlZiBzd3Nj YW5mCiN1bmRlZiB1bmdldHdjCiN1bmRlZiB2ZndwcmludGYKCiN1bmRlZiB2ZndzY2FuZgoK I3VuZGVmIHZzd3ByaW50ZgoKI3VuZGVmIHZzd3NjYW5mCgojdW5kZWYgdndwcmludGYKCiN1 bmRlZiB2d3NjYW5mCgojdW5kZWYgd2NydG9tYgojdW5kZWYgd2NzY2F0CiN1bmRlZiB3Y3Nj aHIKI3VuZGVmIHdjc2NtcAojdW5kZWYgd2NzY29sbAojdW5kZWYgd2NzY3B5CiN1bmRlZiB3 Y3Njc3BuCiN1bmRlZiB3Y3NmdGltZQojdW5kZWYgd2NzbGVuCiN1bmRlZiB3Y3NuY2F0CiN1 bmRlZiB3Y3NuY21wCiN1bmRlZiB3Y3NuY3B5CiN1bmRlZiB3Y3NwYnJrCiN1bmRlZiB3Y3Ny Y2hyCiN1bmRlZiB3Y3NydG9tYnMKI3VuZGVmIHdjc3NwbgojdW5kZWYgd2Nzc3RyCiN1bmRl ZiB3Y3N0b2QKCiN1bmRlZiB3Y3N0b2YKCiN1bmRlZiB3Y3N0b2sKI3VuZGVmIHdjc3RvbAoj dW5kZWYgd2NzdG91bAojdW5kZWYgd2NzeGZybQojdW5kZWYgd2N0b2IKI3VuZGVmIHdtZW1j aHIKI3VuZGVmIHdtZW1jbXAKI3VuZGVmIHdtZW1jcHkKI3VuZGVmIHdtZW1tb3ZlCiN1bmRl ZiB3bWVtc2V0CiN1bmRlZiB3cHJpbnRmCiN1bmRlZiB3c2NhbmYKCgoKZXh0ZXJuICJDKysi CnsKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZh dWx0IikpKQp7CgoKICB1c2luZyA6OndpbnRfdDsKCiAgdXNpbmcgOjpidG93YzsKICB1c2lu ZyA6OmZnZXR3YzsKICB1c2luZyA6OmZnZXR3czsKICB1c2luZyA6OmZwdXR3YzsKICB1c2lu ZyA6OmZwdXR3czsKICB1c2luZyA6OmZ3aWRlOwogIHVzaW5nIDo6ZndwcmludGY7CiAgdXNp bmcgOjpmd3NjYW5mOwogIHVzaW5nIDo6Z2V0d2M7CiAgdXNpbmcgOjpnZXR3Y2hhcjsKICB1 c2luZyA6Om1icmxlbjsKICB1c2luZyA6Om1icnRvd2M7CiAgdXNpbmcgOjptYnNpbml0Owog IHVzaW5nIDo6bWJzcnRvd2NzOwogIHVzaW5nIDo6cHV0d2M7CiAgdXNpbmcgOjpwdXR3Y2hh cjsKCiAgdXNpbmcgOjpzd3ByaW50ZjsKCiAgdXNpbmcgOjpzd3NjYW5mOwogIHVzaW5nIDo6 dW5nZXR3YzsKICB1c2luZyA6OnZmd3ByaW50ZjsKCiAgdXNpbmcgOjp2ZndzY2FuZjsKCgog IHVzaW5nIDo6dnN3cHJpbnRmOwoKCiAgdXNpbmcgOjp2c3dzY2FuZjsKCiAgdXNpbmcgOjp2 d3ByaW50ZjsKCiAgdXNpbmcgOjp2d3NjYW5mOwoKICB1c2luZyA6OndjcnRvbWI7CiAgdXNp bmcgOjp3Y3NjYXQ7CiAgdXNpbmcgOjp3Y3NjbXA7CiAgdXNpbmcgOjp3Y3Njb2xsOwogIHVz aW5nIDo6d2NzY3B5OwogIHVzaW5nIDo6d2NzY3NwbjsKICB1c2luZyA6Ondjc2Z0aW1lOwog IHVzaW5nIDo6d2NzbGVuOwogIHVzaW5nIDo6d2NzbmNhdDsKICB1c2luZyA6Ondjc25jbXA7 CiAgdXNpbmcgOjp3Y3NuY3B5OwogIHVzaW5nIDo6d2NzcnRvbWJzOwogIHVzaW5nIDo6d2Nz c3BuOwogIHVzaW5nIDo6d2NzdG9kOwoKICB1c2luZyA6Ondjc3RvZjsKCiAgdXNpbmcgOjp3 Y3N0b2s7CiAgdXNpbmcgOjp3Y3N0b2w7CiAgdXNpbmcgOjp3Y3N0b3VsOwogIHVzaW5nIDo6 d2NzeGZybTsKICB1c2luZyA6OndjdG9iOwogIHVzaW5nIDo6d21lbWNtcDsKICB1c2luZyA6 OndtZW1jcHk7CiAgdXNpbmcgOjp3bWVtbW92ZTsKICB1c2luZyA6OndtZW1zZXQ7CiAgdXNp bmcgOjp3cHJpbnRmOwogIHVzaW5nIDo6d3NjYW5mOwogIHVzaW5nIDo6d2NzY2hyOwogIHVz aW5nIDo6d2NzcGJyazsKICB1c2luZyA6Ondjc3JjaHI7CiAgdXNpbmcgOjp3Y3NzdHI7CiAg dXNpbmcgOjp3bWVtY2hyOwojIDIzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jd2No YXIiIDMKCn0KfQoKCgojdW5kZWYgd2NzdG9sZAojdW5kZWYgd2NzdG9sbAojdW5kZWYgd2Nz dG91bGwKCm5hbWVzcGFjZSBfX2dudV9jeHgKewoKCgoKCiAgdXNpbmcgOjp3Y3N0b2xkOwoj IDI2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jd2NoYXIiIDMKICB1c2luZyA6Ondj c3RvbGw7CiAgdXNpbmcgOjp3Y3N0b3VsbDsKCn0KCm5hbWVzcGFjZSBzdGQKewogIHVzaW5n IDo6X19nbnVfY3h4Ojp3Y3N0b2xkOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp3Y3N0b2xsOwog IHVzaW5nIDo6X19nbnVfY3h4Ojp3Y3N0b3VsbDsKfQojIDQxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvcG9zdHlwZXMuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNjIgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9wb3N0eXBlcy5oIiAzCiAgdHlwZWRlZiBsb25nIGlu dCBzdHJlYW1vZmY7CgoKCgoKICB0eXBlZGVmIHB0cmRpZmZfdCBzdHJlYW1zaXplOwojIDgx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcG9zdHlwZXMuaCIgMwogIHRlbXBs YXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBjbGFzcyBmcG9zCiAgICB7CiAgICBwcml2YXRl OgogICAgICBzdHJlYW1vZmYgX01fb2ZmOwogICAgICBfU3RhdGVUIF9NX3N0YXRlOwoKICAg IHB1YmxpYzoKCgoKCiAgICAgIGZwb3MoKQogICAgICA6IF9NX29mZigwKSwgX01fc3RhdGUo KSB7IH0KIyAxMDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9wb3N0eXBlcy5o IiAzCiAgICAgIGZwb3Moc3RyZWFtb2ZmIF9fb2ZmKQogICAgICA6IF9NX29mZihfX29mZiks IF9NX3N0YXRlKCkgeyB9CiMgMTEzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv cG9zdHlwZXMuaCIgMwogICAgICBvcGVyYXRvciBzdHJlYW1vZmYoKSBjb25zdCB7IHJldHVy biBfTV9vZmY7IH0KCgogICAgICB2b2lkCiAgICAgIHN0YXRlKF9TdGF0ZVQgX19zdCkKICAg ICAgeyBfTV9zdGF0ZSA9IF9fc3Q7IH0KCgogICAgICBfU3RhdGVUCiAgICAgIHN0YXRlKCkg Y29uc3QKICAgICAgeyByZXR1cm4gX01fc3RhdGU7IH0KCgoKCgogICAgICBmcG9zJgogICAg ICBvcGVyYXRvcis9KHN0cmVhbW9mZiBfX29mZikKICAgICAgewogX01fb2ZmICs9IF9fb2Zm OwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoKICAgICAgZnBvcyYKICAgICAgb3BlcmF0 b3ItPShzdHJlYW1vZmYgX19vZmYpCiAgICAgIHsKIF9NX29mZiAtPSBfX29mZjsKIHJldHVy biAqdGhpczsKICAgICAgfQoKCgoKCgoKICAgICAgZnBvcwogICAgICBvcGVyYXRvcisoc3Ry ZWFtb2ZmIF9fb2ZmKSBjb25zdAogICAgICB7CiBmcG9zIF9fcG9zKCp0aGlzKTsKIF9fcG9z ICs9IF9fb2ZmOwogcmV0dXJuIF9fcG9zOwogICAgICB9CgoKCgoKCgogICAgICBmcG9zCiAg ICAgIG9wZXJhdG9yLShzdHJlYW1vZmYgX19vZmYpIGNvbnN0CiAgICAgIHsKIGZwb3MgX19w b3MoKnRoaXMpOwogX19wb3MgLT0gX19vZmY7CiByZXR1cm4gX19wb3M7CiAgICAgIH0KCgoK CgoKICAgICAgc3RyZWFtb2ZmCiAgICAgIG9wZXJhdG9yLShjb25zdCBmcG9zJiBfX290aGVy KSBjb25zdAogICAgICB7IHJldHVybiBfTV9vZmYgLSBfX290aGVyLl9NX29mZjsgfQogICAg fTsKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfU3RhdGVUPgogICAgaW5saW5lIGJvb2wK ICAgIG9wZXJhdG9yPT0oY29uc3QgZnBvczxfU3RhdGVUPiYgX19saHMsIGNvbnN0IGZwb3M8 X1N0YXRlVD4mIF9fcmhzKQogICAgeyByZXR1cm4gc3RyZWFtb2ZmKF9fbGhzKSA9PSBzdHJl YW1vZmYoX19yaHMpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdGF0ZVQ+CiAgICBpbmxp bmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBmcG9zPF9TdGF0ZVQ+JiBfX2xocywgY29u c3QgZnBvczxfU3RhdGVUPiYgX19yaHMpCiAgICB7IHJldHVybiBzdHJlYW1vZmYoX19saHMp ICE9IHN0cmVhbW9mZihfX3Jocyk7IH0KCgoKCgogIHR5cGVkZWYgZnBvczxtYnN0YXRlX3Q+ IHN0cmVhbXBvczsKCiAgdHlwZWRlZiBmcG9zPG1ic3RhdGVfdD4gd3N0cmVhbXBvczsKIyAy MjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9wb3N0eXBlcy5oIiAzCgp9CiMg NDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9zZndkIiAyIDMKCm5hbWVzcGFjZSBz dGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA3 NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3Nmd2QiIDMKICBjbGFzcyBpb3NfYmFz ZTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh cl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pb3M7CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4g PgogICAgY2xhc3MgYmFzaWNfc3RyZWFtYnVmOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hhclQ+ID4KICAgIGNsYXNz IGJhc2ljX2lzdHJlYW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfb3N0cmVh bTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh cl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19pb3N0cmVhbTsKCgpuYW1lc3Bh Y2UgX19jeHgxMSB7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry YWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4sCiAgICAgdHlwZW5hbWUgX0FsbG9jID0gYWxs b2NhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgYmFzaWNfc3RyaW5nYnVmOwoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hh clQ+LAogICAgdHlwZW5hbWUgX0FsbG9jID0gYWxsb2NhdG9yPF9DaGFyVD4gPgogICAgY2xh c3MgYmFzaWNfaXN0cmluZ3N0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0 eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiwKICAgIHR5cGVuYW1lIF9B bGxvYyA9IGFsbG9jYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIGJhc2ljX29zdHJpbmdzdHJl YW07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNo YXJfdHJhaXRzPF9DaGFyVD4sCiAgICB0eXBlbmFtZSBfQWxsb2MgPSBhbGxvY2F0b3I8X0No YXJUPiA+CiAgICBjbGFzcyBiYXNpY19zdHJpbmdzdHJlYW07Cgp9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4g PgogICAgY2xhc3MgYmFzaWNfZmlsZWJ1ZjsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBi YXNpY19pZnN0cmVhbTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzID0gY2hhcl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19vZnN0cmVh bTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzID0gY2hh cl90cmFpdHM8X0NoYXJUPiA+CiAgICBjbGFzcyBiYXNpY19mc3RyZWFtOwoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMgPSBjaGFyX3RyYWl0czxfQ2hh clQ+ID4KICAgIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cyA9IGNoYXJfdHJhaXRzPF9DaGFyVD4gPgog ICAgY2xhc3Mgb3N0cmVhbWJ1Zl9pdGVyYXRvcjsKCgoKICB0eXBlZGVmIGJhc2ljX2lvczxj aGFyPiBpb3M7CgoKICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiBzdHJlYW1idWY7 CgoKICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08Y2hhcj4gaXN0cmVhbTsKCgogIHR5cGVkZWYg YmFzaWNfb3N0cmVhbTxjaGFyPiBvc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19pb3N0cmVh bTxjaGFyPiBpb3N0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPGNoYXI+IHN0 cmluZ2J1ZjsKCgogIHR5cGVkZWYgYmFzaWNfaXN0cmluZ3N0cmVhbTxjaGFyPiBpc3RyaW5n c3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXI+IG9zdHJpbmdz dHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTxjaGFyPiBzdHJpbmdzdHJl YW07CgoKICB0eXBlZGVmIGJhc2ljX2ZpbGVidWY8Y2hhcj4gZmlsZWJ1ZjsKCgogIHR5cGVk ZWYgYmFzaWNfaWZzdHJlYW08Y2hhcj4gaWZzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX29m c3RyZWFtPGNoYXI+IG9mc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19mc3RyZWFtPGNoYXI+ IGZzdHJlYW07CgoKCiAgdHlwZWRlZiBiYXNpY19pb3M8d2NoYXJfdD4gd2lvczsKCgogIHR5 cGVkZWYgYmFzaWNfc3RyZWFtYnVmPHdjaGFyX3Q+IHdzdHJlYW1idWY7CgoKICB0eXBlZGVm IGJhc2ljX2lzdHJlYW08d2NoYXJfdD4gd2lzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX29z dHJlYW08d2NoYXJfdD4gd29zdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX2lvc3RyZWFtPHdj aGFyX3Q+IHdpb3N0cmVhbTsKCgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nYnVmPHdjaGFyX3Q+ IHdzdHJpbmdidWY7CgoKICB0eXBlZGVmIGJhc2ljX2lzdHJpbmdzdHJlYW08d2NoYXJfdD4g d2lzdHJpbmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX29zdHJpbmdzdHJlYW08d2NoYXJf dD4gd29zdHJpbmdzdHJlYW07CgoKICB0eXBlZGVmIGJhc2ljX3N0cmluZ3N0cmVhbTx3Y2hh cl90PiB3c3RyaW5nc3RyZWFtOwoKCiAgdHlwZWRlZiBiYXNpY19maWxlYnVmPHdjaGFyX3Q+ IHdmaWxlYnVmOwoKCiAgdHlwZWRlZiBiYXNpY19pZnN0cmVhbTx3Y2hhcl90PiB3aWZzdHJl YW07CgoKICB0eXBlZGVmIGJhc2ljX29mc3RyZWFtPHdjaGFyX3Q+IHdvZnN0cmVhbTsKCgog IHR5cGVkZWYgYmFzaWNfZnN0cmVhbTx3Y2hhcl90PiB3ZnN0cmVhbTsKIyAyNTUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9zZndkIiAzCgp9CiMgNDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvaW9zIiAyIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4 Y2VwdGlvbiIgMSAzCiMgMzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXhjZXB0aW9u IiAzCiNkZWZpbmUgX19FWENFUFRJT05fXyAKCiAgICAgICAKIyAzNCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9leGNlcHRpb24iIDMKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9leGNlcHRpb24uaCIgMSAzCiMgMzIgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9leGNlcHRpb24uaCIgMwojZGVmaW5lIF9fRVhDRVBUSU9OX0ggMQoKICAg ICAgIAojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvZXhjZXB0aW9uLmgi IDMKCgoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewojIDU5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvZXhjZXB0aW9uLmgiIDMKICBjbGFzcyBleGNlcHRpb24KICB7CiAgcHVi bGljOgogICAgZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KICAgIHZpcnR1YWwgfmV4Y2VwdGlv bigpIHRocm93KCk7CiMgNzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9leGNl cHRpb24uaCIgMwogICAgdmlydHVhbCBjb25zdCBjaGFyKgogICAgd2hhdCgpIGNvbnN0IHRo cm93KCk7CiAgfTsKCgoKfQoKfQojIDM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4 Y2VwdGlvbiIgMiAzCgojZGVmaW5lIF9fZ2xpYmN4eF93YW50X3VuY2F1Z2h0X2V4Y2VwdGlv bnMgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMSAz CiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKICAg ICAgIAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRz IDIwMTUwNUwKCgoKCgojdW5kZWYgX19nbGliY3h4X3dhbnRfaW5jb21wbGV0ZV9jb250YWlu ZXJfZWxlbWVudHMKIyA3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5jYXVnaHRfZXhjZXB0aW9ucwojIDgy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9hbGxvY2F0b3JfdHJhaXRzX2lzX2Fsd2F5c19lcXVhbAojIDkzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19udWxsX3BvaW50ZXIKIyAxMDQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jlc3VsdF9v Zl9zZmluYWUKIyAxMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfYXJyYXlzCiMgMTMxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19zd2FwcGFibGUKIyAxNDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ZvaWRfdAojIDE1 MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMKIyAxNjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X21hdGhfc3BlY19mdW5jcwojIDE3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29yb3V0aW5lCiMgMTg2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9leGNoYW5nZV9mdW5jdGlvbgojIDE5NyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50 ZWdlcl9zZXF1ZW5jZQojIDIwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdyYWxfY29uc3RhbnRfY2Fs bGFibGUKIyAyMTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ZpbmFsCiMgMjMwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9t YWtlX3JldmVyc2VfaXRlcmF0b3IKIyAyNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X251bGxfaXRlcmF0b3Jz CiMgMjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc2Zvcm1hdGlvbl90cmFpdF9hbGlhc2VzCiMgMjYz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF90cmFuc3BhcmVudF9vcGVyYXRvcnMKIyAyNzQgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3R1cGxlX2VsZW1lbnRfdAojIDI4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHVwbGVzX2J5X3R5cGUKIyAy OTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3JvYnVzdF9ub25tb2RpZnlpbmdfc2VxX29wcwojIDMxMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdG9fY2hhcnMKIyAzMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nocm9ub191ZGxzCiMgMzM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb21wbGV4X3VkbHMKIyAzNDUgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNf YXNzb2NpYXRpdmVfbG9va3VwCiMgMzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX3VuaXF1ZQojIDM2 NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcXVvdGVkX3N0cmluZ19pbwojIDM3OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2hh cmVkX3RpbWVkX211dGV4CiMgMzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdfdWRscwojIDQwMCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfYWRkcmVzc29mX2NvbnN0ZXhwcgojIDQxMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYW55 CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9hcHBseQojIDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNfY29uc3QK IyA0NDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19pc19hbHdheXNfbG9ja19mcmVlCiMgNDU1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9ib29sX2NvbnN0YW50CiMgNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlCiMgNDc3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9oYXNfdW5pcXVlX29iamVjdF9yZXByZXNlbnRhdGlvbnMKIyA0ODgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2hhcmR3YXJlX2ludGVyZmVyZW5jZV9zaXplCiMgNDk5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pbnZva2UKIyA1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2FnZ3JlZ2F0ZQojIDUyMSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfaXNfaW52b2NhYmxlCiMgNTMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sYXVuZGVyCiMgNTQz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9sb2dpY2FsX3RyYWl0cwojIDU1NCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9m cm9tX3R1cGxlCiMgNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub3RfZm4KIyA1NzYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3R5cGVfdHJhaXRfdmFyaWFibGVfdGVtcGxhdGVzCiMgNTkyICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF92YXJp YW50CiMgNjAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sY20KIyA2MTQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZAojIDYy NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZ2NkX2xjbQojIDYzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmF3X21lbW9yeV9h bGdvcml0aG1zCiMgNjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcnJheV9jb25zdGV4cHIKIyA2NjMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X25vbm1lbWJlcl9jb250YWluZXJfYWNjZXNzCiMgNjc0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9jbGFtcAojIDY4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2FtcGxlCiMgNjk2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9i b3llcl9tb29yZV9zZWFyY2hlcgojIDcxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2hyb25vCiMgNzIzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9leGVjdXRpb24KIyA3MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZpbGVzeXN0ZW0KIyA3 NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2h5cG90CiMgNzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXBfdHJ5X2VtcGxh Y2UKIyA3NjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3BlY2lhbF9mdW5jdGlvbnMKIyA3ODMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X21lbW9yeV9yZXNvdXJjZQojIDc5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm9kZV9leHRy YWN0CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wYXJhbGxlbF9hbGdvcml0aG0KIyA4MTYgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X3Njb3BlZF9sb2NrCiMgODI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfbXV0ZXgKIyA4 MzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfd2Vha190eXBlCiMgODQ5ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9zdHJpbmdfdmlldwojIDg2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5vcmRlcmVkX21hcF90cnlfZW1w bGFjZQojIDg3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNzdW1lX2FsaWduZWQKIyA4ODIgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2F0b21pY19mbGFnX3Rlc3QKIyA4OTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19mbG9hdAoj IDkwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2xvY2tfZnJlZV90eXBlX2FsaWFzZXMKIyA5MTUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY19yZWYKIyA5MjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY192YWx1 ZV9pbml0aWFsaXphdGlvbgojIDkzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmluZF9mcm9udAojIDk0OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc3RhcnRzX2VuZHNfd2l0aAojIDk1OSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYml0X2Nh c3QKIyA5NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2JpdG9wcwojIDk4MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm91bmRl ZF9hcnJheV90cmFpdHMKIyA5OTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbmNlcHRzCiMgMTAxMyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfb3B0aW9uYWwKIyAxMDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9kZXN0cm95aW5nX2RlbGV0 ZQojIDEwMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9zdHJpbmdfdmlldwojIDEwNDYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2VuZGlhbgojIDEwNTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludF9wb3cyCiMgMTA2OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfaW50ZWdlcl9jb21wYXJpc29uX2Z1bmN0aW9ucwojIDEwNzkgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2lzX2NvbnN0YW50X2V2YWx1YXRlZAojIDEwOTUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9jaGFyX3RyYWl0cwojIDExMDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2xheW91dF9jb21wYXRp YmxlCiMgMTExNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbm90aHJvd19jb252ZXJ0aWJsZQojIDExMjgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2lzX3BvaW50ZXJfaW50ZXJjb252ZXJ0aWJsZQojIDExMzkgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X21hdGhfY29uc3RhbnRzCiMgMTE1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9vYmpfdXNp bmdfYWxsb2NhdG9yCiMgMTE2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVtb3ZlX2N2cmVmCiMgMTE3MiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc291cmNlX2xvY2F0aW9uCiMgMTE4OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3Bhbgoj IDExOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NzaXplCiMgMTIxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdGhyZWVfd2F5 X2NvbXBhcmlzb24KIyAxMjIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b19hZGRyZXNzCiMgMTIzMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdG9fYXJyYXkKIyAxMjQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX2lkZW50aXR5CiMg MTI1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfdW53cmFwX3JlZgojIDEyNjUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9pdGVyYXRvcgojIDEyNzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVycG9sYXRlCiMgMTI4NyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfY29uc3RleHByX3V0aWxpdHkKIyAxMjk4ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGlm dAojIDEzMTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhbmdlcwojIDEzMjUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9udW1lcmljCiMgMTMzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2Z1bmN0aW9uYWwK IyAxMzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfYWxnb3JpdGhtcwojIDEzNTggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2NvbnN0ZXhwcl90dXBsZQojIDEzNzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9t ZW1vcnkKIyAxMzg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfc2hhcmVkX3B0cgojIDE0MDEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2F0b21pY193YWl0CiMgMTQxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmFycmllcgojIDE0 MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2Zvcm1hdAojIDE0MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9j b21wbGV4CiMgMTQ0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2R5bmFtaWNfYWxsb2MKIyAx NDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfc3RyaW5nCiMgMTQ3NyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf Y29uc3RleHByX3ZlY3RvcgojIDE0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VyYXNlX2lmCiMgMTQ5OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfZ2VuZXJpY191bm9yZGVyZWRfbG9va3VwCiMgMTUxMCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfanRocmVhZAojIDE1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xhdGNoCiMgMTUzMiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfbGlzdF9yZW1vdmVfcmV0dXJuX3R5cGUKIyAxNTQzICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wb2x5bW9y cGhpY19hbGxvY2F0b3IKIyAxNTU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3ZlX2l0ZXJhdG9yX2NvbmNl cHQKIyAxNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zZW1hcGhvcmUKIyAxNTc2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z bWFydF9wdHJfZm9yX292ZXJ3cml0ZQojIDE1ODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N5bmNidWYKIyAx NTk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9ieXRlc3dhcAojIDE2MDkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhw cl9jaGFyY29udgojIDE2MjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl90eXBlaW5mbwojIDE2 MzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2V4cGVjdGVkCiMgMTY0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5k aW5nX2FsZ29yaXRobQojIDE2NTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hcnJheQoj IDE2NjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19jc3RyaW5nCiMgMTY3NSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZnJlZXN0YW5kaW5nX2V4cGVjdGVkCiMgMTY4NiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0 YW5kaW5nX29wdGlvbmFsCiMgMTY5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3N0cmlu Z192aWV3CiMgMTcwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3ZhcmlhbnQKIyAxNzE5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9pbnZva2VfcgojIDE3MzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX3Njb3BlZF9l bnVtCiMgMTc0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVmZXJlbmNlX2Zyb21fdGVtcG9yYXJ5CiMgMTc1 MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcmFuZ2VzX3RvX2NvbnRhaW5lcgojIDE3NjMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc196aXAKIyAxNzc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1bmsKIyAxNzg1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yYW5nZXNfc2xpZGUKIyAxNzk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1 bmtfYnkKIyAxODA3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfam9pbl93aXRoCiMgMTgxOCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfcmFuZ2VzX3JlcGVhdAojIDE4MjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19zdHJp ZGUKIyAxODQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2FydGVzaWFuX3Byb2R1Y3QKIyAxODUx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfcnZhbHVlCiMgMTg2MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFu Z2VzX2FzX2NvbnN0CiMgMTg3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2VudW1lcmF0ZQojIDE4 ODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jhbmdlc19mb2xkCiMgMTg5NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2Vz X2NvbnRhaW5zCiMgMTkwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2lvdGEKIyAxOTE3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9yYW5nZXNfZmluZF9sYXN0CiMgMTkyOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHBy X2JpdHNldAojIDE5MzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0ZGF0b21pY19oCiMgMTk1MCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfYWRhcHRvcl9pdGVyYXRvcl9wYWlyX2NvbnN0cnVjdG9yCiMgMTk2MSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZm9ybWF0dGVycwojIDE5NzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZvcndhcmRfbGlrZQojIDE5 ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2lvc19ub3JlcGxhY2UKIyAxOTk0ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3Zl X29ubHlfZnVuY3Rpb24KIyAyMDA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9vdXRfcHRyCiMgMjAxNiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfcHJpbnQKIyAyMDI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zcGFuc3RyZWFtCiMgMjAzOCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc3RhY2t0cmFjZQojIDIwNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19jb250 YWlucwojIDIwNjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19yZXNpemVfYW5kX292ZXJ3cml0ZQoj IDIwNzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3RvX3VuZGVybHlpbmcKIyAyMDgyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF91 bnJlYWNoYWJsZQojIDIwOTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZzdHJlYW1fbmF0aXZlX2hhbmRsZQoj IDIxMDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3JhdGlvCiMgMjExNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2F0dXJhdGlv bl9hcml0aG1ldGljCiMgMjEyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fc3RyaW5nCiMgMjEzNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZ2VuZXJhdG9yCgojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsCiMgNDAgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXhjZXB0aW9uIiAyIDMKCmV4dGVybiAiQysrIiB7 CgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1 bHQiKSkpCnsKIyA1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9leGNlcHRpb24iIDMK ICBjbGFzcyBiYWRfZXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICBwdWJsaWM6 CiAgICBiYWRfZXhjZXB0aW9uKCkgdGhyb3coKSB7IH0KCgoKICAgIHZpcnR1YWwgfmJhZF9l eGNlcHRpb24oKSB0aHJvdygpOwoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqCiAgICB3aGF0 KCkgY29uc3QgdGhyb3coKTsKICB9OwoKCiAgdHlwZWRlZiB2b2lkICgqdGVybWluYXRlX2hh bmRsZXIpICgpOwoKCiAgdGVybWluYXRlX2hhbmRsZXIgc2V0X3Rlcm1pbmF0ZSh0ZXJtaW5h dGVfaGFuZGxlcikgdGhyb3coKTsKIyA4MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9l eGNlcHRpb24iIDMKICB2b2lkIHRlcm1pbmF0ZSgpIHRocm93KCkgX19hdHRyaWJ1dGVfXyAo KF9fbm9yZXR1cm5fXyxfX2NvbGRfXykpOwoKCgogIHR5cGVkZWYgdm9pZCAoKiB1bmV4cGVj dGVkX2hhbmRsZXIpICgpOwoKCgoKCiAKICB1bmV4cGVjdGVkX2hhbmRsZXIgc2V0X3VuZXhw ZWN0ZWQodW5leHBlY3RlZF9oYW5kbGVyKSB0aHJvdygpOwojIDEwOSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9leGNlcHRpb24iIDMKIAogIHZvaWQgdW5leHBlY3RlZCgpIF9fYXR0 cmlidXRlX18gKChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKIyAxMjQgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvZXhjZXB0aW9uIiAzCiAKICBib29sIHVuY2F1Z2h0X2V4Y2VwdGlv bigpIHRocm93KCkgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSk7CiMgMTM2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2V4Y2VwdGlvbiIgMwp9CgpuYW1lc3BhY2UgX19nbnVfY3h4 IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgMTU4 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4Y2VwdGlvbiIgMwogIHZvaWQgX192ZXJi b3NlX3Rlcm1pbmF0ZV9oYW5kbGVyKCk7CgoKfQoKfQojIDQyICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2lvcyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2NoYXJfdHJhaXRzLmgiIDEgMwojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvY2hhcl90cmFpdHMuaCIgMwojZGVmaW5lIF9DSEFSX1RSQUlUU19IIDEKCiAgICAgICAK IyAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDMK IyA0NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDMK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2N3Y2hhciIgMSAzCiMgMzkgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvY3djaGFyIiAzCiAgICAgICAKIyA0MCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9jd2NoYXIiIDMKIyA0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDIgMwojIDYxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvY2hhcl90cmFpdHMuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FMV0FZU19J TkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKCgpuYW1l c3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1 bHQiKSkpCnsKCgogCiMgNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jaGFy X3RyYWl0cy5oIiAzCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAojcHJhZ21hIEdDQyBk aWFnbm9zdGljIGlnbm9yZWQgIi1Xc3RyaW5nb3Atb3ZlcmZsb3ciCiNwcmFnbWEgR0NDIGRp YWdub3N0aWMgaWdub3JlZCAiLVdzdHJpbmdvcC1vdmVycmVhZCIKI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBpZ25vcmVkICItV2FycmF5LWJvdW5kcyIKIyA4MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQ+CiAgICBzdHJ1Y3QgX0NoYXJfdHlwZXMKICAgIHsKICAgICAgdHlwZWRlZiB1bnNp Z25lZCBsb25nIGludF90eXBlOwoKICAgICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXBvcyBwb3Nf dHlwZTsKICAgICAgdHlwZWRlZiBzdGQ6OnN0cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlw ZWRlZiBzdGQ6Om1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgIH07CiMgMTEwICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY2hhcl90cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFyX3RyYWl0cwogICAgewogICAgICB0eXBl ZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0NoYXJfdHlw ZXM8X0NoYXJUPjo6aW50X3R5cGUgaW50X3R5cGU7CgogICAgICB0eXBlZGVmIHR5cGVuYW1l IF9DaGFyX3R5cGVzPF9DaGFyVD46OnBvc190eXBlIHBvc190eXBlOwogICAgICB0eXBlZGVm IHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46Om9mZl90eXBlIG9mZl90eXBlOwogICAg ICB0eXBlZGVmIHR5cGVuYW1lIF9DaGFyX3R5cGVzPF9DaGFyVD46OnN0YXRlX3R5cGUgc3Rh dGVfdHlwZTsKCgoKCgogICAgICBzdGF0aWMgdm9pZAogICAgICBhc3NpZ24oY2hhcl90eXBl JiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsKCgoKCgogX19jMSA9IF9f YzI7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxKGNvbnN0IGNoYXJfdHlw ZSYgX19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxID09 IF9fYzI7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGx0KGNvbnN0IGNoYXJfdHlwZSYg X19jMSwgY29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7IHJldHVybiBfX2MxIDwgX19j MjsgfQoKICAgICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJfdHlwZSog X19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzdGQ6OnNpemVfdCBfX24pOwoKICAgICAg c3RhdGljIHN0ZDo6c2l6ZV90CiAgICAgIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIF9fcyk7 CgogICAgICBzdGF0aWMgY29uc3QgY2hhcl90eXBlKgogICAgICBmaW5kKGNvbnN0IGNoYXJf dHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlwZSYgX19hKTsKCiAg ICAgIHN0YXRpYyBjaGFyX3R5cGUqCiAgICAgIG1vdmUoY2hhcl90eXBlKiBfX3MxLCBjb25z dCBjaGFyX3R5cGUqIF9fczIsIHN0ZDo6c2l6ZV90IF9fbik7CgogICAgICBzdGF0aWMgY2hh cl90eXBlKgogICAgICBjb3B5KGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBf X3MyLCBzdGQ6OnNpemVfdCBfX24pOwoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAg YXNzaWduKGNoYXJfdHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNoYXJfdHlwZSBfX2Ep OwoKICAgICAgc3RhdGljIGNoYXJfdHlwZQogICAgICB0b19jaGFyX3R5cGUoY29uc3QgaW50 X3R5cGUmIF9fYykKICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPihfX2Mp OyB9CgogICAgICBzdGF0aWMgaW50X3R5cGUKICAgICAgdG9faW50X3R5cGUoY29uc3QgY2hh cl90eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPihfX2Mp OyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBlcV9pbnRfdHlwZShjb25zdCBpbnRfdHlw ZSYgX19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0g X19jMjsgfQoKCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBlb2YoKQogICAgICB7IHJl dHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oLTEpOyB9CgogICAgICBzdGF0aWMgaW50X3R5 cGUKICAgICAgbm90X2VvZihjb25zdCBpbnRfdHlwZSYgX19jKQogICAgICB7IHJldHVybiAh ZXFfaW50X3R5cGUoX19jLCBlb2YoKSkgPyBfX2MgOiB0b19pbnRfdHlwZShjaGFyX3R5cGUo KSk7IH0KCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbnQKICAg IGNoYXJfdHJhaXRzPF9DaGFyVD46OgogICAgY29tcGFyZShjb25zdCBjaGFyX3R5cGUqIF9f czEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc3RkOjpzaXplX3QgX19uKQogICAgewogICAg ICBmb3IgKHN0ZDo6c2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbjsgKytfX2kpCiBpZiAobHQo X19zMVtfX2ldLCBfX3MyW19faV0pKQogICByZXR1cm4gLTE7CiBlbHNlIGlmIChsdChfX3My W19faV0sIF9fczFbX19pXSkpCiAgIHJldHVybiAxOwogICAgICByZXR1cm4gMDsKICAgIH0K CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgc3RkOjpzaXplX3QKICAgIGNoYXJf dHJhaXRzPF9DaGFyVD46OgogICAgbGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19wKQogICAg ewogICAgICBzdGQ6OnNpemVfdCBfX2kgPSAwOwogICAgICB3aGlsZSAoIWVxKF9fcFtfX2ld LCBjaGFyX3R5cGUoKSkpCiAgICAgICAgKytfX2k7CiAgICAgIHJldHVybiBfX2k7CiAgICB9 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNvbnN0IHR5cGVuYW1lIGNoYXJf dHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRzPF9DaGFyVD46Ogog ICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc3RkOjpzaXplX3QgX19uLCBjb25zdCBj aGFyX3R5cGUmIF9fYSkKICAgIHsKICAgICAgZm9yIChzdGQ6OnNpemVfdCBfX2kgPSAwOyBf X2kgPCBfX247ICsrX19pKQogICAgICAgIGlmIChlcShfX3NbX19pXSwgX19hKSkKICAgICAg ICAgIHJldHVybiBfX3MgKyBfX2k7CiAgICAgIHJldHVybiAwOwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgIAogICAgdHlwZW5hbWUgY2hhcl90cmFpdHM8X0NoYXJU Pjo6Y2hhcl90eXBlKgogICAgY2hhcl90cmFpdHM8X0NoYXJUPjo6CiAgICBtb3ZlKGNoYXJf dHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzdGQ6OnNpemVfdCBfX24pCiAg ICB7CiAgICAgIGlmIChfX24gPT0gMCkKIHJldHVybiBfX3MxOwojIDI1NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKICAgICAgX19idWlsdGlu X21lbW1vdmUoX19zMSwgX19zMiwgX19uICogc2l6ZW9mKGNoYXJfdHlwZSkpOwogICAgICBy ZXR1cm4gX19zMTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAKICAg IHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFyVD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJh aXRzPF9DaGFyVD46OgogICAgY29weShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlw ZSogX19zMiwgc3RkOjpzaXplX3QgX19uKQogICAgewogICAgICBpZiAoX19uID09IDApCiBy ZXR1cm4gX19zMTsKIyAyNzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jaGFy X3RyYWl0cy5oIiAzCiAgICAgIF9fYnVpbHRpbl9tZW1jcHkoX19zMSwgX19zMiwgX19uICog c2l6ZW9mKGNoYXJfdHlwZSkpOwogICAgICByZXR1cm4gX19zMTsKICAgIH0KCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJUPgogICAKICAgIHR5cGVuYW1lIGNoYXJfdHJhaXRzPF9DaGFy VD46OmNoYXJfdHlwZSoKICAgIGNoYXJfdHJhaXRzPF9DaGFyVD46OgogICAgYXNzaWduKGNo YXJfdHlwZSogX19zLCBzdGQ6OnNpemVfdCBfX24sIGNoYXJfdHlwZSBfX2EpCiAgICB7CiMg Mjk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY2hhcl90cmFpdHMuaCIgMwog ICAgICBpZiAoc2l6ZW9mKF9DaGFyVCkgPT0gMSAmJiBfX2lzX3RyaXZpYWwoX0NoYXJUKSkK IHsKICAgaWYgKF9fbikKICAgICB7CiAgICAgICB1bnNpZ25lZCBjaGFyIF9fYzsKICAgICAg IF9fYnVpbHRpbl9tZW1jcHkoJl9fYywgX19idWlsdGluX2FkZHJlc3NvZihfX2EpLCAxKTsK ICAgICAgIF9fYnVpbHRpbl9tZW1zZXQoX19zLCBfX2MsIF9fbik7CiAgICAgfQogfQogICAg ICBlbHNlCiB7CiAgIGZvciAoc3RkOjpzaXplX3QgX19pID0gMDsgX19pIDwgX19uOyArK19f aSkKICAgICBfX3NbX19pXSA9IF9fYTsKIH0KICAgICAgcmV0dXJuIF9fczsKICAgIH0KCgp9 CgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1 bHQiKSkpCnsKCiMgMzMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY2hhcl90 cmFpdHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHN0cnVjdCBjaGFy X3RyYWl0cyA6IHB1YmxpYyBfX2dudV9jeHg6OmNoYXJfdHJhaXRzPF9DaGFyVD4KICAgIHsg fTsKCgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM8Y2hhcj4KICAgIHsK ICAgICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBpbnQgaW50X3R5 cGU7CgogICAgICB0eXBlZGVmIHN0cmVhbXBvcyBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiBz dHJlYW1vZmYgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7 CgoKCgoKICAgICAgc3RhdGljIHZvaWQKICAgICAgYXNzaWduKGNoYXJfdHlwZSYgX19jMSwg Y29uc3QgY2hhcl90eXBlJiBfX2MyKQogICAgICB7CgoKCgoKIF9fYzEgPSBfX2MyOwogICAg ICB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBlcShjb25zdCBjaGFyX3R5cGUmIF9fYzEs IGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9 CgogICAgICBzdGF0aWMgYm9vbAogICAgICBsdChjb25zdCBjaGFyX3R5cGUmIF9fYzEsIGNv bnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgewoKIHJldHVybiAoc3RhdGljX2Nhc3Q8dW5z aWduZWQgY2hhcj4oX19jMSkKICA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYzIp KTsKICAgICAgfQoKICAgICAgc3RhdGljIGludAogICAgICBjb21wYXJlKGNvbnN0IGNoYXJf dHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQogICAgICB7 CiBpZiAoX19uID09IDApCiAgIHJldHVybiAwOwojIDM5MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2NoYXJfdHJhaXRzLmgiIDMKIHJldHVybiBfX2J1aWx0aW5fbWVtY21w KF9fczEsIF9fczIsIF9fbik7CiAgICAgIH0KCiAgICAgIHN0YXRpYyBzaXplX3QKICAgICAg bGVuZ3RoKGNvbnN0IGNoYXJfdHlwZSogX19zKQogICAgICB7CgoKCgogcmV0dXJuIF9fYnVp bHRpbl9zdHJsZW4oX19zKTsKICAgICAgfQoKICAgICAgc3RhdGljIGNvbnN0IGNoYXJfdHlw ZSoKICAgICAgZmluZChjb25zdCBjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwgY29uc3Qg Y2hhcl90eXBlJiBfX2EpCiAgICAgIHsKIGlmIChfX24gPT0gMCkKICAgcmV0dXJuIDA7CgoK CgogcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KF9fYnVpbHRpbl9tZW1j aHIoX19zLCBfX2EsIF9fbikpOwogICAgICB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgog ICAgICBtb3ZlKGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXpl X3QgX19uKQogICAgICB7CiBpZiAoX19uID09IDApCiAgIHJldHVybiBfX3MxOwoKCgoKIHJl dHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGUqPihfX2J1aWx0aW5fbWVtbW92ZShfX3MxLCBf X3MyLCBfX24pKTsKICAgICAgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgY29w eShjaGFyX3R5cGUqIF9fczEsIGNvbnN0IGNoYXJfdHlwZSogX19zMiwgc2l6ZV90IF9fbikK ICAgICAgewogaWYgKF9fbiA9PSAwKQogICByZXR1cm4gX19zMTsKCgoKCiByZXR1cm4gc3Rh dGljX2Nhc3Q8Y2hhcl90eXBlKj4oX19idWlsdGluX21lbWNweShfX3MxLCBfX3MyLCBfX24p KTsKICAgICAgfQoKICAgICAgc3RhdGljIGNoYXJfdHlwZSoKICAgICAgYXNzaWduKGNoYXJf dHlwZSogX19zLCBzaXplX3QgX19uLCBjaGFyX3R5cGUgX19hKQogICAgICB7CiBpZiAoX19u ID09IDApCiAgIHJldHVybiBfX3M7CgoKCgogcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJfdHlw ZSo+KF9fYnVpbHRpbl9tZW1zZXQoX19zLCBfX2EsIF9fbikpOwogICAgICB9CgogICAgICBz dGF0aWMgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19j KQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KF9fYyk7IH0KCgoKICAg ICAgc3RhdGljIGludF90eXBlCiAgICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYg X19jKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oc3RhdGljX2Nhc3Q8 dW5zaWduZWQgY2hhcj4oX19jKSk7IH0KCiAgICAgIHN0YXRpYyBib29sCiAgICAgIGVxX2lu dF90eXBlKGNvbnN0IGludF90eXBlJiBfX2MxLCBjb25zdCBpbnRfdHlwZSYgX19jMikKICAg ICAgeyByZXR1cm4gX19jMSA9PSBfX2MyOyB9CgoKICAgICAgc3RhdGljIGludF90eXBlCiAg ICAgIGVvZigpCiAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludF90eXBlPigtMSk7IH0K CiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90eXBlJiBf X2MpCiAgICAgIHsgcmV0dXJuIChfX2MgPT0gZW9mKCkpID8gMCA6IF9fYzsgfQoKICB9OwoK CgoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM8d2NoYXJfdD4KICAgIHsK ICAgICAgdHlwZWRlZiB3Y2hhcl90IGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB3aW50X3Qg aW50X3R5cGU7CgogICAgICB0eXBlZGVmIHN0cmVhbW9mZiBvZmZfdHlwZTsKICAgICAgdHlw ZWRlZiB3c3RyZWFtcG9zIHBvc190eXBlOwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0 ZV90eXBlOwoKCgoKCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIGFzc2lnbihjaGFyX3R5cGUm IF9fYzEsIGNvbnN0IGNoYXJfdHlwZSYgX19jMikKICAgICAgewoKCgoKCiBfX2MxID0gX19j MjsKICAgICAgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgZXEoY29uc3QgY2hhcl90eXBl JiBfX2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPT0g X19jMjsgfQoKICAgICAgc3RhdGljIGJvb2wKICAgICAgbHQoY29uc3QgY2hhcl90eXBlJiBf X2MxLCBjb25zdCBjaGFyX3R5cGUmIF9fYzIpCiAgICAgIHsgcmV0dXJuIF9fYzEgPCBfX2My OyB9CgogICAgICBzdGF0aWMgaW50CiAgICAgIGNvbXBhcmUoY29uc3QgY2hhcl90eXBlKiBf X3MxLCBjb25zdCBjaGFyX3R5cGUqIF9fczIsIHNpemVfdCBfX24pCiAgICAgIHsKIGlmIChf X24gPT0gMCkKICAgcmV0dXJuIDA7CgoKCgogcmV0dXJuIHdtZW1jbXAoX19zMSwgX19zMiwg X19uKTsKICAgICAgfQoKICAgICAgc3RhdGljIHNpemVfdAogICAgICBsZW5ndGgoY29uc3Qg Y2hhcl90eXBlKiBfX3MpCiAgICAgIHsKCgoKCiByZXR1cm4gd2NzbGVuKF9fcyk7CiAgICAg IH0KCiAgICAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGZpbmQoY29uc3QgY2hh cl90eXBlKiBfX3MsIHNpemVfdCBfX24sIGNvbnN0IGNoYXJfdHlwZSYgX19hKQogICAgICB7 CiBpZiAoX19uID09IDApCiAgIHJldHVybiAwOwoKCgoKIHJldHVybiB3bWVtY2hyKF9fcywg X19hLCBfX24pOwogICAgICB9CgogICAgICBzdGF0aWMgY2hhcl90eXBlKgogICAgICBtb3Zl KGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBzaXplX3QgX19uKQog ICAgICB7CiBpZiAoX19uID09IDApCiAgIHJldHVybiBfX3MxOwoKCgoKIHJldHVybiB3bWVt bW92ZShfX3MxLCBfX3MyLCBfX24pOwogICAgICB9CgogICAgICBzdGF0aWMgY2hhcl90eXBl KgogICAgICBjb3B5KGNoYXJfdHlwZSogX19zMSwgY29uc3QgY2hhcl90eXBlKiBfX3MyLCBz aXplX3QgX19uKQogICAgICB7CiBpZiAoX19uID09IDApCiAgIHJldHVybiBfX3MxOwoKCgoK IHJldHVybiB3bWVtY3B5KF9fczEsIF9fczIsIF9fbik7CiAgICAgIH0KCiAgICAgIHN0YXRp YyBjaGFyX3R5cGUqCiAgICAgIGFzc2lnbihjaGFyX3R5cGUqIF9fcywgc2l6ZV90IF9fbiwg Y2hhcl90eXBlIF9fYSkKICAgICAgewogaWYgKF9fbiA9PSAwKQogICByZXR1cm4gX19zOwoK CgoKIHJldHVybiB3bWVtc2V0KF9fcywgX19hLCBfX24pOwogICAgICB9CgogICAgICBzdGF0 aWMgY2hhcl90eXBlCiAgICAgIHRvX2NoYXJfdHlwZShjb25zdCBpbnRfdHlwZSYgX19jKQog ICAgICB7IHJldHVybiBjaGFyX3R5cGUoX19jKTsgfQoKICAgICAgc3RhdGljIGludF90eXBl CiAgICAgIHRvX2ludF90eXBlKGNvbnN0IGNoYXJfdHlwZSYgX19jKQogICAgICB7IHJldHVy biBpbnRfdHlwZShfX2MpOyB9CgogICAgICBzdGF0aWMgYm9vbAogICAgICBlcV9pbnRfdHlw ZShjb25zdCBpbnRfdHlwZSYgX19jMSwgY29uc3QgaW50X3R5cGUmIF9fYzIpCiAgICAgIHsg cmV0dXJuIF9fYzEgPT0gX19jMjsgfQoKCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBl b2YoKQogICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnRfdHlwZT4oKDB4ZmZmZmZmZmZ1 KSk7IH0KCiAgICAgIHN0YXRpYyBpbnRfdHlwZQogICAgICBub3RfZW9mKGNvbnN0IGludF90 eXBlJiBfX2MpCiAgICAgIHsgcmV0dXJuIGVxX2ludF90eXBlKF9fYywgZW9mKCkpID8gMCA6 IF9fYzsgfQoKICB9OwojIDc0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2No YXJfdHJhaXRzLmgiIDMKCn0KIyA0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3Mi IDIgMwojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVmd2QuaCIg MSAzCiMgMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVmd2QuaCIg MwojZGVmaW5lIF9MT0NBTEVfRldEX0ggMQoKICAgICAgIAojIDM4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlZndkLmgiIDMKCgojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrbG9jYWxlLmgiIDEg MwojIDM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdu dS9iaXRzL2MrK2xvY2FsZS5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfQ1hYX0xPQ0FMRV9IIDEK CiAgICAgICAKIyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1s aW51eC1nbnUvYml0cy9jKytsb2NhbGUuaCIgMwoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2Nsb2NhbGUiIDEgMwojIDM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Ns b2NhbGUiIDMKICAgICAgIAojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Nsb2Nh bGUiIDMKCgojIDEgIi91c3IvaW5jbHVkZS9sb2NhbGUuaCIgMSAzIDQKIyAyMyAiL3Vzci9p bmNsdWRlL2xvY2FsZS5oIiAzIDQKI2RlZmluZSBfTE9DQUxFX0ggMQoKCgojZGVmaW5lIF9f bmVlZF9OVUxMIAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8x NC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzOTkgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xv b25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRl ZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDEwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29u Z2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYg X19uZWVkX05VTEwKIyAyOSAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAyIDMgNAojIDEgIi91 c3IvaW5jbHVkZS9iaXRzL2xvY2FsZS5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYml0 cy9sb2NhbGUuaCIgMyA0CiNkZWZpbmUgX0JJVFNfTE9DQUxFX0ggMQoKI2RlZmluZSBfX0xD X0NUWVBFIDAKI2RlZmluZSBfX0xDX05VTUVSSUMgMQojZGVmaW5lIF9fTENfVElNRSAyCiNk ZWZpbmUgX19MQ19DT0xMQVRFIDMKI2RlZmluZSBfX0xDX01PTkVUQVJZIDQKI2RlZmluZSBf X0xDX01FU1NBR0VTIDUKI2RlZmluZSBfX0xDX0FMTCA2CiNkZWZpbmUgX19MQ19QQVBFUiA3 CiNkZWZpbmUgX19MQ19OQU1FIDgKI2RlZmluZSBfX0xDX0FERFJFU1MgOQojZGVmaW5lIF9f TENfVEVMRVBIT05FIDEwCiNkZWZpbmUgX19MQ19NRUFTVVJFTUVOVCAxMQojZGVmaW5lIF9f TENfSURFTlRJRklDQVRJT04gMTIKIyAzMCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5oIiAyIDMg NAoKZXh0ZXJuICJDIiB7CgoKCiNkZWZpbmUgTENfQ1RZUEUgX19MQ19DVFlQRQojZGVmaW5l IExDX05VTUVSSUMgX19MQ19OVU1FUklDCiNkZWZpbmUgTENfVElNRSBfX0xDX1RJTUUKI2Rl ZmluZSBMQ19DT0xMQVRFIF9fTENfQ09MTEFURQojZGVmaW5lIExDX01PTkVUQVJZIF9fTENf TU9ORVRBUlkKI2RlZmluZSBMQ19NRVNTQUdFUyBfX0xDX01FU1NBR0VTCiNkZWZpbmUgTENf QUxMIF9fTENfQUxMCiNkZWZpbmUgTENfUEFQRVIgX19MQ19QQVBFUgojZGVmaW5lIExDX05B TUUgX19MQ19OQU1FCiNkZWZpbmUgTENfQUREUkVTUyBfX0xDX0FERFJFU1MKI2RlZmluZSBM Q19URUxFUEhPTkUgX19MQ19URUxFUEhPTkUKI2RlZmluZSBMQ19NRUFTVVJFTUVOVCBfX0xD X01FQVNVUkVNRU5UCiNkZWZpbmUgTENfSURFTlRJRklDQVRJT04gX19MQ19JREVOVElGSUNB VElPTgoKCgpzdHJ1Y3QgbGNvbnYKewoKCiAgY2hhciAqZGVjaW1hbF9wb2ludDsKICBjaGFy ICp0aG91c2FuZHNfc2VwOwoKCgoKCiAgY2hhciAqZ3JvdXBpbmc7CgoKCgoKICBjaGFyICpp bnRfY3Vycl9zeW1ib2w7CiAgY2hhciAqY3VycmVuY3lfc3ltYm9sOwogIGNoYXIgKm1vbl9k ZWNpbWFsX3BvaW50OwogIGNoYXIgKm1vbl90aG91c2FuZHNfc2VwOwogIGNoYXIgKm1vbl9n cm91cGluZzsKICBjaGFyICpwb3NpdGl2ZV9zaWduOwogIGNoYXIgKm5lZ2F0aXZlX3NpZ247 CiAgY2hhciBpbnRfZnJhY19kaWdpdHM7CiAgY2hhciBmcmFjX2RpZ2l0czsKCiAgY2hhciBw X2NzX3ByZWNlZGVzOwoKICBjaGFyIHBfc2VwX2J5X3NwYWNlOwoKICBjaGFyIG5fY3NfcHJl Y2VkZXM7CgogIGNoYXIgbl9zZXBfYnlfc3BhY2U7CgoKCgoKCiAgY2hhciBwX3NpZ25fcG9z bjsKICBjaGFyIG5fc2lnbl9wb3NuOwoKCiAgY2hhciBpbnRfcF9jc19wcmVjZWRlczsKCiAg Y2hhciBpbnRfcF9zZXBfYnlfc3BhY2U7CgogIGNoYXIgaW50X25fY3NfcHJlY2VkZXM7Cgog IGNoYXIgaW50X25fc2VwX2J5X3NwYWNlOwoKCgoKCgogIGNoYXIgaW50X3Bfc2lnbl9wb3Nu OwogIGNoYXIgaW50X25fc2lnbl9wb3NuOwojIDExOCAiL3Vzci9pbmNsdWRlL2xvY2FsZS5o IiAzIDQKfTsKCgoKZXh0ZXJuIGNoYXIgKnNldGxvY2FsZSAoaW50IF9fY2F0ZWdvcnksIGNv bnN0IGNoYXIgKl9fbG9jYWxlKSB0aHJvdyAoKTsKCgpleHRlcm4gc3RydWN0IGxjb252ICps b2NhbGVjb252ICh2b2lkKSB0aHJvdyAoKTsKIyAxNDEgIi91c3IvaW5jbHVkZS9sb2NhbGUu aCIgMyA0CmV4dGVybiBsb2NhbGVfdCBuZXdsb2NhbGUgKGludCBfX2NhdGVnb3J5X21hc2ss IGNvbnN0IGNoYXIgKl9fbG9jYWxlLAogICAgICBsb2NhbGVfdCBfX2Jhc2UpIHRocm93ICgp OwoKCgoKCiNkZWZpbmUgTENfQ1RZUEVfTUFTSyAoMSA8PCBfX0xDX0NUWVBFKQojZGVmaW5l IExDX05VTUVSSUNfTUFTSyAoMSA8PCBfX0xDX05VTUVSSUMpCiNkZWZpbmUgTENfVElNRV9N QVNLICgxIDw8IF9fTENfVElNRSkKI2RlZmluZSBMQ19DT0xMQVRFX01BU0sgKDEgPDwgX19M Q19DT0xMQVRFKQojZGVmaW5lIExDX01PTkVUQVJZX01BU0sgKDEgPDwgX19MQ19NT05FVEFS WSkKI2RlZmluZSBMQ19NRVNTQUdFU19NQVNLICgxIDw8IF9fTENfTUVTU0FHRVMpCiNkZWZp bmUgTENfUEFQRVJfTUFTSyAoMSA8PCBfX0xDX1BBUEVSKQojZGVmaW5lIExDX05BTUVfTUFT SyAoMSA8PCBfX0xDX05BTUUpCiNkZWZpbmUgTENfQUREUkVTU19NQVNLICgxIDw8IF9fTENf QUREUkVTUykKI2RlZmluZSBMQ19URUxFUEhPTkVfTUFTSyAoMSA8PCBfX0xDX1RFTEVQSE9O RSkKI2RlZmluZSBMQ19NRUFTVVJFTUVOVF9NQVNLICgxIDw8IF9fTENfTUVBU1VSRU1FTlQp CiNkZWZpbmUgTENfSURFTlRJRklDQVRJT05fTUFTSyAoMSA8PCBfX0xDX0lERU5USUZJQ0FU SU9OKQojZGVmaW5lIExDX0FMTF9NQVNLIChMQ19DVFlQRV9NQVNLIHwgTENfTlVNRVJJQ19N QVNLIHwgTENfVElNRV9NQVNLIHwgTENfQ09MTEFURV9NQVNLIHwgTENfTU9ORVRBUllfTUFT SyB8IExDX01FU1NBR0VTX01BU0sgfCBMQ19QQVBFUl9NQVNLIHwgTENfTkFNRV9NQVNLIHwg TENfQUREUkVTU19NQVNLIHwgTENfVEVMRVBIT05FX01BU0sgfCBMQ19NRUFTVVJFTUVOVF9N QVNLIHwgTENfSURFTlRJRklDQVRJT05fTUFTSyApCiMgMTc2ICIvdXNyL2luY2x1ZGUvbG9j YWxlLmgiIDMgNApleHRlcm4gbG9jYWxlX3QgZHVwbG9jYWxlIChsb2NhbGVfdCBfX2RhdGFz ZXQpIHRocm93ICgpOwoKCgpleHRlcm4gdm9pZCBmcmVlbG9jYWxlIChsb2NhbGVfdCBfX2Rh dGFzZXQpIHRocm93ICgpOwoKCgoKCgpleHRlcm4gbG9jYWxlX3QgdXNlbG9jYWxlIChsb2Nh bGVfdCBfX2RhdGFzZXQpIHRocm93ICgpOwoKCgojZGVmaW5lIExDX0dMT0JBTF9MT0NBTEUg KChsb2NhbGVfdCkgLTFMKQoKCgp9CiMgNDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Y2xvY2FsZSIgMiAzCgoKI2RlZmluZSBfR0xJQkNYWF9DTE9DQUxFIDEKCgojdW5kZWYgc2V0 bG9jYWxlCiN1bmRlZiBsb2NhbGVjb252CgpuYW1lc3BhY2Ugc3RkCnsKICB1c2luZyA6Omxj b252OwogIHVzaW5nIDo6c2V0bG9jYWxlOwogIHVzaW5nIDo6bG9jYWxlY29udjsKfQojIDQy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRz L2MrK2xvY2FsZS5oIiAyIDMKCiNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKCiNk ZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgNgoKCm5hbWVzcGFjZSBfX2dudV9jeHgg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgZXh0 ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwoKCn0KCgpuYW1lc3Bh Y2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK CgogIHR5cGVkZWYgX19sb2NhbGVfdCBfX2NfbG9jYWxlOwojIDczICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2xvY2FsZS5oIiAz CiAgaW5saW5lIGludAogIF9fY29udmVydF9mcm9tX3YoY29uc3QgX19jX2xvY2FsZSYgX19j bG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCiAgICAgY2hhciogX19vdXQsCiAg ICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAogICAg IGNvbnN0IGNoYXIqIF9fZm10LCAuLi4pCiAgewoKICAgIF9fY19sb2NhbGUgX19vbGQgPSBf X2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7CiMgOTMgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrbG9jYWxlLmgiIDMKICAg IF9fYnVpbHRpbl92YV9saXN0IF9fYXJnczsKICAgIF9fYnVpbHRpbl92YV9zdGFydChfX2Fy Z3MsIF9fZm10KTsKCgogICAgY29uc3QgaW50IF9fcmV0ID0gX19idWlsdGluX3ZzbnByaW50 ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19hcmdzKTsKCgoKCiAgICBfX2J1aWx0aW5fdmFf ZW5kKF9fYXJncyk7CgoKICAgIF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19vbGQpOwoKCgoK CgoKICAgIHJldHVybiBfX3JldDsKICB9CgoKCgoKCgp9CiMgNDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9sb2NhbGVmd2QuaCIgMiAzCgojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvY2N0eXBlIiAxIDMKIyAzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9jY3R5cGUiIDMKICAgICAgIAojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Nj dHlwZSIgMwoKCiMgMSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDEgMyA0CiMgMjMgIi91c3Iv aW5jbHVkZS9jdHlwZS5oIiAzIDQKI2RlZmluZSBfQ1RZUEVfSCAxCgoKCgpleHRlcm4gIkMi IHsKIyA0MyAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAojZGVmaW5lIF9JU2JpdChiaXQp ICgoYml0KSA8IDggPyAoKDEgPDwgKGJpdCkpIDw8IDgpIDogKCgxIDw8IChiaXQpKSA+PiA4 KSkKCgplbnVtCnsKICBfSVN1cHBlciA9ICgoMCkgPCA4ID8gKCgxIDw8ICgwKSkgPDwgOCkg OiAoKDEgPDwgKDApKSA+PiA4KSksCiAgX0lTbG93ZXIgPSAoKDEpIDwgOCA/ICgoMSA8PCAo MSkpIDw8IDgpIDogKCgxIDw8ICgxKSkgPj4gOCkpLAogIF9JU2FscGhhID0gKCgyKSA8IDgg PyAoKDEgPDwgKDIpKSA8PCA4KSA6ICgoMSA8PCAoMikpID4+IDgpKSwKICBfSVNkaWdpdCA9 ICgoMykgPCA4ID8gKCgxIDw8ICgzKSkgPDwgOCkgOiAoKDEgPDwgKDMpKSA+PiA4KSksCiAg X0lTeGRpZ2l0ID0gKCg0KSA8IDggPyAoKDEgPDwgKDQpKSA8PCA4KSA6ICgoMSA8PCAoNCkp ID4+IDgpKSwKICBfSVNzcGFjZSA9ICgoNSkgPCA4ID8gKCgxIDw8ICg1KSkgPDwgOCkgOiAo KDEgPDwgKDUpKSA+PiA4KSksCiAgX0lTcHJpbnQgPSAoKDYpIDwgOCA/ICgoMSA8PCAoNikp IDw8IDgpIDogKCgxIDw8ICg2KSkgPj4gOCkpLAogIF9JU2dyYXBoID0gKCg3KSA8IDggPyAo KDEgPDwgKDcpKSA8PCA4KSA6ICgoMSA8PCAoNykpID4+IDgpKSwKICBfSVNibGFuayA9ICgo OCkgPCA4ID8gKCgxIDw8ICg4KSkgPDwgOCkgOiAoKDEgPDwgKDgpKSA+PiA4KSksCiAgX0lT Y250cmwgPSAoKDkpIDwgOCA/ICgoMSA8PCAoOSkpIDw8IDgpIDogKCgxIDw8ICg5KSkgPj4g OCkpLAogIF9JU3B1bmN0ID0gKCgxMCkgPCA4ID8gKCgxIDw8ICgxMCkpIDw8IDgpIDogKCgx IDw8ICgxMCkpID4+IDgpKSwKICBfSVNhbG51bSA9ICgoMTEpIDwgOCA/ICgoMSA8PCAoMTEp KSA8PCA4KSA6ICgoMSA8PCAoMTEpKSA+PiA4KSkKfTsKIyA3OSAiL3Vzci9pbmNsdWRlL2N0 eXBlLmgiIDMgNApleHRlcm4gY29uc3QgdW5zaWduZWQgc2hvcnQgaW50ICoqX19jdHlwZV9i X2xvYyAodm9pZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7 CmV4dGVybiBjb25zdCBfX2ludDMyX3QgKipfX2N0eXBlX3RvbG93ZXJfbG9jICh2b2lkKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKZXh0ZXJuIGNvbnN0 IF9faW50MzJfdCAqKl9fY3R5cGVfdG91cHBlcl9sb2MgKHZvaWQpCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fY29uc3RfXykpOwoKCgoKCgojZGVmaW5lIF9faXNjdHlwZV9m KHR5cGUpIF9fZXh0ZXJuX2lubGluZSBpbnQgaXMgIyN0eXBlIChpbnQgX19jKSBfX1RIUk9X IHsgcmV0dXJuICgqX19jdHlwZV9iX2xvYyAoKSlbKGludCkgKF9fYyldICYgKHVuc2lnbmVk IHNob3J0IGludCkgX0lTICMjdHlwZTsgfQoKCgoKCgoKI2RlZmluZSBfX2lzYXNjaWkoYykg KCgoYykgJiB+MHg3ZikgPT0gMCkKI2RlZmluZSBfX3RvYXNjaWkoYykgKChjKSAmIDB4N2Yp CgojZGVmaW5lIF9fZXhjdHlwZShuYW1lKSBleHRlcm4gaW50IG5hbWUgKGludCkgX19USFJP VwoKCgoKCmV4dGVybiBpbnQgaXNhbG51bSAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBp c2FscGhhIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmwgKGludCkgdGhyb3cg KCk7CmV4dGVybiBpbnQgaXNkaWdpdCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xv d2VyIChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGggKGludCkgdGhyb3cgKCk7 CmV4dGVybiBpbnQgaXNwcmludCAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3B1bmN0 IChpbnQpIHRocm93ICgpOwpleHRlcm4gaW50IGlzc3BhY2UgKGludCkgdGhyb3cgKCk7CmV4 dGVybiBpbnQgaXN1cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdCAo aW50KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0b2xvd2VyIChpbnQgX19jKSB0aHJvdyAo KTsKCgpleHRlcm4gaW50IHRvdXBwZXIgKGludCBfX2MpIHRocm93ICgpOwoKCgoKZXh0ZXJu IGludCBpc2JsYW5rIChpbnQpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBpc2N0eXBlIChp bnQgX19jLCBpbnQgX19tYXNrKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGludCBpc2FzY2lp IChpbnQgX19jKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCB0b2FzY2lpIChpbnQgX19jKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfdG91cHBlciAoaW50KSB0aHJvdyAoKTsKZXh0ZXJu IGludCBfdG9sb3dlciAoaW50KSB0aHJvdyAoKTsKCgoKI2RlZmluZSBfX3RvYm9keShjLGYs YSxhcmdzKSAoX19leHRlbnNpb25fXyAoeyBpbnQgX19yZXM7IGlmIChzaXplb2YgKGMpID4g MSkgeyBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKGMpKSB7IGludCBfX2MgPSAoYyk7IF9f cmVzID0gX19jIDwgLTEyOCB8fCBfX2MgPiAyNTUgPyBfX2MgOiAoYSlbX19jXTsgfSBlbHNl IF9fcmVzID0gZiBhcmdzOyB9IGVsc2UgX19yZXMgPSAoYSlbKGludCkgKGMpXTsgX19yZXM7 IH0pKQojIDI0MSAiL3Vzci9pbmNsdWRlL2N0eXBlLmgiIDMgNAojZGVmaW5lIF9faXNjdHlw ZV9sKGMsdHlwZSxsb2NhbGUpICgobG9jYWxlKS0+X19jdHlwZV9iWyhpbnQpIChjKV0gJiAo dW5zaWduZWQgc2hvcnQgaW50KSB0eXBlKQoKCiNkZWZpbmUgX19leGN0eXBlX2wobmFtZSkg ZXh0ZXJuIGludCBuYW1lIChpbnQsIGxvY2FsZV90KSBfX1RIUk9XCgoKCgoKCmV4dGVybiBp bnQgaXNhbG51bV9sIChpbnQsIGxvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2Fs cGhhX2wgKGludCwgbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50IGlzY250cmxfbCAo aW50LCBsb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXNkaWdpdF9sIChpbnQsIGxv Y2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc2xvd2VyX2wgKGludCwgbG9jYWxlX3Qp IHRocm93ICgpOwpleHRlcm4gaW50IGlzZ3JhcGhfbCAoaW50LCBsb2NhbGVfdCkgdGhyb3cg KCk7CmV4dGVybiBpbnQgaXNwcmludF9sIChpbnQsIGxvY2FsZV90KSB0aHJvdyAoKTsKZXh0 ZXJuIGludCBpc3B1bmN0X2wgKGludCwgbG9jYWxlX3QpIHRocm93ICgpOwpleHRlcm4gaW50 IGlzc3BhY2VfbCAoaW50LCBsb2NhbGVfdCkgdGhyb3cgKCk7CmV4dGVybiBpbnQgaXN1cHBl cl9sIChpbnQsIGxvY2FsZV90KSB0aHJvdyAoKTsKZXh0ZXJuIGludCBpc3hkaWdpdF9sIChp bnQsIGxvY2FsZV90KSB0aHJvdyAoKTsKCmV4dGVybiBpbnQgaXNibGFua19sIChpbnQsIGxv Y2FsZV90KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBfX3RvbG93ZXJfbCAoaW50IF9fYywg bG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKZXh0ZXJuIGludCB0b2xvd2VyX2wgKGludCBfX2Ms IGxvY2FsZV90IF9fbCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBfX3RvdXBwZXJfbCAoaW50 IF9fYywgbG9jYWxlX3QgX19sKSB0aHJvdyAoKTsKZXh0ZXJuIGludCB0b3VwcGVyX2wgKGlu dCBfX2MsIGxvY2FsZV90IF9fbCkgdGhyb3cgKCk7CiMgMzI3ICIvdXNyL2luY2x1ZGUvY3R5 cGUuaCIgMyA0Cn0KIyA0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jY3R5cGUiIDIg MwoKCiNkZWZpbmUgX0dMSUJDWFhfQ0NUWVBFIDEKCgojdW5kZWYgaXNhbG51bQojdW5kZWYg aXNhbHBoYQojdW5kZWYgaXNjbnRybAojdW5kZWYgaXNkaWdpdAojdW5kZWYgaXNncmFwaAoj dW5kZWYgaXNsb3dlcgojdW5kZWYgaXNwcmludAojdW5kZWYgaXNwdW5jdAojdW5kZWYgaXNz cGFjZQojdW5kZWYgaXN1cHBlcgojdW5kZWYgaXN4ZGlnaXQKI3VuZGVmIHRvbG93ZXIKI3Vu ZGVmIHRvdXBwZXIKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6aXNhbG51bTsKICB1c2lu ZyA6OmlzYWxwaGE7CiAgdXNpbmcgOjppc2NudHJsOwogIHVzaW5nIDo6aXNkaWdpdDsKICB1 c2luZyA6OmlzZ3JhcGg7CiAgdXNpbmcgOjppc2xvd2VyOwogIHVzaW5nIDo6aXNwcmludDsK ICB1c2luZyA6OmlzcHVuY3Q7CiAgdXNpbmcgOjppc3NwYWNlOwogIHVzaW5nIDo6aXN1cHBl cjsKICB1c2luZyA6OmlzeGRpZ2l0OwogIHVzaW5nIDo6dG9sb3dlcjsKICB1c2luZyA6OnRv dXBwZXI7Cn0KIyA0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZWZ3 ZC5oIiAyIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9f ICgiZGVmYXVsdCIpKSkKewoKIyA1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2xvY2FsZWZ3ZC5oIiAzCiAgY2xhc3MgbG9jYWxlOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf RmFjZXQ+CiAgICBib29sCiAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJikgdGhyb3coKTsK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgY29uc3QgX0ZhY2V0JgogICAgdXNl X2ZhY2V0KGNvbnN0IGxvY2FsZSYpOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgog ICAgYm9vbAogICAgaXNzcGFjZShfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3ByaW50KF9DaGFyVCwgY29uc3Qg bG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlz Y250cmwoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJUPgogICAgYm9vbAogICAgaXN1cHBlcihfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc2xvd2VyKF9DaGFyVCwg Y29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wK ICAgIGlzYWxwaGEoX0NoYXJULCBjb25zdCBsb2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJUPgogICAgYm9vbAogICAgaXNkaWdpdChfQ2hhclQsIGNvbnN0IGxvY2FsZSYp OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBib29sCiAgICBpc3B1bmN0KF9D aGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAg IGJvb2wKICAgIGlzeGRpZ2l0KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVD4KICAgIGJvb2wKICAgIGlzYWxudW0oX0NoYXJULCBjb25zdCBs b2NhbGUmKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgYm9vbAogICAgaXNn cmFwaChfQ2hhclQsIGNvbnN0IGxvY2FsZSYpOwoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQ2hhclQ+CiAgICBfQ2hhclQKICAgIHRvdXBwZXIoX0NoYXJULCBjb25zdCBsb2NhbGUm KTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgX0NoYXJUCiAgICB0b2xvd2Vy KF9DaGFyVCwgY29uc3QgbG9jYWxlJik7CgoKICBzdHJ1Y3QgY3R5cGVfYmFzZTsKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjdHlwZTsKICB0ZW1wbGF0ZTw+IGNs YXNzIGN0eXBlPGNoYXI+OwoKICB0ZW1wbGF0ZTw+IGNsYXNzIGN0eXBlPHdjaGFyX3Q+OwoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjdHlwZV9ieW5hbWU7CgoK ICBjbGFzcyBjb2RlY3Z0X2Jhc2U7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVyblQsIHR5 cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVUPgogICAgY2xhc3MgY29kZWN2dDsK ICB0ZW1wbGF0ZTw+IGNsYXNzIGNvZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90PjsKCiAg dGVtcGxhdGU8PiBjbGFzcyBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD47CiMg MTUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlZndkLmgiIDMKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfSW50ZXJuVCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1l IF9TdGF0ZVQ+CiAgICBjbGFzcyBjb2RlY3Z0X2J5bmFtZTsKCgoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9D aGFyVD4gPgogICAgY2xhc3MgbnVtX2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs IHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAg IGNsYXNzIG51bV9wdXQ7CgpuYW1lc3BhY2UgX19jeHgxMSB7CiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJUPiBjbGFzcyBudW1wdW5jdDsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+ IGNsYXNzIG51bXB1bmN0X2J5bmFtZTsKfQoKbmFtZXNwYWNlIF9fY3h4MTEgewoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBjb2xsYXRlOwogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGNvbGxhdGVfYnluYW1lOwp9CgoKICBjbGFzcyB0 aW1lX2Jhc2U7Cm5hbWVzcGFjZSBfX2N4eDExIHsKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQsIHR5cGVuYW1lIF9Jbkl0ZXIgPSBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgog ICAgY2xhc3MgdGltZV9nZXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIHRp bWVfZ2V0X2J5bmFtZTsKfQogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X091dEl0ZXIgPSBvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPgogICAgY2xhc3MgdGlt ZV9wdXQ7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlciA9 IG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+CiAgICBjbGFzcyB0aW1lX3B1dF9ieW5h bWU7CgoKICBjbGFzcyBtb25leV9iYXNlOwpuYW1lc3BhY2UgX19jeHgxMSB7CiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyID0gaXN0cmVhbWJ1Zl9pdGVy YXRvcjxfQ2hhclQ+ID4KICAgIGNsYXNzIG1vbmV5X2dldDsKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyID0gb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hh clQ+ID4KICAgIGNsYXNzIG1vbmV5X3B1dDsKfQpuYW1lc3BhY2UgX19jeHgxMSB7CiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJULCBib29sIF9JbnRsID0gZmFsc2U+CiAgICBjbGFzcyBt b25leXB1bmN0OwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgYm9vbCBfSW50bCA9IGZh bHNlPgogICAgY2xhc3MgbW9uZXlwdW5jdF9ieW5hbWU7Cn0KCgogIHN0cnVjdCBtZXNzYWdl c19iYXNlOwpuYW1lc3BhY2UgX19jeHgxMSB7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU PgogICAgY2xhc3MgbWVzc2FnZXM7CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg Y2xhc3MgbWVzc2FnZXNfYnluYW1lOwp9CgoKfQojIDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2lvcyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lv c19iYXNlLmgiIDEgMwojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvaW9z X2Jhc2UuaCIgMwojZGVmaW5lIF9JT1NfQkFTRV9IIDEKCiAgICAgICAKIyAzOCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNlLmgiIDMKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9leHQvYXRvbWljaXR5LmgiIDEgMwojIDMwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2V4dC9hdG9taWNpdHkuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FU T01JQ0lUWV9IIDEKCiAgICAgICAKIyAzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9l eHQvYXRvbWljaXR5LmgiIDMKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9v bmdhcmNoNjQtbGludXgtZ251L2JpdHMvZ3Roci5oIiAxIDMKIyAyNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9ndGhyLmgiIDMKI2Rl ZmluZSBfR0xJQkNYWF9HQ0NfR1RIUl9IIAoKCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkgcHVz aChkZWZhdWx0KQojIDE0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2 NC1saW51eC1nbnUvYml0cy9ndGhyLmgiIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2d0aHItZGVmYXVsdC5oIiAxIDMKIyAy NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0 cy9ndGhyLWRlZmF1bHQuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0dDQ19HVEhSX1BPU0lYX0gg CgoKCgojZGVmaW5lIF9fR1RIUkVBRFMgMQojZGVmaW5lIF9fR1RIUkVBRFNfQ1hYMFggMQoK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1 ZGUtZml4ZWQvcHRocmVhZC5oIiAxIDMgNAojIDI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAzIDQKI2Rl ZmluZSBfUFRIUkVBRF9IIDEKCgojIDEgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAxIDMgNAoj IDIwICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMyA0CiNkZWZpbmUgX1NDSEVEX0ggMQoKCgoK CgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwgCiMgMSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRl Zi5oIiAxIDMgNAojIDIzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251 LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9zaXplX3QKIyAz OTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19udWxsCiMgNDEw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUv c3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX05VTEwKIyAzMCAiL3Vzci9pbmNsdWRlL3Nj aGVkLmgiIDIgMyA0CiMgNDMgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKIyAxICIvdXNy L2luY2x1ZGUvYml0cy9zY2hlZC5oIiAxIDMgNAojIDIxICIvdXNyL2luY2x1ZGUvYml0cy9z Y2hlZC5oIiAzIDQKI2RlZmluZSBfQklUU19TQ0hFRF9IIDEKCgoKCgoKI2RlZmluZSBTQ0hF RF9PVEhFUiAwCiNkZWZpbmUgU0NIRURfRklGTyAxCiNkZWZpbmUgU0NIRURfUlIgMgoKI2Rl ZmluZSBTQ0hFRF9CQVRDSCAzCiNkZWZpbmUgU0NIRURfSVNPIDQKI2RlZmluZSBTQ0hFRF9J RExFIDUKI2RlZmluZSBTQ0hFRF9ERUFETElORSA2CgojZGVmaW5lIFNDSEVEX1JFU0VUX09O X0ZPUksgMHg0MDAwMDAwMAoKCgoKI2RlZmluZSBDU0lHTkFMIDB4MDAwMDAwZmYKI2RlZmlu ZSBDTE9ORV9WTSAweDAwMDAwMTAwCiNkZWZpbmUgQ0xPTkVfRlMgMHgwMDAwMDIwMAojZGVm aW5lIENMT05FX0ZJTEVTIDB4MDAwMDA0MDAKI2RlZmluZSBDTE9ORV9TSUdIQU5EIDB4MDAw MDA4MDAKI2RlZmluZSBDTE9ORV9QSURGRCAweDAwMDAxMDAwCgojZGVmaW5lIENMT05FX1BU UkFDRSAweDAwMDAyMDAwCiNkZWZpbmUgQ0xPTkVfVkZPUksgMHgwMDAwNDAwMAoKI2RlZmlu ZSBDTE9ORV9QQVJFTlQgMHgwMDAwODAwMAoKI2RlZmluZSBDTE9ORV9USFJFQUQgMHgwMDAx MDAwMAojZGVmaW5lIENMT05FX05FV05TIDB4MDAwMjAwMDAKI2RlZmluZSBDTE9ORV9TWVNW U0VNIDB4MDAwNDAwMDAKI2RlZmluZSBDTE9ORV9TRVRUTFMgMHgwMDA4MDAwMAojZGVmaW5l IENMT05FX1BBUkVOVF9TRVRUSUQgMHgwMDEwMDAwMAoKI2RlZmluZSBDTE9ORV9DSElMRF9D TEVBUlRJRCAweDAwMjAwMDAwCgojZGVmaW5lIENMT05FX0RFVEFDSEVEIDB4MDA0MDAwMDAK I2RlZmluZSBDTE9ORV9VTlRSQUNFRCAweDAwODAwMDAwCgojZGVmaW5lIENMT05FX0NISUxE X1NFVFRJRCAweDAxMDAwMDAwCgojZGVmaW5lIENMT05FX05FV0NHUk9VUCAweDAyMDAwMDAw CiNkZWZpbmUgQ0xPTkVfTkVXVVRTIDB4MDQwMDAwMDAKI2RlZmluZSBDTE9ORV9ORVdJUEMg MHgwODAwMDAwMAojZGVmaW5lIENMT05FX05FV1VTRVIgMHgxMDAwMDAwMAojZGVmaW5lIENM T05FX05FV1BJRCAweDIwMDAwMDAwCiNkZWZpbmUgQ0xPTkVfTkVXTkVUIDB4NDAwMDAwMDAK I2RlZmluZSBDTE9ORV9JTyAweDgwMDAwMDAwCgoKCiNkZWZpbmUgQ0xPTkVfTkVXVElNRSAw eDAwMDAwMDgwCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90eXBlcy9zdHJ1Y3Rfc2NoZWRf cGFyYW0uaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X3Nj aGVkX3BhcmFtLmgiIDMgNAojZGVmaW5lIF9CSVRTX1RZUEVTX1NUUlVDVF9TQ0hFRF9QQVJB TSAxCgoKc3RydWN0IHNjaGVkX3BhcmFtCnsKICBpbnQgc2NoZWRfcHJpb3JpdHk7Cn07CiMg ODEgIi91c3IvaW5jbHVkZS9iaXRzL3NjaGVkLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCgoK ZXh0ZXJuIGludCBjbG9uZSAoaW50ICgqX19mbikgKHZvaWQgKl9fYXJnKSwgdm9pZCAqX19j aGlsZF9zdGFjaywKICAgIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZywgLi4uKSB0aHJvdyAo KTsKCgpleHRlcm4gaW50IHVuc2hhcmUgKGludCBfX2ZsYWdzKSB0aHJvdyAoKTsKCgpleHRl cm4gaW50IHNjaGVkX2dldGNwdSAodm9pZCkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBnZXRj cHUgKHVuc2lnbmVkIGludCAqLCB1bnNpZ25lZCBpbnQgKikgdGhyb3cgKCk7CgoKZXh0ZXJu IGludCBzZXRucyAoaW50IF9fZmQsIGludCBfX25zdHlwZSkgdGhyb3cgKCk7CgoKfQojIDQ0 ICIvdXNyL2luY2x1ZGUvc2NoZWQuaCIgMiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9j cHUtc2V0LmgiIDEgMyA0CiMgMjEgIi91c3IvaW5jbHVkZS9iaXRzL2NwdS1zZXQuaCIgMyA0 CiNkZWZpbmUgX0JJVFNfQ1BVX1NFVF9IIDEKCgoKCgoKI2RlZmluZSBfX0NQVV9TRVRTSVpF IDEwMjQKI2RlZmluZSBfX05DUFVCSVRTICg4ICogc2l6ZW9mIChfX2NwdV9tYXNrKSkKCgp0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IF9fY3B1X21hc2s7CgoKI2RlZmluZSBfX0NQVUVM VChjcHUpICgoY3B1KSAvIF9fTkNQVUJJVFMpCiNkZWZpbmUgX19DUFVNQVNLKGNwdSkgKChf X2NwdV9tYXNrKSAxIDw8ICgoY3B1KSAlIF9fTkNQVUJJVFMpKQoKCnR5cGVkZWYgc3RydWN0 CnsKICBfX2NwdV9tYXNrIF9fYml0c1sxMDI0IC8gKDggKiBzaXplb2YgKF9fY3B1X21hc2sp KV07Cn0gY3B1X3NldF90OwoKCgojZGVmaW5lIF9fQ1BVX1pFUk9fUyhzZXRzaXplLGNwdXNl dHApIGRvIF9fYnVpbHRpbl9tZW1zZXQgKGNwdXNldHAsICdcMCcsIHNldHNpemUpOyB3aGls ZSAoMCkKIyA1OCAiL3Vzci9pbmNsdWRlL2JpdHMvY3B1LXNldC5oIiAzIDQKI2RlZmluZSBf X0NQVV9TRVRfUyhjcHUsc2V0c2l6ZSxjcHVzZXRwKSAoX19leHRlbnNpb25fXyAoeyBzaXpl X3QgX19jcHUgPSAoY3B1KTsgX19jcHUgLyA4IDwgKHNldHNpemUpID8gKCgoX19jcHVfbWFz ayAqKSAoKGNwdXNldHApLT5fX2JpdHMpKVtfX0NQVUVMVCAoX19jcHUpXSB8PSBfX0NQVU1B U0sgKF9fY3B1KSkgOiAwOyB9KSkKCgoKCgoKI2RlZmluZSBfX0NQVV9DTFJfUyhjcHUsc2V0 c2l6ZSxjcHVzZXRwKSAoX19leHRlbnNpb25fXyAoeyBzaXplX3QgX19jcHUgPSAoY3B1KTsg X19jcHUgLyA4IDwgKHNldHNpemUpID8gKCgoX19jcHVfbWFzayAqKSAoKGNwdXNldHApLT5f X2JpdHMpKVtfX0NQVUVMVCAoX19jcHUpXSAmPSB+X19DUFVNQVNLIChfX2NwdSkpIDogMDsg fSkpCgoKCgoKCiNkZWZpbmUgX19DUFVfSVNTRVRfUyhjcHUsc2V0c2l6ZSxjcHVzZXRwKSAo X19leHRlbnNpb25fXyAoeyBzaXplX3QgX19jcHUgPSAoY3B1KTsgX19jcHUgLyA4IDwgKHNl dHNpemUpID8gKCgoKGNvbnN0IF9fY3B1X21hc2sgKikgKChjcHVzZXRwKS0+X19iaXRzKSlb X19DUFVFTFQgKF9fY3B1KV0gJiBfX0NQVU1BU0sgKF9fY3B1KSkpICE9IDAgOiAwOyB9KSkK CgoKCgoKCiNkZWZpbmUgX19DUFVfQ09VTlRfUyhzZXRzaXplLGNwdXNldHApIF9fc2NoZWRf Y3B1Y291bnQgKHNldHNpemUsIGNwdXNldHApCgoKCiNkZWZpbmUgX19DUFVfRVFVQUxfUyhz ZXRzaXplLGNwdXNldHAxLGNwdXNldHAyKSAoX19idWlsdGluX21lbWNtcCAoY3B1c2V0cDEs IGNwdXNldHAyLCBzZXRzaXplKSA9PSAwKQojIDk5ICIvdXNyL2luY2x1ZGUvYml0cy9jcHUt c2V0LmgiIDMgNAojZGVmaW5lIF9fQ1BVX09QX1Moc2V0c2l6ZSxkZXN0c2V0LHNyY3NldDEs c3Jjc2V0MixvcCkgKF9fZXh0ZW5zaW9uX18gKHsgY3B1X3NldF90ICpfX2Rlc3QgPSAoZGVz dHNldCk7IGNvbnN0IF9fY3B1X21hc2sgKl9fYXJyMSA9IChzcmNzZXQxKS0+X19iaXRzOyBj b25zdCBfX2NwdV9tYXNrICpfX2FycjIgPSAoc3Jjc2V0MiktPl9fYml0czsgc2l6ZV90IF9f aW1heCA9IChzZXRzaXplKSAvIHNpemVvZiAoX19jcHVfbWFzayk7IHNpemVfdCBfX2k7IGZv ciAoX19pID0gMDsgX19pIDwgX19pbWF4OyArK19faSkgKChfX2NwdV9tYXNrICopIF9fZGVz dC0+X19iaXRzKVtfX2ldID0gX19hcnIxW19faV0gb3AgX19hcnIyW19faV07IF9fZGVzdDsg fSkpCiMgMTEwICIvdXNyL2luY2x1ZGUvYml0cy9jcHUtc2V0LmgiIDMgNAojZGVmaW5lIF9f Q1BVX0FMTE9DX1NJWkUoY291bnQpICgoKChjb3VudCkgKyBfX05DUFVCSVRTIC0gMSkgLyBf X05DUFVCSVRTKSAqIHNpemVvZiAoX19jcHVfbWFzaykpCgojZGVmaW5lIF9fQ1BVX0FMTE9D KGNvdW50KSBfX3NjaGVkX2NwdWFsbG9jIChjb3VudCkKI2RlZmluZSBfX0NQVV9GUkVFKGNw dXNldCkgX19zY2hlZF9jcHVmcmVlIChjcHVzZXQpCgpleHRlcm4gIkMiIHsKCmV4dGVybiBp bnQgX19zY2hlZF9jcHVjb3VudCAoc2l6ZV90IF9fc2V0c2l6ZSwgY29uc3QgY3B1X3NldF90 ICpfX3NldHApCiAgICAgdGhyb3cgKCk7CmV4dGVybiBjcHVfc2V0X3QgKl9fc2NoZWRfY3B1 YWxsb2MgKHNpemVfdCBfX2NvdW50KSB0aHJvdyAoKSA7CmV4dGVybiB2b2lkIF9fc2NoZWRf Y3B1ZnJlZSAoY3B1X3NldF90ICpfX3NldCkgdGhyb3cgKCk7Cgp9CiMgNDUgIi91c3IvaW5j bHVkZS9zY2hlZC5oIiAyIDMgNAoKCiNkZWZpbmUgc2NoZWRfcHJpb3JpdHkgc2NoZWRfcHJp b3JpdHkKI2RlZmluZSBfX3NjaGVkX3ByaW9yaXR5IHNjaGVkX3ByaW9yaXR5CgoKZXh0ZXJu ICJDIiB7CgoKZXh0ZXJuIGludCBzY2hlZF9zZXRwYXJhbSAoX19waWRfdCBfX3BpZCwgY29u c3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKQogICAgIHRocm93ICgpOwoKCmV4dGVy biBpbnQgc2NoZWRfZ2V0cGFyYW0gKF9fcGlkX3QgX19waWQsIHN0cnVjdCBzY2hlZF9wYXJh bSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzY2hlZF9zZXRzY2hlZHVsZXIg KF9fcGlkX3QgX19waWQsIGludCBfX3BvbGljeSwKICAgICAgICAgIGNvbnN0IHN0cnVjdCBz Y2hlZF9wYXJhbSAqX19wYXJhbSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRz Y2hlZHVsZXIgKF9fcGlkX3QgX19waWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRf eWllbGQgKHZvaWQpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgc2NoZWRfZ2V0X3ByaW9yaXR5 X21heCAoaW50IF9fYWxnb3JpdGhtKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHNjaGVkX2dl dF9wcmlvcml0eV9taW4gKGludCBfX2FsZ29yaXRobSkgdGhyb3cgKCk7CgoKCmV4dGVybiBp bnQgc2NoZWRfcnJfZ2V0X2ludGVydmFsIChfX3BpZF90IF9fcGlkLCBzdHJ1Y3QgdGltZXNw ZWMgKl9fdCkgdGhyb3cgKCk7CiMgOTEgIi91c3IvaW5jbHVkZS9zY2hlZC5oIiAzIDQKI2Rl ZmluZSBDUFVfU0VUU0laRSBfX0NQVV9TRVRTSVpFCiNkZWZpbmUgQ1BVX1NFVChjcHUsY3B1 c2V0cCkgX19DUFVfU0VUX1MgKGNwdSwgc2l6ZW9mIChjcHVfc2V0X3QpLCBjcHVzZXRwKQoj ZGVmaW5lIENQVV9DTFIoY3B1LGNwdXNldHApIF9fQ1BVX0NMUl9TIChjcHUsIHNpemVvZiAo Y3B1X3NldF90KSwgY3B1c2V0cCkKI2RlZmluZSBDUFVfSVNTRVQoY3B1LGNwdXNldHApIF9f Q1BVX0lTU0VUX1MgKGNwdSwgc2l6ZW9mIChjcHVfc2V0X3QpLCBjcHVzZXRwKQoKI2RlZmlu ZSBDUFVfWkVSTyhjcHVzZXRwKSBfX0NQVV9aRVJPX1MgKHNpemVvZiAoY3B1X3NldF90KSwg Y3B1c2V0cCkKI2RlZmluZSBDUFVfQ09VTlQoY3B1c2V0cCkgX19DUFVfQ09VTlRfUyAoc2l6 ZW9mIChjcHVfc2V0X3QpLCBjcHVzZXRwKQoKI2RlZmluZSBDUFVfU0VUX1MoY3B1LHNldHNp emUsY3B1c2V0cCkgX19DUFVfU0VUX1MgKGNwdSwgc2V0c2l6ZSwgY3B1c2V0cCkKI2RlZmlu ZSBDUFVfQ0xSX1MoY3B1LHNldHNpemUsY3B1c2V0cCkgX19DUFVfQ0xSX1MgKGNwdSwgc2V0 c2l6ZSwgY3B1c2V0cCkKI2RlZmluZSBDUFVfSVNTRVRfUyhjcHUsc2V0c2l6ZSxjcHVzZXRw KSBfX0NQVV9JU1NFVF9TIChjcHUsIHNldHNpemUsIGNwdXNldHApCgojZGVmaW5lIENQVV9a RVJPX1Moc2V0c2l6ZSxjcHVzZXRwKSBfX0NQVV9aRVJPX1MgKHNldHNpemUsIGNwdXNldHAp CiNkZWZpbmUgQ1BVX0NPVU5UX1Moc2V0c2l6ZSxjcHVzZXRwKSBfX0NQVV9DT1VOVF9TIChz ZXRzaXplLCBjcHVzZXRwKQoKI2RlZmluZSBDUFVfRVFVQUwoY3B1c2V0cDEsY3B1c2V0cDIp IF9fQ1BVX0VRVUFMX1MgKHNpemVvZiAoY3B1X3NldF90KSwgY3B1c2V0cDEsIGNwdXNldHAy KQoKI2RlZmluZSBDUFVfRVFVQUxfUyhzZXRzaXplLGNwdXNldHAxLGNwdXNldHAyKSBfX0NQ VV9FUVVBTF9TIChzZXRzaXplLCBjcHVzZXRwMSwgY3B1c2V0cDIpCgoKI2RlZmluZSBDUFVf QU5EKGRlc3RzZXQsc3Jjc2V0MSxzcmNzZXQyKSBfX0NQVV9PUF9TIChzaXplb2YgKGNwdV9z ZXRfdCksIGRlc3RzZXQsIHNyY3NldDEsIHNyY3NldDIsICYpCgojZGVmaW5lIENQVV9PUihk ZXN0c2V0LHNyY3NldDEsc3Jjc2V0MikgX19DUFVfT1BfUyAoc2l6ZW9mIChjcHVfc2V0X3Qp LCBkZXN0c2V0LCBzcmNzZXQxLCBzcmNzZXQyLCB8KQoKI2RlZmluZSBDUFVfWE9SKGRlc3Rz ZXQsc3Jjc2V0MSxzcmNzZXQyKSBfX0NQVV9PUF9TIChzaXplb2YgKGNwdV9zZXRfdCksIGRl c3RzZXQsIHNyY3NldDEsIHNyY3NldDIsIF4pCgojZGVmaW5lIENQVV9BTkRfUyhzZXRzaXpl LGRlc3RzZXQsc3Jjc2V0MSxzcmNzZXQyKSBfX0NQVV9PUF9TIChzZXRzaXplLCBkZXN0c2V0 LCBzcmNzZXQxLCBzcmNzZXQyLCAmKQoKI2RlZmluZSBDUFVfT1JfUyhzZXRzaXplLGRlc3Rz ZXQsc3Jjc2V0MSxzcmNzZXQyKSBfX0NQVV9PUF9TIChzZXRzaXplLCBkZXN0c2V0LCBzcmNz ZXQxLCBzcmNzZXQyLCB8KQoKI2RlZmluZSBDUFVfWE9SX1Moc2V0c2l6ZSxkZXN0c2V0LHNy Y3NldDEsc3Jjc2V0MikgX19DUFVfT1BfUyAoc2V0c2l6ZSwgZGVzdHNldCwgc3Jjc2V0MSwg c3Jjc2V0MiwgXikKCgojZGVmaW5lIENQVV9BTExPQ19TSVpFKGNvdW50KSBfX0NQVV9BTExP Q19TSVpFIChjb3VudCkKI2RlZmluZSBDUFVfQUxMT0MoY291bnQpIF9fQ1BVX0FMTE9DIChj b3VudCkKI2RlZmluZSBDUFVfRlJFRShjcHVzZXQpIF9fQ1BVX0ZSRUUgKGNwdXNldCkKCgoK ZXh0ZXJuIGludCBzY2hlZF9zZXRhZmZpbml0eSAoX19waWRfdCBfX3BpZCwgc2l6ZV90IF9f Y3B1c2V0c2l6ZSwKICAgICAgICAgY29uc3QgY3B1X3NldF90ICpfX2NwdXNldCkgdGhyb3cg KCk7CgoKZXh0ZXJuIGludCBzY2hlZF9nZXRhZmZpbml0eSAoX19waWRfdCBfX3BpZCwgc2l6 ZV90IF9fY3B1c2V0c2l6ZSwKICAgICAgICAgY3B1X3NldF90ICpfX2NwdXNldCkgdGhyb3cg KCk7CgoKfQojIDMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4wL2luY2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDEgMyA0CiMgMjMgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojZGVmaW5lIF9U SU1FX0ggMQoKCgojZGVmaW5lIF9fbmVlZF9zaXplX3QgCiNkZWZpbmUgX19uZWVkX05VTEwg CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNs dWRlL3N0ZGRlZi5oIiAxIDMgNAojIDIzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQt bGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9z aXplX3QKIyAzOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4w LjAvaW5jbHVkZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBOVUxMCgojZGVmaW5lIE5VTEwgX19u dWxsCiMgNDEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4w L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX05VTEwKIyAzMCAiL3Vzci9p bmNsdWRlL3RpbWUuaCIgMiAzIDQKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90aW1lLmgi IDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWUuaCIgMyA0CiNkZWZpbmUgX0JJ VFNfVElNRV9IIDEKIyAzNCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzIDQKI2RlZmlu ZSBDTE9DS1NfUEVSX1NFQyAoKF9fY2xvY2tfdCkgMTAwMDAwMCkKIyA0NiAiL3Vzci9pbmNs dWRlL2JpdHMvdGltZS5oIiAzIDQKI2RlZmluZSBDTE9DS19SRUFMVElNRSAwCgojZGVmaW5l IENMT0NLX01PTk9UT05JQyAxCgojZGVmaW5lIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCAy CgojZGVmaW5lIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEIDMKCiNkZWZpbmUgQ0xPQ0tfTU9O T1RPTklDX1JBVyA0CgojZGVmaW5lIENMT0NLX1JFQUxUSU1FX0NPQVJTRSA1CgojZGVmaW5l IENMT0NLX01PTk9UT05JQ19DT0FSU0UgNgoKI2RlZmluZSBDTE9DS19CT09UVElNRSA3Cgoj ZGVmaW5lIENMT0NLX1JFQUxUSU1FX0FMQVJNIDgKCiNkZWZpbmUgQ0xPQ0tfQk9PVFRJTUVf QUxBUk0gOQoKI2RlZmluZSBDTE9DS19UQUkgMTEKCgojZGVmaW5lIFRJTUVSX0FCU1RJTUUg MQoKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3RpbWV4LmgiIDEgMyA0CiMgMTkgIi91c3Iv aW5jbHVkZS9iaXRzL3RpbWV4LmgiIDMgNAojZGVmaW5lIF9CSVRTX1RJTUVYX0ggMQoKCgoK CgpzdHJ1Y3QgdGltZXgKewojIDU4ICIvdXNyL2luY2x1ZGUvYml0cy90aW1leC5oIiAzIDQK ICB1bnNpZ25lZCBpbnQgbW9kZXM7CiAgX19zeXNjYWxsX3Nsb25nX3Qgb2Zmc2V0OwogIF9f c3lzY2FsbF9zbG9uZ190IGZyZXE7CiAgX19zeXNjYWxsX3Nsb25nX3QgbWF4ZXJyb3I7CiAg X19zeXNjYWxsX3Nsb25nX3QgZXN0ZXJyb3I7CiAgaW50IHN0YXR1czsKICBfX3N5c2NhbGxf c2xvbmdfdCBjb25zdGFudDsKICBfX3N5c2NhbGxfc2xvbmdfdCBwcmVjaXNpb247CiAgX19z eXNjYWxsX3Nsb25nX3QgdG9sZXJhbmNlOwogIHN0cnVjdCB0aW1ldmFsIHRpbWU7CiAgX19z eXNjYWxsX3Nsb25nX3QgdGljazsKICBfX3N5c2NhbGxfc2xvbmdfdCBwcHNmcmVxOwogIF9f c3lzY2FsbF9zbG9uZ190IGppdHRlcjsKICBpbnQgc2hpZnQ7CiAgX19zeXNjYWxsX3Nsb25n X3Qgc3RhYmlsOwogIF9fc3lzY2FsbF9zbG9uZ190IGppdGNudDsKICBfX3N5c2NhbGxfc2xv bmdfdCBjYWxjbnQ7CiAgX19zeXNjYWxsX3Nsb25nX3QgZXJyY250OwogIF9fc3lzY2FsbF9z bG9uZ190IHN0YmNudDsKCiAgaW50IHRhaTsKCgogIGludCA6MzI7IGludCA6MzI7IGludCA6 MzI7IGludCA6MzI7CiAgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsgaW50IDozMjsKICBp bnQgOjMyOyBpbnQgOjMyOyBpbnQgOjMyOwoKfTsKCgojZGVmaW5lIEFESl9PRkZTRVQgMHgw MDAxCiNkZWZpbmUgQURKX0ZSRVFVRU5DWSAweDAwMDIKI2RlZmluZSBBREpfTUFYRVJST1Ig MHgwMDA0CiNkZWZpbmUgQURKX0VTVEVSUk9SIDB4MDAwOAojZGVmaW5lIEFESl9TVEFUVVMg MHgwMDEwCiNkZWZpbmUgQURKX1RJTUVDT05TVCAweDAwMjAKI2RlZmluZSBBREpfVEFJIDB4 MDA4MAojZGVmaW5lIEFESl9TRVRPRkZTRVQgMHgwMTAwCiNkZWZpbmUgQURKX01JQ1JPIDB4 MTAwMAojZGVmaW5lIEFESl9OQU5PIDB4MjAwMAojZGVmaW5lIEFESl9USUNLIDB4NDAwMAoj ZGVmaW5lIEFESl9PRkZTRVRfU0lOR0xFU0hPVCAweDgwMDEKI2RlZmluZSBBREpfT0ZGU0VU X1NTX1JFQUQgMHhhMDAxCgoKI2RlZmluZSBNT0RfT0ZGU0VUIEFESl9PRkZTRVQKI2RlZmlu ZSBNT0RfRlJFUVVFTkNZIEFESl9GUkVRVUVOQ1kKI2RlZmluZSBNT0RfTUFYRVJST1IgQURK X01BWEVSUk9SCiNkZWZpbmUgTU9EX0VTVEVSUk9SIEFESl9FU1RFUlJPUgojZGVmaW5lIE1P RF9TVEFUVVMgQURKX1NUQVRVUwojZGVmaW5lIE1PRF9USU1FQ09OU1QgQURKX1RJTUVDT05T VAojZGVmaW5lIE1PRF9DTEtCIEFESl9USUNLCiNkZWZpbmUgTU9EX0NMS0EgQURKX09GRlNF VF9TSU5HTEVTSE9UCiNkZWZpbmUgTU9EX1RBSSBBREpfVEFJCiNkZWZpbmUgTU9EX01JQ1JP IEFESl9NSUNSTwojZGVmaW5lIE1PRF9OQU5PIEFESl9OQU5PCgoKCiNkZWZpbmUgU1RBX1BM TCAweDAwMDEKI2RlZmluZSBTVEFfUFBTRlJFUSAweDAwMDIKI2RlZmluZSBTVEFfUFBTVElN RSAweDAwMDQKI2RlZmluZSBTVEFfRkxMIDB4MDAwOAoKI2RlZmluZSBTVEFfSU5TIDB4MDAx MAojZGVmaW5lIFNUQV9ERUwgMHgwMDIwCiNkZWZpbmUgU1RBX1VOU1lOQyAweDAwNDAKI2Rl ZmluZSBTVEFfRlJFUUhPTEQgMHgwMDgwCgojZGVmaW5lIFNUQV9QUFNTSUdOQUwgMHgwMTAw CiNkZWZpbmUgU1RBX1BQU0pJVFRFUiAweDAyMDAKI2RlZmluZSBTVEFfUFBTV0FOREVSIDB4 MDQwMAojZGVmaW5lIFNUQV9QUFNFUlJPUiAweDA4MDAKCiNkZWZpbmUgU1RBX0NMT0NLRVJS IDB4MTAwMAojZGVmaW5lIFNUQV9OQU5PIDB4MjAwMAojZGVmaW5lIFNUQV9NT0RFIDB4NDAw MAojZGVmaW5lIFNUQV9DTEsgMHg4MDAwCgoKI2RlZmluZSBTVEFfUk9OTFkgKFNUQV9QUFNT SUdOQUwgfCBTVEFfUFBTSklUVEVSIHwgU1RBX1BQU1dBTkRFUiB8IFNUQV9QUFNFUlJPUiB8 IFNUQV9DTE9DS0VSUiB8IFNUQV9OQU5PIHwgU1RBX01PREUgfCBTVEFfQ0xLKQojIDc0ICIv dXNyL2luY2x1ZGUvYml0cy90aW1lLmgiIDIgMyA0CgpleHRlcm4gIkMiIHsKCgpleHRlcm4g aW50IGNsb2NrX2FkanRpbWUgKF9fY2xvY2tpZF90IF9fY2xvY2tfaWQsIHN0cnVjdCB0aW1l eCAqX191dHgpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMikpKTsK IyA5MCAiL3Vzci9pbmNsdWRlL2JpdHMvdGltZS5oIiAzIDQKfQojIDM0ICIvdXNyL2luY2x1 ZGUvdGltZS5oIiAyIDMgNAoKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3Ry dWN0X3RtLmgiIDEgMyA0CgojZGVmaW5lIF9fc3RydWN0X3RtX2RlZmluZWQgMQoKCgoKc3Ry dWN0IHRtCnsKICBpbnQgdG1fc2VjOwogIGludCB0bV9taW47CiAgaW50IHRtX2hvdXI7CiAg aW50IHRtX21kYXk7CiAgaW50IHRtX21vbjsKICBpbnQgdG1feWVhcjsKICBpbnQgdG1fd2Rh eTsKICBpbnQgdG1feWRheTsKICBpbnQgdG1faXNkc3Q7CgoKICBsb25nIGludCB0bV9nbXRv ZmY7CiAgY29uc3QgY2hhciAqdG1fem9uZTsKCgoKCn07CiMgNDAgIi91c3IvaW5jbHVkZS90 aW1lLmgiIDIgMyA0CiMgNDggIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojIDEgIi91c3Iv aW5jbHVkZS9iaXRzL3R5cGVzL3N0cnVjdF9pdGltZXJzcGVjLmgiIDEgMyA0CgojZGVmaW5l IF9faXRpbWVyc3BlY19kZWZpbmVkIDEKCgoKCgpzdHJ1Y3QgaXRpbWVyc3BlYwogIHsKICAg IHN0cnVjdCB0aW1lc3BlYyBpdF9pbnRlcnZhbDsKICAgIHN0cnVjdCB0aW1lc3BlYyBpdF92 YWx1ZTsKICB9OwojIDQ5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAyIDMgNApzdHJ1Y3Qgc2ln ZXZlbnQ7CiMgNjUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNAojZGVmaW5lIFRJTUVfVVRD IDEKCgpleHRlcm4gIkMiIHsKCgoKZXh0ZXJuIGNsb2NrX3QgY2xvY2sgKHZvaWQpIHRocm93 ICgpOwoKCgpleHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqX190aW1lcikgdGhyb3cgKCk7 CgoKZXh0ZXJuIGRvdWJsZSBkaWZmdGltZSAodGltZV90IF9fdGltZTEsIHRpbWVfdCBfX3Rp bWUwKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgpleHRl cm4gdGltZV90IG1rdGltZSAoc3RydWN0IHRtICpfX3RwKSB0aHJvdyAoKTsKIyAxMDAgIi91 c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gc2l6ZV90IHN0cmZ0aW1lIChjaGFyICpf X3Jlc3RyaWN0IF9fcywgc2l6ZV90IF9fbWF4c2l6ZSwKICAgY29uc3QgY2hhciAqX19yZXN0 cmljdCBfX2Zvcm1hdCwKICAgY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHApIHRo cm93ICgpOwoKCgoKZXh0ZXJuIGNoYXIgKnN0cnB0aW1lIChjb25zdCBjaGFyICpfX3Jlc3Ry aWN0IF9fcywKICAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwgc3RydWN0 IHRtICpfX3RwKQogICAgIHRocm93ICgpOwoKCgoKCgpleHRlcm4gc2l6ZV90IHN0cmZ0aW1l X2wgKGNoYXIgKl9fcmVzdHJpY3QgX19zLCBzaXplX3QgX19tYXhzaXplLAogICAgIGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgY29uc3Qgc3RydWN0IHRtICpfX3Jl c3RyaWN0IF9fdHAsCiAgICAgbG9jYWxlX3QgX19sb2MpIHRocm93ICgpOwoKCgpleHRlcm4g Y2hhciAqc3RycHRpbWVfbCAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3MsCiAgICBjb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCBzdHJ1Y3QgdG0gKl9fdHAsCiAgICBsb2NhbGVf dCBfX2xvYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZSAoY29u c3QgdGltZV90ICpfX3RpbWVyKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9j YWx0aW1lIChjb25zdCB0aW1lX3QgKl9fdGltZXIpIHRocm93ICgpOwojIDE1NCAiL3Vzci9p bmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0gKmdtdGltZV9yIChjb25zdCB0 aW1lX3QgKl9fcmVzdHJpY3QgX190aW1lciwKICAgICAgIHN0cnVjdCB0bSAqX19yZXN0cmlj dCBfX3RwKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIHN0cnVjdCB0bSAqbG9jYWx0aW1lX3IgKGNv bnN0IHRpbWVfdCAqX19yZXN0cmljdCBfX3RpbWVyLAogICAgICAgICAgc3RydWN0IHRtICpf X3Jlc3RyaWN0IF9fdHApIHRocm93ICgpOwojIDE3OSAiL3Vzci9pbmNsdWRlL3RpbWUuaCIg MyA0CmV4dGVybiBjaGFyICphc2N0aW1lIChjb25zdCBzdHJ1Y3QgdG0gKl9fdHApIHRocm93 ICgpOwoKCgpleHRlcm4gY2hhciAqY3RpbWUgKGNvbnN0IHRpbWVfdCAqX190aW1lcikgdGhy b3cgKCk7CiMgMTk3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGNoYXIgKmFz Y3RpbWVfciAoY29uc3Qgc3RydWN0IHRtICpfX3Jlc3RyaWN0IF9fdHAsCiAgIGNoYXIgKl9f cmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgpleHRlcm4gY2hhciAqY3RpbWVfciAoY29u c3QgdGltZV90ICpfX3Jlc3RyaWN0IF9fdGltZXIsCiAgICAgICAgY2hhciAqX19yZXN0cmlj dCBfX2J1ZikgdGhyb3cgKCk7CiMgMjE3ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0 ZXJuIGNoYXIgKl9fdHpuYW1lWzJdOwpleHRlcm4gaW50IF9fZGF5bGlnaHQ7CmV4dGVybiBs b25nIGludCBfX3RpbWV6b25lOwoKCgoKZXh0ZXJuIGNoYXIgKnR6bmFtZVsyXTsKCgoKZXh0 ZXJuIHZvaWQgdHpzZXQgKHZvaWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGRheWxpZ2h0 OwpleHRlcm4gbG9uZyBpbnQgdGltZXpvbmU7CgoKCgoKI2RlZmluZSBfX2lzbGVhcCh5ZWFy KSAoKHllYXIpICUgNCA9PSAwICYmICgoeWVhcikgJSAxMDAgIT0gMCB8fCAoeWVhcikgJSA0 MDAgPT0gMCkpCgoKCgoKCmV4dGVybiB0aW1lX3QgdGltZWdtIChzdHJ1Y3QgdG0gKl9fdHAp IHRocm93ICgpOwojIDI2MyAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiB0aW1l X3QgdGltZWxvY2FsIChzdHJ1Y3QgdG0gKl9fdHApIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJu IGludCBkeXNpemUgKGludCBfX3llYXIpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2Nv bnN0X18pKTsKIyAyODEgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IG5h bm9zbGVlcCAoY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3JlcXVlc3RlZF90aW1lLAogICAg ICAgIHN0cnVjdCB0aW1lc3BlYyAqX19yZW1haW5pbmcpOwoKCmV4dGVybiBpbnQgY2xvY2tf Z2V0cmVzIChjbG9ja2lkX3QgX19jbG9ja19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3Jlcykg dGhyb3cgKCk7CgoKZXh0ZXJuIGludCBjbG9ja19nZXR0aW1lIChjbG9ja2lkX3QgX19jbG9j a19pZCwgc3RydWN0IHRpbWVzcGVjICpfX3RwKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMikpKTsKCgpleHRlcm4gaW50IGNsb2NrX3NldHRpbWUgKGNs b2NraWRfdCBfX2Nsb2NrX2lkLCBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fdHApCiAgICAg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwojIDMyMyAiL3Vz ci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBpbnQgY2xvY2tfbmFub3NsZWVwIChjbG9j a2lkX3QgX19jbG9ja19pZCwgaW50IF9fZmxhZ3MsCiAgICAgICBjb25zdCBzdHJ1Y3QgdGlt ZXNwZWMgKl9fcmVxLAogICAgICAgc3RydWN0IHRpbWVzcGVjICpfX3JlbSk7CiMgMzM4ICIv dXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCBjbG9ja19nZXRjcHVjbG9ja2lk IChwaWRfdCBfX3BpZCwgY2xvY2tpZF90ICpfX2Nsb2NrX2lkKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBpbnQgdGltZXJfY3JlYXRlIChjbG9ja2lkX3QgX19jbG9ja19pZCwKICAgIHN0cnVj dCBzaWdldmVudCAqX19yZXN0cmljdCBfX2V2cCwKICAgIHRpbWVyX3QgKl9fcmVzdHJpY3Qg X190aW1lcmlkKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRpbWVyX2RlbGV0ZSAodGltZXJf dCBfX3RpbWVyaWQpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHRpbWVyX3NldHRpbWUgKHRp bWVyX3QgX190aW1lcmlkLCBpbnQgX19mbGFncywKICAgICBjb25zdCBzdHJ1Y3QgaXRpbWVy c3BlYyAqX19yZXN0cmljdCBfX3ZhbHVlLAogICAgIHN0cnVjdCBpdGltZXJzcGVjICpfX3Jl c3RyaWN0IF9fb3ZhbHVlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHRpbWVyX2dldHRpbWUg KHRpbWVyX3QgX190aW1lcmlkLCBzdHJ1Y3QgaXRpbWVyc3BlYyAqX192YWx1ZSkKICAgICB0 aHJvdyAoKTsKIyAzNzYgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IHRp bWVyX2dldG92ZXJydW4gKHRpbWVyX3QgX190aW1lcmlkKSB0aHJvdyAoKTsKCgoKCgoKZXh0 ZXJuIGludCB0aW1lc3BlY19nZXQgKHN0cnVjdCB0aW1lc3BlYyAqX190cywgaW50IF9fYmFz ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMg Mzk5ICIvdXNyL2luY2x1ZGUvdGltZS5oIiAzIDQKZXh0ZXJuIGludCB0aW1lc3BlY19nZXRy ZXMgKHN0cnVjdCB0aW1lc3BlYyAqX190cywgaW50IF9fYmFzZSkKICAgICB0aHJvdyAoKTsK IyA0MjUgIi91c3IvaW5jbHVkZS90aW1lLmgiIDMgNApleHRlcm4gaW50IGdldGRhdGVfZXJy OwojIDQzNCAiL3Vzci9pbmNsdWRlL3RpbWUuaCIgMyA0CmV4dGVybiBzdHJ1Y3QgdG0gKmdl dGRhdGUgKGNvbnN0IGNoYXIgKl9fc3RyaW5nKTsKIyA0NDggIi91c3IvaW5jbHVkZS90aW1l LmgiIDMgNApleHRlcm4gaW50IGdldGRhdGVfciAoY29uc3QgY2hhciAqX19yZXN0cmljdCBf X3N0cmluZywKICAgICAgICBzdHJ1Y3QgdG0gKl9fcmVzdHJpY3QgX19yZXNidWZwKTsKCgp9 CiMgMzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5j bHVkZS1maXhlZC9wdGhyZWFkLmgiIDIgMyA0CgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv c2V0am1wLmgiIDEgMyA0CiMgMjAgIi91c3IvaW5jbHVkZS9iaXRzL3NldGptcC5oIiAzIDQK I2RlZmluZSBfTE9PTkdBUkNIX0JJVFNfU0VUSk1QX0ggCgp0eXBlZGVmIHN0cnVjdCBfX2pt cF9idWZfaW50ZXJuYWxfdGFnCnsKCiAgbG9uZyBpbnQgX19wYzsKCiAgbG9uZyBpbnQgX19z cDsKCiAgbG9uZyBpbnQgX194OwoKICBsb25nIGludCBfX2ZwOwoKICBsb25nIGludCBfX3Jl Z3NbOV07CgoKCiAgZG91YmxlIF9fZnByZWdzWzhdOwoKCn0gX19qbXBfYnVmWzFdOwojIDM3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUt Zml4ZWQvcHRocmVhZC5oIiAyIDMgNAojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXpl LmgiIDEgMyA0CiMgMTggIi91c3IvaW5jbHVkZS9iaXRzL3dvcmRzaXplLmgiIDMgNAojZGVm aW5lIF9fV09SRFNJWkUgNjQKI2RlZmluZSBfX1dPUkRTSVpFX1RJTUU2NF9DT01QQVQzMiAw CiMgMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5j bHVkZS1maXhlZC9wdGhyZWFkLmgiIDIgMyA0CgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy90 eXBlcy9zdHJ1Y3RfX19qbXBfYnVmX3RhZy5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUv Yml0cy90eXBlcy9zdHJ1Y3RfX19qbXBfYnVmX3RhZy5oIiAzIDQKI2RlZmluZSBfX2ptcF9i dWZfdGFnX2RlZmluZWQgMQoKCgoKCnN0cnVjdCBfX2ptcF9idWZfdGFnCiAgewoKCgoKICAg IF9fam1wX2J1ZiBfX2ptcGJ1ZjsKICAgIGludCBfX21hc2tfd2FzX3NhdmVkOwogICAgX19z aWdzZXRfdCBfX3NhdmVkX21hc2s7CiAgfTsKIyA0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdh cmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJlYWQuaCIgMiAzIDQK CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvcHRocmVhZF9zdGFja19taW4tZHluYW1pYy5oIiAx IDMgNAojIDIyICIvdXNyL2luY2x1ZGUvYml0cy9wdGhyZWFkX3N0YWNrX21pbi1keW5hbWlj LmgiIDMgNAojZGVmaW5lIF9fU0NfVEhSRUFEX1NUQUNLX01JTl9WQUxVRSA3NQpleHRlcm4g IkMiIHsKZXh0ZXJuIGxvbmcgaW50IF9fc3lzY29uZiAoaW50IF9fbmFtZSkgdGhyb3cgKCk7 Cn0KI2RlZmluZSBQVEhSRUFEX1NUQUNLX01JTiBfX3N5c2NvbmYgKF9fU0NfVEhSRUFEX1NU QUNLX01JTl9WQUxVRSkKIyA0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgt Z251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJlYWQuaCIgMiAzIDQKCgoKZW51bQp7CiAg UFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUsCiNkZWZpbmUgUFRIUkVBRF9DUkVBVEVfSk9JTkFC TEUgUFRIUkVBRF9DUkVBVEVfSk9JTkFCTEUKICBQVEhSRUFEX0NSRUFURV9ERVRBQ0hFRAoj ZGVmaW5lIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVEIFBUSFJFQURfQ1JFQVRFX0RFVEFDSEVE Cn07CgoKCmVudW0KewogIFBUSFJFQURfTVVURVhfVElNRURfTlAsCiAgUFRIUkVBRF9NVVRF WF9SRUNVUlNJVkVfTlAsCiAgUFRIUkVBRF9NVVRFWF9FUlJPUkNIRUNLX05QLAogIFBUSFJF QURfTVVURVhfQURBUFRJVkVfTlAKCiAgLAogIFBUSFJFQURfTVVURVhfTk9STUFMID0gUFRI UkVBRF9NVVRFWF9USU1FRF9OUCwKICBQVEhSRUFEX01VVEVYX1JFQ1VSU0lWRSA9IFBUSFJF QURfTVVURVhfUkVDVVJTSVZFX05QLAogIFBUSFJFQURfTVVURVhfRVJST1JDSEVDSyA9IFBU SFJFQURfTVVURVhfRVJST1JDSEVDS19OUCwKICBQVEhSRUFEX01VVEVYX0RFRkFVTFQgPSBQ VEhSRUFEX01VVEVYX05PUk1BTAoKCgogICwgUFRIUkVBRF9NVVRFWF9GQVNUX05QID0gUFRI UkVBRF9NVVRFWF9USU1FRF9OUAoKfTsKCgoKCmVudW0KewogIFBUSFJFQURfTVVURVhfU1RB TExFRCwKICBQVEhSRUFEX01VVEVYX1NUQUxMRURfTlAgPSBQVEhSRUFEX01VVEVYX1NUQUxM RUQsCiAgUFRIUkVBRF9NVVRFWF9ST0JVU1QsCiAgUFRIUkVBRF9NVVRFWF9ST0JVU1RfTlAg PSBQVEhSRUFEX01VVEVYX1JPQlVTVAp9OwoKCgoKCmVudW0KewogIFBUSFJFQURfUFJJT19O T05FLAogIFBUSFJFQURfUFJJT19JTkhFUklULAogIFBUSFJFQURfUFJJT19QUk9URUNUCn07 CgoKCiNkZWZpbmUgUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiB7IHsgX19QVEhSRUFEX01V VEVYX0lOSVRJQUxJWkVSIChQVEhSRUFEX01VVEVYX1RJTUVEX05QKSB9IH0KCgojZGVmaW5l IFBUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVRJQUxJWkVSX05QIHsgeyBfX1BUSFJFQURf TVVURVhfSU5JVElBTElaRVIgKFBUSFJFQURfTVVURVhfUkVDVVJTSVZFX05QKSB9IH0KCiNk ZWZpbmUgUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJWkVSX05QIHsgeyBfX1BU SFJFQURfTVVURVhfSU5JVElBTElaRVIgKFBUSFJFQURfTVVURVhfRVJST1JDSEVDS19OUCkg fSB9CgojZGVmaW5lIFBUSFJFQURfQURBUFRJVkVfTVVURVhfSU5JVElBTElaRVJfTlAgeyB7 IF9fUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUiAoUFRIUkVBRF9NVVRFWF9BREFQVElWRV9O UCkgfSB9CgoKCgoKCmVudW0KewogIFBUSFJFQURfUldMT0NLX1BSRUZFUl9SRUFERVJfTlAs CiAgUFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1dSSVRFUl9OUCwKICBQVEhSRUFEX1JXTE9DS19Q UkVGRVJfV1JJVEVSX05PTlJFQ1VSU0lWRV9OUCwKICBQVEhSRUFEX1JXTE9DS19ERUZBVUxU X05QID0gUFRIUkVBRF9SV0xPQ0tfUFJFRkVSX1JFQURFUl9OUAp9OwoKCgojZGVmaW5lIFBU SFJFQURfUldMT0NLX0lOSVRJQUxJWkVSIHsgeyBfX1BUSFJFQURfUldMT0NLX0lOSVRJQUxJ WkVSIChQVEhSRUFEX1JXTE9DS19ERUZBVUxUX05QKSB9IH0KCgojZGVmaW5lIFBUSFJFQURf UldMT0NLX1dSSVRFUl9OT05SRUNVUlNJVkVfSU5JVElBTElaRVJfTlAgeyB7IF9fUFRIUkVB RF9SV0xPQ0tfSU5JVElBTElaRVIgKFBUSFJFQURfUldMT0NLX1BSRUZFUl9XUklURVJfTk9O UkVDVVJTSVZFX05QKSB9IH0KCgoKCgoKZW51bQp7CiAgUFRIUkVBRF9JTkhFUklUX1NDSEVE LAojZGVmaW5lIFBUSFJFQURfSU5IRVJJVF9TQ0hFRCBQVEhSRUFEX0lOSEVSSVRfU0NIRUQK ICBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECiNkZWZpbmUgUFRIUkVBRF9FWFBMSUNJVF9TQ0hF RCBQVEhSRUFEX0VYUExJQ0lUX1NDSEVECn07CgoKCmVudW0KewogIFBUSFJFQURfU0NPUEVf U1lTVEVNLAojZGVmaW5lIFBUSFJFQURfU0NPUEVfU1lTVEVNIFBUSFJFQURfU0NPUEVfU1lT VEVNCiAgUFRIUkVBRF9TQ09QRV9QUk9DRVNTCiNkZWZpbmUgUFRIUkVBRF9TQ09QRV9QUk9D RVNTIFBUSFJFQURfU0NPUEVfUFJPQ0VTUwp9OwoKCgplbnVtCnsKICBQVEhSRUFEX1BST0NF U1NfUFJJVkFURSwKI2RlZmluZSBQVEhSRUFEX1BST0NFU1NfUFJJVkFURSBQVEhSRUFEX1BS T0NFU1NfUFJJVkFURQogIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKI2RlZmluZSBQVEhSRUFE X1BST0NFU1NfU0hBUkVEIFBUSFJFQURfUFJPQ0VTU19TSEFSRUQKfTsKCgoKCiNkZWZpbmUg UFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSIHsgeyB7MH0sIHswfSwgezAsIDB9LCB7MCwgMH0s IDAsIDAsIHswLCAwfSB9IH0KCgoKc3RydWN0IF9wdGhyZWFkX2NsZWFudXBfYnVmZmVyCnsK ICB2b2lkICgqX19yb3V0aW5lKSAodm9pZCAqKTsKICB2b2lkICpfX2FyZzsKICBpbnQgX19j YW5jZWx0eXBlOwogIHN0cnVjdCBfcHRocmVhZF9jbGVhbnVwX2J1ZmZlciAqX19wcmV2Owp9 OwoKCmVudW0KewogIFBUSFJFQURfQ0FOQ0VMX0VOQUJMRSwKI2RlZmluZSBQVEhSRUFEX0NB TkNFTF9FTkFCTEUgUFRIUkVBRF9DQU5DRUxfRU5BQkxFCiAgUFRIUkVBRF9DQU5DRUxfRElT QUJMRQojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0RJU0FCTEUgUFRIUkVBRF9DQU5DRUxfRElT QUJMRQp9OwplbnVtCnsKICBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRCwKI2RlZmluZSBQVEhS RUFEX0NBTkNFTF9ERUZFUlJFRCBQVEhSRUFEX0NBTkNFTF9ERUZFUlJFRAogIFBUSFJFQURf Q0FOQ0VMX0FTWU5DSFJPTk9VUwojZGVmaW5lIFBUSFJFQURfQ0FOQ0VMX0FTWU5DSFJPTk9V UyBQVEhSRUFEX0NBTkNFTF9BU1lOQ0hST05PVVMKfTsKI2RlZmluZSBQVEhSRUFEX0NBTkNF TEVEICgodm9pZCAqKSAtMSkKCgoKI2RlZmluZSBQVEhSRUFEX09OQ0VfSU5JVCAwCgoKCgoK CiNkZWZpbmUgUFRIUkVBRF9CQVJSSUVSX1NFUklBTF9USFJFQUQgLTEKCgoKZXh0ZXJuICJD IiB7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY3JlYXRlIChwdGhyZWFkX3QgKl9fcmVzdHJp Y3QgX19uZXd0aHJlYWQsCiAgICAgIGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0 IF9fYXR0ciwKICAgICAgdm9pZCAqKCpfX3N0YXJ0X3JvdXRpbmUpICh2b2lkICopLAogICAg ICB2b2lkICpfX3Jlc3RyaWN0IF9fYXJnKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEsIDMpKSk7CgoKCgoKZXh0ZXJuIHZvaWQgcHRocmVhZF9leGl0ICh2b2lk ICpfX3JldHZhbCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpOwoKCgoKCgoKZXh0 ZXJuIGludCBwdGhyZWFkX2pvaW4gKHB0aHJlYWRfdCBfX3RoLCB2b2lkICoqX190aHJlYWRf cmV0dXJuKTsKCgoKCmV4dGVybiBpbnQgcHRocmVhZF90cnlqb2luX25wIChwdGhyZWFkX3Qg X190aCwgdm9pZCAqKl9fdGhyZWFkX3JldHVybikgdGhyb3cgKCk7CiMgMjQyICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvcHRo cmVhZC5oIiAzIDQKZXh0ZXJuIGludCBwdGhyZWFkX3RpbWVkam9pbl9ucCAocHRocmVhZF90 IF9fdGgsIHZvaWQgKipfX3RocmVhZF9yZXR1cm4sCiAgICAgY29uc3Qgc3RydWN0IHRpbWVz cGVjICpfX2Fic3RpbWUpOwojIDI1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGlu dXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQg cHRocmVhZF9jbG9ja2pvaW5fbnAgKHB0aHJlYWRfdCBfX3RoLCB2b2lkICoqX190aHJlYWRf cmV0dXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9ja2lkX3QgX19j bG9ja2lkLAogICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19hYnN0aW1lKTsKIyAyNzgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1m aXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfZGV0YWNoIChwdGhyZWFk X3QgX190aCkgdGhyb3cgKCk7CgoKCmV4dGVybiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmICh2 b2lkKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSk7CgoKZXh0ZXJuIGlu dCBwdGhyZWFkX2VxdWFsIChwdGhyZWFkX3QgX190aHJlYWQxLCBwdGhyZWFkX3QgX190aHJl YWQyKQogIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKTsKCgoKCgoKCmV4 dGVybiBpbnQgcHRocmVhZF9hdHRyX2luaXQgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50 IHB0aHJlYWRfYXR0cl9kZXN0cm95IChwdGhyZWFkX2F0dHJfdCAqX19hdHRyKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50 IHB0aHJlYWRfYXR0cl9nZXRkZXRhY2hzdGF0ZSAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9f YXR0ciwKICAgICBpbnQgKl9fZGV0YWNoc3RhdGUpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRy X3NldGRldGFjaHN0YXRlIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgIGludCBfX2Rl dGFjaHN0YXRlKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0Z3VhcmRzaXplIChjb25zdCBw dGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgc2l6ZV90ICpfX2d1YXJkc2l6ZSkK ICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoK ZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0Z3VhcmRzaXplIChwdGhyZWFkX2F0dHJfdCAq X19hdHRyLAogICAgICAgICAgc2l6ZV90IF9fZ3VhcmRzaXplKQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFk X2F0dHJfZ2V0c2NoZWRwYXJhbSAoY29uc3QgcHRocmVhZF9hdHRyX3QgKl9fcmVzdHJpY3Qg X19hdHRyLAogICAgICAgICAgIHN0cnVjdCBzY2hlZF9wYXJhbSAqX19yZXN0cmljdCBfX3Bh cmFtKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikp KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9zZXRzY2hlZHBhcmFtIChwdGhyZWFkX2F0 dHJfdCAqX19yZXN0cmljdCBfX2F0dHIsCiAgICAgICAgICAgY29uc3Qgc3RydWN0IHNjaGVk X3BhcmFtICpfX3Jlc3RyaWN0CiAgICAgICAgICAgX19wYXJhbSkgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9h dHRyX2dldHNjaGVkcG9saWN5IChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19yZXN0cmljdAog ICAgIF9fYXR0ciwgaW50ICpfX3Jlc3RyaWN0IF9fcG9saWN5KQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJl YWRfYXR0cl9zZXRzY2hlZHBvbGljeSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwgaW50IF9f cG9saWN5KQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkp KTsKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRpbmhlcml0c2NoZWQgKGNvbnN0IHB0 aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0CiAgICAgIF9fYXR0ciwgaW50ICpfX3Jlc3RyaWN0 IF9faW5oZXJpdCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDIpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0aW5oZXJpdHNjaGVkIChw dGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICBpbnQgX19pbmhlcml0KQogICAgIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBw dGhyZWFkX2F0dHJfZ2V0c2NvcGUgKGNvbnN0IHB0aHJlYWRfYXR0cl90ICpfX3Jlc3RyaWN0 IF9fYXR0ciwKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fc2NvcGUpCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRo cmVhZF9hdHRyX3NldHNjb3BlIChwdGhyZWFkX2F0dHJfdCAqX19hdHRyLCBpbnQgX19zY29w ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoK ZXh0ZXJuIGludCBwdGhyZWFkX2F0dHJfZ2V0c3RhY2thZGRyIChjb25zdCBwdGhyZWFkX2F0 dHJfdCAqX19yZXN0cmljdAogICAgICAgICAgX19hdHRyLCB2b2lkICoqX19yZXN0cmljdCBf X3N0YWNrYWRkcikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEsIDIpKSkgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fKSk7CgoKCgoKZXh0ZXJu IGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2thZGRyIChwdGhyZWFkX2F0dHJfdCAqX19hdHRy LAogICAgICAgICAgdm9pZCAqX19zdGFja2FkZHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRf XykpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrc2l6ZSAoY29uc3QgcHRo cmVhZF9hdHRyX3QgKl9fcmVzdHJpY3QKICAgICAgICAgIF9fYXR0ciwgc2l6ZV90ICpfX3Jl c3RyaWN0IF9fc3RhY2tzaXplKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHN0YWNr c2l6ZSAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAgICAgICAgIHNpemVfdCBfX3N0YWNr c2l6ZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CgoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX2dldHN0YWNrIChjb25zdCBwdGhyZWFkX2F0 dHJfdCAqX19yZXN0cmljdCBfX2F0dHIsCiAgICAgIHZvaWQgKipfX3Jlc3RyaWN0IF9fc3Rh Y2thZGRyLAogICAgICBzaXplX3QgKl9fcmVzdHJpY3QgX19zdGFja3NpemUpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwoKCgoKZXh0 ZXJuIGludCBwdGhyZWFkX2F0dHJfc2V0c3RhY2sgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIs IHZvaWQgKl9fc3RhY2thZGRyLAogICAgICBzaXplX3QgX19zdGFja3NpemUpIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHB0 aHJlYWRfYXR0cl9zZXRhZmZpbml0eV9ucCAocHRocmVhZF9hdHRyX3QgKl9fYXR0ciwKICAg ICBzaXplX3QgX19jcHVzZXRzaXplLAogICAgIGNvbnN0IGNwdV9zZXRfdCAqX19jcHVzZXQp CiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoK CgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRhZmZpbml0eV9ucCAoY29uc3QgcHRocmVh ZF9hdHRyX3QgKl9fYXR0ciwKICAgICBzaXplX3QgX19jcHVzZXRzaXplLAogICAgIGNwdV9z ZXRfdCAqX19jcHVzZXQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAzKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9nZXRhdHRyX2RlZmF1bHRfbnAg KHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAo KF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9hdHRyX3NldHNpZ21h c2tfbnAgKHB0aHJlYWRfYXR0cl90ICpfX2F0dHIsCiAgICAgICAgICAgY29uc3QgX19zaWdz ZXRfdCAqc2lnbWFzayk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfYXR0cl9nZXRzaWdtYXNr X25wIChjb25zdCBwdGhyZWFkX2F0dHJfdCAqX19hdHRyLAogICAgICAgICAgIF9fc2lnc2V0 X3QgKnNpZ21hc2spOwoKCgojZGVmaW5lIFBUSFJFQURfQVRUUl9OT19TSUdNQVNLX05QICgt MSkKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3NldGF0dHJfZGVmYXVsdF9ucCAoY29uc3QgcHRo cmVhZF9hdHRyX3QgKl9fYXR0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKCgpleHRlcm4gaW50IHB0aHJlYWRfZ2V0YXR0cl9ucCAocHRo cmVhZF90IF9fdGgsIHB0aHJlYWRfYXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgyKSkpOwoKCgoKCgoKZXh0ZXJuIGludCBwdGhy ZWFkX3NldHNjaGVkcGFyYW0gKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGludCBfX3Bv bGljeSwKICAgICAgY29uc3Qgc3RydWN0IHNjaGVkX3BhcmFtICpfX3BhcmFtKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMykpKTsKCgpleHRlcm4gaW50 IHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSAocHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwKICAg ICAgaW50ICpfX3Jlc3RyaWN0IF9fcG9saWN5LAogICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0g Kl9fcmVzdHJpY3QgX19wYXJhbSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDIsIDMpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNjaGVkcHJpbyAo cHRocmVhZF90IF9fdGFyZ2V0X3RocmVhZCwgaW50IF9fcHJpbykKICAgICB0aHJvdyAoKTsK CgoKCmV4dGVybiBpbnQgcHRocmVhZF9nZXRuYW1lX25wIChwdGhyZWFkX3QgX190YXJnZXRf dGhyZWFkLCBjaGFyICpfX2J1ZiwKICAgICAgICAgIHNpemVfdCBfX2J1ZmxlbikKICAgICB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDIpKSk7CgoKZXh0ZXJuIGlu dCBwdGhyZWFkX3NldG5hbWVfbnAgKHB0aHJlYWRfdCBfX3RhcmdldF90aHJlYWQsIGNvbnN0 IGNoYXIgKl9fbmFtZSkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDIpKSk7CgoKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGNvbmN1cnJlbmN5ICh2b2lk KSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0Y29uY3VycmVuY3kgKGludCBf X2xldmVsKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX3lpZWxkICh2b2lkKSB0 aHJvdyAoKTsKCmV4dGVybiBpbnQgcHRocmVhZF95aWVsZCAodm9pZCkgdGhyb3cgKCkgX19h c21fXyAoIiIgInNjaGVkX3lpZWxkIikKICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVk X18gKCJwdGhyZWFkX3lpZWxkIGlzIGRlcHJlY2F0ZWQsIHVzZSBzY2hlZF95aWVsZCBpbnN0 ZWFkIikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfc2V0YWZmaW5pdHlfbnAgKHB0 aHJlYWRfdCBfX3RoLCBzaXplX3QgX19jcHVzZXRzaXplLAogICAgICAgY29uc3QgY3B1X3Nl dF90ICpfX2NwdXNldCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxs X18gKDMpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2dldGFmZmluaXR5X25wIChwdGhyZWFk X3QgX190aCwgc2l6ZV90IF9fY3B1c2V0c2l6ZSwKICAgICAgIGNwdV9zZXRfdCAqX19jcHVz ZXQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgzKSkpOwoj IDUxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNs dWRlLWZpeGVkL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9vbmNlIChwdGhy ZWFkX29uY2VfdCAqX19vbmNlX2NvbnRyb2wsCiAgICB2b2lkICgqX19pbml0X3JvdXRpbmUp ICh2b2lkKSkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDUzMCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZp eGVkL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9zZXRjYW5jZWxzdGF0ZSAo aW50IF9fc3RhdGUsIGludCAqX19vbGRzdGF0ZSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9z ZXRjYW5jZWx0eXBlIChpbnQgX190eXBlLCBpbnQgKl9fb2xkdHlwZSk7CgoKZXh0ZXJuIGlu dCBwdGhyZWFkX2NhbmNlbCAocHRocmVhZF90IF9fdGgpOwoKCgoKZXh0ZXJuIHZvaWQgcHRo cmVhZF90ZXN0Y2FuY2VsICh2b2lkKTsKCgoKCnN0cnVjdCBfX2NhbmNlbF9qbXBfYnVmX3Rh Zwp7CiAgX19qbXBfYnVmIF9fY2FuY2VsX2ptcF9idWY7CiAgaW50IF9fbWFza193YXNfc2F2 ZWQ7Cn07Cgp0eXBlZGVmIHN0cnVjdAp7CiAgc3RydWN0IF9fY2FuY2VsX2ptcF9idWZfdGFn IF9fY2FuY2VsX2ptcF9idWZbMV07CiAgdm9pZCAqX19wYWRbNF07Cn0gX19wdGhyZWFkX3Vu d2luZF9idWZfdCBfX2F0dHJpYnV0ZV9fICgoX19hbGlnbmVkX18pKTsKCgoKI2RlZmluZSBf X2NsZWFudXBfZmN0X2F0dHJpYnV0ZSAKCgoKCnN0cnVjdCBfX3B0aHJlYWRfY2xlYW51cF9m cmFtZQp7CiAgdm9pZCAoKl9fY2FuY2VsX3JvdXRpbmUpICh2b2lkICopOwogIHZvaWQgKl9f Y2FuY2VsX2FyZzsKICBpbnQgX19kb19pdDsKICBpbnQgX19jYW5jZWxfdHlwZTsKfTsKCgoK CmNsYXNzIF9fcHRocmVhZF9jbGVhbnVwX2NsYXNzCnsKICB2b2lkICgqX19jYW5jZWxfcm91 dGluZSkgKHZvaWQgKik7CiAgdm9pZCAqX19jYW5jZWxfYXJnOwogIGludCBfX2RvX2l0Owog IGludCBfX2NhbmNlbF90eXBlOwoKIHB1YmxpYzoKICBfX3B0aHJlYWRfY2xlYW51cF9jbGFz cyAodm9pZCAoKl9fZmN0KSAodm9pZCAqKSwgdm9pZCAqX19hcmcpCiAgICA6IF9fY2FuY2Vs X3JvdXRpbmUgKF9fZmN0KSwgX19jYW5jZWxfYXJnIChfX2FyZyksIF9fZG9faXQgKDEpIHsg fQogIH5fX3B0aHJlYWRfY2xlYW51cF9jbGFzcyAoKSB7IGlmIChfX2RvX2l0KSBfX2NhbmNl bF9yb3V0aW5lIChfX2NhbmNlbF9hcmcpOyB9CiAgdm9pZCBfX3NldGRvaXQgKGludCBfX25l d3ZhbCkgeyBfX2RvX2l0ID0gX19uZXd2YWw7IH0KICB2b2lkIF9fZGVmZXIgKCkgeyBwdGhy ZWFkX3NldGNhbmNlbHR5cGUgKFBUSFJFQURfQ0FOQ0VMX0RFRkVSUkVELAogICAgICAgICZf X2NhbmNlbF90eXBlKTsgfQogIHZvaWQgX19yZXN0b3JlICgpIGNvbnN0IHsgcHRocmVhZF9z ZXRjYW5jZWx0eXBlIChfX2NhbmNlbF90eXBlLCAwKTsgfQp9OwojIDYwMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xp Yi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJl YWQuaCIgMyA0CiNkZWZpbmUgcHRocmVhZF9jbGVhbnVwX3B1c2gocm91dGluZSxhcmcpIGRv IHsgX19wdGhyZWFkX2NsZWFudXBfY2xhc3MgX19jbGZyYW1lIChyb3V0aW5lLCBhcmcpCgoK CgoKI2RlZmluZSBwdGhyZWFkX2NsZWFudXBfcG9wKGV4ZWN1dGUpIF9fY2xmcmFtZS5fX3Nl dGRvaXQgKGV4ZWN1dGUpOyB9IHdoaWxlICgwKQoKCgoKCgoKI2RlZmluZSBwdGhyZWFkX2Ns ZWFudXBfcHVzaF9kZWZlcl9ucChyb3V0aW5lLGFyZykgZG8geyBfX3B0aHJlYWRfY2xlYW51 cF9jbGFzcyBfX2NsZnJhbWUgKHJvdXRpbmUsIGFyZyk7IF9fY2xmcmFtZS5fX2RlZmVyICgp CgoKCgoKCgojZGVmaW5lIHB0aHJlYWRfY2xlYW51cF9wb3BfcmVzdG9yZV9ucChleGVjdXRl KSBfX2NsZnJhbWUuX19yZXN0b3JlICgpOyBfX2NsZnJhbWUuX19zZXRkb2l0IChleGVjdXRl KTsgfSB3aGlsZSAoMCkKIyA3NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4 LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IF9f c2lnc2V0am1wX2NhbmNlbCAoc3RydWN0IF9fY2FuY2VsX2ptcF9idWZfdGFnIF9fZW52WzFd LCBpbnQgX19zYXZlbWFzaykgdGhyb3cgKCkgX19hc21fXyAoIiIgIl9fc2lnc2V0am1wIikK CgogICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19yZXR1cm5zX3R3aWNl X18pKTsKIyA3OTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4w LjAvaW5jbHVkZS1maXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfbXV0 ZXhfaW5pdCAocHRocmVhZF9tdXRleF90ICpfX211dGV4LAogICAgICAgICAgY29uc3QgcHRo cmVhZF9tdXRleGF0dHJfdCAqX19tdXRleGF0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleF9k ZXN0cm95IChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCiAgICAgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRl eF90cnlsb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9t dXRleF9sb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKZXh0ZXJuIGludCBwdGhyZWFk X211dGV4X3RpbWVkbG9jayAocHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgs CiAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAgX19h YnN0aW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7 CiMgODI2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2lu Y2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAzIDQKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2Ns b2NrbG9jayAocHRocmVhZF9tdXRleF90ICpfX3Jlc3RyaWN0IF9fbXV0ZXgsCiAgICAgICAg Y2xvY2tpZF90IF9fY2xvY2tpZCwKICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9f cmVzdHJpY3QKICAgICAgICBfX2Fic3RpbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSwgMykpKTsKIyA4NDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0 LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4g aW50IHB0aHJlYWRfbXV0ZXhfdW5sb2NrIChwdGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCiAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRl cm4gaW50IHB0aHJlYWRfbXV0ZXhfZ2V0cHJpb2NlaWxpbmcgKGNvbnN0IHB0aHJlYWRfbXV0 ZXhfdCAqCiAgICAgIF9fcmVzdHJpY3QgX19tdXRleCwKICAgICAgaW50ICpfX3Jlc3RyaWN0 IF9fcHJpb2NlaWxpbmcpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVs bF9fICgxLCAyKSkpOwoKCgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhfc2V0cHJpb2NlaWxp bmcgKHB0aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211dGV4LAogICAgICBpbnQgX19w cmlvY2VpbGluZywKICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fb2xkX2NlaWxpbmcpCiAgICAg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAzKSkpOwoKCgoKZXh0 ZXJuIGludCBwdGhyZWFkX211dGV4X2NvbnNpc3RlbnQgKHB0aHJlYWRfbXV0ZXhfdCAqX19t dXRleCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7 CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4X2NvbnNpc3RlbnRfbnAgKHB0aHJlYWRfbXV0 ZXhfdCAqKSB0aHJvdyAoKSBfX2FzbV9fICgiIiAicHRocmVhZF9tdXRleF9jb25zaXN0ZW50 IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSkKICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18gKCJwdGhy ZWFkX211dGV4X2NvbnNpc3RlbnRfbnAgaXMgZGVwcmVjYXRlZCwgdXNlIHB0aHJlYWRfbXV0 ZXhfY29uc2lzdGVudCIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKIyA4ODMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9s aWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9wdGhy ZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX2luaXQgKHB0aHJlYWRf bXV0ZXhhdHRyX3QgKl9fYXR0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19u b25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9kZXN0cm95 IChwdGhyZWFkX211dGV4YXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0 dHJfZ2V0cHNoYXJlZCAoY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqCiAgICAgIF9fcmVz dHJpY3QgX19hdHRyLAogICAgICBpbnQgKl9fcmVzdHJpY3QgX19wc2hhcmVkKQogICAgIHRo cm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4g aW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfbXV0ZXhhdHRyX3Qg Kl9fYXR0ciwKICAgICAgaW50IF9fcHNoYXJlZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0 dHJfZ2V0dHlwZSAoY29uc3QgcHRocmVhZF9tdXRleGF0dHJfdCAqX19yZXN0cmljdAogICAg ICAgICAgX19hdHRyLCBpbnQgKl9fcmVzdHJpY3QgX19raW5kKQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKCmV4dGVybiBpbnQgcHRo cmVhZF9tdXRleGF0dHJfc2V0dHlwZSAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLCBp bnQgX19raW5kKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9nZXRwcm90b2NvbCAoY29u c3QgcHRocmVhZF9tdXRleGF0dHJfdCAqCiAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAg ICAgIGludCAqX19yZXN0cmljdCBfX3Byb3RvY29sKQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX211 dGV4YXR0cl9zZXRwcm90b2NvbCAocHRocmVhZF9tdXRleGF0dHJfdCAqX19hdHRyLAogICAg ICAgaW50IF9fcHJvdG9jb2wpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9u bnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9tdXRleGF0dHJfZ2V0cHJpb2Nl aWxpbmcgKGNvbnN0IHB0aHJlYWRfbXV0ZXhhdHRyX3QgKgogICAgICAgICAgX19yZXN0cmlj dCBfX2F0dHIsCiAgICAgICAgICBpbnQgKl9fcmVzdHJpY3QgX19wcmlvY2VpbGluZykKICAg ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0 ZXJuIGludCBwdGhyZWFkX211dGV4YXR0cl9zZXRwcmlvY2VpbGluZyAocHRocmVhZF9tdXRl eGF0dHJfdCAqX19hdHRyLAogICAgICAgICAgaW50IF9fcHJpb2NlaWxpbmcpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRlcm4gaW50 IHB0aHJlYWRfbXV0ZXhhdHRyX2dldHJvYnVzdCAoY29uc3QgcHRocmVhZF9tdXRleGF0dHJf dCAqX19hdHRyLAogICAgIGludCAqX19yb2J1c3RuZXNzKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRf bXV0ZXhhdHRyX2dldHJvYnVzdF9ucCAocHRocmVhZF9tdXRleGF0dHJfdCAqLCBpbnQgKikg dGhyb3cgKCkgX19hc21fXyAoIiIgInB0aHJlYWRfbXV0ZXhhdHRyX2dldHJvYnVzdCIpCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKQogIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXyAoInB0aHJl YWRfbXV0ZXhhdHRyX2dldHJvYnVzdF9ucCBpcyBkZXByZWNhdGVkLCB1c2UgcHRocmVhZF9t dXRleGF0dHJfZ2V0cm9idXN0IikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKCgoK CgpleHRlcm4gaW50IHB0aHJlYWRfbXV0ZXhhdHRyX3NldHJvYnVzdCAocHRocmVhZF9tdXRl eGF0dHJfdCAqX19hdHRyLAogICAgIGludCBfX3JvYnVzdG5lc3MpCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVh ZF9tdXRleGF0dHJfc2V0cm9idXN0X25wIChwdGhyZWFkX211dGV4YXR0cl90ICosIGludCkg dGhyb3cgKCkgX19hc21fXyAoIiIgInB0aHJlYWRfbXV0ZXhhdHRyX3NldHJvYnVzdCIpCgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX25v bm51bGxfXyAoMSkpKQogIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXyAoInB0aHJl YWRfbXV0ZXhhdHRyX3NldHJvYnVzdF9ucCBpcyBkZXByZWNhdGVkLCB1c2UgcHRocmVhZF9t dXRleGF0dHJfc2V0cm9idXN0IikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwojIDk3 NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRl LWZpeGVkL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfaW5pdCAo cHRocmVhZF9yd2xvY2tfdCAqX19yZXN0cmljdCBfX3J3bG9jaywKICAgIGNvbnN0IHB0aHJl YWRfcndsb2NrYXR0cl90ICpfX3Jlc3RyaWN0CiAgICBfX2F0dHIpIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcnds b2NrX2Rlc3Ryb3kgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJl YWRfcndsb2NrX3JkbG9jayAocHRocmVhZF9yd2xvY2tfdCAqX19yd2xvY2spCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg cHRocmVhZF9yd2xvY2tfdHJ5cmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykK ICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKCgpleHRl cm4gaW50IHB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrIChwdGhyZWFkX3J3bG9ja190ICpf X3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAq X19yZXN0cmljdAogICAgICAgICAgIF9fYWJzdGltZSkgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwojIDEwMTMgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25n YXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9wdGhyZWFkLmgiIDMgNApl eHRlcm4gaW50IHB0aHJlYWRfcndsb2NrX2Nsb2NrcmRsb2NrIChwdGhyZWFkX3J3bG9ja190 ICpfX3Jlc3RyaWN0IF9fcndsb2NrLAogICAgICAgICAgIGNsb2NraWRfdCBfX2Nsb2NraWQs CiAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpfX3Jlc3RyaWN0CiAgICAgICAg ICAgX19hYnN0aW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEs IDMpKSk7CiMgMTAzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0 LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9y d2xvY2tfd3Jsb2NrIChwdGhyZWFkX3J3bG9ja190ICpfX3J3bG9jaykKICAgICB0aHJvdyAo KSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhy ZWFkX3J3bG9ja190cnl3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAg IHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCmV4dGVy biBpbnQgcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9f cmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAgY29uc3Qgc3RydWN0IHRpbWVzcGVjICpf X3Jlc3RyaWN0CiAgICAgICAgICAgX19hYnN0aW1lKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9f ICgoX19ub25udWxsX18gKDEsIDIpKSk7CiMgMTA2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdh cmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0aHJlYWQuaCIgMyA0CmV4 dGVybiBpbnQgcHRocmVhZF9yd2xvY2tfY2xvY2t3cmxvY2sgKHB0aHJlYWRfcndsb2NrX3Qg Kl9fcmVzdHJpY3QgX19yd2xvY2ssCiAgICAgICAgICAgY2xvY2tpZF90IF9fY2xvY2tpZCwK ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXNwZWMgKl9fcmVzdHJpY3QKICAgICAgICAg ICBfX2Fic3RpbWUpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwg MykpKTsKIyAxMDgwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQu MC4wL2luY2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAzIDQKZXh0ZXJuIGludCBwdGhyZWFkX3J3 bG9ja191bmxvY2sgKHB0aHJlYWRfcndsb2NrX3QgKl9fcndsb2NrKQogICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgpleHRlcm4gaW50IHB0 aHJlYWRfcndsb2NrYXR0cl9pbml0IChwdGhyZWFkX3J3bG9ja2F0dHJfdCAqX19hdHRyKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRl cm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9kZXN0cm95IChwdGhyZWFkX3J3bG9ja2F0dHJf dCAqX19hdHRyKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAo MSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRwc2hhcmVkIChjb25z dCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqCiAgICAgICBfX3Jlc3RyaWN0IF9fYXR0ciwKICAg ICAgIGludCAqX19yZXN0cmljdCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9yd2xv Y2thdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIsCiAgICAg ICBpbnQgX19wc2hhcmVkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51 bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfcndsb2NrYXR0cl9nZXRraW5kX25w IChjb25zdCBwdGhyZWFkX3J3bG9ja2F0dHJfdCAqCiAgICAgICBfX3Jlc3RyaWN0IF9fYXR0 ciwKICAgICAgIGludCAqX19yZXN0cmljdCBfX3ByZWYpCiAgICAgdGhyb3cgKCkgX19hdHRy aWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9y d2xvY2thdHRyX3NldGtpbmRfbnAgKHB0aHJlYWRfcndsb2NrYXR0cl90ICpfX2F0dHIsCiAg ICAgICBpbnQgX19wcmVmKSB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18g KDEpKSk7CgoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9pbml0IChwdGhyZWFkX2Nv bmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgIGNvbnN0IHB0aHJlYWRfY29uZGF0 dHJfdCAqX19yZXN0cmljdCBfX2NvbmRfYXR0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfZGVz dHJveSAocHRocmVhZF9jb25kX3QgKl9fY29uZCkKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRfc2ln bmFsIChwdGhyZWFkX2NvbmRfdCAqX19jb25kKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRl X18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfY29uZF9icm9h ZGNhc3QgKHB0aHJlYWRfY29uZF90ICpfX2NvbmQpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgoKCgpleHRlcm4gaW50IHB0aHJlYWRfY29u ZF93YWl0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0cmljdCBfX2NvbmQsCiAgICAgICAgIHB0 aHJlYWRfbXV0ZXhfdCAqX19yZXN0cmljdCBfX211dGV4KQogICAgIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMSwgMikpKTsKIyAxMTU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2Fy Y2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAzIDQKZXh0 ZXJuIGludCBwdGhyZWFkX2NvbmRfdGltZWR3YWl0IChwdGhyZWFkX2NvbmRfdCAqX19yZXN0 cmljdCBfX2NvbmQsCiAgICAgICBwdGhyZWFkX211dGV4X3QgKl9fcmVzdHJpY3QgX19tdXRl eCwKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX2Fic3RpbWUp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCAzKSkpOwojIDExODAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1m aXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfY29uZF9jbG9ja3dhaXQg KHB0aHJlYWRfY29uZF90ICpfX3Jlc3RyaWN0IF9fY29uZCwKICAgICAgIHB0aHJlYWRfbXV0 ZXhfdCAqX19yZXN0cmljdCBfX211dGV4LAogICAgICAgX19jbG9ja2lkX3QgX19jbG9ja19p ZCwKICAgICAgIGNvbnN0IHN0cnVjdCB0aW1lc3BlYyAqX19yZXN0cmljdCBfX2Fic3RpbWUp CiAgICAgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxLCAyLCA0KSkpOwojIDEyMDMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1m aXhlZC9wdGhyZWFkLmgiIDMgNApleHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfaW5pdCAo cHRocmVhZF9jb25kYXR0cl90ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVf XyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9jb25kYXR0cl9k ZXN0cm95IChwdGhyZWFkX2NvbmRhdHRyX3QgKl9fYXR0cikKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2Nv bmRhdHRyX2dldHBzaGFyZWQgKGNvbnN0IHB0aHJlYWRfY29uZGF0dHJfdCAqCiAgICAgX19y ZXN0cmljdCBfX2F0dHIsCiAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkKICAgICB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu IGludCBwdGhyZWFkX2NvbmRhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfY29uZGF0dHJfdCAq X19hdHRyLAogICAgIGludCBfX3BzaGFyZWQpIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChf X25vbm51bGxfXyAoMSkpKTsKCgoKZXh0ZXJuIGludCBwdGhyZWFkX2NvbmRhdHRyX2dldGNs b2NrIChjb25zdCBwdGhyZWFkX2NvbmRhdHRyX3QgKgogICAgICAgICAgX19yZXN0cmljdCBf X2F0dHIsCiAgICAgICAgICBfX2Nsb2NraWRfdCAqX19yZXN0cmljdCBfX2Nsb2NrX2lkKQog ICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSwgMikpKTsKCgpl eHRlcm4gaW50IHB0aHJlYWRfY29uZGF0dHJfc2V0Y2xvY2sgKHB0aHJlYWRfY29uZGF0dHJf dCAqX19hdHRyLAogICAgICAgICAgX19jbG9ja2lkX3QgX19jbG9ja19pZCkKICAgICB0aHJv dyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CiMgMTIzOSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlLWZpeGVkL3B0 aHJlYWQuaCIgMyA0CmV4dGVybiBpbnQgcHRocmVhZF9zcGluX2luaXQgKHB0aHJlYWRfc3Bp bmxvY2tfdCAqX19sb2NrLCBpbnQgX19wc2hhcmVkKQogICAgIHRocm93ICgpIF9fYXR0cmli dXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJlYWRfc3Bpbl9k ZXN0cm95IChwdGhyZWFkX3NwaW5sb2NrX3QgKl9fbG9jaykKICAgICB0aHJvdyAoKSBfX2F0 dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3Nw aW5fbG9jayAocHRocmVhZF9zcGlubG9ja190ICpfX2xvY2spCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9z cGluX3RyeWxvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrKQogICAgIHRocm93ICgp IF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgpleHRlcm4gaW50IHB0aHJl YWRfc3Bpbl91bmxvY2sgKHB0aHJlYWRfc3BpbmxvY2tfdCAqX19sb2NrKQogICAgIHRocm93 ICgpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyAoMSkpKTsKCgoKCgoKZXh0ZXJuIGlu dCBwdGhyZWFkX2JhcnJpZXJfaW5pdCAocHRocmVhZF9iYXJyaWVyX3QgKl9fcmVzdHJpY3Qg X19iYXJyaWVyLAogICAgIGNvbnN0IHB0aHJlYWRfYmFycmllcmF0dHJfdCAqX19yZXN0cmlj dAogICAgIF9fYXR0ciwgdW5zaWduZWQgaW50IF9fY291bnQpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9i YXJyaWVyX2Rlc3Ryb3kgKHB0aHJlYWRfYmFycmllcl90ICpfX2JhcnJpZXIpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBpbnQg cHRocmVhZF9iYXJyaWVyX3dhaXQgKHB0aHJlYWRfYmFycmllcl90ICpfX2JhcnJpZXIpCiAg ICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCgpleHRl cm4gaW50IHB0aHJlYWRfYmFycmllcmF0dHJfaW5pdCAocHRocmVhZF9iYXJyaWVyYXR0cl90 ICpfX2F0dHIpCiAgICAgdGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgx KSkpOwoKCmV4dGVybiBpbnQgcHRocmVhZF9iYXJyaWVyYXR0cl9kZXN0cm95IChwdGhyZWFk X2JhcnJpZXJhdHRyX3QgKl9fYXR0cikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgo X19ub25udWxsX18gKDEpKSk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX2JhcnJpZXJhdHRyX2dl dHBzaGFyZWQgKGNvbnN0IHB0aHJlYWRfYmFycmllcmF0dHJfdCAqCiAgICAgICAgX19yZXN0 cmljdCBfX2F0dHIsCiAgICAgICAgaW50ICpfX3Jlc3RyaWN0IF9fcHNoYXJlZCkKICAgICB0 aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19ub25udWxsX18gKDEsIDIpKSk7CgoKZXh0ZXJu IGludCBwdGhyZWFkX2JhcnJpZXJhdHRyX3NldHBzaGFyZWQgKHB0aHJlYWRfYmFycmllcmF0 dHJfdCAqX19hdHRyLAogICAgICAgIGludCBfX3BzaGFyZWQpCiAgICAgdGhyb3cgKCkgX19h dHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwojIDEzMDYgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2Nj L2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVkZS1maXhlZC9wdGhyZWFkLmgi IDMgNApleHRlcm4gaW50IHB0aHJlYWRfa2V5X2NyZWF0ZSAocHRocmVhZF9rZXlfdCAqX19r ZXksCiAgICAgICAgICB2b2lkICgqX19kZXN0cl9mdW5jdGlvbikgKHZvaWQgKikpCiAgICAg dGhyb3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fICgxKSkpOwoKCmV4dGVybiBp bnQgcHRocmVhZF9rZXlfZGVsZXRlIChwdGhyZWFkX2tleV90IF9fa2V5KSB0aHJvdyAoKTsK CgpleHRlcm4gdm9pZCAqcHRocmVhZF9nZXRzcGVjaWZpYyAocHRocmVhZF9rZXlfdCBfX2tl eSkgdGhyb3cgKCk7CgoKZXh0ZXJuIGludCBwdGhyZWFkX3NldHNwZWNpZmljIChwdGhyZWFk X2tleV90IF9fa2V5LAogICAgY29uc3Qgdm9pZCAqX19wb2ludGVyKQogIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX25vbmVfXywgMikpKTsKCgoKCmV4dGVybiBp bnQgcHRocmVhZF9nZXRjcHVjbG9ja2lkIChwdGhyZWFkX3QgX190aHJlYWRfaWQsCiAgICAg IF9fY2xvY2tpZF90ICpfX2Nsb2NrX2lkKQogICAgIHRocm93ICgpIF9fYXR0cmlidXRlX18g KChfX25vbm51bGxfXyAoMikpKTsKIyAxMzQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2 NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUtZml4ZWQvcHRocmVhZC5oIiAzIDQKZXh0ZXJu IGludCBwdGhyZWFkX2F0Zm9yayAodm9pZCAoKl9fcHJlcGFyZSkgKHZvaWQpLAogICAgICB2 b2lkICgqX19wYXJlbnQpICh2b2lkKSwKICAgICAgdm9pZCAoKl9fY2hpbGQpICh2b2lkKSkg dGhyb3cgKCk7CgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lu bGluZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX2xlYWZfXykpIHB0aHJlYWRfZXF1YWwg KHB0aHJlYWRfdCBfX3RocmVhZDEsIHB0aHJlYWRfdCBfX3RocmVhZDIpIHRocm93ICgpCnsK ICByZXR1cm4gX190aHJlYWQxID09IF9fdGhyZWFkMjsKfQoKCn0KIyAzNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9ndGhyLWRlZmF1 bHQuaCIgMiAzCiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQt bGludXgtZ251L2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKdHlwZWRlZiBwdGhyZWFkX3QgX19n dGhyZWFkX3Q7CnR5cGVkZWYgcHRocmVhZF9rZXlfdCBfX2d0aHJlYWRfa2V5X3Q7CnR5cGVk ZWYgcHRocmVhZF9vbmNlX3QgX19ndGhyZWFkX29uY2VfdDsKdHlwZWRlZiBwdGhyZWFkX211 dGV4X3QgX19ndGhyZWFkX211dGV4X3Q7CgoKCnR5cGVkZWYgcHRocmVhZF9tdXRleF90IF9f Z3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdDsKdHlwZWRlZiBwdGhyZWFkX2NvbmRfdCBfX2d0 aHJlYWRfY29uZF90Owp0eXBlZGVmIHN0cnVjdCB0aW1lc3BlYyBfX2d0aHJlYWRfdGltZV90 OwoKCgojZGVmaW5lIF9fR1RIUkVBRF9IQVNfQ09ORCAxCgojZGVmaW5lIF9fR1RIUkVBRF9N VVRFWF9JTklUIFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIKI2RlZmluZSBfX0dUSFJFQURf TVVURVhfSU5JVF9GVU5DVElPTiBfX2d0aHJlYWRfbXV0ZXhfaW5pdF9mdW5jdGlvbgoKCgoj ZGVmaW5lIF9fR1RIUkVBRF9PTkNFX0lOSVQgUFRIUkVBRF9PTkNFX0lOSVQKCgoKI2RlZmlu ZSBfX0dUSFJFQURfUkVDVVJTSVZFX01VVEVYX0lOSVQgUFRIUkVBRF9SRUNVUlNJVkVfTVVU RVhfSU5JVElBTElaRVJfTlAKCgoKI2RlZmluZSBfX0dUSFJFQURfQ09ORF9JTklUIFBUSFJF QURfQ09ORF9JTklUSUFMSVpFUgojZGVmaW5lIF9fR1RIUkVBRF9USU1FX0lOSVQgezAsMH0K IyAxMDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251 L2JpdHMvZ3Roci1kZWZhdWx0LmgiIDMKI2RlZmluZSBfX2d0aHJ3MihuYW1lLG5hbWUyLHR5 cGUpIAojZGVmaW5lIF9fZ3RocndfKG5hbWUpIG5hbWUKCgoKI2RlZmluZSBfX2d0aHJ3KG5h bWUpIF9fZ3RocncyKF9fZ3RocndfICMjIG5hbWUsbmFtZSxuYW1lKQoKCgoKCgoKCgoKCgoK CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgojIDMxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9ndGhyLWRlZmF1bHQuaCIgMwpzdGF0aWMg aW5saW5lIGludApfX2d0aHJlYWRfYWN0aXZlX3AgKHZvaWQpCnsKICByZXR1cm4gMTsKfQoj IDY3MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUv Yml0cy9ndGhyLWRlZmF1bHQuaCIgMwpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfY3Jl YXRlIChfX2d0aHJlYWRfdCAqX190aHJlYWRpZCwgdm9pZCAqKCpfX2Z1bmMpICh2b2lkKiks CiAgICB2b2lkICpfX2FyZ3MpCnsKICByZXR1cm4gcHRocmVhZF9jcmVhdGUgKF9fdGhyZWFk aWQsIF9fbnVsbCwgX19mdW5jLCBfX2FyZ3MpOwp9CgpzdGF0aWMgaW5saW5lIGludApfX2d0 aHJlYWRfam9pbiAoX19ndGhyZWFkX3QgX190aHJlYWRpZCwgdm9pZCAqKl9fdmFsdWVfcHRy KQp7CiAgcmV0dXJuIHB0aHJlYWRfam9pbiAoX190aHJlYWRpZCwgX192YWx1ZV9wdHIpOwp9 CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfZGV0YWNoIChfX2d0aHJlYWRfdCBfX3Ro cmVhZGlkKQp7CiAgcmV0dXJuIHB0aHJlYWRfZGV0YWNoIChfX3RocmVhZGlkKTsKfQoKc3Rh dGljIGlubGluZSBpbnQKX19ndGhyZWFkX2VxdWFsIChfX2d0aHJlYWRfdCBfX3QxLCBfX2d0 aHJlYWRfdCBfX3QyKQp7CiAgcmV0dXJuIHB0aHJlYWRfZXF1YWwgKF9fdDEsIF9fdDIpOwp9 CgpzdGF0aWMgaW5saW5lIF9fZ3RocmVhZF90Cl9fZ3RocmVhZF9zZWxmICh2b2lkKQp7CiAg cmV0dXJuIHB0aHJlYWRfc2VsZiAoKTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFk X3lpZWxkICh2b2lkKQp7CiAgcmV0dXJuIHNjaGVkX3lpZWxkICgpOwp9CgpzdGF0aWMgaW5s aW5lIGludApfX2d0aHJlYWRfb25jZSAoX19ndGhyZWFkX29uY2VfdCAqX19vbmNlLCB2b2lk ICgqX19mdW5jKSAodm9pZCkpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAg cmV0dXJuIHB0aHJlYWRfb25jZSAoX19vbmNlLCBfX2Z1bmMpOwogIGVsc2UKICAgIHJldHVy biAtMTsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX2tleV9jcmVhdGUgKF9fZ3Ro cmVhZF9rZXlfdCAqX19rZXksIHZvaWQgKCpfX2R0b3IpICh2b2lkICopKQp7CiAgcmV0dXJu IHB0aHJlYWRfa2V5X2NyZWF0ZSAoX19rZXksIF9fZHRvcik7Cn0KCnN0YXRpYyBpbmxpbmUg aW50Cl9fZ3RocmVhZF9rZXlfZGVsZXRlIChfX2d0aHJlYWRfa2V5X3QgX19rZXkpCnsKICBy ZXR1cm4gcHRocmVhZF9rZXlfZGVsZXRlIChfX2tleSk7Cn0KCnN0YXRpYyBpbmxpbmUgdm9p ZCAqCl9fZ3RocmVhZF9nZXRzcGVjaWZpYyAoX19ndGhyZWFkX2tleV90IF9fa2V5KQp7CiAg cmV0dXJuIHB0aHJlYWRfZ2V0c3BlY2lmaWMgKF9fa2V5KTsKfQoKc3RhdGljIGlubGluZSBp bnQKX19ndGhyZWFkX3NldHNwZWNpZmljIChfX2d0aHJlYWRfa2V5X3QgX19rZXksIGNvbnN0 IHZvaWQgKl9fcHRyKQp7CiAgcmV0dXJuIHB0aHJlYWRfc2V0c3BlY2lmaWMgKF9fa2V5LCBf X3B0cik7Cn0KCnN0YXRpYyBpbmxpbmUgdm9pZApfX2d0aHJlYWRfbXV0ZXhfaW5pdF9mdW5j dGlvbiAoX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCnsKICBpZiAoX19ndGhyZWFkX2Fj dGl2ZV9wICgpKQogICAgcHRocmVhZF9tdXRleF9pbml0IChfX211dGV4LCBfX251bGwpOwp9 CgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfbXV0ZXhfZGVzdHJveSAoX19ndGhyZWFk X211dGV4X3QgKl9fbXV0ZXgpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2ZV9wICgpKQogICAg cmV0dXJuIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSAoX19tdXRleCk7CiAgZWxzZQogICAgcmV0 dXJuIDA7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9tdXRleF9sb2NrIChfX2d0 aHJlYWRfbXV0ZXhfdCAqX19tdXRleCkKewogIGlmIChfX2d0aHJlYWRfYWN0aXZlX3AgKCkp CiAgICByZXR1cm4gcHRocmVhZF9tdXRleF9sb2NrIChfX211dGV4KTsKICBlbHNlCiAgICBy ZXR1cm4gMDsKfQoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX211dGV4X3RyeWxvY2sg KF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVf cCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211dGV4X3RyeWxvY2sgKF9fbXV0ZXgpOwogIGVs c2UKICAgIHJldHVybiAwOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX211dGV4 X3RpbWVkbG9jayAoX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgsCiAgICAgIGNvbnN0IF9f Z3RocmVhZF90aW1lX3QgKl9fYWJzX3RpbWVvdXQpCnsKICBpZiAoX19ndGhyZWFkX2FjdGl2 ZV9wICgpKQogICAgcmV0dXJuIHB0aHJlYWRfbXV0ZXhfdGltZWRsb2NrIChfX211dGV4LCBf X2Fic190aW1lb3V0KTsKICBlbHNlCiAgICByZXR1cm4gMDsKfQoKCnN0YXRpYyBpbmxpbmUg aW50Cl9fZ3RocmVhZF9tdXRleF91bmxvY2sgKF9fZ3RocmVhZF9tdXRleF90ICpfX211dGV4 KQp7CiAgaWYgKF9fZ3RocmVhZF9hY3RpdmVfcCAoKSkKICAgIHJldHVybiBwdGhyZWFkX211 dGV4X3VubG9jayAoX19tdXRleCk7CiAgZWxzZQogICAgcmV0dXJuIDA7Cn0KIyA4MjEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvZ3Ro ci1kZWZhdWx0LmgiIDMKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9t dXRleF9sb2NrIChfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICBy ZXR1cm4gX19ndGhyZWFkX211dGV4X2xvY2sgKF9fbXV0ZXgpOwp9CgpzdGF0aWMgaW5saW5l IGludApfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3RyeWxvY2sgKF9fZ3RocmVhZF9yZWN1 cnNpdmVfbXV0ZXhfdCAqX19tdXRleCkKewogIHJldHVybiBfX2d0aHJlYWRfbXV0ZXhfdHJ5 bG9jayAoX19tdXRleCk7Cn0KCgpzdGF0aWMgaW5saW5lIGludApfX2d0aHJlYWRfcmVjdXJz aXZlX211dGV4X3RpbWVkbG9jayAoX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF90ICpfX211 dGV4LAogICAgICAgICBjb25zdCBfX2d0aHJlYWRfdGltZV90ICpfX2Fic190aW1lb3V0KQp7 CiAgcmV0dXJuIF9fZ3RocmVhZF9tdXRleF90aW1lZGxvY2sgKF9fbXV0ZXgsIF9fYWJzX3Rp bWVvdXQpOwp9CgoKc3RhdGljIGlubGluZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRl eF91bmxvY2sgKF9fZ3RocmVhZF9yZWN1cnNpdmVfbXV0ZXhfdCAqX19tdXRleCkKewogIHJl dHVybiBfX2d0aHJlYWRfbXV0ZXhfdW5sb2NrIChfX211dGV4KTsKfQoKc3RhdGljIGlubGlu ZSBpbnQKX19ndGhyZWFkX3JlY3Vyc2l2ZV9tdXRleF9kZXN0cm95IChfX2d0aHJlYWRfcmVj dXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gX19ndGhyZWFkX211dGV4X2Rl c3Ryb3kgKF9fbXV0ZXgpOwp9CiMgODYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xv b25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2d0aHItZGVmYXVsdC5oIiAzCnN0YXRpYyBpbmxp bmUgaW50Cl9fZ3RocmVhZF9jb25kX2Jyb2FkY2FzdCAoX19ndGhyZWFkX2NvbmRfdCAqX19j b25kKQp7CiAgcmV0dXJuIHB0aHJlYWRfY29uZF9icm9hZGNhc3QgKF9fY29uZCk7Cn0KCnN0 YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9jb25kX3NpZ25hbCAoX19ndGhyZWFkX2NvbmRf dCAqX19jb25kKQp7CiAgcmV0dXJuIHB0aHJlYWRfY29uZF9zaWduYWwgKF9fY29uZCk7Cn0K CnN0YXRpYyBpbmxpbmUgaW50Cl9fZ3RocmVhZF9jb25kX3dhaXQgKF9fZ3RocmVhZF9jb25k X3QgKl9fY29uZCwgX19ndGhyZWFkX211dGV4X3QgKl9fbXV0ZXgpCnsKICByZXR1cm4gcHRo cmVhZF9jb25kX3dhaXQgKF9fY29uZCwgX19tdXRleCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50 Cl9fZ3RocmVhZF9jb25kX3RpbWVkd2FpdCAoX19ndGhyZWFkX2NvbmRfdCAqX19jb25kLCBf X2d0aHJlYWRfbXV0ZXhfdCAqX19tdXRleCwKICAgICBjb25zdCBfX2d0aHJlYWRfdGltZV90 ICpfX2Fic190aW1lb3V0KQp7CiAgcmV0dXJuIHB0aHJlYWRfY29uZF90aW1lZHdhaXQgKF9f Y29uZCwgX19tdXRleCwgX19hYnNfdGltZW91dCk7Cn0KCnN0YXRpYyBpbmxpbmUgaW50Cl9f Z3RocmVhZF9jb25kX3dhaXRfcmVjdXJzaXZlIChfX2d0aHJlYWRfY29uZF90ICpfX2NvbmQs CiAgICAgICAgICBfX2d0aHJlYWRfcmVjdXJzaXZlX211dGV4X3QgKl9fbXV0ZXgpCnsKICBy ZXR1cm4gX19ndGhyZWFkX2NvbmRfd2FpdCAoX19jb25kLCBfX211dGV4KTsKfQoKc3RhdGlj IGlubGluZSBpbnQKX19ndGhyZWFkX2NvbmRfZGVzdHJveSAoX19ndGhyZWFkX2NvbmRfdCog X19jb25kKQp7CiAgcmV0dXJuIHB0aHJlYWRfY29uZF9kZXN0cm95IChfX2NvbmQpOwp9CiMg MTQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9i aXRzL2d0aHIuaCIgMiAzCgoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwb3AKIyAzNiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9leHQvYXRvbWljaXR5LmgiIDIgMwojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYXRvbWlj X3dvcmQuaCIgMSAzCiMgMzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNo NjQtbGludXgtZ251L2JpdHMvYXRvbWljX3dvcmQuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0FU T01JQ19XT1JEX0ggMQoKdHlwZWRlZiBpbnQgX0F0b21pY193b3JkOwoKCgojZGVmaW5lIF9H TElCQ1hYX1JFQURfTUVNX0JBUlJJRVIgX19hdG9taWNfdGhyZWFkX2ZlbmNlIChfX0FUT01J Q19BQ1FVSVJFKQoKI2RlZmluZSBfR0xJQkNYWF9XUklURV9NRU1fQkFSUklFUiBfX2F0b21p Y190aHJlYWRfZmVuY2UgKF9fQVRPTUlDX1JFTEVBU0UpCiMgMzcgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvZXh0L2F0b21pY2l0eS5oIiAyIDMKCiMgMSAiL3Vzci9pbmNsdWRlL3N5 cy9zaW5nbGVfdGhyZWFkZWQuaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL3N5cy9zaW5n bGVfdGhyZWFkZWQuaCIgMyA0CiNkZWZpbmUgX1NZU19TSU5HTEVfVEhSRUFERURfSCAKCgoK ZXh0ZXJuICJDIiB7CgoKCgpleHRlcm4gY2hhciBfX2xpYmNfc2luZ2xlX3RocmVhZGVkOwoK fQojIDM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4dC9hdG9taWNpdHkuaCIgMiAz CgoKbmFtZXNwYWNlIF9fZ251X2N4eCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g KCJkZWZhdWx0IikpKQp7CgoKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykp CiAgaW5saW5lIGJvb2wKICBfX2lzX3NpbmdsZV90aHJlYWRlZCgpIHRocm93KCkKICB7CgoK CiAgICByZXR1cm4gOjpfX2xpYmNfc2luZ2xlX3RocmVhZGVkOwoKCgogIH0KCgoKCgoKICBp bmxpbmUgX0F0b21pY193b3JkCiAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18p KQogIF9fZXhjaGFuZ2VfYW5kX2FkZCh2b2xhdGlsZSBfQXRvbWljX3dvcmQqIF9fbWVtLCBp bnQgX192YWwpCiAgeyByZXR1cm4gX19hdG9taWNfZmV0Y2hfYWRkKF9fbWVtLCBfX3ZhbCwg NCk7IH0KCiAgaW5saW5lIHZvaWQKICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCiAgX19hdG9taWNfYWRkKHZvbGF0aWxlIF9BdG9taWNfd29yZCogX19tZW0sIGludCBf X3ZhbCkKICB7IF9fYXRvbWljX2ZldGNoX2FkZChfX21lbSwgX192YWwsIDQpOyB9CiMgODAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L2F0b21pY2l0eS5oIiAzCiAgaW5saW5l IF9BdG9taWNfd29yZAogIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICBf X2V4Y2hhbmdlX2FuZF9hZGRfc2luZ2xlKF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3Zh bCkKICB7CiAgICBfQXRvbWljX3dvcmQgX19yZXN1bHQgPSAqX19tZW07CiAgICAqX19tZW0g Kz0gX192YWw7CiAgICByZXR1cm4gX19yZXN1bHQ7CiAgfQoKICBpbmxpbmUgdm9pZAogIF9f YXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICBfX2F0b21pY19hZGRfc2luZ2xl KF9BdG9taWNfd29yZCogX19tZW0sIGludCBfX3ZhbCkKICB7ICpfX21lbSArPSBfX3ZhbDsg fQoKICBpbmxpbmUgX0F0b21pY193b3JkCiAgX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lu bGluZV9fKSkKICBfX2V4Y2hhbmdlX2FuZF9hZGRfZGlzcGF0Y2goX0F0b21pY193b3JkKiBf X21lbSwgaW50IF9fdmFsKQogIHsKICAgIGlmIChfX2lzX3NpbmdsZV90aHJlYWRlZCgpKQog ICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkX3NpbmdsZShfX21lbSwgX192YWwpOwog ICAgZWxzZQogICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKF9fbWVtLCBfX3ZhbCk7 CiAgfQoKICBpbmxpbmUgdm9pZAogIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVf XykpCiAgX19hdG9taWNfYWRkX2Rpc3BhdGNoKF9BdG9taWNfd29yZCogX19tZW0sIGludCBf X3ZhbCkKICB7CiAgICBpZiAoX19pc19zaW5nbGVfdGhyZWFkZWQoKSkKICAgICAgX19hdG9t aWNfYWRkX3NpbmdsZShfX21lbSwgX192YWwpOwogICAgZWxzZQogICAgICBfX2F0b21pY19h ZGQoX19tZW0sIF9fdmFsKTsKICB9CgoKfQojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvaW9zX2Jhc2UuaCIgMiAzCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAxIDMKIyAzNSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKI2RlZmluZSBfTE9DQUxFX0NMQVNT RVNfSCAxCgogICAgICAgCiMgMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9s b2NhbGVfY2xhc3Nlcy5oIiAzCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0 cmluZyIgMSAzCiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyaW5nIiAzCiNk ZWZpbmUgX0dMSUJDWFhfU1RSSU5HIDEKCiAgICAgICAKIyAzNyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9zdHJpbmciIDMKCgoKCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvYWxsb2NhdG9yLmgiIDEgMwojIDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvYWxsb2NhdG9yLmgiIDMKI2RlZmluZSBfQUxMT0NBVE9SX0ggMQoKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2Mr K2FsbG9jYXRvci5oIiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29u Z2FyY2g2NC1saW51eC1nbnUvYml0cy9jKythbGxvY2F0b3IuaCIgMwojZGVmaW5lIF9HTElC Q1hYX0NYWF9BTExPQ0FUT1JfSCAxCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9uZXdfYWxsb2NhdG9yLmgiIDEgMwojIDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvbmV3X2FsbG9jYXRvci5oIiAzCiNkZWZpbmUgX1NURF9ORVdfQUxMT0NBVE9S X0ggMQoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9uZXciIDEgMwojIDM2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL25ldyIgMwojZGVmaW5lIF9ORVcgCgogICAgICAg CiMgMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbmV3IiAzCgoKCgojZGVmaW5lIF9f Z2xpYmN4eF93YW50X2xhdW5kZXIgCiNkZWZpbmUgX19nbGliY3h4X3dhbnRfaGFyZHdhcmVf aW50ZXJmZXJlbmNlX3NpemUgCiNkZWZpbmUgX19nbGliY3h4X3dhbnRfZGVzdHJveWluZ19k ZWxldGUgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MSAzCiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK ICAgICAgIAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1l bnRzIDIwMTUwNUwKCgoKCgojdW5kZWYgX19nbGliY3h4X3dhbnRfaW5jb21wbGV0ZV9jb250 YWluZXJfZWxlbWVudHMKIyA3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5jYXVnaHRfZXhjZXB0aW9ucwoj IDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9hbGxvY2F0b3JfdHJhaXRzX2lzX2Fsd2F5c19lcXVhbAojIDkz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9pc19udWxsX3BvaW50ZXIKIyAxMDQgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jlc3Vs dF9vZl9zZmluYWUKIyAxMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfYXJyYXlzCiMgMTMx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9pc19zd2FwcGFibGUKIyAxNDIgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ZvaWRfdAoj IDE1MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMKIyAxNjQgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X21hdGhfc3BlY19mdW5jcwojIDE3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29yb3V0aW5lCiMg MTg2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9leGNoYW5nZV9mdW5jdGlvbgojIDE5NyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf aW50ZWdlcl9zZXF1ZW5jZQojIDIwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdyYWxfY29uc3RhbnRf Y2FsbGFibGUKIyAyMTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ZpbmFsCiMgMjMwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9tYWtlX3JldmVyc2VfaXRlcmF0b3IKIyAyNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X251bGxfaXRlcmF0 b3JzCiMgMjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc2Zvcm1hdGlvbl90cmFpdF9hbGlhc2VzCiMg MjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF90cmFuc3BhcmVudF9vcGVyYXRvcnMKIyAyNzQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3R1cGxlX2VsZW1lbnRfdAojIDI4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHVwbGVzX2J5X3R5cGUK IyAyOTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3JvYnVzdF9ub25tb2RpZnlpbmdfc2VxX29wcwojIDMxMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfdG9fY2hhcnMKIyAzMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nocm9ub191ZGxzCiMg MzM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb21wbGV4X3VkbHMKIyAzNDUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVy aWNfYXNzb2NpYXRpdmVfbG9va3VwCiMgMzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX3VuaXF1ZQoj IDM2NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfcXVvdGVkX3N0cmluZ19pbwojIDM3OCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf c2hhcmVkX3RpbWVkX211dGV4CiMgMzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdfdWRscwojIDQw MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfYWRkcmVzc29mX2NvbnN0ZXhwcgojIDQxMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf YW55CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcHBseQojIDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNfY29u c3QKIyA0NDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19pc19hbHdheXNfbG9ja19mcmVlCiMgNDU1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9ib29sX2NvbnN0YW50CiMgNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlCiMg NDc3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9oYXNfdW5pcXVlX29iamVjdF9yZXByZXNlbnRhdGlvbnMKIyA0 ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2hhcmR3YXJlX2ludGVyZmVyZW5jZV9zaXplCiMgNDk5ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9pbnZva2UKIyA1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2FnZ3JlZ2F0ZQojIDUyMSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfaXNfaW52b2NhYmxlCiMgNTMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sYXVuZGVyCiMg NTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9sb2dpY2FsX3RyYWl0cwojIDU1NCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFr ZV9mcm9tX3R1cGxlCiMgNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub3RfZm4KIyA1NzYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3R5cGVfdHJhaXRfdmFyaWFibGVfdGVtcGxhdGVzCiMgNTkyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF92 YXJpYW50CiMgNjAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sY20KIyA2MTQgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZAoj IDYyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfZ2NkX2xjbQojIDYzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmF3X21lbW9y eV9hbGdvcml0aG1zCiMgNjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcnJheV9jb25zdGV4cHIKIyA2NjMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X25vbm1lbWJlcl9jb250YWluZXJfYWNjZXNzCiMgNjc0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9jbGFtcAojIDY4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2FtcGxlCiMgNjk2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9ib3llcl9tb29yZV9zZWFyY2hlcgojIDcxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2hyb25vCiMgNzIz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9leGVjdXRpb24KIyA3MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZpbGVzeXN0ZW0K IyA3NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2h5cG90CiMgNzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXBfdHJ5X2Vt cGxhY2UKIyA3NjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3BlY2lhbF9mdW5jdGlvbnMKIyA3ODMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X21lbW9yeV9yZXNvdXJjZQojIDc5NCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm9kZV9l eHRyYWN0CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wYXJhbGxlbF9hbGdvcml0aG0KIyA4MTYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3Njb3BlZF9sb2NrCiMgODI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfbXV0ZXgK IyA4MzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfd2Vha190eXBlCiMgODQ5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9zdHJpbmdfdmlldwojIDg2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5vcmRlcmVkX21hcF90cnlf ZW1wbGFjZQojIDg3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNzdW1lX2FsaWduZWQKIyA4ODIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2F0b21pY19mbGFnX3Rlc3QKIyA4OTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19mbG9h dAojIDkwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2xvY2tfZnJlZV90eXBlX2FsaWFzZXMKIyA5 MTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2F0b21pY19yZWYKIyA5MjYgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY192 YWx1ZV9pbml0aWFsaXphdGlvbgojIDkzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmluZF9mcm9udAojIDk0 OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc3RhcnRzX2VuZHNfd2l0aAojIDk1OSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYml0 X2Nhc3QKIyA5NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2JpdG9wcwojIDk4MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm91 bmRlZF9hcnJheV90cmFpdHMKIyA5OTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbmNlcHRzCiMgMTAxMyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfb3B0aW9uYWwKIyAxMDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9kZXN0cm95aW5nX2Rl bGV0ZQojIDEwMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9zdHJpbmdfdmlldwojIDEwNDYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2VuZGlhbgojIDEwNTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludF9wb3cyCiMgMTA2 OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfaW50ZWdlcl9jb21wYXJpc29uX2Z1bmN0aW9ucwojIDEwNzkgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2lzX2NvbnN0YW50X2V2YWx1YXRlZAojIDEwOTUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nv bnN0ZXhwcl9jaGFyX3RyYWl0cwojIDExMDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2xheW91dF9jb21w YXRpYmxlCiMgMTExNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbm90aHJvd19jb252ZXJ0aWJsZQojIDEx MjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2lzX3BvaW50ZXJfaW50ZXJjb252ZXJ0aWJsZQojIDExMzkgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X21hdGhfY29uc3RhbnRzCiMgMTE1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9vYmpf dXNpbmdfYWxsb2NhdG9yCiMgMTE2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVtb3ZlX2N2cmVmCiMgMTE3 MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc291cmNlX2xvY2F0aW9uCiMgMTE4OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3Bh bgojIDExOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3NzaXplCiMgMTIxMCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdGhyZWVf d2F5X2NvbXBhcmlzb24KIyAxMjIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b19hZGRyZXNzCiMgMTIzMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfdG9fYXJyYXkKIyAxMjQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX2lkZW50aXR5 CiMgMTI1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfdW53cmFwX3JlZgojIDEyNjUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nv bnN0ZXhwcl9pdGVyYXRvcgojIDEyNzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVycG9sYXRlCiMgMTI4 NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfY29uc3RleHByX3V0aWxpdHkKIyAxMjk4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z aGlmdAojIDEzMTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhbmdlcwojIDEzMjUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nv bnN0ZXhwcl9udW1lcmljCiMgMTMzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2Z1bmN0aW9u YWwKIyAxMzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfYWxnb3JpdGhtcwojIDEzNTggIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2NvbnN0ZXhwcl90dXBsZQojIDEzNzQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhw cl9tZW1vcnkKIyAxMzg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfc2hhcmVkX3B0cgojIDE0MDEg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY193YWl0CiMgMTQxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmFycmllcgoj IDE0MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdAojIDE0MzQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhw cl9jb21wbGV4CiMgMTQ0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2R5bmFtaWNfYWxsb2MK IyAxNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfc3RyaW5nCiMgMTQ3NyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfY29uc3RleHByX3ZlY3RvcgojIDE0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VyYXNlX2lmCiMgMTQ5 OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZ2VuZXJpY191bm9yZGVyZWRfbG9va3VwCiMgMTUxMCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfanRocmVhZAojIDE1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xhdGNoCiMgMTUzMiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfbGlzdF9yZW1vdmVfcmV0dXJuX3R5cGUKIyAxNTQzICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wb2x5 bW9ycGhpY19hbGxvY2F0b3IKIyAxNTU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3ZlX2l0ZXJhdG9yX2Nv bmNlcHQKIyAxNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zZW1hcGhvcmUKIyAxNTc2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9zbWFydF9wdHJfZm9yX292ZXJ3cml0ZQojIDE1ODcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N5bmNidWYK IyAxNTk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlc3dhcAojIDE2MDkgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9jaGFyY29udgojIDE2MjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl90eXBlaW5mbwoj IDE2MzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2V4cGVjdGVkCiMgMTY0MiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0 YW5kaW5nX2FsZ29yaXRobQojIDE2NTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hcnJh eQojIDE2NjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19jc3RyaW5nCiMgMTY3NSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZnJlZXN0YW5kaW5nX2V4cGVjdGVkCiMgMTY4NiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJl ZXN0YW5kaW5nX29wdGlvbmFsCiMgMTY5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3N0 cmluZ192aWV3CiMgMTcwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3ZhcmlhbnQKIyAx NzE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9pbnZva2VfcgojIDE3MzAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX3Njb3Bl ZF9lbnVtCiMgMTc0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVmZXJlbmNlX2Zyb21fdGVtcG9yYXJ5CiMg MTc1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3RvX2NvbnRhaW5lcgojIDE3NjMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3Jhbmdlc196aXAKIyAxNzc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1bmsKIyAxNzg1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yYW5nZXNfc2xpZGUKIyAxNzk2ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNf Y2h1bmtfYnkKIyAxODA3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfam9pbl93aXRoCiMgMTgxOCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfcmFuZ2VzX3JlcGVhdAojIDE4MjkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19z dHJpZGUKIyAxODQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2FydGVzaWFuX3Byb2R1Y3QKIyAx ODUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfcnZhbHVlCiMgMTg2MiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf cmFuZ2VzX2FzX2NvbnN0CiMgMTg3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2VudW1lcmF0ZQoj IDE4ODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19mb2xkCiMgMTg5NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFu Z2VzX2NvbnRhaW5zCiMgMTkwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2lvdGEKIyAxOTE3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yYW5nZXNfZmluZF9sYXN0CiMgMTkyOCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3Rl eHByX2JpdHNldAojIDE5MzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0ZGF0b21pY19oCiMgMTk1MCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfYWRhcHRvcl9pdGVyYXRvcl9wYWlyX2NvbnN0cnVjdG9yCiMgMTk2MSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZm9ybWF0dGVycwojIDE5NzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZvcndhcmRfbGlrZQoj IDE5ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2lvc19ub3JlcGxhY2UKIyAxOTk0ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9t b3ZlX29ubHlfZnVuY3Rpb24KIyAyMDA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9vdXRfcHRyCiMgMjAxNiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfcHJpbnQKIyAyMDI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zcGFuc3RyZWFtCiMgMjAz OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc3RhY2t0cmFjZQojIDIwNDkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19j b250YWlucwojIDIwNjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19yZXNpemVfYW5kX292ZXJ3cml0 ZQojIDIwNzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX3VuZGVybHlpbmcKIyAyMDgyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF91bnJlYWNoYWJsZQojIDIwOTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZzdHJlYW1fbmF0aXZlX2hhbmRs ZQojIDIxMDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhdGlvCiMgMjExNSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2F0dXJh dGlvbl9hcml0aG1ldGljCiMgMjEyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fc3RyaW5nCiMgMjEzNyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfZ2VuZXJhdG9yCgojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsCiMgNDcg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbmV3IiAyIDMKCiNwcmFnbWEgR0NDIHZpc2li aWxpdHkgcHVzaChkZWZhdWx0KQoKZXh0ZXJuICJDKysiIHsKCm5hbWVzcGFjZSBzdGQKewoK CgoKCgogIGNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24KICB7CiAgcHVibGlj OgogICAgYmFkX2FsbG9jKCkgdGhyb3coKSB7IH0KIyA3MiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9uZXciIDMKICAgIHZpcnR1YWwgfmJhZF9hbGxvYygpIHRocm93KCk7CgoKICAg IHZpcnR1YWwgY29uc3QgY2hhciogd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgfTsKIyA5NyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9uZXciIDMKICBzdHJ1Y3Qgbm90aHJvd190CiAg ewoKCgogIH07CgogIGV4dGVybiBjb25zdCBub3Rocm93X3Qgbm90aHJvdzsKCgoKICB0eXBl ZGVmIHZvaWQgKCpuZXdfaGFuZGxlcikoKTsKCgoKICBuZXdfaGFuZGxlciBzZXRfbmV3X2hh bmRsZXIobmV3X2hhbmRsZXIpIHRocm93KCk7CgoKCgoKfQojIDEzMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9uZXciIDMKIHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCkg dGhyb3coc3RkOjpiYWRfYWxsb2MpCiAgX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zp c2libGVfXykpOwogdm9pZCogb3BlcmF0b3IgbmV3W10oc3RkOjpzaXplX3QpIHRocm93KHN0 ZDo6YmFkX2FsbG9jKQogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18p KTsKdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHRocm93KCkKICBfX2F0dHJpYnV0ZV9f KChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7CnZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9p ZCopIHRocm93KCkKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJsZV9fKSk7 CgoKCgoKCiB2b2lkKiBvcGVyYXRvciBuZXcoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90 aHJvd190JikgdGhyb3coKQogIF9fYXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxl X18sIF9fYWxsb2Nfc2l6ZV9fICgxKSwgX19tYWxsb2NfXykpOwogdm9pZCogb3BlcmF0b3Ig bmV3W10oc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JikgdGhyb3coKQogIF9f YXR0cmlidXRlX18oKF9fZXh0ZXJuYWxseV92aXNpYmxlX18sIF9fYWxsb2Nfc2l6ZV9fICgx KSwgX19tYWxsb2NfXykpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgY29uc3Qgc3Rk Ojpub3Rocm93X3QmKSB0aHJvdygpCiAgX19hdHRyaWJ1dGVfXygoX19leHRlcm5hbGx5X3Zp c2libGVfXykpOwp2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCBjb25zdCBzdGQ6Om5v dGhyb3dfdCYpIHRocm93KCkKICBfX2F0dHJpYnV0ZV9fKChfX2V4dGVybmFsbHlfdmlzaWJs ZV9fKSk7CiMgMTc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL25ldyIgMwogaW5saW5l IHZvaWQqIG9wZXJhdG9yIG5ldyhzdGQ6OnNpemVfdCwgdm9pZCogX19wKSB0aHJvdygpCnsg cmV0dXJuIF9fcDsgfQogaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ld1tdKHN0ZDo6c2l6ZV90 LCB2b2lkKiBfX3ApIHRocm93KCkKeyByZXR1cm4gX19wOyB9CgoKaW5saW5lIHZvaWQgb3Bl cmF0b3IgZGVsZXRlICh2b2lkKiwgdm9pZCopIHRocm93KCkgeyB9CmlubGluZSB2b2lkIG9w ZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH0KCn0KIyAyMzYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbmV3IiAzCiNwcmFnbWEgR0NDIHZpc2liaWxpdHkg cG9wCiMgMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9uZXdfYWxsb2NhdG9y LmgiIDIgMwojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9mdW5jdGV4Y2Vw dC5oIiAxIDMKIyAzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Z1bmN0ZXhj ZXB0LmgiIDMKI2RlZmluZSBfRlVOQ1RFWENFUFRfSCAxCgoKIyAxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvZXhjZXB0aW9uX2RlZmluZXMuaCIgMSAzCiMgMzEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9leGNlcHRpb25fZGVmaW5lcy5oIiAzCiNkZWZp bmUgX0VYQ0VQVElPTl9ERUZJTkVTX0ggMQojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvZXhjZXB0aW9uX2RlZmluZXMuaCIgMwojZGVmaW5lIF9fdHJ5IHRyeQojZGVm aW5lIF9fY2F0Y2goWCkgY2F0Y2goWCkKI2RlZmluZSBfX3Rocm93X2V4Y2VwdGlvbl9hZ2Fp biB0aHJvdwojIDQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvZnVuY3RleGNl cHQuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlf XyAoImRlZmF1bHQiKSkpCnsKCgoKCiAgdm9pZAogIF9fdGhyb3dfYmFkX2V4Y2VwdGlvbih2 b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCgogIHZvaWQKICBfX3Rocm93 X2JhZF9hbGxvYyh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKTsKCiAgdm9p ZAogIF9fdGhyb3dfYmFkX2FycmF5X25ld19sZW5ndGgodm9pZCkgX19hdHRyaWJ1dGVfXygo X19ub3JldHVybl9fKSk7CgoKICB2b2lkCiAgX190aHJvd19iYWRfY2FzdCh2b2lkKSBfX2F0 dHJpYnV0ZV9fKChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKCiAgdm9pZAogIF9fdGhyb3df YmFkX3R5cGVpZCh2b2lkKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18sX19jb2xkX18p KTsKCgogIHZvaWQKICBfX3Rocm93X2xvZ2ljX2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJp YnV0ZV9fKChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfZG9t YWluX2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18sX19j b2xkX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfaW52YWxpZF9hcmd1bWVudChjb25zdCBjaGFy KikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fLF9fY29sZF9fKSk7CgogIHZvaWQKICBf X3Rocm93X2xlbmd0aF9lcnJvcihjb25zdCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3Jl dHVybl9fLF9fY29sZF9fKSk7CgogIHZvaWQKICBfX3Rocm93X291dF9vZl9yYW5nZShjb25z dCBjaGFyKikgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fLF9fY29sZF9fKSk7CgogIHZv aWQKICBfX3Rocm93X291dF9vZl9yYW5nZV9mbXQoY29uc3QgY2hhciosIC4uLikgX19hdHRy aWJ1dGVfXygoX19ub3JldHVybl9fLF9fY29sZF9fKSkKICAgIF9fYXR0cmlidXRlX18oKF9f Zm9ybWF0X18oX19nbnVfcHJpbnRmX18sIDEsIDIpKSk7CgogIHZvaWQKICBfX3Rocm93X3J1 bnRpbWVfZXJyb3IoY29uc3QgY2hhciopIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXyxf X2NvbGRfXykpOwoKICB2b2lkCiAgX190aHJvd19yYW5nZV9lcnJvcihjb25zdCBjaGFyKikg X19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fLF9fY29sZF9fKSk7CgogIHZvaWQKICBfX3Ro cm93X292ZXJmbG93X2Vycm9yKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0 dXJuX18sX19jb2xkX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfdW5kZXJmbG93X2Vycm9yKGNv bnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKCgog IHZvaWQKICBfX3Rocm93X2lvc19mYWlsdXJlKGNvbnN0IGNoYXIqKSBfX2F0dHJpYnV0ZV9f KChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKCiAgdm9pZAogIF9fdGhyb3dfaW9zX2ZhaWx1 cmUoY29uc3QgY2hhciosIGludCkgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fLF9fY29s ZF9fKSk7CgoKICB2b2lkCiAgX190aHJvd19zeXN0ZW1fZXJyb3IoaW50KSBfX2F0dHJpYnV0 ZV9fKChfX25vcmV0dXJuX18sX19jb2xkX18pKTsKCgogIHZvaWQKICBfX3Rocm93X2Z1dHVy ZV9lcnJvcihpbnQpIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXyxfX2NvbGRfXykpOwoK CiAgdm9pZAogIF9fdGhyb3dfYmFkX2Z1bmN0aW9uX2NhbGwoKSBfX2F0dHJpYnV0ZV9fKChf X25vcmV0dXJuX18sX19jb2xkX18pKTsKIyAxNDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9mdW5jdGV4Y2VwdC5oIiAzCgp9CiMgMzYgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9uZXdfYWxsb2NhdG9yLmgiIDIgMwojIDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9tb3ZlLmgiIDEgMwojIDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvbW92ZS5oIiAzCiNkZWZpbmUgX01PVkVfSCAxCgoKCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMSAzCiMgMzEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jb25jZXB0X2NoZWNrLmgiIDMKI2RlZmluZSBf Q09OQ0VQVF9DSEVDS19IIDEKCiAgICAgICAKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2NvbmNlcHRfY2hlY2suaCIgMwojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvY29uY2VwdF9jaGVjay5oIiAzCiNkZWZpbmUgX19nbGliY3h4X2Z1bmN0 aW9uX3JlcXVpcmVzKC4uLikgCiNkZWZpbmUgX19nbGliY3h4X2NsYXNzX3JlcXVpcmVzKF9h LF9iKSAKI2RlZmluZSBfX2dsaWJjeHhfY2xhc3NfcmVxdWlyZXMyKF9hLF9iLF9jKSAKI2Rl ZmluZSBfX2dsaWJjeHhfY2xhc3NfcmVxdWlyZXMzKF9hLF9iLF9jLF9kKSAKI2RlZmluZSBf X2dsaWJjeHhfY2xhc3NfcmVxdWlyZXM0KF9hLF9iLF9jLF9kLF9lKSAKIyAzNiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL21vdmUuaCIgMiAzCgoKCgpuYW1lc3BhY2Ugc3Rk IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgaW5saW5lIF9UcCoKICAgIF9fYWRkcmVz c29mKF9UcCYgX19yKQogICAgeyByZXR1cm4gX19idWlsdGluX2FkZHJlc3NvZihfX3IpOyB9 CiMgMTg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbW92ZS5oIiAzCiNkZWZp bmUgX0dMSUJDWFhfRldEUkVGKF9UcCkgY29uc3QgX1RwJgojZGVmaW5lIF9HTElCQ1hYX01P VkUoX192YWwpIChfX3ZhbCkKI2RlZmluZSBfR0xJQkNYWF9GT1JXQVJEKF9UcCxfX3ZhbCkg KF9fdmFsKQojIDIwMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL21vdmUuaCIg MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUKCgoKCgogICAgdm9p ZAoKICAgIHN3YXAoX1RwJiBfX2EsIF9UcCYgX19iKQogICAKCiAgICB7CgoKICAgICAKCiAg ICAgIF9UcCBfX3RtcCA9IChfX2EpOwogICAgICBfX2EgPSAoX19iKTsKICAgICAgX19iID0g KF9fdG1wKTsKICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBzaXplX3QgX05t PgogICAKICAgIGlubGluZQoKCgogICAgdm9pZAoKICAgIHN3YXAoX1RwICgmX19hKVtfTm1d LCBfVHAgKCZfX2IpW19ObV0pCiAgIAogICAgewogICAgICBmb3IgKHNpemVfdCBfX24gPSAw OyBfX24gPCBfTm07ICsrX19uKQogc3dhcChfX2FbX19uXSwgX19iW19fbl0pOwogICAgfQoK Cgp9CiMgMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9uZXdfYWxsb2NhdG9y LmgiIDIgMwoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5 X18gKCJkZWZhdWx0IikpKQp7CgojIDYyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvbmV3X2FsbG9jYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgY2xh c3MgX19uZXdfYWxsb2NhdG9yCiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1Rw IHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwogICAg ICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90IGRpZmZlcmVuY2VfdHlwZTsKCiAgICAgIHR5cGVk ZWYgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCogY29uc3RfcG9pbnRl cjsKICAgICAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiBjb25zdCBf VHAmIGNvbnN0X3JlZmVyZW5jZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDE+CiBz dHJ1Y3QgcmViaW5kCiB7IHR5cGVkZWYgX19uZXdfYWxsb2NhdG9yPF9UcDE+IG90aGVyOyB9 OwojIDg2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbmV3X2FsbG9jYXRvci5o IiAzCiAgICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAKICAg ICAgX19uZXdfYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0KCiAgICAgIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAKICAgICAgX19uZXdfYWxsb2NhdG9yKGNvbnN0 IF9fbmV3X2FsbG9jYXRvciYpIHRocm93KCkgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfVHAxPgogX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQoKIF9fbmV3X2Fs bG9jYXRvcihjb25zdCBfX25ld19hbGxvY2F0b3I8X1RwMT4mKSB0aHJvdygpIHsgfQoKCgoK CgogICAgICB+X19uZXdfYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0KCiAgICAgIHBvaW50ZXIK ICAgICAgYWRkcmVzcyhyZWZlcmVuY2UgX194KSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6 Ol9fYWRkcmVzc29mKF9feCk7IH0KCiAgICAgIGNvbnN0X3BvaW50ZXIKICAgICAgYWRkcmVz cyhjb25zdF9yZWZlcmVuY2UgX194KSBjb25zdAogICAgICB7IHJldHVybiBzdGQ6Ol9fYWRk cmVzc29mKF9feCk7IH0KCgoKCgoKI2RlZmluZSBfR0xJQkNYWF9PUEVSQVRPUl9ORVcgOjpv cGVyYXRvciBuZXcKI2RlZmluZSBfR0xJQkNYWF9PUEVSQVRPUl9ERUxFVEUgOjpvcGVyYXRv ciBkZWxldGUKCgoKCiAgICAgIF9UcCoKICAgICAgYWxsb2NhdGUoc2l6ZV90eXBlIF9fbiwg Y29uc3Qgdm9pZCogPSBzdGF0aWNfY2FzdDxjb25zdCB2b2lkKj4oMCkpCiAgICAgIHsKCgoK CgoKIGlmIChfX2J1aWx0aW5fZXhwZWN0KF9fbiA+IHRoaXMtPl9NX21heF9zaXplKCksIGZh bHNlKSkKICAgewoKCiAgICAgaWYgKF9fbiA+IChzdGQ6OnNpemVfdCgtMSkgLyBzaXplb2Yo X1RwKSkpCiAgICAgICBzdGQ6Ol9fdGhyb3dfYmFkX2FycmF5X25ld19sZW5ndGgoKTsKICAg ICBzdGQ6Ol9fdGhyb3dfYmFkX2FsbG9jKCk7CiAgIH0KIyAxNTEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9uZXdfYWxsb2NhdG9yLmgiIDMKIHJldHVybiBzdGF0aWNfY2Fz dDxfVHAqPig6Om9wZXJhdG9yIG5ldyhfX24gKiBzaXplb2YoX1RwKSkpOwogICAgICB9CgoK ICAgICAgdm9pZAogICAgICBkZWFsbG9jYXRlKF9UcCogX19wLCBzaXplX3R5cGUgX19uIF9f YXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkpCiAgICAgIHsKCgoKI2RlZmluZSBfR0xJQkNY WF9TSVpFRF9ERUFMTE9DKHAsbikgKHApCiMgMTcyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvbmV3X2FsbG9jYXRvci5oIiAzCiA6Om9wZXJhdG9yIGRlbGV0ZSgoX19wKSk7 CiAgICAgIH0KCiN1bmRlZiBfR0xJQkNYWF9TSVpFRF9ERUFMTE9DCiN1bmRlZiBfR0xJQkNY WF9PUEVSQVRPUl9ERUxFVEUKI3VuZGVmIF9HTElCQ1hYX09QRVJBVE9SX05FVwoKCiAgICAg IF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAgc2l6ZV90eXBlCiAg ICAgIG1heF9zaXplKCkgY29uc3QgdGhyb3coKQogICAgICB7IHJldHVybiBfTV9tYXhfc2l6 ZSgpOyB9CiMgMjAyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbmV3X2FsbG9j YXRvci5oIiAzCiAgICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAg ICAgdm9pZAogICAgICBjb25zdHJ1Y3QocG9pbnRlciBfX3AsIGNvbnN0IF9UcCYgX192YWwp CiAgICAgIHsgOjpuZXcoKHZvaWQgKilfX3ApIF9UcChfX3ZhbCk7IH0KCiAgICAgIF9fYXR0 cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAgdm9pZAogICAgICBkZXN0cm95 KHBvaW50ZXIgX19wKSB7IF9fcC0+fl9UcCgpOyB9CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVu YW1lIF9VcD4KIGZyaWVuZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpIGJv b2wKIG9wZXJhdG9yPT0oY29uc3QgX19uZXdfYWxsb2NhdG9yJiwgY29uc3QgX19uZXdfYWxs b2NhdG9yPF9VcD4mKQogdGhyb3coKQogeyByZXR1cm4gdHJ1ZTsgfQoKCiAgICAgIHRlbXBs YXRlPHR5cGVuYW1lIF9VcD4KIGZyaWVuZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxp bmVfXykpIGJvb2wKIG9wZXJhdG9yIT0oY29uc3QgX19uZXdfYWxsb2NhdG9yJiwgY29uc3Qg X19uZXdfYWxsb2NhdG9yPF9VcD4mKQogdGhyb3coKQogeyByZXR1cm4gZmFsc2U7IH0KCgog ICAgcHJpdmF0ZToKICAgICAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQog ICAgICBzaXplX3R5cGUKICAgICAgX01fbWF4X3NpemUoKSBjb25zdCB0aHJvdygpCiAgICAg IHsKCiByZXR1cm4gc3RkOjpzaXplX3QoMHg3ZmZmZmZmZmZmZmZmZmZmTCkgLyBzaXplb2Yo X1RwKTsKCgoKICAgICAgfQogICAgfTsKCgp9CiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvbG9vbmdhcmNoNjQtbGludXgtZ251L2JpdHMvYysrYWxsb2NhdG9yLmgiIDIgMwoj IDUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9i aXRzL2MrK2FsbG9jYXRvci5oIiAzCiNkZWZpbmUgX19hbGxvY2F0b3JfYmFzZSBfX25ld19h bGxvY2F0b3IKIyA0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2FsbG9jYXRv ci5oIiAyIDMKCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp dHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9hbGxvY2F0b3IuaCIgMwogIHRlbXBsYXRlPD4KICAgIGNsYXNzIGFsbG9jYXRvcjx2 b2lkPgogICAgewogICAgcHVibGljOgogICAgICB0eXBlZGVmIHZvaWQgdmFsdWVfdHlwZTsK ICAgICAgdHlwZWRlZiBzaXplX3Qgc2l6ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZf dCBkaWZmZXJlbmNlX3R5cGU7CgoKCiAgICAgIHR5cGVkZWYgdm9pZCogcG9pbnRlcjsKICAg ICAgdHlwZWRlZiBjb25zdCB2b2lkKiBjb25zdF9wb2ludGVyOwoKICAgICAgdGVtcGxhdGU8 dHlwZW5hbWUgX1RwMT4KIHN0cnVjdCByZWJpbmQKIHsgdHlwZWRlZiBhbGxvY2F0b3I8X1Rw MT4gb3RoZXI7IH07CiMgMTE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYWxs b2NhdG9yLmgiIDMKICAgIH07CiMgMTI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvYWxsb2NhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFzcyBh bGxvY2F0b3IgOiBwdWJsaWMgX19uZXdfYWxsb2NhdG9yPF9UcD4KICAgIHsKICAgIHB1Ymxp YzoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBzaXplX3Qg c2l6ZV90eXBlOwogICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CgoK CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVyOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCog Y29uc3RfcG9pbnRlcjsKICAgICAgdHlwZWRlZiBfVHAmIHJlZmVyZW5jZTsKICAgICAgdHlw ZWRlZiBjb25zdCBfVHAmIGNvbnN0X3JlZmVyZW5jZTsKCiAgICAgIHRlbXBsYXRlPHR5cGVu YW1lIF9UcDE+CiBzdHJ1Y3QgcmViaW5kCiB7IHR5cGVkZWYgYWxsb2NhdG9yPF9UcDE+IG90 aGVyOyB9OwojIDE1OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2FsbG9jYXRv ci5oIiAzCiAgICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAK ICAgICAgYWxsb2NhdG9yKCkgdGhyb3coKSB7IH0KCiAgICAgIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKICAgICAKICAgICAgYWxsb2NhdG9yKGNvbnN0IGFsbG9jYXRv ciYgX19hKSB0aHJvdygpCiAgICAgIDogX19uZXdfYWxsb2NhdG9yPF9UcD4oX19hKSB7IH0K CgoKCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMT4KIF9fYXR0cmlidXRlX18oKF9f YWx3YXlzX2lubGluZV9fKSkKCiBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9UcDE+Jikg dGhyb3coKSB7IH0KCiAgICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkK CgoKICAgICAgfmFsbG9jYXRvcigpIHRocm93KCkgeyB9CiMgMjEyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvYWxsb2NhdG9yLmgiIDMKICAgICAgZnJpZW5kIF9fYXR0cmli dXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgICAgYm9vbAogICAgICBvcGVyYXRvcj09 KGNvbnN0IGFsbG9jYXRvciYsIGNvbnN0IGFsbG9jYXRvciYpIHRocm93KCkKICAgICAgeyBy ZXR1cm4gdHJ1ZTsgfQoKCiAgICAgIGZyaWVuZCBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19p bmxpbmVfXykpCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IhPShjb25zdCBhbGxvY2F0b3Im LCBjb25zdCBhbGxvY2F0b3ImKSB0aHJvdygpCiAgICAgIHsgcmV0dXJuIGZhbHNlOyB9CgoK CiAgICB9OwoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgog ICAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQogICAgaW5saW5lIGJvb2wK ICAgIG9wZXJhdG9yPT0oY29uc3QgYWxsb2NhdG9yPF9UMT4mLCBjb25zdCBhbGxvY2F0b3I8 X1QyPiYpCiAgICB0aHJvdygpCiAgICB7IHJldHVybiB0cnVlOyB9CgoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlz X2lubGluZV9fKSkKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IGFsbG9j YXRvcjxfVDE+JiwgY29uc3QgYWxsb2NhdG9yPF9UMj4mKQogICAgdGhyb3coKQogICAgeyBy ZXR1cm4gZmFsc2U7IH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBjbGFz cyBhbGxvY2F0b3I8Y29uc3QgX1RwPgogICAgewogICAgcHVibGljOgogICAgICB0eXBlZGVm IF9UcCB2YWx1ZV90eXBlOwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVXA+IGFsbG9jYXRv cihjb25zdCBhbGxvY2F0b3I8X1VwPiYpIHsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX1RwPgogICAgY2xhc3MgYWxsb2NhdG9yPHZvbGF0aWxlIF9UcD4KICAgIHsKICAgIHB1 YmxpYzoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAgdGVtcGxhdGU8dHlw ZW5hbWUgX1VwPiBhbGxvY2F0b3IoY29uc3QgYWxsb2NhdG9yPF9VcD4mKSB7IH0KICAgIH07 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGNsYXNzIGFsbG9jYXRvcjxjb25zdCB2 b2xhdGlsZSBfVHA+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYgX1RwIHZhbHVl X3R5cGU7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9VcD4gYWxsb2NhdG9yKGNvbnN0IGFs bG9jYXRvcjxfVXA+JikgeyB9CiAgICB9OwoKCgoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xh c3MgYWxsb2NhdG9yPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBhbGxvY2F0b3I8 d2NoYXJfdD47CgoKCiN1bmRlZiBfX2FsbG9jYXRvcl9iYXNlCgoKfQojIDQ0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL3N0cmluZyIgMiAzCgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMSAzCiMgMzEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9vc3RyZWFtX2luc2VydC5oIiAzCiNkZWZpbmUgX09TVFJF QU1fSU5TRVJUX0ggMQoKICAgICAgIAojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvb3N0cmVhbV9pbnNlcnQuaCIgMwoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2N4eGFiaV9mb3JjZWQuaCIgMSAzCiMgMzIgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9jeHhhYmlfZm9yY2VkLmgiIDMKI2RlZmluZSBfQ1hYQUJJX0ZPUkNF RF9IIDEKCiAgICAgICAKIyAzNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2N4 eGFiaV9mb3JjZWQuaCIgMwoKI3ByYWdtYSBHQ0MgdmlzaWJpbGl0eSBwdXNoKGRlZmF1bHQp CgoKbmFtZXNwYWNlIF9fY3h4YWJpdjEKewoKCgoKCgoKICBjbGFzcyBfX2ZvcmNlZF91bndp bmQKICB7CiAgICB2aXJ0dWFsIH5fX2ZvcmNlZF91bndpbmQoKSB0aHJvdygpOwoKCiAgICB2 aXJ0dWFsIHZvaWQgX19wdXJlX2R1bW15KCkgPSAwOwogIH07Cn0KCgojcHJhZ21hIEdDQyB2 aXNpYmlsaXR5IHBvcAojIDM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvb3N0 cmVhbV9pbnNlcnQuaCIgMiAzCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSB2b2lkCiAgICBfX29zdHJlYW1f d3JpdGUoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwKICAgICAgY29u c3QgX0NoYXJUKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAgICB0eXBlZGVmIGJh c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsKICAgICAgdHlw ZWRlZiB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6aW9zX2Jhc2UgX19pb3NfYmFzZTsKCiAg ICAgIGNvbnN0IHN0cmVhbXNpemUgX19wdXQgPSBfX291dC5yZGJ1ZigpLT5zcHV0bihfX3Ms IF9fbik7CiAgICAgIGlmIChfX3B1dCAhPSBfX24pCiBfX291dC5zZXRzdGF0ZShfX2lvc19i YXNlOjpiYWRiaXQpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu YW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgdm9pZAogICAgX19vc3RyZWFtX2ZpbGwoYmFzaWNf b3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwgc3RyZWFtc2l6ZSBfX24pCiAgICB7 CiAgICAgIHR5cGVkZWYgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9fb3N0cmVh bV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fb3N0cmVhbV90eXBlOjppb3NfYmFz ZSBfX2lvc19iYXNlOwoKICAgICAgY29uc3QgX0NoYXJUIF9fYyA9IF9fb3V0LmZpbGwoKTsK ICAgICAgZm9yICg7IF9fbiA+IDA7IC0tX19uKQogewogICBjb25zdCB0eXBlbmFtZSBfVHJh aXRzOjppbnRfdHlwZSBfX3B1dCA9IF9fb3V0LnJkYnVmKCktPnNwdXRjKF9fYyk7CiAgIGlm IChfVHJhaXRzOjplcV9pbnRfdHlwZShfX3B1dCwgX1RyYWl0czo6ZW9mKCkpKQogICAgIHsK ICAgICAgIF9fb3V0LnNldHN0YXRlKF9faW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICBicmVh azsKICAgICB9CiB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIF9f b3N0cmVhbV9pbnNlcnQoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX291dCwK ICAgICAgIGNvbnN0IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAg dHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7 CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19vc3RyZWFtX3R5cGU6Omlvc19iYXNlIF9faW9z X2Jhc2U7CgogICAgICB0eXBlbmFtZSBfX29zdHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihf X291dCk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0 IHN0cmVhbXNpemUgX193ID0gX19vdXQud2lkdGgoKTsKICAgICAgIGlmIChfX3cgPiBfX24p CiAgewogICAgY29uc3QgYm9vbCBfX2xlZnQgPSAoKF9fb3V0LmZsYWdzKCkKICAgICAmIF9f aW9zX2Jhc2U6OmFkanVzdGZpZWxkKQogICAgICAgICAgID09IF9faW9zX2Jhc2U6OmxlZnQp OwogICAgaWYgKCFfX2xlZnQpCiAgICAgIF9fb3N0cmVhbV9maWxsKF9fb3V0LCBfX3cgLSBf X24pOwogICAgaWYgKF9fb3V0Lmdvb2QoKSkKICAgICAgX19vc3RyZWFtX3dyaXRlKF9fb3V0 LCBfX3MsIF9fbik7CiAgICBpZiAoX19sZWZ0ICYmIF9fb3V0Lmdvb2QoKSkKICAgICAgX19v c3RyZWFtX2ZpbGwoX19vdXQsIF9fdyAtIF9fbik7CiAgfQogICAgICAgZWxzZQogIF9fb3N0 cmVhbV93cml0ZShfX291dCwgX19zLCBfX24pOwogICAgICAgX19vdXQud2lkdGgoMCk7CiAg ICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAg ICAgIF9fb3V0Ll9NX3NldHN0YXRlKF9faW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJv dzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IF9fb3V0Ll9NX3NldHN0YXRlKF9faW9z X2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCgoKICBl eHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgX19vc3RyZWFtX2luc2VydChvc3RyZWFtJiwgY29u c3QgY2hhciosIHN0cmVhbXNpemUpOwoKCiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBf X29zdHJlYW1faW5zZXJ0KHdvc3RyZWFtJiwgY29uc3Qgd2NoYXJfdCosCiAgICAgICAgICBz dHJlYW1zaXplKTsKCgoKCgoKfQojIDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0 cmluZyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVy YXRvcl9iYXNlX2Z1bmNzLmgiIDEgMwojIDYwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMwojZGVmaW5lIF9TVExfSVRFUkFU T1JfQkFTRV9GVU5DU19IIDEKCiAgICAgICAKIyA2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKCgojIDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvZGVidWcvYXNzZXJ0aW9ucy5oIiAxIDMKIyAzMCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9kZWJ1Zy9hc3NlcnRpb25zLmgiIDMKI2RlZmluZSBfR0xJ QkNYWF9ERUJVR19BU1NFUlRJT05TX0ggMQoKCgoKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWly ZXNfbm9uX2VtcHR5X3JhbmdlKF9GaXJzdCxfTGFzdCkgCiNkZWZpbmUgX19nbGliY3h4X3Jl cXVpcmVzX25vbmVtcHR5KCkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3N1YnNjcmlw dChfTikgCiMgNjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZGVidWcvYXNzZXJ0aW9u cy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfREVCVUdfQVNTRVJUKF9Db25kaXRpb24pIAojZGVm aW5lIF9HTElCQ1hYX0RFQlVHX1BFREFTU0VSVChfQ29uZGl0aW9uKSAKI2RlZmluZSBfR0xJ QkNYWF9ERUJVR19PTkxZKF9TdGF0ZW1lbnQpIAojIDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMiAzCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDEg MwojIDYwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yX2Jh c2VfdHlwZXMuaCIgMwojZGVmaW5lIF9TVExfSVRFUkFUT1JfQkFTRV9UWVBFU19IIDEKCiAg ICAgICAKIyA2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRv cl9iYXNlX3R5cGVzLmgiIDMKIyA3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0 ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgojIDkzICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfdHlwZXMuaCIgMwogIHN0 cnVjdCBpbnB1dF9pdGVyYXRvcl90YWcgeyB9OwoKCiAgc3RydWN0IG91dHB1dF9pdGVyYXRv cl90YWcgeyB9OwoKCiAgc3RydWN0IGZvcndhcmRfaXRlcmF0b3JfdGFnIDogcHVibGljIGlu cHV0X2l0ZXJhdG9yX3RhZyB7IH07CgoKCiAgc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0 b3JfdGFnIDogcHVibGljIGZvcndhcmRfaXRlcmF0b3JfdGFnIHsgfTsKCgoKICBzdHJ1Y3Qg cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgOiBwdWJsaWMgYmlkaXJlY3Rpb25hbF9pdGVy YXRvcl90YWcgeyB9OwojIDEyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0 bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2F0ZWdv cnksIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0Rpc3RhbmNlID0gcHRyZGlmZl90LAogICAg ICAgICAgIHR5cGVuYW1lIF9Qb2ludGVyID0gX1RwKiwgdHlwZW5hbWUgX1JlZmVyZW5jZSA9 IF9UcCY+CiAgICBzdHJ1Y3QgaXRlcmF0b3IKICAgIHsKCiAgICAgIHR5cGVkZWYgX0NhdGVn b3J5IGl0ZXJhdG9yX2NhdGVnb3J5OwoKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsK CiAgICAgIHR5cGVkZWYgX0Rpc3RhbmNlIGRpZmZlcmVuY2VfdHlwZTsKCiAgICAgIHR5cGVk ZWYgX1BvaW50ZXIgcG9pbnRlcjsKCiAgICAgIHR5cGVkZWYgX1JlZmVyZW5jZSByZWZlcmVu Y2U7CiAgICB9OwojIDE0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9p dGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+ CiAgICBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzOwojIDE4MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX3R5cGVzLmgiIDMKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzCiAgICB7CiAg ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0ZXJhdG9yOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVy YXRvcl9jYXRlZ29yeTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OnZhbHVl X3R5cGUgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfSXRlcmF0b3I6OmRp ZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg X0l0ZXJhdG9yOjpwb2ludGVyIHBvaW50ZXI7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX0l0 ZXJhdG9yOjpyZWZlcmVuY2UgcmVmZXJlbmNlOwogICAgfTsKIyAyMDkgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCiAgdGVt cGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxfVHAqPgog ICAgewogICAgICB0eXBlZGVmIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9y X2NhdGVnb3J5OwogICAgICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBlOwogICAgICB0eXBlZGVm IHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RwKiBwb2ludGVy OwogICAgICB0eXBlZGVmIF9UcCYgcmVmZXJlbmNlOwogICAgfTsKCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBpdGVyYXRvcl90cmFpdHM8Y29uc3QgX1RwKj4KICAg IHsKICAgICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9j YXRlZ29yeTsKICAgICAgdHlwZWRlZiBfVHAgdmFsdWVfdHlwZTsKICAgICAgdHlwZWRlZiBw dHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwogICAgICB0eXBlZGVmIGNvbnN0IF9UcCogcG9p bnRlcjsKICAgICAgdHlwZWRlZiBjb25zdCBfVHAmIHJlZmVyZW5jZTsKICAgIH07CgoKCgoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+CiAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5 c19pbmxpbmVfXykpCiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxf SXRlcj46Oml0ZXJhdG9yX2NhdGVnb3J5CiAgICBfX2l0ZXJhdG9yX2NhdGVnb3J5KGNvbnN0 IF9JdGVyJikKICAgIHsgcmV0dXJuIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSXRlcj46 Oml0ZXJhdG9yX2NhdGVnb3J5KCk7IH0KIyAyNjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9zdGxfaXRlcmF0b3JfYmFzZV90eXBlcy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0l0LCB0eXBlbmFtZSBfVHJhaXRzID0gaXRlcmF0b3JfdHJhaXRzPF9JdD4sCiAgICB0 eXBlbmFtZSBfQ2F0ID0gdHlwZW5hbWUgX1RyYWl0czo6aXRlcmF0b3JfY2F0ZWdvcnk+CiAg ICBzdHJ1Y3QgX19pc19yYW5kb21fYWNjZXNzX2l0ZXIKICAgIHsgZW51bSB7IF9fdmFsdWUg PSBfX2lzX2Jhc2Vfb2YocmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsIF9DYXQpIH07IH07 CgoKCn0KIyA2NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRv cl9iYXNlX2Z1bmNzLmgiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgogIHRlbXBsYXRlIDx0eXBlbmFtZT4g c3RydWN0IF9MaXN0X2l0ZXJhdG9yOwogIHRlbXBsYXRlIDx0eXBlbmFtZT4gc3RydWN0IF9M aXN0X2NvbnN0X2l0ZXJhdG9yOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0 b3I+CiAgICBpbmxpbmUKICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVy YXRvcj46OmRpZmZlcmVuY2VfdHlwZQogICAgX19kaXN0YW5jZShfSW5wdXRJdGVyYXRvciBf X2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBfX2xhc3QsCiAgICAgICAgICAgICAgIGlucHV0X2l0 ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgogICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFp dHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgX19uID0gMDsKICAgICAgd2hp bGUgKF9fZmlyc3QgIT0gX19sYXN0KQogewogICArK19fZmlyc3Q7CiAgICsrX19uOwogfQog ICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmFuZG9tQWNj ZXNzSXRlcmF0b3I+CiAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCiAg ICBpbmxpbmUKICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRl cmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgIF9fZGlzdGFuY2UoX1JhbmRvbUFjY2Vzc0l0 ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAgICAgICAg ICAgICAgIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKQogICAgewoKICAgICAKCiAgICAg IHJldHVybiBfX2xhc3QgLSBfX2ZpcnN0OwogICAgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1l IF9UcD4KICAgIHB0cmRpZmZfdAogICAgX19kaXN0YW5jZShzdGQ6Ol9MaXN0X2l0ZXJhdG9y PF9UcD4sCiAgICAgICAgc3RkOjpfTGlzdF9pdGVyYXRvcjxfVHA+LAogICAgICAgIGlucHV0 X2l0ZXJhdG9yX3RhZyk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHB0cmRpZmZf dAogICAgX19kaXN0YW5jZShzdGQ6Ol9MaXN0X2NvbnN0X2l0ZXJhdG9yPF9UcD4sCiAgICAg ICAgc3RkOjpfTGlzdF9jb25zdF9pdGVyYXRvcjxfVHA+LAogICAgICAgIGlucHV0X2l0ZXJh dG9yX3RhZyk7CiMgMTQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0 ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJh dG9yPgogICAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQogICAgaW5saW5l CiAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lucHV0SXRlcmF0b3I+OjpkaWZmZXJl bmNlX3R5cGUKICAgIGRpc3RhbmNlKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0 ZXJhdG9yIF9fbGFzdCkKICAgIHsKCiAgICAgIHJldHVybiBzdGQ6Ol9fZGlzdGFuY2UoX19m aXJzdCwgX19sYXN0LAogICAgICAgIHN0ZDo6X19pdGVyYXRvcl9jYXRlZ29yeShfX2ZpcnN0 KSk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFt ZSBfRGlzdGFuY2U+CiAgICBpbmxpbmUgdm9pZAogICAgX19hZHZhbmNlKF9JbnB1dEl0ZXJh dG9yJiBfX2ksIF9EaXN0YW5jZSBfX24sIGlucHV0X2l0ZXJhdG9yX3RhZykKICAgIHsKCiAg ICAgCiAgICAgIDsKICAgICAgd2hpbGUgKF9fbi0tKQogKytfX2k7CiAgICB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9CaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIF9EaXN0YW5j ZT4KICAgIGlubGluZSB2b2lkCiAgICBfX2FkdmFuY2UoX0JpZGlyZWN0aW9uYWxJdGVyYXRv ciYgX19pLCBfRGlzdGFuY2UgX19uLAogICAgICAgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90 YWcpCiAgICB7CgogICAgIAoKICAgICAgaWYgKF9fbiA+IDApCiAgICAgICAgd2hpbGUgKF9f bi0tKQogICArK19faTsKICAgICAgZWxzZQogICAgICAgIHdoaWxlIChfX24rKykKICAgLS1f X2k7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SYW5kb21BY2Nlc3NJdGVyYXRvciwg dHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgaW5saW5lIHZvaWQKICAgIF9fYWR2YW5jZShfUmFu ZG9tQWNjZXNzSXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbiwKICAgICAgICAgICAgICBy YW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZykKICAgIHsKCiAgICAgCgogICAgICBpZiAoX19i dWlsdGluX2NvbnN0YW50X3AoX19uKSAmJiBfX24gPT0gMSkKICsrX19pOwogICAgICBlbHNl IGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChfX24pICYmIF9fbiA9PSAtMSkKIC0tX19pOwog ICAgICBlbHNlCiBfX2kgKz0gX19uOwogICAgfQojIDIxNyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvcl9iYXNlX2Z1bmNzLmgiIDMKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogICAgX19hdHRy aWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQogICAgaW5saW5lIHZvaWQKICAgIGFkdmFu Y2UoX0lucHV0SXRlcmF0b3ImIF9faSwgX0Rpc3RhbmNlIF9fbikKICAgIHsKCiAgICAgIHR5 cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlw ZSBfX2QgPSBfX247CiAgICAgIHN0ZDo6X19hZHZhbmNlKF9faSwgX19kLCBzdGQ6Ol9faXRl cmF0b3JfY2F0ZWdvcnkoX19pKSk7CiAgICB9CiMgMjU2ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yX2Jhc2VfZnVuY3MuaCIgMwoKfQojIDQ4ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmluZyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAxIDMKIyA2MSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiNkZWZpbmUgX1NUTF9JVEVS QVRPUl9IIDEKCgoKCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9wdHJf dHJhaXRzLmgiIDEgMwojIDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcHRy X3RyYWl0cy5oIiAzCiNkZWZpbmUgX1BUUl9UUkFJVFNfSCAxCiMgNjggIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMiAzCiMgODEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwpuYW1lc3BhY2Ugc3Rk IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgMTA2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKIAoj IDEwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAz CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAojcHJhZ21hIEdDQyBkaWFnbm9zdGljIGln bm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiMgMTI4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfSXRlcmF0b3I+CiAgICBjbGFzcyByZXZlcnNlX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBp dGVyYXRvcjx0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0l0ZXJhdG9yPjo6aXRlcmF0b3Jf Y2F0ZWdvcnksCiAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRvcj46 OnZhbHVlX3R5cGUsCiAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JdGVyYXRv cj46OmRpZmZlcmVuY2VfdHlwZSwKICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8 X0l0ZXJhdG9yPjo6cG9pbnRlciwKICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGl0 ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+OjpyZWZlcmVuY2U+CiAgICB7CiAgICAgIHRlbXBs YXRlPHR5cGVuYW1lIF9JdGVyPgogZnJpZW5kIGNsYXNzIHJldmVyc2VfaXRlcmF0b3I7CiMg MTQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMK ICAgIHByb3RlY3RlZDoKICAgICAgX0l0ZXJhdG9yIGN1cnJlbnQ7CgogICAgICB0eXBlZGVm IGl0ZXJhdG9yX3RyYWl0czxfSXRlcmF0b3I+IF9fdHJhaXRzX3R5cGU7CgogICAgcHVibGlj OgogICAgICB0eXBlZGVmIF9JdGVyYXRvciBpdGVyYXRvcl90eXBlOwogICAgICB0eXBlZGVm IHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OnBvaW50ZXIgcG9pbnRlcjsKCiAgICAgIHR5cGVk ZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2Vf dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3RyYWl0c190eXBlOjpyZWZlcmVuY2Ug cmVmZXJlbmNlOwojIDE3OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9p dGVyYXRvci5oIiAzCiAgICAgCiAgICAgIHJldmVyc2VfaXRlcmF0b3IoKQogICAgIAogICAg ICA6IGN1cnJlbnQoKQogICAgICB7IH0KCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIHJldmVy c2VfaXRlcmF0b3IoaXRlcmF0b3JfdHlwZSBfX3gpCiAgICAgCiAgICAgIDogY3VycmVudChf X3gpCiAgICAgIHsgfQoKCgoKICAgICAKICAgICAgcmV2ZXJzZV9pdGVyYXRvcihjb25zdCBy ZXZlcnNlX2l0ZXJhdG9yJiBfX3gpCiAgICAgCiAgICAgIDogY3VycmVudChfX3guY3VycmVu dCkKICAgICAgeyB9CiMgMjEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3Rs X2l0ZXJhdG9yLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXI+CgoKCgogICAg ICAgIHJldmVyc2VfaXRlcmF0b3IoY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcj4mIF9f eCkKCiA6IGN1cnJlbnQoX194LmN1cnJlbnQpCiB7IH0KIyAyMzkgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgIAogICAgICBpdGVyYXRv cl90eXBlCiAgICAgIGJhc2UoKSBjb25zdAogICAgIAogICAgICB7IHJldHVybiBjdXJyZW50 OyB9CiMgMjU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9y LmgiIDMKICAgICAKICAgICAgcmVmZXJlbmNlCiAgICAgIG9wZXJhdG9yKigpIGNvbnN0CiAg ICAgIHsKIF9JdGVyYXRvciBfX3RtcCA9IGN1cnJlbnQ7CiByZXR1cm4gKi0tX190bXA7CiAg ICAgIH0KCgoKCgoKICAgICAKICAgICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29u c3QKCgoKCiAgICAgIHsKCgogX0l0ZXJhdG9yIF9fdG1wID0gY3VycmVudDsKIC0tX190bXA7 CiByZXR1cm4gX1NfdG9fcG9pbnRlcihfX3RtcCk7CiAgICAgIH0KCgoKCgoKICAgICAgcmV2 ZXJzZV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKygpCiAgICAgIHsKIC0tY3VycmVudDsK IHJldHVybiAqdGhpczsKICAgICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9yCiAg ICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7CiByZXZlcnNlX2l0ZXJhdG9yIF9fdG1wID0g KnRoaXM7CiAtLWN1cnJlbnQ7CiByZXR1cm4gX190bXA7CiAgICAgIH0KCgoKCgoKICAgICAg cmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3BlcmF0b3ItLSgpCiAgICAgIHsKICsrY3VycmVu dDsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCgoKCgogICAgICByZXZlcnNlX2l0ZXJhdG9y CiAgICAgIG9wZXJhdG9yLS0oaW50KQogICAgICB7CiByZXZlcnNlX2l0ZXJhdG9yIF9fdG1w ID0gKnRoaXM7CiArK2N1cnJlbnQ7CiByZXR1cm4gX190bXA7CiAgICAgIH0KCgoKCgoKICAg ICAKICAgICAgcmV2ZXJzZV9pdGVyYXRvcgogICAgICBvcGVyYXRvcisoZGlmZmVyZW5jZV90 eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gcmV2ZXJzZV9pdGVyYXRvcihjdXJyZW50 IC0gX19uKTsgfQoKCgoKCgoKICAgICAgcmV2ZXJzZV9pdGVyYXRvciYKICAgICAgb3BlcmF0 b3IrPShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7CiBjdXJyZW50IC09IF9fbjsKIHJl dHVybiAqdGhpczsKICAgICAgfQoKCgoKCgogICAgIAogICAgICByZXZlcnNlX2l0ZXJhdG9y CiAgICAgIG9wZXJhdG9yLShkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdAogICAgICB7IHJl dHVybiByZXZlcnNlX2l0ZXJhdG9yKGN1cnJlbnQgKyBfX24pOyB9CgoKCgoKCgogICAgICBy ZXZlcnNlX2l0ZXJhdG9yJgogICAgICBvcGVyYXRvci09KGRpZmZlcmVuY2VfdHlwZSBfX24p CiAgICAgIHsKIGN1cnJlbnQgKz0gX19uOwogcmV0dXJuICp0aGlzOwogICAgICB9CgoKCgoK CiAgICAgCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVyYXRvcltdKGRpZmZlcmVuY2VfdHlw ZSBfX24pIGNvbnN0CiAgICAgIHsgcmV0dXJuICooKnRoaXMgKyBfX24pOyB9CiMgNDE1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICAgIHBy aXZhdGU6CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KIHN0YXRpYyBfVHAqCiBfU190 b19wb2ludGVyKF9UcCogX19wKQogICAgICAgIHsgcmV0dXJuIF9fcDsgfQoKICAgICAgdGVt cGxhdGU8dHlwZW5hbWUgX1RwPgogc3RhdGljIHBvaW50ZXIKIF9TX3RvX3BvaW50ZXIoX1Rw IF9fdCkKICAgICAgICB7IHJldHVybiBfX3Qub3BlcmF0b3ItPigpOyB9CiAgICB9OwojIDQz OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAKICAgIGlubGluZSBib29sCiAgICBv cGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAg ICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1 cm4gX194LmJhc2UoKSA9PSBfX3kuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J dGVyYXRvcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHJldmVy c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVy YXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgpIDwgX194LmJh c2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgIAogICAgaW5saW5l IGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+ JiBfX3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+JiBfX3kp CiAgICB7IHJldHVybiAhKF9feCA9PSBfX3kpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J dGVyYXRvcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHJldmVy c2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVy YXRvcjxfSXRlcmF0b3I+JiBfX3kpCiAgICB7IHJldHVybiBfX3kgPCBfX3g7IH0KCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVy YXRvcjw9KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX194LAogICAgICAg IGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4g IShfX3kgPCBfX3gpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvcj4KICAgCiAg ICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9J dGVyYXRvcj4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRv cj4mIF9feSkKICAgIHsgcmV0dXJuICEoX194IDwgX195KTsgfQoKCgoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAKICAgIGlubGlu ZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y TD4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBf X3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpID09IF9feS5iYXNlKCk7IH0KCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAgCiAgICBp bmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJh dG9yTD4mIF9feCwKICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yUj4m IF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgPiBfX3kuYmFzZSgpOyB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclI+CiAgIAogICAg aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl cmF0b3JMPiYgX194LAogICAgICAgIGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9y Uj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5iYXNlKCkgIT0gX195LmJhc2UoKTsgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3JMLCB0eXBlbmFtZSBfSXRlcmF0b3JSPgogICAK ICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxf SXRlcmF0b3JMPiYgX194LAogICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0 b3JSPiYgX195KQogICAgeyByZXR1cm4gX194LmJhc2UoKSA8IF9feS5iYXNlKCk7IH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAg IGlubGluZSBib29sCiAgICBvcGVyYXRvcjw9KGNvbnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0 ZXJhdG9yTD4mIF9feCwKICAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRv clI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guYmFzZSgpID49IF9feS5iYXNlKCk7IH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAg CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCByZXZlcnNlX2l0ZXJhdG9y PF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICAgY29uc3QgcmV2ZXJzZV9pdGVyYXRvcjxfSXRl cmF0b3JSPiYgX195KQogICAgeyByZXR1cm4gX194LmJhc2UoKSA8PSBfX3kuYmFzZSgpOyB9 CiMgNjAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgi IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICBpbmxpbmUgdHlwZW5hbWUg cmV2ZXJzZV9pdGVyYXRvcjxfSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUKICAgIG9wZXJh dG9yLShjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCwKICAgICAgIGNv bnN0IHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPiYgX195KQogICAgeyByZXR1cm4gX195 LmJhc2UoKSAtIF9feC5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9y TCwgdHlwZW5hbWUgX0l0ZXJhdG9yUj4KICAgIGlubGluZSB0eXBlbmFtZSByZXZlcnNlX2l0 ZXJhdG9yPF9JdGVyYXRvckw+OjpkaWZmZXJlbmNlX3R5cGUKICAgIG9wZXJhdG9yLShjb25z dCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvckw+JiBfX3gsCiAgICAgICBjb25zdCByZXZl cnNlX2l0ZXJhdG9yPF9JdGVyYXRvclI+JiBfX3kpCiAgICB7IHJldHVybiBfX3kuYmFzZSgp IC0gX194LmJhc2UoKTsgfQojIDYyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3N0bF9pdGVyYXRvci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAK ICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4KICAgIG9wZXJhdG9yKyh0 eXBlbmFtZSByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBf X24sCiAgICAgICBjb25zdCByZXZlcnNlX2l0ZXJhdG9yPF9JdGVyYXRvcj4mIF9feCkKICAg IHsgcmV0dXJuIHJldmVyc2VfaXRlcmF0b3I8X0l0ZXJhdG9yPihfX3guYmFzZSgpIC0gX19u KTsgfQojIDY4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRv ci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgIGNsYXNzIGJhY2tf aW5zZXJ0X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3Jf dGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHJvdGVjdGVkOgogICAg ICBfQ29udGFpbmVyKiBjb250YWluZXI7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBf Q29udGFpbmVyIGNvbnRhaW5lcl90eXBlOwoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGJh Y2tfaW5zZXJ0X2l0ZXJhdG9yKF9Db250YWluZXImIF9feCkKICAgICAgOiBjb250YWluZXIo c3RkOjpfX2FkZHJlc3NvZihfX3gpKSB7IH0KIyA3MTkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICBiYWNrX2luc2VydF9pdGVyYXRv ciYKICAgICAgb3BlcmF0b3I9KHR5cGVuYW1lIF9Db250YWluZXI6OmNvbnN0X3JlZmVyZW5j ZSBfX3ZhbHVlKQogICAgICB7CiBjb250YWluZXItPnB1c2hfYmFjayhfX3ZhbHVlKTsKIHJl dHVybiAqdGhpczsKICAgICAgfQojIDc0NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgICAgCiAgICAgIGJhY2tfaW5zZXJ0X2l0ZXJhdG9y JgogICAgICBvcGVyYXRvciooKQogICAgICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgCiAg ICAgIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJgogICAgICBvcGVyYXRvcisrKCkKICAgICAgeyBy ZXR1cm4gKnRoaXM7IH0KCgogICAgIAogICAgICBiYWNrX2luc2VydF9pdGVyYXRvcgogICAg ICBvcGVyYXRvcisrKGludCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KICAgIH07CiMgNzcz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAKICAgIGlubGluZSBiYWNrX2luc2Vy dF9pdGVyYXRvcjxfQ29udGFpbmVyPgogICAgYmFja19pbnNlcnRlcihfQ29udGFpbmVyJiBf X3gpCiAgICB7IHJldHVybiBiYWNrX2luc2VydF9pdGVyYXRvcjxfQ29udGFpbmVyPihfX3gp OyB9CiMgNzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9y LmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xhc3MgZnJvbnRf aW5zZXJ0X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0b3Jf dGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHJvdGVjdGVkOgogICAg ICBfQ29udGFpbmVyKiBjb250YWluZXI7CgogICAgcHVibGljOgoKICAgICAgdHlwZWRlZiBf Q29udGFpbmVyIGNvbnRhaW5lcl90eXBlOwoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGZy b250X2luc2VydF9pdGVyYXRvcihfQ29udGFpbmVyJiBfX3gpCiAgICAgIDogY29udGFpbmVy KHN0ZDo6X19hZGRyZXNzb2YoX194KSkgeyB9CiMgODIwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICAgICAgZnJvbnRfaW5zZXJ0X2l0ZXJh dG9yJgogICAgICBvcGVyYXRvcj0odHlwZW5hbWUgX0NvbnRhaW5lcjo6Y29uc3RfcmVmZXJl bmNlIF9fdmFsdWUpCiAgICAgIHsKIGNvbnRhaW5lci0+cHVzaF9mcm9udChfX3ZhbHVlKTsK IHJldHVybiAqdGhpczsKICAgICAgfQojIDg0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAgICAgCiAgICAgIGZyb250X2luc2VydF9pdGVy YXRvciYKICAgICAgb3BlcmF0b3IqKCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCgogICAg IAogICAgICBmcm9udF9pbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAg ICB7IHJldHVybiAqdGhpczsgfQoKCiAgICAgCiAgICAgIGZyb250X2luc2VydF9pdGVyYXRv cgogICAgICBvcGVyYXRvcisrKGludCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KICAgIH07 CiMgODc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgi IDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAKICAgIGlubGluZSBmcm9u dF9pbnNlcnRfaXRlcmF0b3I8X0NvbnRhaW5lcj4KICAgIGZyb250X2luc2VydGVyKF9Db250 YWluZXImIF9feCkKICAgIHsgcmV0dXJuIGZyb250X2luc2VydF9pdGVyYXRvcjxfQ29udGFp bmVyPihfX3gpOyB9CiMgODk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3Rs X2l0ZXJhdG9yLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29udGFpbmVyPgogICAgY2xh c3MgaW5zZXJ0X2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRwdXRfaXRlcmF0 b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewoKCgogICAgICB0eXBlZGVm IHR5cGVuYW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9JdGVyOwoKICAgIHByb3RlY3RlZDoK ICAgICAgX0NvbnRhaW5lciogY29udGFpbmVyOwogICAgICBfSXRlciBpdGVyOwoKICAgIHB1 YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NvbnRhaW5lciBjb250YWluZXJfdHlwZTsKIyA5MTkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAg IAogICAgICBpbnNlcnRfaXRlcmF0b3IoX0NvbnRhaW5lciYgX194LCBfSXRlciBfX2kpCiAg ICAgIDogY29udGFpbmVyKHN0ZDo6X19hZGRyZXNzb2YoX194KSksIGl0ZXIoX19pKSB7fQoj IDk0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAz CiAgICAgIGluc2VydF9pdGVyYXRvciYKICAgICAgb3BlcmF0b3I9KHR5cGVuYW1lIF9Db250 YWluZXI6OmNvbnN0X3JlZmVyZW5jZSBfX3ZhbHVlKQogICAgICB7CiBpdGVyID0gY29udGFp bmVyLT5pbnNlcnQoaXRlciwgX192YWx1ZSk7CiArK2l0ZXI7CiByZXR1cm4gKnRoaXM7CiAg ICAgIH0KIyA5NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfaXRlcmF0 b3IuaCIgMwogICAgIAogICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKigp CiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAKICAgICAgaW5zZXJ0X2l0ZXJhdG9y JgogICAgICBvcGVyYXRvcisrKCkKICAgICAgeyByZXR1cm4gKnRoaXM7IH0KCgogICAgIAog ICAgICBpbnNlcnRfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7IHJl dHVybiAqdGhpczsgfQogICAgfTsKCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiMgMTAx NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAzCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgaW5zZXJ0X2l0 ZXJhdG9yPF9Db250YWluZXI+CiAgICBpbnNlcnRlcihfQ29udGFpbmVyJiBfX3gsIHR5cGVu YW1lIF9Db250YWluZXI6Oml0ZXJhdG9yIF9faSkKICAgIHsgcmV0dXJuIGluc2VydF9pdGVy YXRvcjxfQ29udGFpbmVyPihfX3gsIF9faSk7IH0KCgoKCgp9CgpuYW1lc3BhY2UgX19nbnVf Y3h4IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMg MTAzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5oIiAz CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgog ICAgY2xhc3MgX19ub3JtYWxfaXRlcmF0b3IKICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAg X0l0ZXJhdG9yIF9NX2N1cnJlbnQ7CgogICAgICB0eXBlZGVmIHN0ZDo6aXRlcmF0b3JfdHJh aXRzPF9JdGVyYXRvcj4gX190cmFpdHNfdHlwZTsKCgoKCgoKCiAgICBwdWJsaWM6CiAgICAg IHR5cGVkZWYgX0l0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h bWUgX190cmFpdHNfdHlwZTo6aXRlcmF0b3JfY2F0ZWdvcnkgaXRlcmF0b3JfY2F0ZWdvcnk7 CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFpdHNfdHlwZTo6dmFsdWVfdHlwZSB2YWx1 ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9fdHJhaXRzX3R5cGU6OmRpZmZlcmVu Y2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX190cmFp dHNfdHlwZTo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBf X3RyYWl0c190eXBlOjpwb2ludGVyIHBvaW50ZXI7CgoKCgoKICAgICAgX19ub3JtYWxfaXRl cmF0b3IoKQogICAgICA6IF9NX2N1cnJlbnQoX0l0ZXJhdG9yKCkpIHsgfQoKICAgICAgZXhw bGljaXQKICAgICAgX19ub3JtYWxfaXRlcmF0b3IoY29uc3QgX0l0ZXJhdG9yJiBfX2kpCiAg ICAgIDogX01fY3VycmVudChfX2kpIHsgfQojIDEwNzkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9zdGxfaXRlcmF0b3IuaCIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf SXRlcj4KICAgICAgICBfX25vcm1hbF9pdGVyYXRvcihjb25zdCBfX25vcm1hbF9pdGVyYXRv cjxfSXRlciwKICAgICB0eXBlbmFtZSBfX2VuYWJsZV9pZjwKICAgICAgICAoc3RkOjpfX2Fy ZV9zYW1lPF9JdGVyLCB0eXBlbmFtZSBfQ29udGFpbmVyOjpwb2ludGVyPjo6X192YWx1ZSks CiAgICAgICAgX0NvbnRhaW5lcj46Ol9fdHlwZT4mIF9faSkKCiAgICAgICAgOiBfTV9jdXJy ZW50KF9faS5iYXNlKCkpIHsgfQoKCiAgICAgCiAgICAgIHJlZmVyZW5jZQogICAgICBvcGVy YXRvciooKSBjb25zdAogICAgICB7IHJldHVybiAqX01fY3VycmVudDsgfQoKICAgICAKICAg ICAgcG9pbnRlcgogICAgICBvcGVyYXRvci0+KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01f Y3VycmVudDsgfQoKICAgICAKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJh dG9yKysoKQogICAgICB7CiArK19NX2N1cnJlbnQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0K CiAgICAgCiAgICAgIF9fbm9ybWFsX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQog ICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50KyspOyB9CgoKICAg ICAKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLS0oKQogICAgICB7 CiAtLV9NX2N1cnJlbnQ7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCiAgICAgCiAgICAgIF9f bm9ybWFsX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yLS0oaW50KQogICAgICB7IHJldHVybiBf X25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50LS0pOyB9CgoKICAgICAKICAgICAgcmVmZXJl bmNlCiAgICAgIG9wZXJhdG9yW10oZGlmZmVyZW5jZV90eXBlIF9fbikgY29uc3QKICAgICAg eyByZXR1cm4gX01fY3VycmVudFtfX25dOyB9CgogICAgIAogICAgICBfX25vcm1hbF9pdGVy YXRvciYKICAgICAgb3BlcmF0b3IrPShkaWZmZXJlbmNlX3R5cGUgX19uKQogICAgICB7IF9N X2N1cnJlbnQgKz0gX19uOyByZXR1cm4gKnRoaXM7IH0KCiAgICAgCiAgICAgIF9fbm9ybWFs X2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKyhkaWZmZXJlbmNlX3R5cGUgX19uKSBjb25zdAog ICAgICB7IHJldHVybiBfX25vcm1hbF9pdGVyYXRvcihfTV9jdXJyZW50ICsgX19uKTsgfQoK ICAgICAKICAgICAgX19ub3JtYWxfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yLT0oZGlmZmVy ZW5jZV90eXBlIF9fbikKICAgICAgeyBfTV9jdXJyZW50IC09IF9fbjsgcmV0dXJuICp0aGlz OyB9CgogICAgIAogICAgICBfX25vcm1hbF9pdGVyYXRvcgogICAgICBvcGVyYXRvci0oZGlm ZmVyZW5jZV90eXBlIF9fbikgY29uc3QKICAgICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0 b3IoX01fY3VycmVudCAtIF9fbik7IH0KCiAgICAgCiAgICAgIGNvbnN0IF9JdGVyYXRvciYK ICAgICAgYmFzZSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2N1cnJlbnQ7IH0KICAgIH07 CiMgMTIwNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5o IiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9y UiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0 b3I9PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYg X19saHMsCiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0Nv bnRhaW5lcj4mIF9fcmhzKQogICAKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA9PSBfX3Jo cy5iYXNlKCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBf Q29udGFpbmVyPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IF9f bm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAg IGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhz KQogICAKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSA9PSBfX3Jocy5iYXNlKCk7IH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5hbWUgX0l0ZXJhdG9yUiwgdHlw ZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShj b25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMs CiAgICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5l cj4mIF9fcmhzKQogICAKICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSAhPSBfX3Jocy5iYXNl KCk7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFp bmVyPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNvbnN0IF9fbm9ybWFs X2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0 IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fcmhzKQogICAK ICAgIHsgcmV0dXJuIF9fbGhzLmJhc2UoKSAhPSBfX3Jocy5iYXNlKCk7IH0KCgogIHRlbXBs YXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1l IF9Db250YWluZXI+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBf X25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAg ICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19y aHMpCiAgIAogICAgeyByZXR1cm4gX19saHMuYmFzZSgpIDwgX19yaHMuYmFzZSgpOyB9Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAg CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9y PF9JdGVyYXRvciwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxf aXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgIAogICAgeyByZXR1 cm4gX19saHMuYmFzZSgpIDwgX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l IF9JdGVyYXRvckwsIHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+ CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPihjb25zdCBfX25vcm1hbF9pdGVy YXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPiYgX19saHMsCiAgICAgICBjb25zdCBfX25v cm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JSLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgIAogICAg eyByZXR1cm4gX19saHMuYmFzZSgpID4gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUg Ym9vbAogICAgb3BlcmF0b3I+KGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwg X0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0 ZXJhdG9yLCBfQ29udGFpbmVyPiYgX19yaHMpCiAgIAogICAgeyByZXR1cm4gX19saHMuYmFz ZSgpID4gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckws IHR5cGVuYW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgIAogICAgaW5s aW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh dG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJh dG9yPF9JdGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgCiAgICB7IHJldHVybiBf X2xocy5iYXNlKCkgPD0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9J dGVyYXRvciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAg b3BlcmF0b3I8PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWlu ZXI+JiBfX2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3Is IF9Db250YWluZXI+JiBfX3JocykKICAgCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPD0g X19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvckwsIHR5cGVu YW1lIF9JdGVyYXRvclIsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgIAogICAgaW5saW5lIGJv b2wKICAgIG9wZXJhdG9yPj0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yTCwg X0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9J dGVyYXRvclIsIF9Db250YWluZXI+JiBfX3JocykKICAgCiAgICB7IHJldHVybiBfX2xocy5i YXNlKCkgPj0gX19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRv ciwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0 b3I+PShjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBf X2xocywKICAgICAgICBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250 YWluZXI+JiBfX3JocykKICAgCiAgICB7IHJldHVybiBfX2xocy5iYXNlKCkgPj0gX19yaHMu YmFzZSgpOyB9CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yTCwgdHlwZW5h bWUgX0l0ZXJhdG9yUiwgdHlwZW5hbWUgX0NvbnRhaW5lcj4KIyAxMzE2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2l0ZXJhdG9yLmgiIDMKICAgIGlubGluZSB0eXBl bmFtZSBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3JMLCBfQ29udGFpbmVyPjo6ZGlmZmVy ZW5jZV90eXBlCiAgICBvcGVyYXRvci0oY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh dG9yTCwgX0NvbnRhaW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0 b3I8X0l0ZXJhdG9yUiwgX0NvbnRhaW5lcj4mIF9fcmhzKQoKICAgIHsgcmV0dXJuIF9fbGhz LmJhc2UoKSAtIF9fcmhzLmJhc2UoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0 b3IsIHR5cGVuYW1lIF9Db250YWluZXI+CiAgIAogICAgaW5saW5lIHR5cGVuYW1lIF9fbm9y bWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46OmRpZmZlcmVuY2VfdHlwZQog ICAgb3BlcmF0b3ItKGNvbnN0IF9fbm9ybWFsX2l0ZXJhdG9yPF9JdGVyYXRvciwgX0NvbnRh aW5lcj4mIF9fbGhzLAogICAgICAgY29uc3QgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9y LCBfQ29udGFpbmVyPiYgX19yaHMpCiAgIAogICAgeyByZXR1cm4gX19saHMuYmFzZSgpIC0g X19yaHMuYmFzZSgpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5h bWUgX0NvbnRhaW5lcj4KICAgCiAgICBpbmxpbmUgX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh dG9yLCBfQ29udGFpbmVyPgogICAgb3BlcmF0b3IrKHR5cGVuYW1lIF9fbm9ybWFsX2l0ZXJh dG9yPF9JdGVyYXRvciwgX0NvbnRhaW5lcj46OmRpZmZlcmVuY2VfdHlwZQogICAgICAgX19u LCBjb25zdCBfX25vcm1hbF9pdGVyYXRvcjxfSXRlcmF0b3IsIF9Db250YWluZXI+JiBfX2kp CiAgIAogICAgeyByZXR1cm4gX19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJhdG9yLCBfQ29udGFp bmVyPihfX2kuYmFzZSgpICsgX19uKTsgfQoKCn0KCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1 dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfQ29udGFpbmVyPgogICAKICAgIF9JdGVyYXRv cgogICAgX19uaXRlcl9iYXNlKF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8X0l0ZXJh dG9yLCBfQ29udGFpbmVyPiBfX2l0KQogICAKICAgIHsgcmV0dXJuIF9faXQuYmFzZSgpOyB9 CiMgMjk2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9pdGVyYXRvci5o IiAzCiNkZWZpbmUgX0dMSUJDWFhfTUFLRV9NT1ZFX0lURVJBVE9SKF9JdGVyKSAoX0l0ZXIp CiNkZWZpbmUgX0dMSUJDWFhfTUFLRV9NT1ZFX0lGX05PRVhDRVBUX0lURVJBVE9SKF9JdGVy KSAoX0l0ZXIpCiMgMjk4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9p dGVyYXRvci5oIiAzCgp9CiMgNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyaW5n IiAyIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9u LmgiIDEgMwojIDU3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0 aW9uLmgiIDMKI2RlZmluZSBfU1RMX0ZVTkNUSU9OX0ggMQoKCgoKCm5hbWVzcGFjZSBzdGQg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyAxMTYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwogIHRl bXBsYXRlPHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lIF9SZXN1bHQ+CiAgICBzdHJ1Y3QgdW5h cnlfZnVuY3Rpb24KICAgIHsKCiAgICAgIHR5cGVkZWYgX0FyZyBhcmd1bWVudF90eXBlOwoK CiAgICAgIHR5cGVkZWYgX1Jlc3VsdCByZXN1bHRfdHlwZTsKICAgIH0gOwoKCgoKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0FyZzEsIHR5cGVuYW1lIF9BcmcyLCB0eXBlbmFtZSBfUmVzdWx0 PgogICAgc3RydWN0IGJpbmFyeV9mdW5jdGlvbgogICAgewoKICAgICAgdHlwZWRlZiBfQXJn MSBmaXJzdF9hcmd1bWVudF90eXBlOwoKCiAgICAgIHR5cGVkZWYgX0FyZzIgc2Vjb25kX2Fy Z3VtZW50X3R5cGU7CgoKICAgICAgdHlwZWRlZiBfUmVzdWx0IHJlc3VsdF90eXBlOwogICAg fSA7CiMgMTc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9u LmgiIDMKI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0 aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBwbHVzIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxf VHAsIF9UcCwgX1RwPgogICAgewoKICAgICAKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCko Y29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBf X3ggKyBfX3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1 Y3QgbWludXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAgICB7 CiAgICAgCiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25z dCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194IC0gX195OyB9CiAgICB9OwoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG11bHRpcGxpZXMgOiBwdWJs aWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAgICB7CiAgICAgCiAgICAgIF9U cAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29u c3QKICAgICAgeyByZXR1cm4gX194ICogX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX1RwPgogICAgc3RydWN0IGRpdmlkZXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9u PF9UcCwgX1RwLCBfVHA+CiAgICB7CiAgICAgCiAgICAgIF9UcAogICAgICBvcGVyYXRvcigp KGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4g X194IC8gX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3Ry dWN0IG1vZHVsdXMgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAg ICB7CiAgICAgCiAgICAgIF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBj b25zdCBfVHAmIF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194ICUgX195OyB9CiAgICB9 OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IG5lZ2F0ZSA6IHB1Ymxp YyB1bmFyeV9mdW5jdGlvbjxfVHAsIF9UcD4KICAgIHsKICAgICAKICAgICAgX1RwCiAgICAg IG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIC1fX3g7 IH0KICAgIH07CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiMgMzY1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh dGVkLWRlY2xhcmF0aW9ucyIKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVj dCBlcXVhbF90byA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAg ICB7CiAgICAgCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwg Y29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA9PSBfX3k7IH0KICAg IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3Qgbm90X2VxdWFsX3Rv IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAK ICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAm IF9feSkgY29uc3QKICAgICAgeyByZXR1cm4gX194ICE9IF9feTsgfQogICAgfTsKCgogIHRl bXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBncmVhdGVyIDogcHVibGljIGJpbmFy eV9mdW5jdGlvbjxfVHAsIF9UcCwgYm9vbD4KICAgIHsKICAgICAKICAgICAgYm9vbAogICAg ICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkgY29uc3QKICAg ICAgeyByZXR1cm4gX194ID4gX195OyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X1RwPgogICAgc3RydWN0IGxlc3MgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1Rw LCBib29sPgogICAgewogICAgIAogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3Qg X1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggPCBf X3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZ3Jl YXRlcl9lcXVhbCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAg ICB7CiAgICAgCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwg Y29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA+PSBfX3k7IH0KICAg IH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbGVzc19lcXVhbCA6 IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7CiAgICAgCiAg ICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29uc3QgX1RwJiBf X3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCA8PSBfX3k7IH0KICAgIH07CgoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgZ3JlYXRlcjxfVHAqPiA6IHB1YmxpYyBi aW5hcnlfZnVuY3Rpb248X1RwKiwgX1RwKiwgYm9vbD4KICAgIHsKICAgICAgYm9vbAogICAg ICBvcGVyYXRvcigpKF9UcCogX194LCBfVHAqIF9feSkgY29uc3QgdGhyb3coKQogICAgICB7 CgoKCgogcmV0dXJuIChsb25nIHVuc2lnbmVkIGludClfX3ggPiAobG9uZyB1bnNpZ25lZCBp bnQpX195OwogICAgICB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAg c3RydWN0IGxlc3M8X1RwKj4gOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCosIF9UcCos IGJvb2w+CiAgICB7CiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShfVHAqIF9feCwgX1Rw KiBfX3kpIGNvbnN0IHRocm93KCkKICAgICAgewoKCgoKIHJldHVybiAobG9uZyB1bnNpZ25l ZCBpbnQpX194IDwgKGxvbmcgdW5zaWduZWQgaW50KV9feTsKICAgICAgfQogICAgfTsKCgog IHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBncmVhdGVyX2VxdWFsPF9UcCo+ IDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxfVHAqLCBfVHAqLCBib29sPgogICAgewogICAg ICBib29sCiAgICAgIG9wZXJhdG9yKCkoX1RwKiBfX3gsIF9UcCogX195KSBjb25zdCB0aHJv dygpCiAgICAgIHsKCgoKCiByZXR1cm4gKGxvbmcgdW5zaWduZWQgaW50KV9feCA+PSAobG9u ZyB1bnNpZ25lZCBpbnQpX195OwogICAgICB9CiAgICB9OwoKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX1RwPgogICAgc3RydWN0IGxlc3NfZXF1YWw8X1RwKj4gOiBwdWJsaWMgYmluYXJ5X2Z1 bmN0aW9uPF9UcCosIF9UcCosIGJvb2w+CiAgICB7CiAgICAgIGJvb2wKICAgICAgb3BlcmF0 b3IoKShfVHAqIF9feCwgX1RwKiBfX3kpIGNvbnN0IHRocm93KCkKICAgICAgewoKCgoKIHJl dHVybiAobG9uZyB1bnNpZ25lZCBpbnQpX194IDw9IChsb25nIHVuc2lnbmVkIGludClfX3k7 CiAgICAgIH0KICAgIH07CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiMgNzg4ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKI3ByYWdtYSBH Q0MgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAg IHN0cnVjdCBsb2dpY2FsX2FuZCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAs IGJvb2w+CiAgICB7CiAgICAgCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBf VHAmIF9feCwgY29uc3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCAmJiBf X3k7IH0KICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbG9n aWNhbF9vciA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIGJvb2w+CiAgICB7 CiAgICAgCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9feCwgY29u c3QgX1RwJiBfX3kpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feCB8fCBfX3k7IH0KICAgIH07 CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgbG9naWNhbF9ub3QgOiBw dWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLCBib29sPgogICAgewogICAgIAogICAgICBib29s CiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJu ICFfX3g7IH0KICAgIH07CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCiMgODg0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKI3ByYWdtYSBH Q0MgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAg ICBzdHJ1Y3QgYml0X2FuZCA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwLCBfVHAsIF9U cD4KICAgIHsKICAgICAKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBf X3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVybiBfX3ggJiBfX3k7IH0K ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0cnVjdCBiaXRfb3IgOiBw dWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwLCBfVHA+CiAgICB7CiAgICAgCiAgICAg IF9UcAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX194LCBjb25zdCBfVHAmIF9feSkg Y29uc3QKICAgICAgeyByZXR1cm4gX194IHwgX195OyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgYml0X3hvciA6IHB1YmxpYyBiaW5hcnlfZnVuY3Rp b248X1RwLCBfVHAsIF9UcD4KICAgIHsKICAgICAKICAgICAgX1RwCiAgICAgIG9wZXJhdG9y KCkoY29uc3QgX1RwJiBfX3gsIGNvbnN0IF9UcCYgX195KSBjb25zdAogICAgICB7IHJldHVy biBfX3ggXiBfX3k7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIHN0 cnVjdCBiaXRfbm90IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9UcCwgX1RwPgogICAgewog ICAKICAgICAgX1RwCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNvbnN0CiAg ICAgIHsgcmV0dXJuIH5fX3g7IH0KICAgIH07CiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9w CiMgOTg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgi IDMKI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMg aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIyAxMDIwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfUHJlZGljYXRlPgogICAgY2xhc3MgdW5hcnlfbmVnYXRlCiAgICA6IHB1YmxpYyB1 bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVudF90eXBlLCBib29s PgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfUHJlZGljYXRlIF9NX3ByZWQ7CgogICAg cHVibGljOgogICAgIAogICAgICBleHBsaWNpdAogICAgICB1bmFyeV9uZWdhdGUoY29uc3Qg X1ByZWRpY2F0ZSYgX194KSA6IF9NX3ByZWQoX194KSB7IH0KCiAgICAgCiAgICAgIGJvb2wK ICAgICAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFtZSBfUHJlZGljYXRlOjphcmd1bWVudF90 eXBlJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuICFfTV9wcmVkKF9feCk7IH0KICAgIH07 CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAKICAgCiAgICBpbmxpbmUg dW5hcnlfbmVnYXRlPF9QcmVkaWNhdGU+CiAgICBub3QxKGNvbnN0IF9QcmVkaWNhdGUmIF9f cHJlZCkKICAgIHsgcmV0dXJuIHVuYXJ5X25lZ2F0ZTxfUHJlZGljYXRlPihfX3ByZWQpOyB9 CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRlPgogICAgY2xhc3MgYmluYXJ5X25l Z2F0ZQogICAgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9QcmVkaWNhdGU6 OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICAgdHlwZW5hbWUgX1ByZWRpY2F0ZTo6c2Vj b25kX2FyZ3VtZW50X3R5cGUsIGJvb2w+CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9Q cmVkaWNhdGUgX01fcHJlZDsKCiAgICBwdWJsaWM6CiAgICAgCiAgICAgIGV4cGxpY2l0CiAg ICAgIGJpbmFyeV9uZWdhdGUoY29uc3QgX1ByZWRpY2F0ZSYgX194KSA6IF9NX3ByZWQoX194 KSB7IH0KCiAgICAgCiAgICAgIGJvb2wKICAgICAgb3BlcmF0b3IoKShjb25zdCB0eXBlbmFt ZSBfUHJlZGljYXRlOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3gsCiAgIGNvbnN0IHR5cGVu YW1lIF9QcmVkaWNhdGU6OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3kpIGNvbnN0CiAgICAg IHsgcmV0dXJuICFfTV9wcmVkKF9feCwgX195KTsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9QcmVkaWNhdGU+CiAgIAogICAKICAgIGlubGluZSBiaW5hcnlfbmVnYXRlPF9Q cmVkaWNhdGU+CiAgICBub3QyKGNvbnN0IF9QcmVkaWNhdGUmIF9fcHJlZCkKICAgIHsgcmV0 dXJuIGJpbmFyeV9uZWdhdGU8X1ByZWRpY2F0ZT4oX19wcmVkKTsgfQojIDExMDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfZnVuY3Rpb24uaCIgMwogIHRlbXBsYXRl PHR5cGVuYW1lIF9BcmcsIHR5cGVuYW1lIF9SZXN1bHQ+CiAgICBjbGFzcyBwb2ludGVyX3Rv X3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPF9BcmcsIF9SZXN1bHQ+ CiAgICB7CiAgICBwcm90ZWN0ZWQ6CiAgICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcpOwoK ICAgIHB1YmxpYzoKICAgICAgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbigpIHsgfQoKICAg ICAgZXhwbGljaXQKICAgICAgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbihfUmVzdWx0ICgq X194KShfQXJnKSkKICAgICAgOiBfTV9wdHIoX194KSB7IH0KCiAgICAgIF9SZXN1bHQKICAg ICAgb3BlcmF0b3IoKShfQXJnIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fcHRyKF9f eCk7IH0KICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FyZywgdHlwZW5hbWUgX1Jl c3VsdD4KICAgCiAgICBpbmxpbmUgcG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxfQXJnLCBf UmVzdWx0PgogICAgcHRyX2Z1bihfUmVzdWx0ICgqX194KShfQXJnKSkKICAgIHsgcmV0dXJu IHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248X0FyZywgX1Jlc3VsdD4oX194KTsgfQoKCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0FyZzEsIHR5cGVuYW1lIF9BcmcyLCB0eXBlbmFtZSBfUmVz dWx0PgogICAgY2xhc3MgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24KICAgIDogcHVibGlj IGJpbmFyeV9mdW5jdGlvbjxfQXJnMSwgX0FyZzIsIF9SZXN1bHQ+CiAgICB7CiAgICBwcm90 ZWN0ZWQ6CiAgICAgIF9SZXN1bHQgKCpfTV9wdHIpKF9BcmcxLCBfQXJnMik7CgogICAgcHVi bGljOgogICAgICBwb2ludGVyX3RvX2JpbmFyeV9mdW5jdGlvbigpIHsgfQoKICAgICAgZXhw bGljaXQKICAgICAgcG9pbnRlcl90b19iaW5hcnlfZnVuY3Rpb24oX1Jlc3VsdCAoKl9feCko X0FyZzEsIF9BcmcyKSkKICAgICAgOiBfTV9wdHIoX194KSB7IH0KCiAgICAgIF9SZXN1bHQK ICAgICAgb3BlcmF0b3IoKShfQXJnMSBfX3gsIF9BcmcyIF9feSkgY29uc3QKICAgICAgeyBy ZXR1cm4gX01fcHRyKF9feCwgX195KTsgfQogICAgfSA7CgoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQXJnMSwgdHlwZW5hbWUgX0FyZzIsIHR5cGVuYW1lIF9SZXN1bHQ+CiAgIAogICAgaW5s aW5lIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJnMiwgX1Jlc3VsdD4K ICAgIHB0cl9mdW4oX1Jlc3VsdCAoKl9feCkoX0FyZzEsIF9BcmcyKSkKICAgIHsgcmV0dXJu IHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPF9BcmcxLCBfQXJnMiwgX1Jlc3VsdD4oX194 KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwPgogICAgc3RydWN0IF9JZGVudGl0eQog ICAgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248X1RwLCBfVHA+CiAgICB7CiAgICAgIF9UcCYK ICAgICAgb3BlcmF0b3IoKShfVHAmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX194OyB9 CgogICAgICBjb25zdCBfVHAmCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgX1RwJiBfX3gpIGNv bnN0CiAgICAgIHsgcmV0dXJuIF9feDsgfQogICAgfTsKCgogIHRlbXBsYXRlPHR5cGVuYW1l IF9UcD4gc3RydWN0IF9JZGVudGl0eTxjb25zdCBfVHA+IDogX0lkZW50aXR5PF9UcD4geyB9 OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUGFpcj4KICAgIHN0cnVjdCBfU2VsZWN0MXN0CiAg ICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUgX1BhaXI6OmZpcnN0 X3R5cGU+CiAgICB7CiAgICAgIHR5cGVuYW1lIF9QYWlyOjpmaXJzdF90eXBlJgogICAgICBv cGVyYXRvcigpKF9QYWlyJiBfX3gpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9feC5maXJzdDsg fQoKICAgICAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OmZpcnN0X3R5cGUmCiAgICAgIG9wZXJh dG9yKCkoY29uc3QgX1BhaXImIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gX194LmZpcnN0 OyB9CiMgMTE5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9mdW5jdGlv bi5oIiAzCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUGFpcj4KICAgIHN0cnVjdCBf U2VsZWN0Mm5kCiAgICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfUGFpciwgdHlwZW5hbWUg X1BhaXI6OnNlY29uZF90eXBlPgogICAgewogICAgICB0eXBlbmFtZSBfUGFpcjo6c2Vjb25k X3R5cGUmCiAgICAgIG9wZXJhdG9yKCkoX1BhaXImIF9feCkgY29uc3QKICAgICAgeyByZXR1 cm4gX194LnNlY29uZDsgfQoKICAgICAgY29uc3QgdHlwZW5hbWUgX1BhaXI6OnNlY29uZF90 eXBlJgogICAgICBvcGVyYXRvcigpKGNvbnN0IF9QYWlyJiBfX3gpIGNvbnN0CiAgICAgIHsg cmV0dXJuIF9feC5zZWNvbmQ7IH0KICAgIH07CiMgMTIyOCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3N0bF9mdW5jdGlvbi5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl dCwgdHlwZW5hbWUgX1RwPgogICAgY2xhc3MgbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1 bmN0aW9uPF9UcCosIF9SZXQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAg ICAgIG1lbV9mdW5fdChfUmV0IChfVHA6OipfX3BmKSgpKQogICAgICA6IF9NX2YoX19wZikg eyB9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoX1RwKiBfX3ApIGNvbnN0CiAgICAg IHsgcmV0dXJuIChfX3AtPipfTV9mKSgpOyB9CgogICAgcHJpdmF0ZToKICAgICAgX1JldCAo X1RwOjoqX01fZikoKTsKICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwgdHlw ZW5hbWUgX1RwPgogICAgY2xhc3MgY29uc3RfbWVtX2Z1bl90IDogcHVibGljIHVuYXJ5X2Z1 bmN0aW9uPGNvbnN0IF9UcCosIF9SZXQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxp Y2l0CiAgICAgIGNvbnN0X21lbV9mdW5fdChfUmV0IChfVHA6OipfX3BmKSgpIGNvbnN0KQog ICAgICA6IF9NX2YoX19wZikgeyB9CgogICAgICBfUmV0CiAgICAgIG9wZXJhdG9yKCkoY29u c3QgX1RwKiBfX3ApIGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3AtPipfTV9mKSgpOyB9Cgog ICAgcHJpdmF0ZToKICAgICAgX1JldCAoX1RwOjoqX01fZikoKSBjb25zdDsKICAgIH0gOwoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUgX1RwPgogICAgY2xhc3MgbWVt X2Z1bl9yZWZfdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsIF9SZXQ+CiAgICB7CiAg ICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIG1lbV9mdW5fcmVmX3QoX1JldCAoX1Rw OjoqX19wZikoKSkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBv cGVyYXRvcigpKF9UcCYgX19yKSBjb25zdAogICAgICB7IHJldHVybiAoX19yLipfTV9mKSgp OyB9CgogICAgcHJpdmF0ZToKICAgICAgX1JldCAoX1RwOjoqX01fZikoKTsKICAgIH0gOwoK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUgX1RwPgogICAgY2xhc3MgY29u c3RfbWVtX2Z1bl9yZWZfdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjxfVHAsIF9SZXQ+CiAg ICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIGNvbnN0X21lbV9mdW5fcmVm X3QoX1JldCAoX1RwOjoqX19wZikoKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoK ICAgICAgX1JldAogICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCYgX19yKSBjb25zdAogICAg ICB7IHJldHVybiAoX19yLipfTV9mKSgpOyB9CgogICAgcHJpdmF0ZToKICAgICAgX1JldCAo X1RwOjoqX01fZikoKSBjb25zdDsKICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Jl dCwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgbWVtX2Z1bjFfdCA6 IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248X1RwKiwgX0FyZywgX1JldD4KICAgIHsKICAgIHB1 YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgbWVtX2Z1bjFfdChfUmV0IChfVHA6OipfX3Bm KShfQXJnKSkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAogICAgICBvcGVy YXRvcigpKF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gKF9fcC0+ Kl9NX2YpKF9feCk7IH0KCiAgICBwcml2YXRlOgogICAgICBfUmV0IChfVHA6OipfTV9mKShf QXJnKTsKICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUgX1Rw LCB0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgY29uc3RfbWVtX2Z1bjFfdCA6IHB1YmxpYyBi aW5hcnlfZnVuY3Rpb248Y29uc3QgX1RwKiwgX0FyZywgX1JldD4KICAgIHsKICAgIHB1Ymxp YzoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RfbWVtX2Z1bjFfdChfUmV0IChfVHA6Oipf X3BmKShfQXJnKSBjb25zdCkKICAgICAgOiBfTV9mKF9fcGYpIHsgfQoKICAgICAgX1JldAog ICAgICBvcGVyYXRvcigpKGNvbnN0IF9UcCogX19wLCBfQXJnIF9feCkgY29uc3QKICAgICAg eyByZXR1cm4gKF9fcC0+Kl9NX2YpKF9feCk7IH0KCiAgICBwcml2YXRlOgogICAgICBfUmV0 IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX1JldCwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgbWVtX2Z1 bjFfcmVmX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX0FyZywgX1JldD4KICAg IHsKICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgbWVtX2Z1bjFfcmVmX3QoX1Jl dCAoX1RwOjoqX19wZikoX0FyZykpCiAgICAgIDogX01fZihfX3BmKSB7IH0KCiAgICAgIF9S ZXQKICAgICAgb3BlcmF0b3IoKShfVHAmIF9fciwgX0FyZyBfX3gpIGNvbnN0CiAgICAgIHsg cmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KCiAgICBwcml2YXRlOgogICAgICBfUmV0IChf VHA6OipfTV9mKShfQXJnKTsKICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1JldCwg dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAgY2xhc3MgY29uc3RfbWVtX2Z1bjFf cmVmX3QgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPF9UcCwgX0FyZywgX1JldD4KICAgIHsK ICAgIHB1YmxpYzoKICAgICAgZXhwbGljaXQKICAgICAgY29uc3RfbWVtX2Z1bjFfcmVmX3Qo X1JldCAoX1RwOjoqX19wZikoX0FyZykgY29uc3QpCiAgICAgIDogX01fZihfX3BmKSB7IH0K CiAgICAgIF9SZXQKICAgICAgb3BlcmF0b3IoKShjb25zdCBfVHAmIF9fciwgX0FyZyBfX3gp IGNvbnN0CiAgICAgIHsgcmV0dXJuIChfX3IuKl9NX2YpKF9feCk7IH0KCiAgICBwcml2YXRl OgogICAgICBfUmV0IChfVHA6OipfTV9mKShfQXJnKSBjb25zdDsKICAgIH0gOwoKCgogIHRl bXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgbWVt X2Z1bl90PF9SZXQsIF9UcD4KICAgIG1lbV9mdW4oX1JldCAoX1RwOjoqX19mKSgpKQogICAg eyByZXR1cm4gbWVtX2Z1bl90PF9SZXQsIF9UcD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfUmV0LCB0eXBlbmFtZSBfVHA+CiAgIAogICAgaW5saW5lIGNvbnN0X21lbV9mdW5f dDxfUmV0LCBfVHA+CiAgICBtZW1fZnVuKF9SZXQgKF9UcDo6Kl9fZikoKSBjb25zdCkKICAg IHsgcmV0dXJuIGNvbnN0X21lbV9mdW5fdDxfUmV0LCBfVHA+KF9fZik7IH0KCiAgdGVtcGxh dGU8dHlwZW5hbWUgX1JldCwgdHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSBtZW1fZnVu X3JlZl90PF9SZXQsIF9UcD4KICAgIG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoKSkK ICAgIHsgcmV0dXJuIG1lbV9mdW5fcmVmX3Q8X1JldCwgX1RwPihfX2YpOyB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgY29uc3Rf bWVtX2Z1bl9yZWZfdDxfUmV0LCBfVHA+CiAgICBtZW1fZnVuX3JlZihfUmV0IChfVHA6Oipf X2YpKCkgY29uc3QpCiAgICB7IHJldHVybiBjb25zdF9tZW1fZnVuX3JlZl90PF9SZXQsIF9U cD4oX19mKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5 cGVuYW1lIF9Bcmc+CiAgIAogICAgaW5saW5lIG1lbV9mdW4xX3Q8X1JldCwgX1RwLCBfQXJn PgogICAgbWVtX2Z1bihfUmV0IChfVHA6OipfX2YpKF9BcmcpKQogICAgeyByZXR1cm4gbWVt X2Z1bjFfdDxfUmV0LCBfVHAsIF9Bcmc+KF9fZik7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg X1JldCwgdHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfQXJnPgogICAKICAgIGlubGluZSBjb25z dF9tZW1fZnVuMV90PF9SZXQsIF9UcCwgX0FyZz4KICAgIG1lbV9mdW4oX1JldCAoX1RwOjoq X19mKShfQXJnKSBjb25zdCkKICAgIHsgcmV0dXJuIGNvbnN0X21lbV9mdW4xX3Q8X1JldCwg X1RwLCBfQXJnPihfX2YpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9SZXQsIHR5cGVuYW1l IF9UcCwgdHlwZW5hbWUgX0FyZz4KICAgCiAgICBpbmxpbmUgbWVtX2Z1bjFfcmVmX3Q8X1Jl dCwgX1RwLCBfQXJnPgogICAgbWVtX2Z1bl9yZWYoX1JldCAoX1RwOjoqX19mKShfQXJnKSkK ICAgIHsgcmV0dXJuIG1lbV9mdW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4oX19mKTsgfQoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUmV0LCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Bcmc+ CiAgIAogICAgaW5saW5lIGNvbnN0X21lbV9mdW4xX3JlZl90PF9SZXQsIF9UcCwgX0FyZz4K ICAgIG1lbV9mdW5fcmVmKF9SZXQgKF9UcDo6Kl9fZikoX0FyZykgY29uc3QpCiAgICB7IHJl dHVybiBjb25zdF9tZW1fZnVuMV9yZWZfdDxfUmV0LCBfVHAsIF9Bcmc+KF9fZik7IH0KI3By YWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKIyAxNDMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvc3RsX2Z1bmN0aW9uLmgiIDMKCn0KCgojIDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYmFja3dhcmQvYmluZGVycy5oIiAxIDMKIyA1NyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iYWNrd2FyZC9iaW5kZXJzLmgiIDMKI2RlZmluZSBfQkFDS1dBUkRfQklO REVSU19IIDEKCgojcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgoKbmFtZXNwYWNl IHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7Cgoj IDEwNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iYWNrd2FyZC9iaW5kZXJzLmgiIDMK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3BlcmF0aW9uPgogICAgY2xhc3MgYmluZGVyMXN0CiAg ICA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRf YXJndW1lbnRfdHlwZSwKICAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3VsdF90eXBl PgogICAgewogICAgcHJvdGVjdGVkOgogICAgICBfT3BlcmF0aW9uIG9wOwogICAgICB0eXBl bmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlIHZhbHVlOwoKICAgIHB1Ymxp YzoKICAgICAgYmluZGVyMXN0KGNvbnN0IF9PcGVyYXRpb24mIF9feCwKICBjb25zdCB0eXBl bmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlJiBfX3kpCiAgICAgIDogb3Ao X194KSwgdmFsdWUoX195KSB7IH0KCiAgICAgIHR5cGVuYW1lIF9PcGVyYXRpb246OnJlc3Vs dF90eXBlCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vj b25kX2FyZ3VtZW50X3R5cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AodmFsdWUs IF9feCk7IH0KCgoKICAgICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6cmVzdWx0X3R5cGUKICAg ICAgb3BlcmF0b3IoKSh0eXBlbmFtZSBfT3BlcmF0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlw ZSYgX194KSBjb25zdAogICAgICB7IHJldHVybiBvcCh2YWx1ZSwgX194KTsgfQogICAgfSA7 CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3BlcmF0aW9uLCB0eXBlbmFtZSBfVHA+CiAgIAog ICAgaW5saW5lIGJpbmRlcjFzdDxfT3BlcmF0aW9uPgogICAgYmluZDFzdChjb25zdCBfT3Bl cmF0aW9uJiBfX2ZuLCBjb25zdCBfVHAmIF9feCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBl bmFtZSBfT3BlcmF0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlIF9BcmcxX3R5cGU7CiAgICAg IHJldHVybiBiaW5kZXIxc3Q8X09wZXJhdGlvbj4oX19mbiwgX0FyZzFfdHlwZShfX3gpKTsK ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9PcGVyYXRpb24+CiAgICBjbGFzcyBiaW5k ZXIybmQKICAgIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIF9PcGVyYXRpb246 OmZpcnN0X2FyZ3VtZW50X3R5cGUsCiAgICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1 bHRfdHlwZT4KICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgX09wZXJhdGlvbiBvcDsKICAg ICAgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgdmFsdWU7Cgog ICAgcHVibGljOgogICAgICBiaW5kZXIybmQoY29uc3QgX09wZXJhdGlvbiYgX194LAogIGNv bnN0IHR5cGVuYW1lIF9PcGVyYXRpb246OnNlY29uZF9hcmd1bWVudF90eXBlJiBfX3kpCiAg ICAgIDogb3AoX194KSwgdmFsdWUoX195KSB7IH0KCiAgICAgIHR5cGVuYW1lIF9PcGVyYXRp b246OnJlc3VsdF90eXBlCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgdHlwZW5hbWUgX09wZXJh dGlvbjo6Zmlyc3RfYXJndW1lbnRfdHlwZSYgX194KSBjb25zdAogICAgICB7IHJldHVybiBv cChfX3gsIHZhbHVlKTsgfQoKCgogICAgICB0eXBlbmFtZSBfT3BlcmF0aW9uOjpyZXN1bHRf dHlwZQogICAgICBvcGVyYXRvcigpKHR5cGVuYW1lIF9PcGVyYXRpb246OmZpcnN0X2FyZ3Vt ZW50X3R5cGUmIF9feCkgY29uc3QKICAgICAgeyByZXR1cm4gb3AoX194LCB2YWx1ZSk7IH0K ICAgIH0gOwoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX09wZXJhdGlvbiwgdHlwZW5hbWUgX1Rw PgogICAKICAgIGlubGluZSBiaW5kZXIybmQ8X09wZXJhdGlvbj4KICAgIGJpbmQybmQoY29u c3QgX09wZXJhdGlvbiYgX19mbiwgY29uc3QgX1RwJiBfX3gpCiAgICB7CiAgICAgIHR5cGVk ZWYgdHlwZW5hbWUgX09wZXJhdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUgX0FyZzJfdHlw ZTsKICAgICAgcmV0dXJuIGJpbmRlcjJuZDxfT3BlcmF0aW9uPihfX2ZuLCBfQXJnMl90eXBl KF9feCkpOwogICAgfQoKCgp9CgojcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAojIDE0MzYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfZnVuY3Rpb24uaCIgMiAzCiMg NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyaW5nIiAyIDMKIyAxICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2V4dC9udW1lcmljX3RyYWl0cy5oIiAxIDMKIyAzMCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9leHQvbnVtZXJpY190cmFpdHMuaCIgMwojZGVmaW5l IF9FWFRfTlVNRVJJQ19UUkFJVFMgMQoKICAgICAgIAojIDMzICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2V4dC9udW1lcmljX3RyYWl0cy5oIiAzCgoKCgpuYW1lc3BhY2UgX19nbnVf Y3h4IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMg NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L251bWVyaWNfdHJhaXRzLmgiIDMK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICBzdHJ1Y3QgX19pc19pbnRlZ2VyX25vbnN0 cmljdAogICAgOiBwdWJsaWMgc3RkOjpfX2lzX2ludGVnZXI8X1RwPgogICAgewogICAgICB1 c2luZyBzdGQ6Ol9faXNfaW50ZWdlcjxfVHA+OjpfX3ZhbHVlOwoKCiAgICAgIGVudW0geyBf X3dpZHRoID0gX192YWx1ZSA/IHNpemVvZihfVHApICogOCA6IDAgfTsKICAgIH07CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIHN0cnVjdCBfX251bWVyaWNfdHJhaXRzX2lu dGVnZXIKICAgIHsKCgoKCgoKCiAgICAgIHN0YXRpYyBjb25zdCBib29sIF9faXNfc2lnbmVk ID0gKF9WYWx1ZSkoLTEpIDwgMDsKICAgICAgc3RhdGljIGNvbnN0IGludCBfX2RpZ2l0cwog PSBfX2lzX2ludGVnZXJfbm9uc3RyaWN0PF9WYWx1ZT46Ol9fd2lkdGggLSBfX2lzX3NpZ25l ZDsKCgogICAgICBzdGF0aWMgY29uc3QgX1ZhbHVlIF9fbWF4ID0gX19pc19zaWduZWQKID8g KCgoKChfVmFsdWUpMSA8PCAoX19kaWdpdHMgLSAxKSkgLSAxKSA8PCAxKSArIDEpCiA6IH4o X1ZhbHVlKTA7CiAgICAgIHN0YXRpYyBjb25zdCBfVmFsdWUgX19taW4gPSBfX2lzX3NpZ25l ZCA/IC1fX21heCAtIDEgOiAoX1ZhbHVlKTA7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfVmFsdWU+CiAgICBjb25zdCBfVmFsdWUgX19udW1lcmljX3RyYWl0c19pbnRlZ2VyPF9W YWx1ZT46Ol9fbWluOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBjb25zdCBf VmFsdWUgX19udW1lcmljX3RyYWl0c19pbnRlZ2VyPF9WYWx1ZT46Ol9fbWF4OwoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBjb25zdCBib29sIF9fbnVtZXJpY190cmFpdHNf aW50ZWdlcjxfVmFsdWU+OjpfX2lzX3NpZ25lZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zh bHVlPgogICAgY29uc3QgaW50IF9fbnVtZXJpY190cmFpdHNfaW50ZWdlcjxfVmFsdWU+Ojpf X2RpZ2l0czsKCgoKI2RlZmluZSBfR0xJQkNYWF9JTlRfTl9UUkFJVFMoVCxXSURUSCkgX19l eHRlbnNpb25fXyB0ZW1wbGF0ZTw+IHN0cnVjdCBfX2lzX2ludGVnZXJfbm9uc3RyaWN0PFQ+ IHsgZW51bSB7IF9fdmFsdWUgPSAxIH07IHR5cGVkZWYgc3RkOjpfX3RydWVfdHlwZSBfX3R5 cGU7IGVudW0geyBfX3dpZHRoID0gV0lEVEggfTsgfTsgX19leHRlbnNpb25fXyB0ZW1wbGF0 ZTw+IHN0cnVjdCBfX2lzX2ludGVnZXJfbm9uc3RyaWN0PHVuc2lnbmVkIFQ+IHsgZW51bSB7 IF9fdmFsdWUgPSAxIH07IHR5cGVkZWYgc3RkOjpfX3RydWVfdHlwZSBfX3R5cGU7IGVudW0g eyBfX3dpZHRoID0gV0lEVEggfTsgfTsKIyAxMzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvZXh0L251bWVyaWNfdHJhaXRzLmgiIDMKICBfX2V4dGVuc2lvbl9fIHRlbXBsYXRlPD4g c3RydWN0IF9faXNfaW50ZWdlcl9ub25zdHJpY3Q8X19pbnQxMjg+IHsgZW51bSB7IF9fdmFs dWUgPSAxIH07IHR5cGVkZWYgc3RkOjpfX3RydWVfdHlwZSBfX3R5cGU7IGVudW0geyBfX3dp ZHRoID0gMTI4IH07IH07IF9fZXh0ZW5zaW9uX18gdGVtcGxhdGU8PiBzdHJ1Y3QgX19pc19p bnRlZ2VyX25vbnN0cmljdDx1bnNpZ25lZCBfX2ludDEyOD4geyBlbnVtIHsgX192YWx1ZSA9 IDEgfTsgdHlwZWRlZiBzdGQ6Ol9fdHJ1ZV90eXBlIF9fdHlwZTsgZW51bSB7IF9fd2lkdGgg PSAxMjggfTsgfTsKCgojdW5kZWYgX0dMSUJDWFhfSU5UX05fVFJBSVRTCgoKCgoKCgojZGVm aW5lIF9fZ2xpYmN4eF9mbG9hdGluZyhfVHAsX0Z2YWwsX0R2YWwsX0xEdmFsKSAoc3RkOjpf X2FyZV9zYW1lPF9UcCwgZmxvYXQ+OjpfX3ZhbHVlID8gX0Z2YWwgOiBzdGQ6Ol9fYXJlX3Nh bWU8X1RwLCBkb3VibGU+OjpfX3ZhbHVlID8gX0R2YWwgOiBfTER2YWwpCgoKCiNkZWZpbmUg X19nbGliY3h4X21heF9kaWdpdHMxMChfVHApICgyICsgX19nbGliY3h4X2Zsb2F0aW5nKF9U cCwgX19GTFRfTUFOVF9ESUdfXywgX19EQkxfTUFOVF9ESUdfXywgX19MREJMX01BTlRfRElH X18pICogNjQzTCAvIDIxMzYpCgoKCiNkZWZpbmUgX19nbGliY3h4X2RpZ2l0czEwKF9UcCkg X19nbGliY3h4X2Zsb2F0aW5nKF9UcCwgX19GTFRfRElHX18sIF9fREJMX0RJR19fLCBfX0xE QkxfRElHX18pCgoKI2RlZmluZSBfX2dsaWJjeHhfbWF4X2V4cG9uZW50MTAoX1RwKSBfX2ds aWJjeHhfZmxvYXRpbmcoX1RwLCBfX0ZMVF9NQVhfMTBfRVhQX18sIF9fREJMX01BWF8xMF9F WFBfXywgX19MREJMX01BWF8xMF9FWFBfXykKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zh bHVlPgogICAgc3RydWN0IF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmcKICAgIHsKCiAgICAg IHN0YXRpYyBjb25zdCBpbnQgX19tYXhfZGlnaXRzMTAgPSAoMiArIChzdGQ6Ol9fYXJlX3Nh bWU8X1ZhbHVlLCBmbG9hdD46Ol9fdmFsdWUgPyAyNCA6IHN0ZDo6X19hcmVfc2FtZTxfVmFs dWUsIGRvdWJsZT46Ol9fdmFsdWUgPyA1MyA6IDExMykgKiA2NDNMIC8gMjEzNik7CgoKICAg ICAgc3RhdGljIGNvbnN0IGJvb2wgX19pc19zaWduZWQgPSB0cnVlOwogICAgICBzdGF0aWMg Y29uc3QgaW50IF9fZGlnaXRzMTAgPSAoc3RkOjpfX2FyZV9zYW1lPF9WYWx1ZSwgZmxvYXQ+ OjpfX3ZhbHVlID8gNiA6IHN0ZDo6X19hcmVfc2FtZTxfVmFsdWUsIGRvdWJsZT46Ol9fdmFs dWUgPyAxNSA6IDMzKTsKICAgICAgc3RhdGljIGNvbnN0IGludCBfX21heF9leHBvbmVudDEw ID0gKHN0ZDo6X19hcmVfc2FtZTxfVmFsdWUsIGZsb2F0Pjo6X192YWx1ZSA/IDM4IDogc3Rk OjpfX2FyZV9zYW1lPF9WYWx1ZSwgZG91YmxlPjo6X192YWx1ZSA/IDMwOCA6IDQ5MzIpOwog ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3QgaW50IF9fbnVt ZXJpY190cmFpdHNfZmxvYXRpbmc8X1ZhbHVlPjo6X19tYXhfZGlnaXRzMTA7CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIGNvbnN0IGJvb2wgX19udW1lcmljX3RyYWl0c19m bG9hdGluZzxfVmFsdWU+OjpfX2lzX3NpZ25lZDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Zh bHVlPgogICAgY29uc3QgaW50IF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8X1ZhbHVlPjo6 X19kaWdpdHMxMDsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlPgogICAgY29uc3QgaW50 IF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8X1ZhbHVlPjo6X19tYXhfZXhwb25lbnQxMDsK CiN1bmRlZiBfX2dsaWJjeHhfZmxvYXRpbmcKI3VuZGVmIF9fZ2xpYmN4eF9tYXhfZGlnaXRz MTAKI3VuZGVmIF9fZ2xpYmN4eF9kaWdpdHMxMAojdW5kZWYgX19nbGliY3h4X21heF9leHBv bmVudDEwCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZT4KICAgIHN0cnVjdCBfX251bWVy aWNfdHJhaXRzCiAgICA6IHB1YmxpYyBfX251bWVyaWNfdHJhaXRzX2ludGVnZXI8X1ZhbHVl PgogICAgeyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19udW1lcmljX3RyYWl0czxm bG9hdD4KICAgIDogcHVibGljIF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8ZmxvYXQ+CiAg ICB7IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX251bWVyaWNfdHJhaXRzPGRvdWJs ZT4KICAgIDogcHVibGljIF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8ZG91YmxlPgogICAg eyB9OwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJ1Y3QgX19udW1lcmljX3RyYWl0czxsb25nIGRv dWJsZT4KICAgIDogcHVibGljIF9fbnVtZXJpY190cmFpdHNfZmxvYXRpbmc8bG9uZyBkb3Vi bGU+CiAgICB7IH07CiMgMjM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4dC9udW1l cmljX3RyYWl0cy5oIiAzCgp9CiMgNTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3Ry aW5nIiAyIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2FsZ29i YXNlLmgiIDEgMwojIDU3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2Fs Z29iYXNlLmgiIDMKI2RlZmluZSBfU1RMX0FMR09CQVNFX0ggMQoKCgoKCgojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfcGFpci5oIiAxIDMKIyA1NyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9wYWlyLmgiIDMKI2RlZmluZSBfU1RMX1BB SVJfSCAxCiMgNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfcGFpci5o IiAzCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVm YXVsdCIpKSkKewoKIyAxNjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxf cGFpci5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1UxLCB0eXBlbmFtZSBfVTI+IGNsYXNz IF9fcGFpcl9iYXNlCiAgewoKCgoKCgoKICB9OwojIDE4NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3N0bF9wYWlyLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVDEsIHR5 cGVuYW1lIF9UMj4KICAgIHN0cnVjdCBwYWlyCiAgICA6IHB1YmxpYyBfX3BhaXJfYmFzZTxf VDEsIF9UMj4KICAgIHsKICAgICAgdHlwZWRlZiBfVDEgZmlyc3RfdHlwZTsKICAgICAgdHlw ZWRlZiBfVDIgc2Vjb25kX3R5cGU7CgogICAgICBfVDEgZmlyc3Q7CiAgICAgIF9UMiBzZWNv bmQ7CiMgNzc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX3BhaXIuaCIg MwogICAgICBwYWlyKCkgOiBmaXJzdCgpLCBzZWNvbmQoKSB7IH0KCgogICAgICBwYWlyKGNv bnN0IF9UMSYgX19hLCBjb25zdCBfVDImIF9fYikKICAgICAgOiBmaXJzdChfX2EpLCBzZWNv bmQoX19iKSB7IH0KCgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVTEsIHR5cGVuYW1lIF9V Mj4KIHBhaXIoY29uc3QgcGFpcjxfVTEsIF9VMj4mIF9fcCkKIDogZmlyc3QoX19wLmZpcnN0 KSwgc2Vjb25kKF9fcC5zZWNvbmQpCiB7CgojcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gK I3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1sb2NhbC10eXBlZGVm cyIKICAgdHlwZWRlZiBpbnQgX0RhbmdsaW5nQ2hlY2sxWwogICAgIF9fcmVmZXJlbmNlX2Nv bnN0cnVjdHNfZnJvbV90ZW1wb3JhcnkoX1QxLCBjb25zdCBfVTEmKSA/IC0xIDogMQogICAg ICAgIF07CiAgIHR5cGVkZWYgaW50IF9EYW5nbGluZ0NoZWNrMlsKICAgICBfX3JlZmVyZW5j ZV9jb25zdHJ1Y3RzX2Zyb21fdGVtcG9yYXJ5KF9UMiwgY29uc3QgX1UyJikgPyAtMSA6IDEK ICAgICAgICBdOwojcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAoKIH0KCiAgICB9OwojIDgw OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9wYWlyLmgiIDMKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfVDEsIHR5cGVuYW1lIF9UMj4KICAgIGlubGluZSBib29sCiAgICBv cGVyYXRvcj09KGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBf VDI+JiBfX3kpCiAgICB7IHJldHVybiBfX3guZmlyc3QgPT0gX195LmZpcnN0ICYmIF9feC5z ZWNvbmQgPT0gX195LnNlY29uZDsgfQojIDgzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3N0bF9wYWlyLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVDEsIHR5cGVuYW1l IF9UMj4KICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29uc3QgcGFpcjxfVDEsIF9U Mj4mIF9feCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKICAgIHsgcmV0dXJuIF9feC5m aXJzdCA8IF9feS5maXJzdAogICAgICB8fCAoIShfX3kuZmlyc3QgPCBfX3guZmlyc3QpICYm IF9feC5zZWNvbmQgPCBfX3kuc2Vjb25kKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1Qx LCB0eXBlbmFtZSBfVDI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3IhPShjb25zdCBw YWlyPF9UMSwgX1QyPiYgX194LCBjb25zdCBwYWlyPF9UMSwgX1QyPiYgX195KQogICAgeyBy ZXR1cm4gIShfX3ggPT0gX195KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBl bmFtZSBfVDI+CiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+KGNvbnN0IHBhaXI8X1Qx LCBfVDI+JiBfX3gsIGNvbnN0IHBhaXI8X1QxLCBfVDI+JiBfX3kpCiAgICB7IHJldHVybiBf X3kgPCBfX3g7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgog ICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPD0oY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9f eCwgY29uc3QgcGFpcjxfVDEsIF9UMj4mIF9feSkKICAgIHsgcmV0dXJuICEoX195IDwgX194 KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBlbmFtZSBfVDI+CiAgICBpbmxp bmUgYm9vbAogICAgb3BlcmF0b3I+PShjb25zdCBwYWlyPF9UMSwgX1QyPiYgX194LCBjb25z dCBwYWlyPF9UMSwgX1QyPiYgX195KQogICAgeyByZXR1cm4gIShfX3ggPCBfX3kpOyB9CiMg OTI5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX3BhaXIuaCIgMwogIHRl bXBsYXRlPHR5cGVuYW1lIF9UMSwgdHlwZW5hbWUgX1QyPgogICAgaW5saW5lIHBhaXI8X1Qx LCBfVDI+CiAgICBtYWtlX3BhaXIoX1QxIF9feCwgX1QyIF9feSkKICAgIHsgcmV0dXJuIHBh aXI8X1QxLCBfVDI+KF9feCwgX195KTsgfQojIDExMTYgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9zdGxfcGFpci5oIiAzCgp9CiMgNjUgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMiAzCgoKCgojIDEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvZGVidWcvZGVidWcuaCIgMSAzCiMgMzAgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvZGVidWcvZGVidWcuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0RFQlVHX01BQ1JP X1NXSVRDSF9IIDEKIyA0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9kZWJ1Zy9kZWJ1 Zy5oIiAzCm5hbWVzcGFjZSBzdGQKewogIG5hbWVzcGFjZSBfX2RlYnVnIHsgfQp9CgoKCgpu YW1lc3BhY2UgX19nbnVfZGVidWcKewogIHVzaW5nIG5hbWVzcGFjZSBzdGQ6Ol9fZGVidWc7 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGUsIHR5cGVuYW1lIF9TZXEsIHR5cGVuYW1lIF9D YXQ+CiAgICBzdHJ1Y3QgX1NhZmVfaXRlcmF0b3I7Cn0KCgoKI2RlZmluZSBfX2dsaWJjeHhf cmVxdWlyZXNfY29uZChfQ29uZCxfTXNnKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNf dmFsaWRfcmFuZ2UoX0ZpcnN0LF9MYXN0KSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNf Y2FuX2luY3JlbWVudChfRmlyc3QsX1NpemUpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJl c19jYW5faW5jcmVtZW50X3JhbmdlKF9GaXJzdDEsX0xhc3QxLF9GaXJzdDIpIAojZGVmaW5l IF9fZ2xpYmN4eF9yZXF1aXJlc19jYW5fZGVjcmVtZW50X3JhbmdlKF9GaXJzdDEsX0xhc3Qx LF9GaXJzdDIpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19zb3J0ZWQoX0ZpcnN0LF9M YXN0KSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc29ydGVkX3ByZWQoX0ZpcnN0LF9M YXN0LF9QcmVkKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc29ydGVkX3NldChfRmly c3QxLF9MYXN0MSxfRmlyc3QyKSAKI2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfc29ydGVk X3NldF9wcmVkKF9GaXJzdDEsX0xhc3QxLF9GaXJzdDIsX1ByZWQpIAojZGVmaW5lIF9fZ2xp YmN4eF9yZXF1aXJlc19wYXJ0aXRpb25lZF9sb3dlcihfRmlyc3QsX0xhc3QsX1ZhbHVlKSAK I2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfcGFydGl0aW9uZWRfdXBwZXIoX0ZpcnN0LF9M YXN0LF9WYWx1ZSkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3BhcnRpdGlvbmVkX2xv d2VyX3ByZWQoX0ZpcnN0LF9MYXN0LF9WYWx1ZSxfUHJlZCkgCiNkZWZpbmUgX19nbGliY3h4 X3JlcXVpcmVzX3BhcnRpdGlvbmVkX3VwcGVyX3ByZWQoX0ZpcnN0LF9MYXN0LF9WYWx1ZSxf UHJlZCkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX2hlYXAoX0ZpcnN0LF9MYXN0KSAK I2RlZmluZSBfX2dsaWJjeHhfcmVxdWlyZXNfaGVhcF9wcmVkKF9GaXJzdCxfTGFzdCxfUHJl ZCkgCiNkZWZpbmUgX19nbGliY3h4X3JlcXVpcmVzX3N0cmluZyhfU3RyaW5nKSAKI2RlZmlu ZSBfX2dsaWJjeHhfcmVxdWlyZXNfc3RyaW5nX2xlbihfU3RyaW5nLF9MZW4pIAojZGVmaW5l IF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZShfRmlyc3QsX0xhc3QpIAojZGVmaW5l IF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZTIoX0ZpcnN0LF9MYXN0KSAKI2RlZmlu ZSBfX2dsaWJjeHhfcmVxdWlyZXNfaXJyZWZsZXhpdmVfcHJlZChfRmlyc3QsX0xhc3QsX1By ZWQpIAojZGVmaW5lIF9fZ2xpYmN4eF9yZXF1aXJlc19pcnJlZmxleGl2ZV9wcmVkMihfRmly c3QsX0xhc3QsX1ByZWQpIAojIDcwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv c3RsX2FsZ29iYXNlLmgiIDIgMwoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvcHJlZGVmaW5lZF9vcHMuaCIgMSAzCiMgMzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9wcmVkZWZpbmVkX29wcy5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfUFJFREVGSU5F RF9PUFNfSCAxCgoKCm5hbWVzcGFjZSBfX2dudV9jeHgKewpuYW1lc3BhY2UgX19vcHMKewog IHN0cnVjdCBfSXRlcl9sZXNzX2l0ZXIKICB7CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRl cmF0b3IxLCB0eXBlbmFtZSBfSXRlcmF0b3IyPgogICAgIAogICAgICBib29sCiAgICAgIG9w ZXJhdG9yKCkoX0l0ZXJhdG9yMSBfX2l0MSwgX0l0ZXJhdG9yMiBfX2l0MikgY29uc3QKICAg ICAgeyByZXR1cm4gKl9faXQxIDwgKl9faXQyOyB9CiAgfTsKCiAKICBpbmxpbmUgX0l0ZXJf bGVzc19pdGVyCiAgX19pdGVyX2xlc3NfaXRlcigpCiAgeyByZXR1cm4gX0l0ZXJfbGVzc19p dGVyKCk7IH0KCiAgc3RydWN0IF9JdGVyX2xlc3NfdmFsCiAgewoKCgogICAgX0l0ZXJfbGVz c192YWwoKSB7IH0KCgogICAKICAgIGV4cGxpY2l0CiAgICBfSXRlcl9sZXNzX3ZhbChfSXRl cl9sZXNzX2l0ZXIpIHsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVyYXRvciwgdHlw ZW5hbWUgX1ZhbHVlPgogICAgIAogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoX0l0ZXJh dG9yIF9faXQsIF9WYWx1ZSYgX192YWwpIGNvbnN0CiAgICAgIHsgcmV0dXJuICpfX2l0IDwg X192YWw7IH0KICB9OwoKIAogIGlubGluZSBfSXRlcl9sZXNzX3ZhbAogIF9faXRlcl9sZXNz X3ZhbCgpCiAgeyByZXR1cm4gX0l0ZXJfbGVzc192YWwoKTsgfQoKIAogIGlubGluZSBfSXRl cl9sZXNzX3ZhbAogIF9faXRlcl9jb21wX3ZhbChfSXRlcl9sZXNzX2l0ZXIpCiAgeyByZXR1 cm4gX0l0ZXJfbGVzc192YWwoKTsgfQoKICBzdHJ1Y3QgX1ZhbF9sZXNzX2l0ZXIKICB7CgoK CiAgICBfVmFsX2xlc3NfaXRlcigpIHsgfQoKCiAgIAogICAgZXhwbGljaXQKICAgIF9WYWxf bGVzc19pdGVyKF9JdGVyX2xlc3NfaXRlcikgeyB9CgogICAgdGVtcGxhdGU8dHlwZW5hbWUg X1ZhbHVlLCB0eXBlbmFtZSBfSXRlcmF0b3I+CiAgICAgCiAgICAgIGJvb2wKICAgICAgb3Bl cmF0b3IoKShfVmFsdWUmIF9fdmFsLCBfSXRlcmF0b3IgX19pdCkgY29uc3QKICAgICAgeyBy ZXR1cm4gX192YWwgPCAqX19pdDsgfQogIH07CgogCiAgaW5saW5lIF9WYWxfbGVzc19pdGVy CiAgX192YWxfbGVzc19pdGVyKCkKICB7IHJldHVybiBfVmFsX2xlc3NfaXRlcigpOyB9Cgog CiAgaW5saW5lIF9WYWxfbGVzc19pdGVyCiAgX192YWxfY29tcF9pdGVyKF9JdGVyX2xlc3Nf aXRlcikKICB7IHJldHVybiBfVmFsX2xlc3NfaXRlcigpOyB9CgogIHN0cnVjdCBfSXRlcl9l cXVhbF90b19pdGVyCiAgewogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yMSwgdHlw ZW5hbWUgX0l0ZXJhdG9yMj4KICAgICAKICAgICAgYm9vbAogICAgICBvcGVyYXRvcigpKF9J dGVyYXRvcjEgX19pdDEsIF9JdGVyYXRvcjIgX19pdDIpIGNvbnN0CiAgICAgIHsgcmV0dXJu ICpfX2l0MSA9PSAqX19pdDI7IH0KICB9OwoKIAogIGlubGluZSBfSXRlcl9lcXVhbF90b19p dGVyCiAgX19pdGVyX2VxdWFsX3RvX2l0ZXIoKQogIHsgcmV0dXJuIF9JdGVyX2VxdWFsX3Rv X2l0ZXIoKTsgfQoKICBzdHJ1Y3QgX0l0ZXJfZXF1YWxfdG9fdmFsCiAgewogICAgdGVtcGxh dGU8dHlwZW5hbWUgX0l0ZXJhdG9yLCB0eXBlbmFtZSBfVmFsdWU+CiAgICAgCiAgICAgIGJv b2wKICAgICAgb3BlcmF0b3IoKShfSXRlcmF0b3IgX19pdCwgX1ZhbHVlJiBfX3ZhbCkgY29u c3QKICAgICAgeyByZXR1cm4gKl9faXQgPT0gX192YWw7IH0KICB9OwoKIAogIGlubGluZSBf SXRlcl9lcXVhbF90b192YWwKICBfX2l0ZXJfZXF1YWxfdG9fdmFsKCkKICB7IHJldHVybiBf SXRlcl9lcXVhbF90b192YWwoKTsgfQoKIAogIGlubGluZSBfSXRlcl9lcXVhbF90b192YWwK ICBfX2l0ZXJfY29tcF92YWwoX0l0ZXJfZXF1YWxfdG9faXRlcikKICB7IHJldHVybiBfSXRl cl9lcXVhbF90b192YWwoKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ29tcGFyZT4KICAg IHN0cnVjdCBfSXRlcl9jb21wX2l0ZXIKICAgIHsKICAgICAgX0NvbXBhcmUgX01fY29tcDsK CiAgICAgIGV4cGxpY2l0CiAgICAgIF9JdGVyX2NvbXBfaXRlcihfQ29tcGFyZSBfX2NvbXAp CiA6IF9NX2NvbXAoKF9fY29tcCkpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5h bWUgX0l0ZXJhdG9yMSwgdHlwZW5hbWUgX0l0ZXJhdG9yMj4KICAgICAgIAogICAgICAgIGJv b2wKICAgICAgICBvcGVyYXRvcigpKF9JdGVyYXRvcjEgX19pdDEsIF9JdGVyYXRvcjIgX19p dDIpCiAgICAgICAgeyByZXR1cm4gYm9vbChfTV9jb21wKCpfX2l0MSwgKl9faXQyKSk7IH0K ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21wYXJlPgogICAKICAgIGlubGluZSBf SXRlcl9jb21wX2l0ZXI8X0NvbXBhcmU+CiAgICBfX2l0ZXJfY29tcF9pdGVyKF9Db21wYXJl IF9fY29tcCkKICAgIHsgcmV0dXJuIF9JdGVyX2NvbXBfaXRlcjxfQ29tcGFyZT4oKF9fY29t cCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21wYXJlPgogICAgc3RydWN0IF9JdGVy X2NvbXBfdmFsCiAgICB7CiAgICAgIF9Db21wYXJlIF9NX2NvbXA7CgogICAgIAogICAgICBl eHBsaWNpdAogICAgICBfSXRlcl9jb21wX3ZhbChfQ29tcGFyZSBfX2NvbXApCiA6IF9NX2Nv bXAoKF9fY29tcCkpCiAgICAgIHsgfQoKICAgICAKICAgICAgZXhwbGljaXQKICAgICAgX0l0 ZXJfY29tcF92YWwoY29uc3QgX0l0ZXJfY29tcF9pdGVyPF9Db21wYXJlPiYgX19jb21wKQog OiBfTV9jb21wKF9fY29tcC5fTV9jb21wKQogICAgICB7IH0KIyAxOTIgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9wcmVkZWZpbmVkX29wcy5oIiAzCiAgICAgIHRlbXBsYXRl PHR5cGVuYW1lIF9JdGVyYXRvciwgdHlwZW5hbWUgX1ZhbHVlPgoKIGJvb2wKIG9wZXJhdG9y KCkoX0l0ZXJhdG9yIF9faXQsIF9WYWx1ZSYgX192YWwpCiB7IHJldHVybiBib29sKF9NX2Nv bXAoKl9faXQsIF9fdmFsKSk7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21w YXJlPgogICAKICAgIGlubGluZSBfSXRlcl9jb21wX3ZhbDxfQ29tcGFyZT4KICAgIF9faXRl cl9jb21wX3ZhbChfQ29tcGFyZSBfX2NvbXApCiAgICB7IHJldHVybiBfSXRlcl9jb21wX3Zh bDxfQ29tcGFyZT4oKF9fY29tcCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21wYXJl PgogICAKICAgIGlubGluZSBfSXRlcl9jb21wX3ZhbDxfQ29tcGFyZT4KICAgIF9faXRlcl9j b21wX3ZhbChfSXRlcl9jb21wX2l0ZXI8X0NvbXBhcmU+IF9fY29tcCkKICAgIHsgcmV0dXJu IF9JdGVyX2NvbXBfdmFsPF9Db21wYXJlPigoX19jb21wKSk7IH0KCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NvbXBhcmU+CiAgICBzdHJ1Y3QgX1ZhbF9jb21wX2l0ZXIKICAgIHsKICAgICAg X0NvbXBhcmUgX01fY29tcDsKCiAgICAgCiAgICAgIGV4cGxpY2l0CiAgICAgIF9WYWxfY29t cF9pdGVyKF9Db21wYXJlIF9fY29tcCkKIDogX01fY29tcCgoX19jb21wKSkKICAgICAgeyB9 CgogICAgIAogICAgICBleHBsaWNpdAogICAgICBfVmFsX2NvbXBfaXRlcihjb25zdCBfSXRl cl9jb21wX2l0ZXI8X0NvbXBhcmU+JiBfX2NvbXApCiA6IF9NX2NvbXAoX19jb21wLl9NX2Nv bXApCiAgICAgIHsgfQojIDIzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3By ZWRlZmluZWRfb3BzLmgiIDMKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlLCB0eXBl bmFtZSBfSXRlcmF0b3I+CgogYm9vbAogb3BlcmF0b3IoKShfVmFsdWUmIF9fdmFsLCBfSXRl cmF0b3IgX19pdCkKIHsgcmV0dXJuIGJvb2woX01fY29tcChfX3ZhbCwgKl9faXQpKTsgfQog ICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmU+CiAgIAogICAgaW5saW5lIF9W YWxfY29tcF9pdGVyPF9Db21wYXJlPgogICAgX192YWxfY29tcF9pdGVyKF9Db21wYXJlIF9f Y29tcCkKICAgIHsgcmV0dXJuIF9WYWxfY29tcF9pdGVyPF9Db21wYXJlPigoX19jb21wKSk7 IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmU+CiAgIAogICAgaW5saW5lIF9WYWxf Y29tcF9pdGVyPF9Db21wYXJlPgogICAgX192YWxfY29tcF9pdGVyKF9JdGVyX2NvbXBfaXRl cjxfQ29tcGFyZT4gX19jb21wKQogICAgeyByZXR1cm4gX1ZhbF9jb21wX2l0ZXI8X0NvbXBh cmU+KChfX2NvbXApKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWU+CiAgICBzdHJ1 Y3QgX0l0ZXJfZXF1YWxzX3ZhbAogICAgewogICAgICBfVmFsdWUmIF9NX3ZhbHVlOwoKICAg ICAKICAgICAgZXhwbGljaXQKICAgICAgX0l0ZXJfZXF1YWxzX3ZhbChfVmFsdWUmIF9fdmFs dWUpCiA6IF9NX3ZhbHVlKF9fdmFsdWUpCiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlw ZW5hbWUgX0l0ZXJhdG9yPgoKIGJvb2wKIG9wZXJhdG9yKCkoX0l0ZXJhdG9yIF9faXQpCiB7 IHJldHVybiAqX19pdCA9PSBfTV92YWx1ZTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX1ZhbHVlPgogICAKICAgIGlubGluZSBfSXRlcl9lcXVhbHNfdmFsPF9WYWx1ZT4KICAg IF9faXRlcl9lcXVhbHNfdmFsKF9WYWx1ZSYgX192YWwpCiAgICB7IHJldHVybiBfSXRlcl9l cXVhbHNfdmFsPF9WYWx1ZT4oX192YWwpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGVy YXRvcjE+CiAgICBzdHJ1Y3QgX0l0ZXJfZXF1YWxzX2l0ZXIKICAgIHsKICAgICAgX0l0ZXJh dG9yMSBfTV9pdDE7CgogICAgIAogICAgICBleHBsaWNpdAogICAgICBfSXRlcl9lcXVhbHNf aXRlcihfSXRlcmF0b3IxIF9faXQxKQogOiBfTV9pdDEoX19pdDEpCiAgICAgIHsgfQoKICAg ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yMj4KCiBib29sCiBvcGVyYXRvcigpKF9J dGVyYXRvcjIgX19pdDIpCiB7IHJldHVybiAqX19pdDIgPT0gKl9NX2l0MTsgfQogICAgfTsK CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgogICAKICAgIGlubGluZSBfSXRlcl9l cXVhbHNfaXRlcjxfSXRlcmF0b3I+CiAgICBfX2l0ZXJfY29tcF9pdGVyKF9JdGVyX2VxdWFs X3RvX2l0ZXIsIF9JdGVyYXRvciBfX2l0KQogICAgeyByZXR1cm4gX0l0ZXJfZXF1YWxzX2l0 ZXI8X0l0ZXJhdG9yPihfX2l0KTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJlZGljYXRl PgogICAgc3RydWN0IF9JdGVyX3ByZWQKICAgIHsKICAgICAgX1ByZWRpY2F0ZSBfTV9wcmVk OwoKICAgICAKICAgICAgZXhwbGljaXQKICAgICAgX0l0ZXJfcHJlZChfUHJlZGljYXRlIF9f cHJlZCkKIDogX01fcHJlZCgoX19wcmVkKSkKICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfSXRlcmF0b3I+CgogYm9vbAogb3BlcmF0b3IoKShfSXRlcmF0b3IgX19pdCkK IHsgcmV0dXJuIGJvb2woX01fcHJlZCgqX19pdCkpOyB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfUHJlZGljYXRlPgogICAKICAgIGlubGluZSBfSXRlcl9wcmVkPF9QcmVkaWNh dGU+CiAgICBfX3ByZWRfaXRlcihfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsgcmV0dXJuIF9J dGVyX3ByZWQ8X1ByZWRpY2F0ZT4oKF9fcHJlZCkpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1l IF9Db21wYXJlLCB0eXBlbmFtZSBfVmFsdWU+CiAgICBzdHJ1Y3QgX0l0ZXJfY29tcF90b192 YWwKICAgIHsKICAgICAgX0NvbXBhcmUgX01fY29tcDsKICAgICAgX1ZhbHVlJiBfTV92YWx1 ZTsKCiAgICAgCiAgICAgIF9JdGVyX2NvbXBfdG9fdmFsKF9Db21wYXJlIF9fY29tcCwgX1Zh bHVlJiBfX3ZhbHVlKQogOiBfTV9jb21wKChfX2NvbXApKSwgX01fdmFsdWUoX192YWx1ZSkK ICAgICAgeyB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CgogYm9vbAog b3BlcmF0b3IoKShfSXRlcmF0b3IgX19pdCkKIHsgcmV0dXJuIGJvb2woX01fY29tcCgqX19p dCwgX01fdmFsdWUpKTsgfQogICAgfTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NvbXBhcmUs IHR5cGVuYW1lIF9WYWx1ZT4KICAgIF9JdGVyX2NvbXBfdG9fdmFsPF9Db21wYXJlLCBfVmFs dWU+CiAgIAogICAgX19pdGVyX2NvbXBfdmFsKF9Db21wYXJlIF9fY29tcCwgX1ZhbHVlICZf X3ZhbCkKICAgIHsKICAgICAgcmV0dXJuIF9JdGVyX2NvbXBfdG9fdmFsPF9Db21wYXJlLCBf VmFsdWU+KChfX2NvbXApLCBfX3ZhbCk7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D b21wYXJlLCB0eXBlbmFtZSBfSXRlcmF0b3IxPgogICAgc3RydWN0IF9JdGVyX2NvbXBfdG9f aXRlcgogICAgewogICAgICBfQ29tcGFyZSBfTV9jb21wOwogICAgICBfSXRlcmF0b3IxIF9N X2l0MTsKCiAgICAgCiAgICAgIF9JdGVyX2NvbXBfdG9faXRlcihfQ29tcGFyZSBfX2NvbXAs IF9JdGVyYXRvcjEgX19pdDEpCiA6IF9NX2NvbXAoKF9fY29tcCkpLCBfTV9pdDEoX19pdDEp CiAgICAgIHsgfQoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yMj4KCiBib29s CiBvcGVyYXRvcigpKF9JdGVyYXRvcjIgX19pdDIpCiB7IHJldHVybiBib29sKF9NX2NvbXAo Kl9faXQyLCAqX01faXQxKSk7IH0KICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Db21w YXJlLCB0eXBlbmFtZSBfSXRlcmF0b3I+CiAgIAogICAgaW5saW5lIF9JdGVyX2NvbXBfdG9f aXRlcjxfQ29tcGFyZSwgX0l0ZXJhdG9yPgogICAgX19pdGVyX2NvbXBfaXRlcihfSXRlcl9j b21wX2l0ZXI8X0NvbXBhcmU+IF9fY29tcCwgX0l0ZXJhdG9yIF9faXQpCiAgICB7CiAgICAg IHJldHVybiBfSXRlcl9jb21wX3RvX2l0ZXI8X0NvbXBhcmUsIF9JdGVyYXRvcj4oCiAgIChf X2NvbXAuX01fY29tcCksIF9faXQpOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUHJl ZGljYXRlPgogICAgc3RydWN0IF9JdGVyX25lZ2F0ZQogICAgewogICAgICBfUHJlZGljYXRl IF9NX3ByZWQ7CgogICAgIAogICAgICBleHBsaWNpdAogICAgICBfSXRlcl9uZWdhdGUoX1By ZWRpY2F0ZSBfX3ByZWQpCiA6IF9NX3ByZWQoKF9fcHJlZCkpCiAgICAgIHsgfQoKICAgICAg dGVtcGxhdGU8dHlwZW5hbWUgX0l0ZXJhdG9yPgoKIGJvb2wKIG9wZXJhdG9yKCkoX0l0ZXJh dG9yIF9faXQpCiB7IHJldHVybiAhYm9vbChfTV9wcmVkKCpfX2l0KSk7IH0KICAgIH07Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgIAogICAgaW5saW5lIF9JdGVyX25l Z2F0ZTxfUHJlZGljYXRlPgogICAgX19uZWdhdGUoX0l0ZXJfcHJlZDxfUHJlZGljYXRlPiBf X3ByZWQpCiAgICB7IHJldHVybiBfSXRlcl9uZWdhdGU8X1ByZWRpY2F0ZT4oKF9fcHJlZC5f TV9wcmVkKSk7IH0KCn0KfQojIDcyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv c3RsX2FsZ29iYXNlLmgiIDIgMwojIDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvc3RsX2FsZ29iYXNlLmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X1RwLCB0eXBlbmFtZSBfVXA+CiAgIAogICAgaW5saW5lIGludAogICAgX19tZW1jbXAoY29u c3QgX1RwKiBfX2ZpcnN0MSwgY29uc3QgX1VwKiBfX2ZpcnN0Miwgc2l6ZV90IF9fbnVtKQog ICAgewojIDEwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFz ZS5oIiAzCiByZXR1cm4gX19idWlsdGluX21lbWNtcChfX2ZpcnN0MSwgX19maXJzdDIsIHNp emVvZihfVHApICogX19udW0pOwogICAgfQoKCgoKCiAgdGVtcGxhdGU8Ym9vbCBfQm9vbFR5 cGU+CiAgICBzdHJ1Y3QgX19pdGVyX3N3YXAKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5h bWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IyPgogc3Rh dGljIHZvaWQKIGl0ZXJfc3dhcChfRm9yd2FyZEl0ZXJhdG9yMSBfX2EsIF9Gb3J3YXJkSXRl cmF0b3IyIF9fYikKIHsKICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0Zv cndhcmRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlCiAgICAgX1ZhbHVlVHlwZTE7CiAgIF9WYWx1 ZVR5cGUxIF9fdG1wID0gKl9fYTsKICAgKl9fYSA9ICpfX2I7CiAgICpfX2IgPSBfX3RtcDsK IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2l0ZXJfc3dhcDx0cnVlPgog ICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5h bWUgX0ZvcndhcmRJdGVyYXRvcjI+CiBzdGF0aWMgdm9pZAogaXRlcl9zd2FwKF9Gb3J3YXJk SXRlcmF0b3IxIF9fYSwgX0ZvcndhcmRJdGVyYXRvcjIgX19iKQogewogICBzd2FwKCpfX2Es ICpfX2IpOwogfQogICAgfTsKIyAxNTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0 b3IxLCB0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMj4KICAgCiAgICBpbmxpbmUgdm9pZAog ICAgaXRlcl9zd2FwKF9Gb3J3YXJkSXRlcmF0b3IxIF9fYSwgX0ZvcndhcmRJdGVyYXRvcjIg X19iKQogICAgewoKICAgICAKCiAgICAgCgoKCiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRl cmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3IxPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlw ZTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRl cmF0b3IyPjo6dmFsdWVfdHlwZQogX1ZhbHVlVHlwZTI7CgogICAgIAoKICAgICAKCgogICAg ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yMT46 OnJlZmVyZW5jZQogX1JlZmVyZW5jZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0 ZXJhdG9yX3RyYWl0czxfRm9yd2FyZEl0ZXJhdG9yMj46OnJlZmVyZW5jZQogX1JlZmVyZW5j ZVR5cGUyOwogICAgICBzdGQ6Ol9faXRlcl9zd2FwPF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTEs IF9WYWx1ZVR5cGUyPjo6X192YWx1ZQogJiYgX19hcmVfc2FtZTxfVmFsdWVUeXBlMSYsIF9S ZWZlcmVuY2VUeXBlMT46Ol9fdmFsdWUKICYmIF9fYXJlX3NhbWU8X1ZhbHVlVHlwZTImLCBf UmVmZXJlbmNlVHlwZTI+OjpfX3ZhbHVlPjo6CiBpdGVyX3N3YXAoX19hLCBfX2IpOwoKCgoK CiAgICB9CiMgMjAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2FsZ29i YXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5h bWUgX0ZvcndhcmRJdGVyYXRvcjI+CiAgIAogICAgX0ZvcndhcmRJdGVyYXRvcjIKICAgIHN3 YXBfcmFuZ2VzKF9Gb3J3YXJkSXRlcmF0b3IxIF9fZmlyc3QxLCBfRm9yd2FyZEl0ZXJhdG9y MSBfX2xhc3QxLAogIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3QyKQogICAgewoKICAgICAK CiAgICAgCgogICAgICA7CgogICAgICBmb3IgKDsgX19maXJzdDEgIT0gX19sYXN0MTsgKytf X2ZpcnN0MSwgKHZvaWQpKytfX2ZpcnN0MikKIHN0ZDo6aXRlcl9zd2FwKF9fZmlyc3QxLCBf X2ZpcnN0Mik7CiAgICAgIHJldHVybiBfX2ZpcnN0MjsKICAgIH0KIyAyMzAgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgY29uc3QgX1RwJgogICAgbWluKGNvbnN0IF9U cCYgX19hLCBjb25zdCBfVHAmIF9fYikKICAgIHsKCiAgICAgCgogICAgICBpZiAoX19iIDwg X19hKQogcmV0dXJuIF9fYjsKICAgICAgcmV0dXJuIF9fYTsKICAgIH0KIyAyNTQgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRl PHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgY29uc3QgX1RwJgogICAgbWF4KGNvbnN0 IF9UcCYgX19hLCBjb25zdCBfVHAmIF9fYikKICAgIHsKCiAgICAgCgogICAgICBpZiAoX19h IDwgX19iKQogcmV0dXJuIF9fYjsKICAgICAgcmV0dXJuIF9fYTsKICAgIH0KIyAyNzggIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBs YXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgIAogICAgaW5saW5lIGNv bnN0IF9UcCYKICAgIG1pbihjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21w YXJlIF9fY29tcCkKICAgIHsKCiAgICAgIGlmIChfX2NvbXAoX19iLCBfX2EpKQogcmV0dXJu IF9fYjsKICAgICAgcmV0dXJuIF9fYTsKICAgIH0KIyAzMDAgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9U cCwgdHlwZW5hbWUgX0NvbXBhcmU+CiAgIAogICAgaW5saW5lIGNvbnN0IF9UcCYKICAgIG1h eChjb25zdCBfVHAmIF9fYSwgY29uc3QgX1RwJiBfX2IsIF9Db21wYXJlIF9fY29tcCkKICAg IHsKCiAgICAgIGlmIChfX2NvbXAoX19hLCBfX2IpKQogcmV0dXJuIF9fYjsKICAgICAgcmV0 dXJuIF9fYTsKICAgIH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3I+CiAgIAog ICAgaW5saW5lIF9JdGVyYXRvcgogICAgX19uaXRlcl9iYXNlKF9JdGVyYXRvciBfX2l0KQog ICAKICAgIHsgcmV0dXJuIF9faXQ7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0ZSwgdHlw ZW5hbWUgX1NlcT4KICAgCiAgICBfSXRlCiAgICBfX25pdGVyX2Jhc2UoY29uc3QgOjpfX2du dV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0ZSwgX1NlcSwKICAgc3RkOjpyYW5kb21fYWNj ZXNzX2l0ZXJhdG9yX3RhZz4mKTsKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zyb20sIHR5 cGVuYW1lIF9Ubz4KICAgCiAgICBpbmxpbmUgX0Zyb20KICAgIF9fbml0ZXJfd3JhcChfRnJv bSBfX2Zyb20sIF9UbyBfX3JlcykKICAgIHsgcmV0dXJuIF9fZnJvbSArIChfX3JlcyAtIHN0 ZDo6X19uaXRlcl9iYXNlKF9fZnJvbSkpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRl cmF0b3I+CiAgIAogICAgaW5saW5lIF9JdGVyYXRvcgogICAgX19uaXRlcl93cmFwKGNvbnN0 IF9JdGVyYXRvciYsIF9JdGVyYXRvciBfX3JlcykKICAgIHsgcmV0dXJuIF9fcmVzOyB9CgoK CgoKCgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwgYm9vbCBfSXNTaW1wbGUsIHR5cGVuYW1l IF9DYXRlZ29yeT4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZQogICAgewogICAgICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfSUksIHR5cGVuYW1lIF9PST4KCiBzdGF0aWMgX09JCiBfX2NvcHlfbShf SUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogewogICBmb3IgKDsgX19m aXJzdCAhPSBfX2xhc3Q7ICsrX19yZXN1bHQsICh2b2lkKSsrX19maXJzdCkKICAgICAqX19y ZXN1bHQgPSAqX19maXJzdDsKICAgcmV0dXJuIF9fcmVzdWx0OwogfQogICAgfTsKIyAzNzgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRl bXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvcHlfbW92ZTxmYWxzZSwgZmFsc2UsIHJhbmRvbV9h Y2Nlc3NfaXRlcmF0b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUks IHR5cGVuYW1lIF9PST4KCiBzdGF0aWMgX09JCiBfX2NvcHlfbShfSUkgX19maXJzdCwgX0lJ IF9fbGFzdCwgX09JIF9fcmVzdWx0KQogewogICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9y X3RyYWl0czxfSUk+OjpkaWZmZXJlbmNlX3R5cGUgX0Rpc3RhbmNlOwogICBmb3IoX0Rpc3Rh bmNlIF9fbiA9IF9fbGFzdCAtIF9fZmlyc3Q7IF9fbiA+IDA7IC0tX19uKQogICAgIHsKICAg ICAgICpfX3Jlc3VsdCA9ICpfX2ZpcnN0OwogICAgICAgKytfX2ZpcnN0OwogICAgICAgKytf X3Jlc3VsdDsKICAgICB9CiAgIHJldHVybiBfX3Jlc3VsdDsKIH0KCiAgICAgIHRlbXBsYXRl PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgogc3RhdGljIHZvaWQKIF9fYXNzaWduX29u ZShfVHAqIF9fdG8sIF9VcCogX19mcm9tKQogeyAqX190byA9ICpfX2Zyb207IH0KICAgIH07 CiMgNDI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2FsZ29iYXNlLmgi IDMKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmU+CiAgICBzdHJ1Y3QgX19jb3B5X21vdmU8X0lz TW92ZSwgdHJ1ZSwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+CiAgICB7CiAgICAgIHRl bXBsYXRlPHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1VwPgoKIHN0YXRpYyBfVXAqCiBfX2Nv cHlfbShfVHAqIF9fZmlyc3QsIF9UcCogX19sYXN0LCBfVXAqIF9fcmVzdWx0KQogewogICBj b25zdCBwdHJkaWZmX3QgX051bSA9IF9fbGFzdCAtIF9fZmlyc3Q7CiAgIGlmIChfX2J1aWx0 aW5fZXhwZWN0KF9OdW0gPiAxLCB0cnVlKSkKICAgICBfX2J1aWx0aW5fbWVtbW92ZShfX3Jl c3VsdCwgX19maXJzdCwgc2l6ZW9mKF9UcCkgKiBfTnVtKTsKICAgZWxzZSBpZiAoX051bSA9 PSAxKQogICAgIHN0ZDo6X19jb3B5X21vdmU8X0lzTW92ZSwgZmFsc2UsIHJhbmRvbV9hY2Nl c3NfaXRlcmF0b3JfdGFnPjo6CiAgICAgICBfX2Fzc2lnbl9vbmUoX19yZXN1bHQsIF9fZmly c3QpOwogICByZXR1cm4gX19yZXN1bHQgKyBfTnVtOwogfQogICAgfTsKCgoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9SZWYsIHR5cGVuYW1lIF9QdHI+CiAgICBzdHJ1 Y3QgX0RlcXVlX2l0ZXJhdG9yOwoKICBzdHJ1Y3QgX0JpdF9pdGVyYXRvcjsKCgoKCgoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBzdHJ1Y3QgY2hhcl90cmFpdHM7CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGlz dHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cz4KICAgIGNsYXNzIG9zdHJlYW1idWZfaXRlcmF0b3I7CgogIHRlbXBsYXRl PGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgX19nbnVfY3h4 OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAgb3N0cmVh bWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiA+OjpfX3R5cGUK ICAgIF9fY29weV9tb3ZlX2EyKF9DaGFyVCosIF9DaGFyVCosCiAgICAgb3N0cmVhbWJ1Zl9p dGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPik7CgogIHRlbXBsYXRlPGJv b2wgX0lzTW92ZSwgdHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgX19nbnVfY3h4Ojpf X2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAgb3N0cmVhbWJ1 Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiA+OjpfX3R5cGUKICAg IF9fY29weV9tb3ZlX2EyKGNvbnN0IF9DaGFyVCosIGNvbnN0IF9DaGFyVCosCiAgICAgb3N0 cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPik7CgogIHRl bXBsYXRlPGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUgX0NoYXJUPgogICAgdHlwZW5hbWUgX19n bnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAg ICBfQ2hhclQqPjo6X190eXBlCiAgICBfX2NvcHlfbW92ZV9hMihpc3RyZWFtYnVmX2l0ZXJh dG9yPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+LAogICAgIGlzdHJlYW1idWZfaXRl cmF0b3I8X0NoYXJULCBjaGFyX3RyYWl0czxfQ2hhclQ+ID4sIF9DaGFyVCopOwoKICB0ZW1w bGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251 X2N4eDo6X19lbmFibGVfaWY8CiAgICAgIF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAog ICAgICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfQ2hhclQsIF9DaGFyVCYsIF9DaGFyVCo+ID46 Ol9fdHlwZQogICAgX19jb3B5X21vdmVfYTIoCiBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy VCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+LAogaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQs IGNoYXJfdHJhaXRzPF9DaGFyVD4gPiwKIHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9DaGFyVCwg X0NoYXJUJiwgX0NoYXJUKj4pOwoKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFt ZSBfSUksIHR5cGVuYW1lIF9PST4KICAgCiAgICBpbmxpbmUgX09JCiAgICBfX2NvcHlfbW92 ZV9hMihfSUkgX19maXJzdCwgX0lJIF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgewogICAg ICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfSUk+OjppdGVyYXRvcl9jYXRl Z29yeSBfQ2F0ZWdvcnk7CgoKCgoKICAgICAgcmV0dXJuIHN0ZDo6X19jb3B5X21vdmU8X0lz TW92ZSwgX19tZW1jcHlhYmxlPF9PSSwgX0lJPjo6X192YWx1ZSwKICAgICAgICAgX0NhdGVn b3J5Pjo6X19jb3B5X20oX19maXJzdCwgX19sYXN0LCBfX3Jlc3VsdCk7CiAgICB9CgogIHRl bXBsYXRlPGJvb2wgX0lzTW92ZSwKICAgIHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1JlZiwg dHlwZW5hbWUgX1B0ciwgdHlwZW5hbWUgX09JPgogICAgX09JCiAgICBfX2NvcHlfbW92ZV9h MShzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAsIF9SZWYsIF9QdHI+LAogICAgIHN0ZDo6X0Rl cXVlX2l0ZXJhdG9yPF9UcCwgX1JlZiwgX1B0cj4sCiAgICAgX09JKTsKCiAgdGVtcGxhdGU8 Ym9vbCBfSXNNb3ZlLAogICAgdHlwZW5hbWUgX0lUcCwgdHlwZW5hbWUgX0lSZWYsIHR5cGVu YW1lIF9JUHRyLCB0eXBlbmFtZSBfT1RwPgogICAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X09U cCwgX09UcCYsIF9PVHAqPgogICAgX19jb3B5X21vdmVfYTEoc3RkOjpfRGVxdWVfaXRlcmF0 b3I8X0lUcCwgX0lSZWYsIF9JUHRyPiwKICAgICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfSVRw LCBfSVJlZiwgX0lQdHI+LAogICAgIHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9PVHAsIF9PVHAm LCBfT1RwKj4pOwoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1lIF9JSSwgdHlw ZW5hbWUgX1RwPgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjwKICAgICAg X19pc19yYW5kb21fYWNjZXNzX2l0ZXI8X0lJPjo6X192YWx1ZSwKICAgICAgc3RkOjpfRGVx dWVfaXRlcmF0b3I8X1RwLCBfVHAmLCBfVHAqPiA+OjpfX3R5cGUKICAgIF9fY29weV9tb3Zl X2ExKF9JSSwgX0lJLCBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAsIF9UcCYsIF9UcCo+KTsK CiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfSUksIHR5cGVuYW1lIF9PST4K ICAgCiAgICBpbmxpbmUgX09JCiAgICBfX2NvcHlfbW92ZV9hMShfSUkgX19maXJzdCwgX0lJ IF9fbGFzdCwgX09JIF9fcmVzdWx0KQogICAgeyByZXR1cm4gc3RkOjpfX2NvcHlfbW92ZV9h MjxfSXNNb3ZlPihfX2ZpcnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsgfQoKICB0ZW1wbGF0ZTxi b29sIF9Jc01vdmUsIHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgogICAKICAgIGlubGlu ZSBfT0kKICAgIF9fY29weV9tb3ZlX2EoX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9PSSBf X3Jlc3VsdCkKICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6X19uaXRlcl93cmFwKF9fcmVzdWx0 LAogIHN0ZDo6X19jb3B5X21vdmVfYTE8X0lzTW92ZT4oc3RkOjpfX25pdGVyX2Jhc2UoX19m aXJzdCksCiAgICAgICAgICBzdGQ6Ol9fbml0ZXJfYmFzZShfX2xhc3QpLAogICAgICAgICAg c3RkOjpfX25pdGVyX2Jhc2UoX19yZXN1bHQpKSk7CiAgICB9CgogIHRlbXBsYXRlPGJvb2wg X0lzTW92ZSwKICAgIHR5cGVuYW1lIF9JdGUsIHR5cGVuYW1lIF9TZXEsIHR5cGVuYW1lIF9D YXQsIHR5cGVuYW1lIF9PST4KICAgCiAgICBfT0kKICAgIF9fY29weV9tb3ZlX2EoY29uc3Qg OjpfX2dudV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0ZSwgX1NlcSwgX0NhdD4mLAogICAg Y29uc3QgOjpfX2dudV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0ZSwgX1NlcSwgX0NhdD4m LAogICAgX09JKTsKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLAogICAgdHlwZW5hbWUgX0lJ LCB0eXBlbmFtZSBfSXRlLCB0eXBlbmFtZSBfU2VxLCB0eXBlbmFtZSBfQ2F0PgogICAKICAg IF9fZ251X2RlYnVnOjpfU2FmZV9pdGVyYXRvcjxfSXRlLCBfU2VxLCBfQ2F0PgogICAgX19j b3B5X21vdmVfYShfSUksIF9JSSwKICAgIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0 ZXJhdG9yPF9JdGUsIF9TZXEsIF9DYXQ+Jik7CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwK ICAgIHR5cGVuYW1lIF9JSXRlLCB0eXBlbmFtZSBfSVNlcSwgdHlwZW5hbWUgX0lDYXQsCiAg ICB0eXBlbmFtZSBfT0l0ZSwgdHlwZW5hbWUgX09TZXEsIHR5cGVuYW1lIF9PQ2F0PgogICAK ICAgIDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9PSXRlLCBfT1NlcSwgX09DYXQ+ CiAgICBfX2NvcHlfbW92ZV9hKGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9y PF9JSXRlLCBfSVNlcSwgX0lDYXQ+JiwKICAgIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZl X2l0ZXJhdG9yPF9JSXRlLCBfSVNlcSwgX0lDYXQ+JiwKICAgIGNvbnN0IDo6X19nbnVfZGVi dWc6Ol9TYWZlX2l0ZXJhdG9yPF9PSXRlLCBfT1NlcSwgX09DYXQ+Jik7CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX091 dHB1dEl0ZXJhdG9yPgogICAKICAgIF9PdXRwdXRJdGVyYXRvcgogICAgX19jb3B5X25fYShf SW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX24sIF9PdXRwdXRJdGVyYXRvciBfX3Jl c3VsdCwKICAgICAgICBib29sKQogICAgewogICAgICBpZiAoX19uID4gMCkKIHsKICAgd2hp bGUgKHRydWUpCiAgICAgewogICAgICAgKl9fcmVzdWx0ID0gKl9fZmlyc3Q7CiAgICAgICAr K19fcmVzdWx0OwogICAgICAgaWYgKC0tX19uID4gMCkKICArK19fZmlyc3Q7CiAgICAgICBl bHNlCiAgYnJlYWs7CiAgICAgfQogfQogICAgICByZXR1cm4gX19yZXN1bHQ7CiAgICB9CgoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9TaXplPgogICAgdHlwZW5h bWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjwKICAgICAgX19pc19jaGFyPF9DaGFyVD46Ol9f dmFsdWUsIF9DaGFyVCo+OjpfX3R5cGUKICAgIF9fY29weV9uX2EoaXN0cmVhbWJ1Zl9pdGVy YXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiwKICAgICAgICBfU2l6ZSwgX0No YXJUKiwgYm9vbCk7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Np emU+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPAogICAgICBfX2lzX2No YXI8X0NoYXJUPjo6X192YWx1ZSwKICAgICAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X0NoYXJU LCBfQ2hhclQmLCBfQ2hhclQqPiA+OjpfX3R5cGUKICAgIF9fY29weV9uX2EoaXN0cmVhbWJ1 Zl9pdGVyYXRvcjxfQ2hhclQsIGNoYXJfdHJhaXRzPF9DaGFyVD4gPiwgX1NpemUsCiAgICAg ICAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X0NoYXJULCBfQ2hhclQmLCBfQ2hhclQqPiwKICAg ICAgICBib29sKTsKIyA2MjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxf YWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSSwgdHlwZW5hbWUgX09JPgog ICAKICAgIGlubGluZSBfT0kKICAgIGNvcHkoX0lJIF9fZmlyc3QsIF9JSSBfX2xhc3QsIF9P SSBfX3Jlc3VsdCkKICAgIHsKCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICByZXR1cm4g c3RkOjpfX2NvcHlfbW92ZV9hPF9faXNfbW92ZV9pdGVyYXRvcjxfSUk+OjpfX3ZhbHVlPgog ICAgICAoc3RkOjpfX21pdGVyX2Jhc2UoX19maXJzdCksIHN0ZDo6X19taXRlcl9iYXNlKF9f bGFzdCksIF9fcmVzdWx0KTsKICAgIH0KIyA2NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwojZGVmaW5lIF9HTElCQ1hYX01PVkUzKF9UcCxf VXAsX1ZwKSBzdGQ6OmNvcHkoX1RwLCBfVXAsIF9WcCkKCgogIHRlbXBsYXRlPGJvb2wgX0lz TW92ZSwgYm9vbCBfSXNTaW1wbGUsIHR5cGVuYW1lIF9DYXRlZ29yeT4KICAgIHN0cnVjdCBf X2NvcHlfbW92ZV9iYWNrd2FyZAogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkx LCB0eXBlbmFtZSBfQkkyPgoKIHN0YXRpYyBfQkkyCiBfX2NvcHlfbW92ZV9iKF9CSTEgX19m aXJzdCwgX0JJMSBfX2xhc3QsIF9CSTIgX19yZXN1bHQpCiB7CiAgIHdoaWxlIChfX2ZpcnN0 ICE9IF9fbGFzdCkKICAgICAqLS1fX3Jlc3VsdCA9ICotLV9fbGFzdDsKICAgcmV0dXJuIF9f cmVzdWx0OwogfQogICAgfTsKIyA3MDggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2NvcHlfbW92 ZV9iYWNrd2FyZDxmYWxzZSwgZmFsc2UsIHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnPgog ICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQkkxLCB0eXBlbmFtZSBfQkkyPgoKIHN0 YXRpYyBfQkkyCiBfX2NvcHlfbW92ZV9iKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3QsIF9C STIgX19yZXN1bHQpCiB7CiAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfQkkxPjo6ZGlm ZmVyZW5jZV90eXBlCiAgICAgX19uID0gX19sYXN0IC0gX19maXJzdDsKICAgZm9yICg7IF9f biA+IDA7IC0tX19uKQogICAgICotLV9fcmVzdWx0ID0gKi0tX19sYXN0OwogICByZXR1cm4g X19yZXN1bHQ7CiB9CiAgICB9OwojIDc0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlPgogICAgc3Ry dWN0IF9fY29weV9tb3ZlX2JhY2t3YXJkPF9Jc01vdmUsIHRydWUsIHJhbmRvbV9hY2Nlc3Nf aXRlcmF0b3JfdGFnPgogICAgewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVu YW1lIF9VcD4KCiBzdGF0aWMgX1VwKgogX19jb3B5X21vdmVfYihfVHAqIF9fZmlyc3QsIF9U cCogX19sYXN0LCBfVXAqIF9fcmVzdWx0KQogewogICBjb25zdCBwdHJkaWZmX3QgX051bSA9 IF9fbGFzdCAtIF9fZmlyc3Q7CiAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KF9OdW0gPiAxLCB0 cnVlKSkKICAgICBfX2J1aWx0aW5fbWVtbW92ZShfX3Jlc3VsdCAtIF9OdW0sIF9fZmlyc3Qs IHNpemVvZihfVHApICogX051bSk7CiAgIGVsc2UgaWYgKF9OdW0gPT0gMSkKICAgICBzdGQ6 Ol9fY29weV9tb3ZlPF9Jc01vdmUsIGZhbHNlLCByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3Rh Zz46OgogICAgICAgX19hc3NpZ25fb25lKF9fcmVzdWx0IC0gMSwgX19maXJzdCk7CiAgIHJl dHVybiBfX3Jlc3VsdCAtIF9OdW07CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTxib29sIF9Jc01v dmUsIHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgIAogICAgaW5saW5lIF9CSTIK ICAgIF9fY29weV9tb3ZlX2JhY2t3YXJkX2EyKF9CSTEgX19maXJzdCwgX0JJMSBfX2xhc3Qs IF9CSTIgX19yZXN1bHQpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3Jf dHJhaXRzPF9CSTE+OjppdGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnk7CgoKCgoKICAgICAg cmV0dXJuIHN0ZDo6X19jb3B5X21vdmVfYmFja3dhcmQ8X0lzTW92ZSwKICAgICAgICAgICBf X21lbWNweWFibGU8X0JJMiwgX0JJMT46Ol9fdmFsdWUsCiAgICAgICAgICAgX0NhdGVnb3J5 Pjo6X19jb3B5X21vdmVfYihfX2ZpcnN0LAogICAgICAgICBfX2xhc3QsCiAgICAgICAgIF9f cmVzdWx0KTsKICAgIH0KCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQkkx LCB0eXBlbmFtZSBfQkkyPgogICAKICAgIGlubGluZSBfQkkyCiAgICBfX2NvcHlfbW92ZV9i YWNrd2FyZF9hMShfQkkxIF9fZmlyc3QsIF9CSTEgX19sYXN0LCBfQkkyIF9fcmVzdWx0KQog ICAgeyByZXR1cm4gc3RkOjpfX2NvcHlfbW92ZV9iYWNrd2FyZF9hMjxfSXNNb3ZlPihfX2Zp cnN0LCBfX2xhc3QsIF9fcmVzdWx0KTsgfQoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsCiAg ICB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9SZWYsIHR5cGVuYW1lIF9QdHIsIHR5cGVuYW1l IF9PST4KICAgIF9PSQogICAgX19jb3B5X21vdmVfYmFja3dhcmRfYTEoc3RkOjpfRGVxdWVf aXRlcmF0b3I8X1RwLCBfUmVmLCBfUHRyPiwKICAgICAgIHN0ZDo6X0RlcXVlX2l0ZXJhdG9y PF9UcCwgX1JlZiwgX1B0cj4sCiAgICAgICBfT0kpOwoKICB0ZW1wbGF0ZTxib29sIF9Jc01v dmUsCiAgICB0eXBlbmFtZSBfSVRwLCB0eXBlbmFtZSBfSVJlZiwgdHlwZW5hbWUgX0lQdHIs IHR5cGVuYW1lIF9PVHA+CiAgICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfT1RwLCBfT1RwJiwg X09UcCo+CiAgICBfX2NvcHlfbW92ZV9iYWNrd2FyZF9hMSgKICAgc3RkOjpfRGVxdWVfaXRl cmF0b3I8X0lUcCwgX0lSZWYsIF9JUHRyPiwKICAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X0lU cCwgX0lSZWYsIF9JUHRyPiwKICAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X09UcCwgX09UcCYs IF9PVHAqPik7CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwgdHlwZW5hbWUgX0lJLCB0eXBl bmFtZSBfVHA+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPAogICAgICBf X2lzX3JhbmRvbV9hY2Nlc3NfaXRlcjxfSUk+OjpfX3ZhbHVlLAogICAgICBzdGQ6Ol9EZXF1 ZV9pdGVyYXRvcjxfVHAsIF9UcCYsIF9UcCo+ID46Ol9fdHlwZQogICAgX19jb3B5X21vdmVf YmFja3dhcmRfYTEoX0lJLCBfSUksCiAgICAgICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAs IF9UcCYsIF9UcCo+KTsKCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfSUks IHR5cGVuYW1lIF9PST4KICAgCiAgICBpbmxpbmUgX09JCiAgICBfX2NvcHlfbW92ZV9iYWNr d2FyZF9hKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0LCBfT0kgX19yZXN1bHQpCiAgICB7CiAg ICAgIHJldHVybiBzdGQ6Ol9fbml0ZXJfd3JhcChfX3Jlc3VsdCwKICBzdGQ6Ol9fY29weV9t b3ZlX2JhY2t3YXJkX2ExPF9Jc01vdmU+CiAgICAoc3RkOjpfX25pdGVyX2Jhc2UoX19maXJz dCksIHN0ZDo6X19uaXRlcl9iYXNlKF9fbGFzdCksCiAgICAgc3RkOjpfX25pdGVyX2Jhc2Uo X19yZXN1bHQpKSk7CiAgICB9CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwKICAgIHR5cGVu YW1lIF9JdGUsIHR5cGVuYW1lIF9TZXEsIHR5cGVuYW1lIF9DYXQsIHR5cGVuYW1lIF9PST4K ICAgCiAgICBfT0kKICAgIF9fY29weV9tb3ZlX2JhY2t3YXJkX2EoCiAgY29uc3QgOjpfX2du dV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0ZSwgX1NlcSwgX0NhdD4mLAogIGNvbnN0IDo6 X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9JdGUsIF9TZXEsIF9DYXQ+JiwKICBfT0kp OwoKICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsCiAgICB0eXBlbmFtZSBfSUksIHR5cGVuYW1l IF9JdGUsIHR5cGVuYW1lIF9TZXEsIHR5cGVuYW1lIF9DYXQ+CiAgIAogICAgX19nbnVfZGVi dWc6Ol9TYWZlX2l0ZXJhdG9yPF9JdGUsIF9TZXEsIF9DYXQ+CiAgICBfX2NvcHlfbW92ZV9i YWNrd2FyZF9hKF9JSSwgX0lJLAogIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJh dG9yPF9JdGUsIF9TZXEsIF9DYXQ+Jik7CgogIHRlbXBsYXRlPGJvb2wgX0lzTW92ZSwKICAg IHR5cGVuYW1lIF9JSXRlLCB0eXBlbmFtZSBfSVNlcSwgdHlwZW5hbWUgX0lDYXQsCiAgICB0 eXBlbmFtZSBfT0l0ZSwgdHlwZW5hbWUgX09TZXEsIHR5cGVuYW1lIF9PQ2F0PgogICAKICAg IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9PSXRlLCBfT1NlcSwgX09DYXQ+CiAg ICBfX2NvcHlfbW92ZV9iYWNrd2FyZF9hKAogIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZl X2l0ZXJhdG9yPF9JSXRlLCBfSVNlcSwgX0lDYXQ+JiwKICBjb25zdCA6Ol9fZ251X2RlYnVn OjpfU2FmZV9pdGVyYXRvcjxfSUl0ZSwgX0lTZXEsIF9JQ2F0PiYsCiAgY29uc3QgOjpfX2du dV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X09JdGUsIF9PU2VxLCBfT0NhdD4mKTsKIyA4NjEg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRl bXBsYXRlPHR5cGVuYW1lIF9CSTEsIHR5cGVuYW1lIF9CSTI+CiAgIAogICAgaW5saW5lIF9C STIKICAgIGNvcHlfYmFja3dhcmQoX0JJMSBfX2ZpcnN0LCBfQkkxIF9fbGFzdCwgX0JJMiBf X3Jlc3VsdCkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgogICAgICA7CgogICAgICByZXR1 cm4gc3RkOjpfX2NvcHlfbW92ZV9iYWNrd2FyZF9hPF9faXNfbW92ZV9pdGVyYXRvcjxfQkkx Pjo6X192YWx1ZT4KICAgICAgKHN0ZDo6X19taXRlcl9iYXNlKF9fZmlyc3QpLCBzdGQ6Ol9f bWl0ZXJfYmFzZShfX2xhc3QpLCBfX3Jlc3VsdCk7CiAgICB9CiMgOTE1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKI2RlZmluZSBfR0xJQkNY WF9NT1ZFX0JBQ0tXQVJEMyhfVHAsX1VwLF9WcCkgc3RkOjpjb3B5X2JhY2t3YXJkKF9UcCwg X1VwLCBfVnApCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBl bmFtZSBfVHA+CiAgIAogICAgaW5saW5lIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5h YmxlX2lmPCFfX2lzX3NjYWxhcjxfVHA+OjpfX3ZhbHVlLCB2b2lkPjo6X190eXBlCiAgICBf X2ZpbGxfYTEoX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9f bGFzdCwKICAgICAgIGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKICAgICAgZm9yICg7IF9f Zmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdmFsdWU7CiAgICB9 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIF9UcD4K ICAgCiAgICBpbmxpbmUgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19p c19zY2FsYXI8X1RwPjo6X192YWx1ZSwgdm9pZD46Ol9fdHlwZQogICAgX19maWxsX2ExKF9G b3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAg ICBjb25zdCBfVHAmIF9fdmFsdWUpCiAgICB7CiAgICAgIGNvbnN0IF9UcCBfX3RtcCA9IF9f dmFsdWU7CiAgICAgIGZvciAoOyBfX2ZpcnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQogKl9f Zmlyc3QgPSBfX3RtcDsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgCiAg ICBpbmxpbmUgdHlwZW5hbWUKICAgIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19ieXRl PF9UcD46Ol9fdmFsdWUsIHZvaWQ+OjpfX3R5cGUKICAgIF9fZmlsbF9hMShfVHAqIF9fZmly c3QsIF9UcCogX19sYXN0LCBjb25zdCBfVHAmIF9fYykKICAgIHsKICAgICAgY29uc3QgX1Rw IF9fdG1wID0gX19jOwojIDk1NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0 bF9hbGdvYmFzZS5oIiAzCiAgICAgIGlmIChjb25zdCBzaXplX3QgX19sZW4gPSBfX2xhc3Qg LSBfX2ZpcnN0KQogX19idWlsdGluX21lbXNldChfX2ZpcnN0LCBzdGF0aWNfY2FzdDx1bnNp Z25lZCBjaGFyPihfX3RtcCksIF9fbGVuKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0l0ZSwgdHlwZW5hbWUgX0NvbnQsIHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgdm9p ZAogICAgX19maWxsX2ExKDo6X19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxfSXRlLCBf Q29udD4gX19maXJzdCwKICAgICAgIDo6X19nbnVfY3h4OjpfX25vcm1hbF9pdGVyYXRvcjxf SXRlLCBfQ29udD4gX19sYXN0LAogICAgICAgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgeyBz dGQ6Ol9fZmlsbF9hMShfX2ZpcnN0LmJhc2UoKSwgX19sYXN0LmJhc2UoKSwgX192YWx1ZSk7 IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVlRwPgogICAgdm9pZAog ICAgX19maWxsX2ExKGNvbnN0IHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9UcCwgX1RwJiwgX1Rw Kj4mLAogICAgICAgY29uc3Qgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X1RwLCBfVHAmLCBfVHAq PiYsCiAgICAgICBjb25zdCBfVlRwJik7CgogCiAgdm9pZAogIF9fZmlsbF9hMShzdGQ6Ol9C aXRfaXRlcmF0b3IsIHN0ZDo6X0JpdF9pdGVyYXRvciwKICAgICBjb25zdCBib29sJik7Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9GSXRlLCB0eXBlbmFtZSBfVHA+CiAgIAogICAgaW5saW5l IHZvaWQKICAgIF9fZmlsbF9hKF9GSXRlIF9fZmlyc3QsIF9GSXRlIF9fbGFzdCwgY29uc3Qg X1RwJiBfX3ZhbHVlKQogICAgeyBzdGQ6Ol9fZmlsbF9hMShfX2ZpcnN0LCBfX2xhc3QsIF9f dmFsdWUpOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JdGUsIHR5cGVuYW1lIF9TZXEsIHR5 cGVuYW1lIF9DYXQsIHR5cGVuYW1lIF9UcD4KICAgCiAgICB2b2lkCiAgICBfX2ZpbGxfYShj b25zdCA6Ol9fZ251X2RlYnVnOjpfU2FmZV9pdGVyYXRvcjxfSXRlLCBfU2VxLCBfQ2F0PiYs CiAgICAgIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9JdGUsIF9TZXEs IF9DYXQ+JiwKICAgICAgY29uc3QgX1RwJik7CiMgMTAwNSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv cndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSB2b2lkCiAgICBm aWxsKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3Qs IGNvbnN0IF9UcCYgX192YWx1ZSkKICAgIHsKCiAgICAgCgogICAgICA7CgogICAgICBzdGQ6 Ol9fZmlsbF9hKF9fZmlyc3QsIF9fbGFzdCwgX192YWx1ZSk7CiAgICB9CgoKICBpbmxpbmUg aW50CiAgX19zaXplX3RvX2ludGVnZXIoaW50IF9fbikgeyByZXR1cm4gX19uOyB9CiAgaW5s aW5lIHVuc2lnbmVkCiAgX19zaXplX3RvX2ludGVnZXIodW5zaWduZWQgX19uKSB7IHJldHVy biBfX247IH0KICBpbmxpbmUgbG9uZwogIF9fc2l6ZV90b19pbnRlZ2VyKGxvbmcgX19uKSB7 IHJldHVybiBfX247IH0KICBpbmxpbmUgdW5zaWduZWQgbG9uZwogIF9fc2l6ZV90b19pbnRl Z2VyKHVuc2lnbmVkIGxvbmcgX19uKSB7IHJldHVybiBfX247IH0KICBpbmxpbmUgbG9uZyBs b25nCiAgX19zaXplX3RvX2ludGVnZXIobG9uZyBsb25nIF9fbikgeyByZXR1cm4gX19uOyB9 CiAgaW5saW5lIHVuc2lnbmVkIGxvbmcgbG9uZwogIF9fc2l6ZV90b19pbnRlZ2VyKHVuc2ln bmVkIGxvbmcgbG9uZyBfX24pIHsgcmV0dXJuIF9fbjsgfQojIDEwNTcgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIGlubGluZSBsb25nIGxv bmcKICBfX3NpemVfdG9faW50ZWdlcihmbG9hdCBfX24pIHsgcmV0dXJuIChsb25nIGxvbmcp X19uOyB9CiAgaW5saW5lIGxvbmcgbG9uZwogIF9fc2l6ZV90b19pbnRlZ2VyKGRvdWJsZSBf X24pIHsgcmV0dXJuIChsb25nIGxvbmcpX19uOyB9CiAgaW5saW5lIGxvbmcgbG9uZwogIF9f c2l6ZV90b19pbnRlZ2VyKGxvbmcgZG91YmxlIF9fbikgeyByZXR1cm4gKGxvbmcgbG9uZylf X247IH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9PdXRwdXRJdGVyYXRvciwgdHlwZW5h bWUgX1NpemUsIHR5cGVuYW1lIF9UcD4KICAgCiAgICBpbmxpbmUgdHlwZW5hbWUKICAgIF9f Z251X2N4eDo6X19lbmFibGVfaWY8IV9faXNfc2NhbGFyPF9UcD46Ol9fdmFsdWUsIF9PdXRw dXRJdGVyYXRvcj46Ol9fdHlwZQogICAgX19maWxsX25fYTEoX091dHB1dEl0ZXJhdG9yIF9f Zmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3ZhbHVlKQogICAgewogICAgICBmb3Ig KDsgX19uID4gMDsgLS1fX24sICh2b2lkKSArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdmFs dWU7CiAgICAgIHJldHVybiBfX2ZpcnN0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf T3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9TaXplLCB0eXBlbmFtZSBfVHA+CiAgIAogICAg aW5saW5lIHR5cGVuYW1lCiAgICBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfc2NhbGFy PF9UcD46Ol9fdmFsdWUsIF9PdXRwdXRJdGVyYXRvcj46Ol9fdHlwZQogICAgX19maWxsX25f YTEoX091dHB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBfX3Zh bHVlKQogICAgewogICAgICBjb25zdCBfVHAgX190bXAgPSBfX3ZhbHVlOwogICAgICBmb3Ig KDsgX19uID4gMDsgLS1fX24sICh2b2lkKSArK19fZmlyc3QpCiAqX19maXJzdCA9IF9fdG1w OwogICAgICByZXR1cm4gX19maXJzdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0l0 ZSwgdHlwZW5hbWUgX1NlcSwgdHlwZW5hbWUgX0NhdCwgdHlwZW5hbWUgX1NpemUsCiAgICB0 eXBlbmFtZSBfVHA+CiAgIAogICAgOjpfX2dudV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0 ZSwgX1NlcSwgX0NhdD4KICAgIF9fZmlsbF9uX2EoY29uc3QgOjpfX2dudV9kZWJ1Zzo6X1Nh ZmVfaXRlcmF0b3I8X0l0ZSwgX1NlcSwgX0NhdD4mIF9fZmlyc3QsCiAgICAgICAgX1NpemUg X19uLCBjb25zdCBfVHAmIF9fdmFsdWUsCiAgICAgICAgc3RkOjppbnB1dF9pdGVyYXRvcl90 YWcpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9T aXplLCB0eXBlbmFtZSBfVHA+CiAgIAogICAgaW5saW5lIF9PdXRwdXRJdGVyYXRvcgogICAg X19maWxsX25fYShfT3V0cHV0SXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBf VHAmIF9fdmFsdWUsCiAgICAgICAgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnKQogICAgewoK CgogICAgICByZXR1cm4gX19maWxsX25fYTEoX19maXJzdCwgX19uLCBfX3ZhbHVlKTsKICAg IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6 ZSwgdHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIF9f ZmlsbF9uX2EoX091dHB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1Rw JiBfX3ZhbHVlLAogICAgICAgIHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnKQogICAgewoKCgog ICAgICByZXR1cm4gX19maWxsX25fYTEoX19maXJzdCwgX19uLCBfX3ZhbHVlKTsKICAgIH0K CiAgdGVtcGxhdGU8dHlwZW5hbWUgX091dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBfU2l6ZSwg dHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSBfT3V0cHV0SXRlcmF0b3IKICAgIF9fZmls bF9uX2EoX091dHB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fbiwgY29uc3QgX1RwJiBf X3ZhbHVlLAogICAgICAgIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCiAgICB7 CgoKCiAgICAgIGlmIChfX24gPD0gMCkKIHJldHVybiBfX2ZpcnN0OwoKICAgICAgOwoKICAg ICAgc3RkOjpfX2ZpbGxfYShfX2ZpcnN0LCBfX2ZpcnN0ICsgX19uLCBfX3ZhbHVlKTsKICAg ICAgcmV0dXJuIF9fZmlyc3QgKyBfX247CiAgICB9CiMgMTE1OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg X09JLCB0eXBlbmFtZSBfU2l6ZSwgdHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSBfT0kK ICAgIGZpbGxfbihfT0kgX19maXJzdCwgX1NpemUgX19uLCBjb25zdCBfVHAmIF9fdmFsdWUp CiAgICB7CgogICAgIAoKICAgICAgcmV0dXJuIHN0ZDo6X19maWxsX25fYShfX2ZpcnN0LCBz dGQ6Ol9fc2l6ZV90b19pbnRlZ2VyKF9fbiksIF9fdmFsdWUsCiAgICAgICAgICBzdGQ6Ol9f aXRlcmF0b3JfY2F0ZWdvcnkoX19maXJzdCkpOwogICAgfQoKICB0ZW1wbGF0ZTxib29sIF9C b29sVHlwZT4KICAgIHN0cnVjdCBfX2VxdWFsCiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVu YW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+Cgogc3RhdGljIGJvb2wKIGVxdWFsKF9JSTEgX19m aXJzdDEsIF9JSTEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKIHsKICAgZm9yICg7IF9fZmly c3QxICE9IF9fbGFzdDE7ICsrX19maXJzdDEsICh2b2lkKSArK19fZmlyc3QyKQogICAgIGlm ICghKCpfX2ZpcnN0MSA9PSAqX19maXJzdDIpKQogICAgICAgcmV0dXJuIGZhbHNlOwogICBy ZXR1cm4gdHJ1ZTsKIH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2VxdWFs PHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KCiBzdGF0aWMgYm9v bAogZXF1YWwoY29uc3QgX1RwKiBfX2ZpcnN0MSwgY29uc3QgX1RwKiBfX2xhc3QxLCBjb25z dCBfVHAqIF9fZmlyc3QyKQogewogICBpZiAoY29uc3Qgc2l6ZV90IF9fbGVuID0gKF9fbGFz dDEgLSBfX2ZpcnN0MSkpCiAgICAgcmV0dXJuICFzdGQ6Ol9fbWVtY21wKF9fZmlyc3QxLCBf X2ZpcnN0MiwgX19sZW4pOwogICByZXR1cm4gdHJ1ZTsKIH0KICAgIH07CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9UcCwgdHlwZW5hbWUgX1JlZiwgdHlwZW5hbWUgX1B0ciwgdHlwZW5hbWUg X0lJPgogICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjwKICAgICAgX19pc19y YW5kb21fYWNjZXNzX2l0ZXI8X0lJPjo6X192YWx1ZSwgYm9vbD46Ol9fdHlwZQogICAgX19l cXVhbF9hdXgxKHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9UcCwgX1JlZiwgX1B0cj4sCiAgIHN0 ZDo6X0RlcXVlX2l0ZXJhdG9yPF9UcCwgX1JlZiwgX1B0cj4sCiAgIF9JSSk7CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVuYW1lIF9SZWYxLCB0eXBlbmFtZSBfUHRyMSwKICAg IHR5cGVuYW1lIF9UcDIsIHR5cGVuYW1lIF9SZWYyLCB0eXBlbmFtZSBfUHRyMj4KICAgIGJv b2wKICAgIF9fZXF1YWxfYXV4MShzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAxLCBfUmVmMSwg X1B0cjE+LAogICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAxLCBfUmVmMSwgX1B0cjE+LAog ICBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAyLCBfUmVmMiwgX1B0cjI+KTsKCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0lJLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9SZWYsIHR5cGVuYW1l IF9QdHI+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPAogICAgICBfX2lz X3JhbmRvbV9hY2Nlc3NfaXRlcjxfSUk+OjpfX3ZhbHVlLCBib29sPjo6X190eXBlCiAgICBf X2VxdWFsX2F1eDEoX0lJLCBfSUksCiAgc3RkOjpfRGVxdWVfaXRlcmF0b3I8X1RwLCBfUmVm LCBfUHRyPik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+CiAg IAogICAgaW5saW5lIGJvb2wKICAgIF9fZXF1YWxfYXV4MShfSUkxIF9fZmlyc3QxLCBfSUkx IF9fbGFzdDEsIF9JSTIgX19maXJzdDIpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg aXRlcmF0b3JfdHJhaXRzPF9JSTE+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGUxOwogICAgICBj b25zdCBib29sIF9fc2ltcGxlID0gKChfX2lzX2ludGVnZXI8X1ZhbHVlVHlwZTE+OjpfX3Zh bHVlCiAgICAgICAgIHx8IF9faXNfcG9pbnRlcjxfVmFsdWVUeXBlMT46Ol9fdmFsdWUpCiAg ICAgICAgJiYgX19tZW1jbXBhYmxlPF9JSTEsIF9JSTI+OjpfX3ZhbHVlKTsKICAgICAgcmV0 dXJuIHN0ZDo6X19lcXVhbDxfX3NpbXBsZT46OmVxdWFsKF9fZmlyc3QxLCBfX2xhc3QxLCBf X2ZpcnN0Mik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9J STI+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIF9fZXF1YWxfYXV4KF9JSTEgX19maXJzdDEs IF9JSTEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6 X19lcXVhbF9hdXgxKHN0ZDo6X19uaXRlcl9iYXNlKF9fZmlyc3QxKSwKICAgICAgICAgIHN0 ZDo6X19uaXRlcl9iYXNlKF9fbGFzdDEpLAogICAgICAgICAgc3RkOjpfX25pdGVyX2Jhc2Uo X19maXJzdDIpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUg X1NlcTEsIHR5cGVuYW1lIF9DYXQxLCB0eXBlbmFtZSBfSUkyPgogICAKICAgIGJvb2wKICAg IF9fZXF1YWxfYXV4KGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9JSTEs IF9TZXExLCBfQ2F0MT4mLAogIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9y PF9JSTEsIF9TZXExLCBfQ2F0MT4mLAogIF9JSTIpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf SUkxLCB0eXBlbmFtZSBfSUkyLCB0eXBlbmFtZSBfU2VxMiwgdHlwZW5hbWUgX0NhdDI+CiAg IAogICAgYm9vbAogICAgX19lcXVhbF9hdXgoX0lJMSwgX0lJMSwKICBjb25zdCA6Ol9fZ251 X2RlYnVnOjpfU2FmZV9pdGVyYXRvcjxfSUkyLCBfU2VxMiwgX0NhdDI+Jik7CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9TZXExLCB0eXBlbmFtZSBfQ2F0MSwKICAg IHR5cGVuYW1lIF9JSTIsIHR5cGVuYW1lIF9TZXEyLCB0eXBlbmFtZSBfQ2F0Mj4KICAgCiAg ICBib29sCiAgICBfX2VxdWFsX2F1eChjb25zdCA6Ol9fZ251X2RlYnVnOjpfU2FmZV9pdGVy YXRvcjxfSUkxLCBfU2VxMSwgX0NhdDE+JiwKICBjb25zdCA6Ol9fZ251X2RlYnVnOjpfU2Fm ZV9pdGVyYXRvcjxfSUkxLCBfU2VxMSwgX0NhdDE+JiwKICBjb25zdCA6Ol9fZ251X2RlYnVn OjpfU2FmZV9pdGVyYXRvcjxfSUkyLCBfU2VxMiwgX0NhdDI+Jik7CgogIHRlbXBsYXRlPHR5 cGVuYW1lLCB0eXBlbmFtZT4KICAgIHN0cnVjdCBfX2xjX3JhaQogICAgewogICAgICB0ZW1w bGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBlbmFtZSBfSUkyPgoKIHN0YXRpYyBfSUkxCiBfX25l d2xhc3QxKF9JSTEsIF9JSTEgX19sYXN0MSwgX0lJMiwgX0lJMikKIHsgcmV0dXJuIF9fbGFz dDE7IH0KCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JST4KCiBzdGF0aWMgYm9vbAogX19j bmQyKF9JSSBfX2ZpcnN0LCBfSUkgX19sYXN0KQogeyByZXR1cm4gX19maXJzdCAhPSBfX2xh c3Q7IH0KICAgIH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfX2xjX3JhaTxyYW5kb21f YWNjZXNzX2l0ZXJhdG9yX3RhZywgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWc+CiAgICB7 CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9SQUkxLCB0eXBlbmFtZSBfUkFJMj4KCiBzdGF0 aWMgX1JBSTEKIF9fbmV3bGFzdDEoX1JBSTEgX19maXJzdDEsIF9SQUkxIF9fbGFzdDEsCiAg ICAgX1JBSTIgX19maXJzdDIsIF9SQUkyIF9fbGFzdDIpCiB7CiAgIGNvbnN0IHR5cGVuYW1l IGl0ZXJhdG9yX3RyYWl0czxfUkFJMT46OmRpZmZlcmVuY2VfdHlwZQogICAgIF9fZGlmZjEg PSBfX2xhc3QxIC0gX19maXJzdDE7CiAgIGNvbnN0IHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0 czxfUkFJMj46OmRpZmZlcmVuY2VfdHlwZQogICAgIF9fZGlmZjIgPSBfX2xhc3QyIC0gX19m aXJzdDI7CiAgIHJldHVybiBfX2RpZmYyIDwgX19kaWZmMSA/IF9fZmlyc3QxICsgX19kaWZm MiA6IF9fbGFzdDE7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfUkFJPgogc3RhdGlj IGJvb2wKIF9fY25kMihfUkFJLCBfUkFJKQogeyByZXR1cm4gdHJ1ZTsgfQogICAgfTsKCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUgX0lJMiwgdHlwZW5hbWUgX0NvbXBh cmU+CiAgIAogICAgYm9vbAogICAgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZV9pbXBsKF9J STEgX19maXJzdDEsIF9JSTEgX19sYXN0MSwKICAgICAgIF9JSTIgX19maXJzdDIsIF9JSTIg X19sYXN0MiwKICAgICAgIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0 eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0lJMT46Oml0ZXJhdG9yX2NhdGVnb3J5IF9DYXRl Z29yeTE7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9JSTI+Ojpp dGVyYXRvcl9jYXRlZ29yeSBfQ2F0ZWdvcnkyOwogICAgICB0eXBlZGVmIHN0ZDo6X19sY19y YWk8X0NhdGVnb3J5MSwgX0NhdGVnb3J5Mj4gX19yYWlfdHlwZTsKCiAgICAgIF9fbGFzdDEg PSBfX3JhaV90eXBlOjpfX25ld2xhc3QxKF9fZmlyc3QxLCBfX2xhc3QxLCBfX2ZpcnN0Miwg X19sYXN0Mik7CiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fcmFpX3R5 cGU6Ol9fY25kMihfX2ZpcnN0MiwgX19sYXN0Mik7CiAgICArK19fZmlyc3QxLCAodm9pZCkr K19fZmlyc3QyKQogewogICBpZiAoX19jb21wKF9fZmlyc3QxLCBfX2ZpcnN0MikpCiAgICAg cmV0dXJuIHRydWU7CiAgIGlmIChfX2NvbXAoX19maXJzdDIsIF9fZmlyc3QxKSkKICAgICBy ZXR1cm4gZmFsc2U7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0MSA9PSBfX2xhc3QxICYmIF9f Zmlyc3QyICE9IF9fbGFzdDI7CiAgICB9CgogIHRlbXBsYXRlPGJvb2wgX0Jvb2xUeXBlPgog ICAgc3RydWN0IF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUKICAgIHsKICAgICAgdGVtcGxh dGU8dHlwZW5hbWUgX0lJMSwgdHlwZW5hbWUgX0lJMj4KCiBzdGF0aWMgYm9vbAogX19sYyhf SUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsIF9JSTIgX19maXJzdDIsIF9JSTIgX19sYXN0 MikKIHsKICAgdXNpbmcgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfaXRlcjsKICAg cmV0dXJuIHN0ZDo6X19sZXhpY29ncmFwaGljYWxfY29tcGFyZV9pbXBsKF9fZmlyc3QxLCBf X2xhc3QxLAogICAgICAgICAgIF9fZmlyc3QyLCBfX2xhc3QyLAogICAgICAgICAgIF9faXRl cl9sZXNzX2l0ZXIoKSk7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBl bmFtZSBfSUkyPgoKIHN0YXRpYyBpbnQKIF9fM3dheShfSUkxIF9fZmlyc3QxLCBfSUkxIF9f bGFzdDEsIF9JSTIgX19maXJzdDIsIF9JSTIgX19sYXN0MikKIHsKICAgd2hpbGUgKF9fZmly c3QxICE9IF9fbGFzdDEpCiAgICAgewogICAgICAgaWYgKF9fZmlyc3QyID09IF9fbGFzdDIp CiAgcmV0dXJuICsxOwogICAgICAgaWYgKCpfX2ZpcnN0MSA8ICpfX2ZpcnN0MikKICByZXR1 cm4gLTE7CiAgICAgICBpZiAoKl9fZmlyc3QyIDwgKl9fZmlyc3QxKQogIHJldHVybiArMTsK ICAgICAgICsrX19maXJzdDE7CiAgICAgICArK19fZmlyc3QyOwogICAgIH0KICAgcmV0dXJu IGludChfX2ZpcnN0MiA9PSBfX2xhc3QyKSAtIDE7CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+ CiAgICBzdHJ1Y3QgX19sZXhpY29ncmFwaGljYWxfY29tcGFyZTx0cnVlPgogICAgewogICAg ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9VcD4KCiBzdGF0aWMgYm9vbAog X19sYyhjb25zdCBfVHAqIF9fZmlyc3QxLCBjb25zdCBfVHAqIF9fbGFzdDEsCiAgICAgIGNv bnN0IF9VcCogX19maXJzdDIsIGNvbnN0IF9VcCogX19sYXN0MikKIHsgcmV0dXJuIF9fM3dh eShfX2ZpcnN0MSwgX19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIpIDwgMDsgfQoKICAgICAg dGVtcGxhdGU8dHlwZW5hbWUgX1RwLCB0eXBlbmFtZSBfVXA+Cgogc3RhdGljIHB0cmRpZmZf dAogX18zd2F5KGNvbnN0IF9UcCogX19maXJzdDEsIGNvbnN0IF9UcCogX19sYXN0MSwKICAg ICAgICBjb25zdCBfVXAqIF9fZmlyc3QyLCBjb25zdCBfVXAqIF9fbGFzdDIpCiB7CiAgIGNv bnN0IHNpemVfdCBfX2xlbjEgPSBfX2xhc3QxIC0gX19maXJzdDE7CiAgIGNvbnN0IHNpemVf dCBfX2xlbjIgPSBfX2xhc3QyIC0gX19maXJzdDI7CiAgIGlmIChjb25zdCBzaXplX3QgX19s ZW4gPSBzdGQ6Om1pbihfX2xlbjEsIF9fbGVuMikpCiAgICAgaWYgKGludCBfX3Jlc3VsdCA9 IHN0ZDo6X19tZW1jbXAoX19maXJzdDEsIF9fZmlyc3QyLCBfX2xlbikpCiAgICAgICByZXR1 cm4gX19yZXN1bHQ7CiAgIHJldHVybiBwdHJkaWZmX3QoX19sZW4xIC0gX19sZW4yKTsKIH0K ICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTI+CiAgIAog ICAgaW5saW5lIGJvb2wKICAgIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfYXV4MShfSUkx IF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgICBfSUkyIF9fZmlyc3QyLCBfSUkyIF9f bGFzdDIpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9J STE+Ojp2YWx1ZV90eXBlIF9WYWx1ZVR5cGUxOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIGl0 ZXJhdG9yX3RyYWl0czxfSUkyPjo6dmFsdWVfdHlwZSBfVmFsdWVUeXBlMjsKICAgICAgY29u c3QgYm9vbCBfX3NpbXBsZSA9CiAoX19pc19tZW1jbXBfb3JkZXJlZF93aXRoPF9WYWx1ZVR5 cGUxLCBfVmFsdWVUeXBlMj46Ol9fdmFsdWUKICAmJiBfX2lzX3BvaW50ZXI8X0lJMT46Ol9f dmFsdWUKICAmJiBfX2lzX3BvaW50ZXI8X0lJMj46Ol9fdmFsdWUKCgoKCgoKCiAgKTsKCiAg ICAgIHJldHVybiBzdGQ6Ol9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmU8X19zaW1wbGU+Ojpf X2xjKF9fZmlyc3QxLCBfX2xhc3QxLAogICAgICAgICAgIF9fZmlyc3QyLCBfX2xhc3QyKTsK ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwgdHlwZW5hbWUgX1JlZjEsIHR5cGVu YW1lIF9QdHIxLAogICAgdHlwZW5hbWUgX1RwMj4KICAgIGJvb2wKICAgIF9fbGV4aWNvZ3Jh cGhpY2FsX2NvbXBhcmVfYXV4MSgKIHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9UcDEsIF9SZWYx LCBfUHRyMT4sCiBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAxLCBfUmVmMSwgX1B0cjE+LAog X1RwMiosIF9UcDIqKTsKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1RwMSwKICAgIHR5cGVuYW1l IF9UcDIsIHR5cGVuYW1lIF9SZWYyLCB0eXBlbmFtZSBfUHRyMj4KICAgIGJvb2wKICAgIF9f bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfYXV4MShfVHAxKiwgX1RwMSosCiBzdGQ6Ol9EZXF1 ZV9pdGVyYXRvcjxfVHAyLCBfUmVmMiwgX1B0cjI+LAogc3RkOjpfRGVxdWVfaXRlcmF0b3I8 X1RwMiwgX1JlZjIsIF9QdHIyPik7CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcDEsIHR5cGVu YW1lIF9SZWYxLCB0eXBlbmFtZSBfUHRyMSwKICAgIHR5cGVuYW1lIF9UcDIsIHR5cGVuYW1l IF9SZWYyLCB0eXBlbmFtZSBfUHRyMj4KICAgIGJvb2wKICAgIF9fbGV4aWNvZ3JhcGhpY2Fs X2NvbXBhcmVfYXV4MSgKIHN0ZDo6X0RlcXVlX2l0ZXJhdG9yPF9UcDEsIF9SZWYxLCBfUHRy MT4sCiBzdGQ6Ol9EZXF1ZV9pdGVyYXRvcjxfVHAxLCBfUmVmMSwgX1B0cjE+LAogc3RkOjpf RGVxdWVfaXRlcmF0b3I8X1RwMiwgX1JlZjIsIF9QdHIyPiwKIHN0ZDo6X0RlcXVlX2l0ZXJh dG9yPF9UcDIsIF9SZWYyLCBfUHRyMj4pOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0 eXBlbmFtZSBfSUkyPgogICAKICAgIGlubGluZSBib29sCiAgICBfX2xleGljb2dyYXBoaWNh bF9jb21wYXJlX2F1eChfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgIF9JSTIg X19maXJzdDIsIF9JSTIgX19sYXN0MikKICAgIHsKICAgICAgcmV0dXJuIHN0ZDo6X19sZXhp Y29ncmFwaGljYWxfY29tcGFyZV9hdXgxKHN0ZDo6X19uaXRlcl9iYXNlKF9fZmlyc3QxKSwK ICAgICAgIHN0ZDo6X19uaXRlcl9iYXNlKF9fbGFzdDEpLAogICAgICAgc3RkOjpfX25pdGVy X2Jhc2UoX19maXJzdDIpLAogICAgICAgc3RkOjpfX25pdGVyX2Jhc2UoX19sYXN0MikpOwog ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcjEsIHR5cGVuYW1lIF9TZXExLCB0eXBl bmFtZSBfQ2F0MSwKICAgIHR5cGVuYW1lIF9JSTI+CiAgIAogICAgYm9vbAogICAgX19sZXhp Y29ncmFwaGljYWxfY29tcGFyZV9hdXgoCiAgY29uc3QgOjpfX2dudV9kZWJ1Zzo6X1NhZmVf aXRlcmF0b3I8X0l0ZXIxLCBfU2VxMSwgX0NhdDE+JiwKICBjb25zdCA6Ol9fZ251X2RlYnVn OjpfU2FmZV9pdGVyYXRvcjxfSXRlcjEsIF9TZXExLCBfQ2F0MT4mLAogIF9JSTIsIF9JSTIp OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLAogICAgdHlwZW5hbWUgX0l0ZXIyLCB0eXBl bmFtZSBfU2VxMiwgdHlwZW5hbWUgX0NhdDI+CiAgIAogICAgYm9vbAogICAgX19sZXhpY29n cmFwaGljYWxfY29tcGFyZV9hdXgoCiAgX0lJMSwgX0lJMSwKICBjb25zdCA6Ol9fZ251X2Rl YnVnOjpfU2FmZV9pdGVyYXRvcjxfSXRlcjIsIF9TZXEyLCBfQ2F0Mj4mLAogIGNvbnN0IDo6 X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9JdGVyMiwgX1NlcTIsIF9DYXQyPiYpOwoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcjEsIHR5cGVuYW1lIF9TZXExLCB0eXBlbmFtZSBf Q2F0MSwKICAgIHR5cGVuYW1lIF9JdGVyMiwgdHlwZW5hbWUgX1NlcTIsIHR5cGVuYW1lIF9D YXQyPgogICAKICAgIGJvb2wKICAgIF9fbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmVfYXV4KAog IGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0ZXJhdG9yPF9JdGVyMSwgX1NlcTEsIF9D YXQxPiYsCiAgY29uc3QgOjpfX2dudV9kZWJ1Zzo6X1NhZmVfaXRlcmF0b3I8X0l0ZXIxLCBf U2VxMSwgX0NhdDE+JiwKICBjb25zdCA6Ol9fZ251X2RlYnVnOjpfU2FmZV9pdGVyYXRvcjxf SXRlcjIsIF9TZXEyLCBfQ2F0Mj4mLAogIGNvbnN0IDo6X19nbnVfZGVidWc6Ol9TYWZlX2l0 ZXJhdG9yPF9JdGVyMiwgX1NlcTIsIF9DYXQyPiYpOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Rm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfVHAsIHR5cGVuYW1lIF9Db21wYXJlPgogICAK ICAgIF9Gb3J3YXJkSXRlcmF0b3IKICAgIF9fbG93ZXJfYm91bmQoX0ZvcndhcmRJdGVyYXRv ciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCwKICAgIGNvbnN0IF9UcCYgX192 YWwsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVy YXRvcl90cmFpdHM8X0ZvcndhcmRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQogX0Rpc3Rh bmNlVHlwZTsKCiAgICAgIF9EaXN0YW5jZVR5cGUgX19sZW4gPSBzdGQ6OmRpc3RhbmNlKF9f Zmlyc3QsIF9fbGFzdCk7CgogICAgICB3aGlsZSAoX19sZW4gPiAwKQogewogICBfRGlzdGFu Y2VUeXBlIF9faGFsZiA9IF9fbGVuID4+IDE7CiAgIF9Gb3J3YXJkSXRlcmF0b3IgX19taWRk bGUgPSBfX2ZpcnN0OwogICBzdGQ6OmFkdmFuY2UoX19taWRkbGUsIF9faGFsZik7CiAgIGlm IChfX2NvbXAoX19taWRkbGUsIF9fdmFsKSkKICAgICB7CiAgICAgICBfX2ZpcnN0ID0gX19t aWRkbGU7CiAgICAgICArK19fZmlyc3Q7CiAgICAgICBfX2xlbiA9IF9fbGVuIC0gX19oYWxm IC0gMTsKICAgICB9CiAgIGVsc2UKICAgICBfX2xlbiA9IF9faGFsZjsKIH0KICAgICAgcmV0 dXJuIF9fZmlyc3Q7CiAgICB9CiMgMTUxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVy YXRvciwgdHlwZW5hbWUgX1RwPgogICAKICAgIGlubGluZSBfRm9yd2FyZEl0ZXJhdG9yCiAg ICBsb3dlcl9ib3VuZChfRm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9Gb3J3YXJkSXRlcmF0 b3IgX19sYXN0LAogIGNvbnN0IF9UcCYgX192YWwpCiAgICB7CgogICAgIAogICAgIAoKICAg ICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19sb3dlcl9ib3VuZChfX2ZpcnN0LCBfX2xhc3Qs IF9fdmFsLAogICAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2xlc3NfdmFsKCkpOwogICAg fQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9UcD4KICAgIGlubGluZSBfVHAKICAgIF9fbGco X1RwIF9fbikKICAgIHsKCgoKCiAgICAgIHJldHVybiAoc2l6ZW9mKCtfX24pICogOCAtIDEp CiAgICAgICAgLSAoc2l6ZW9mKCtfX24pID09IHNpemVvZihsb25nIGxvbmcpCiAgICAgID8g X19idWlsdGluX2NsemxsKCtfX24pCiAgICAgIDogKHNpemVvZigrX19uKSA9PSBzaXplb2Yo bG9uZykKICAgID8gX19idWlsdGluX2NsemwoK19fbikKICAgIDogX19idWlsdGluX2Nseigr X19uKSkpOwoKICAgIH0KCgojIDE1NTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1l IF9JSTI+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIGVxdWFsKF9JSTEgX19maXJzdDEsIF9J STEgX19sYXN0MSwgX0lJMiBfX2ZpcnN0MikKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoK ICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19lcXVhbF9hdXgoX19maXJzdDEsIF9fbGFz dDEsIF9fZmlyc3QyKTsKICAgIH0KIyAxNTkwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUl0ZXIxLCB0 eXBlbmFtZSBfSUl0ZXIyLCB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAKICAgIGlu bGluZSBib29sCiAgICBlcXVhbChfSUl0ZXIxIF9fZmlyc3QxLCBfSUl0ZXIxIF9fbGFzdDEs CiAgIF9JSXRlcjIgX19maXJzdDIsIF9CaW5hcnlQcmVkaWNhdGUgX19iaW5hcnlfcHJlZCkK ICAgIHsKCiAgICAgCiAgICAgCiAgICAgIDsKCiAgICAgIGZvciAoOyBfX2ZpcnN0MSAhPSBf X2xhc3QxOyArK19fZmlyc3QxLCAodm9pZCkrK19fZmlyc3QyKQogaWYgKCFib29sKF9fYmlu YXJ5X3ByZWQoKl9fZmlyc3QxLCAqX19maXJzdDIpKSkKICAgcmV0dXJuIGZhbHNlOwogICAg ICByZXR1cm4gdHJ1ZTsKICAgIH0KIyAxNzQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvc3RsX2FsZ29iYXNlLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSUkxLCB0eXBl bmFtZSBfSUkyPgogICAKICAgIGlubGluZSBib29sCiAgICBsZXhpY29ncmFwaGljYWxfY29t cGFyZShfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgICBfSUkyIF9fZmlyc3Qy LCBfSUkyIF9fbGFzdDIpCiAgICB7CgoKCgoKICAgICAKICAgICAKICAgICAKICAgICAKICAg ICAgOwogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX2xleGljb2dyYXBoaWNhbF9jb21w YXJlX2F1eChfX2ZpcnN0MSwgX19sYXN0MSwKICAgICAgX19maXJzdDIsIF9fbGFzdDIpOwog ICAgfQojIDE3NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfYWxnb2Jh c2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JSTEsIHR5cGVuYW1lIF9JSTIsIHR5cGVu YW1lIF9Db21wYXJlPgogICAKICAgIGlubGluZSBib29sCiAgICBsZXhpY29ncmFwaGljYWxf Y29tcGFyZShfSUkxIF9fZmlyc3QxLCBfSUkxIF9fbGFzdDEsCiAgICAgICBfSUkyIF9fZmly c3QyLCBfSUkyIF9fbGFzdDIsIF9Db21wYXJlIF9fY29tcCkKICAgIHsKCiAgICAgCiAgICAg CiAgICAgIDsKICAgICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19sZXhpY29ncmFwaGljYWxf Y29tcGFyZV9pbXBsCiAoX19maXJzdDEsIF9fbGFzdDEsIF9fZmlyc3QyLCBfX2xhc3QyLAog IF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19jb21wKSk7CiAgICB9CiMg MTg4OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFzZS5oIiAz CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJ dGVyYXRvcjIsCiAgICB0eXBlbmFtZSBfQmluYXJ5UHJlZGljYXRlPgogICAKICAgIHBhaXI8 X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVyYXRvcjI+CiAgICBfX21pc21hdGNoKF9JbnB1 dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lucHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgICAg X0lucHV0SXRlcmF0b3IyIF9fZmlyc3QyLCBfQmluYXJ5UHJlZGljYXRlIF9fYmluYXJ5X3By ZWQpCiAgICB7CiAgICAgIHdoaWxlIChfX2ZpcnN0MSAhPSBfX2xhc3QxICYmIF9fYmluYXJ5 X3ByZWQoX19maXJzdDEsIF9fZmlyc3QyKSkKIHsKICAgKytfX2ZpcnN0MTsKICAgKytfX2Zp cnN0MjsKIH0KICAgICAgcmV0dXJuIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVy YXRvcjI+KF9fZmlyc3QxLCBfX2ZpcnN0Mik7CiAgICB9CiMgMTkxNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFzZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0lucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBfSW5wdXRJdGVyYXRvcjI+CiAgIAogICAg aW5saW5lIHBhaXI8X0lucHV0SXRlcmF0b3IxLCBfSW5wdXRJdGVyYXRvcjI+CiAgICBtaXNt YXRjaChfSW5wdXRJdGVyYXRvcjEgX19maXJzdDEsIF9JbnB1dEl0ZXJhdG9yMSBfX2xhc3Qx LAogICAgICBfSW5wdXRJdGVyYXRvcjIgX19maXJzdDIpCiAgICB7CgogICAgIAogICAgIAog ICAgIAoKCiAgICAgIDsKCiAgICAgIHJldHVybiBzdGQ6Ol9fbWlzbWF0Y2goX19maXJzdDEs IF9fbGFzdDEsIF9fZmlyc3QyLAogICAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9faXRlcl9l cXVhbF90b19pdGVyKCkpOwogICAgfQojIDE5NTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9zdGxfYWxnb2Jhc2UuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0 ZXJhdG9yMSwgdHlwZW5hbWUgX0lucHV0SXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0JpbmFy eVByZWRpY2F0ZT4KICAgCiAgICBpbmxpbmUgcGFpcjxfSW5wdXRJdGVyYXRvcjEsIF9JbnB1 dEl0ZXJhdG9yMj4KICAgIG1pc21hdGNoKF9JbnB1dEl0ZXJhdG9yMSBfX2ZpcnN0MSwgX0lu cHV0SXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgIF9JbnB1dEl0ZXJhdG9yMiBfX2ZpcnN0Miwg X0JpbmFyeVByZWRpY2F0ZSBfX2JpbmFyeV9wcmVkKQogICAgewoKICAgICAKICAgICAKICAg ICAgOwoKICAgICAgcmV0dXJuIHN0ZDo6X19taXNtYXRjaChfX2ZpcnN0MSwgX19sYXN0MSwg X19maXJzdDIsCiBfX2dudV9jeHg6Ol9fb3BzOjpfX2l0ZXJfY29tcF9pdGVyKF9fYmluYXJ5 X3ByZWQpKTsKICAgIH0KIyAyMDU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv c3RsX2FsZ29iYXNlLmgiIDMKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5wdXRJdGVyYXRv ciwgdHlwZW5hbWUgX1ByZWRpY2F0ZT4KICAgCiAgICBpbmxpbmUgX0lucHV0SXRlcmF0b3IK ICAgIF9fZmluZF9pZihfSW5wdXRJdGVyYXRvciBfX2ZpcnN0LCBfSW5wdXRJdGVyYXRvciBf X2xhc3QsCiAgICAgICBfUHJlZGljYXRlIF9fcHJlZCwgaW5wdXRfaXRlcmF0b3JfdGFnKQog ICAgewogICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QgJiYgIV9fcHJlZChfX2ZpcnN0 KSkKICsrX19maXJzdDsKICAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICB9CgoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+ CiAgIAogICAgX1JhbmRvbUFjY2Vzc0l0ZXJhdG9yCiAgICBfX2ZpbmRfaWYoX1JhbmRvbUFj Y2Vzc0l0ZXJhdG9yIF9fZmlyc3QsIF9SYW5kb21BY2Nlc3NJdGVyYXRvciBfX2xhc3QsCiAg ICAgICBfUHJlZGljYXRlIF9fcHJlZCwgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcpCiAg ICB7CiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxfUmFuZG9tQWNjZXNzSXRlcmF0 b3I+OjpkaWZmZXJlbmNlX3R5cGUKIF9fdHJpcF9jb3VudCA9IChfX2xhc3QgLSBfX2ZpcnN0 KSA+PiAyOwoKICAgICAgZm9yICg7IF9fdHJpcF9jb3VudCA+IDA7IC0tX190cmlwX2NvdW50 KQogewogICBpZiAoX19wcmVkKF9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0OwogICAr K19fZmlyc3Q7CgogICBpZiAoX19wcmVkKF9fZmlyc3QpKQogICAgIHJldHVybiBfX2ZpcnN0 OwogICArK19fZmlyc3Q7CgogICBpZiAoX19wcmVkKF9fZmlyc3QpKQogICAgIHJldHVybiBf X2ZpcnN0OwogICArK19fZmlyc3Q7CgogICBpZiAoX19wcmVkKF9fZmlyc3QpKQogICAgIHJl dHVybiBfX2ZpcnN0OwogICArK19fZmlyc3Q7CiB9CgogICAgICBzd2l0Y2ggKF9fbGFzdCAt IF9fZmlyc3QpCiB7CiBjYXNlIDM6CiAgIGlmIChfX3ByZWQoX19maXJzdCkpCiAgICAgcmV0 dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsKCiBjYXNlIDI6CiAgIGlmIChfX3ByZWQoX19m aXJzdCkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJzdDsKCiBjYXNlIDE6CiAg IGlmIChfX3ByZWQoX19maXJzdCkpCiAgICAgcmV0dXJuIF9fZmlyc3Q7CiAgICsrX19maXJz dDsKCiBjYXNlIDA6CiBkZWZhdWx0OgogICByZXR1cm4gX19sYXN0OwogfQogICAgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfSXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgIAog ICAgaW5saW5lIF9JdGVyYXRvcgogICAgX19maW5kX2lmKF9JdGVyYXRvciBfX2ZpcnN0LCBf SXRlcmF0b3IgX19sYXN0LCBfUHJlZGljYXRlIF9fcHJlZCkKICAgIHsKICAgICAgcmV0dXJu IF9fZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJlZCwKICAgICAgICAgc3RkOjpfX2l0 ZXJhdG9yX2NhdGVnb3J5KF9fZmlyc3QpKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0lucHV0SXRlcmF0b3IsIHR5cGVuYW1lIF9QcmVkaWNhdGU+CiAgIAogICAgdHlwZW5hbWUg aXRlcmF0b3JfdHJhaXRzPF9JbnB1dEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCiAgICBf X2NvdW50X2lmKF9JbnB1dEl0ZXJhdG9yIF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFz dCwgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7CiAgICAgIHR5cGVuYW1lIGl0ZXJhdG9yX3Ry YWl0czxfSW5wdXRJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBfX24gPSAwOwogICAgICBm b3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmIChfX3ByZWQoX19maXJz dCkpCiAgICsrX19uOwogICAgICByZXR1cm4gX19uOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfUHJlZGljYXRlPgogICAKICAgIF9G b3J3YXJkSXRlcmF0b3IKICAgIF9fcmVtb3ZlX2lmKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJz dCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgX1ByZWRpY2F0ZSBfX3ByZWQpCiAgICB7 CiAgICAgIF9fZmlyc3QgPSBzdGQ6Ol9fZmluZF9pZihfX2ZpcnN0LCBfX2xhc3QsIF9fcHJl ZCk7CiAgICAgIGlmIChfX2ZpcnN0ID09IF9fbGFzdCkKIHJldHVybiBfX2ZpcnN0OwogICAg ICBfRm9yd2FyZEl0ZXJhdG9yIF9fcmVzdWx0ID0gX19maXJzdDsKICAgICAgKytfX2ZpcnN0 OwogICAgICBmb3IgKDsgX19maXJzdCAhPSBfX2xhc3Q7ICsrX19maXJzdCkKIGlmICghX19w cmVkKF9fZmlyc3QpKQogICB7CiAgICAgKl9fcmVzdWx0ID0gKCpfX2ZpcnN0KTsKICAgICAr K19fcmVzdWx0OwogICB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0 b3IyLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAgCiAgICBfRm9yd2FyZEl0 ZXJhdG9yMQogICAgX19zZWFyY2goX0ZvcndhcmRJdGVyYXRvcjEgX19maXJzdDEsIF9Gb3J3 YXJkSXRlcmF0b3IxIF9fbGFzdDEsCiAgICAgIF9Gb3J3YXJkSXRlcmF0b3IyIF9fZmlyc3Qy LCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgICBfQmluYXJ5UHJlZGljYXRlIF9f cHJlZGljYXRlKQogICAgewoKICAgICAgaWYgKF9fZmlyc3QxID09IF9fbGFzdDEgfHwgX19m aXJzdDIgPT0gX19sYXN0MikKIHJldHVybiBfX2ZpcnN0MTsKCgogICAgICBfRm9yd2FyZEl0 ZXJhdG9yMiBfX3AxKF9fZmlyc3QyKTsKICAgICAgaWYgKCsrX19wMSA9PSBfX2xhc3QyKQog cmV0dXJuIHN0ZDo6X19maW5kX2lmKF9fZmlyc3QxLCBfX2xhc3QxLAogIF9fZ251X2N4eDo6 X19vcHM6Ol9faXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUsIF9fZmlyc3QyKSk7CgoKICAg ICAgX0ZvcndhcmRJdGVyYXRvcjEgX19jdXJyZW50ID0gX19maXJzdDE7CgogICAgICBmb3Ig KDs7KQogewogICBfX2ZpcnN0MSA9CiAgICAgc3RkOjpfX2ZpbmRfaWYoX19maXJzdDEsIF9f bGFzdDEsCiAgX19nbnVfY3h4OjpfX29wczo6X19pdGVyX2NvbXBfaXRlcihfX3ByZWRpY2F0 ZSwgX19maXJzdDIpKTsKCiAgIGlmIChfX2ZpcnN0MSA9PSBfX2xhc3QxKQogICAgIHJldHVy biBfX2xhc3QxOwoKICAgX0ZvcndhcmRJdGVyYXRvcjIgX19wID0gX19wMTsKICAgX19jdXJy ZW50ID0gX19maXJzdDE7CiAgIGlmICgrK19fY3VycmVudCA9PSBfX2xhc3QxKQogICAgIHJl dHVybiBfX2xhc3QxOwoKICAgd2hpbGUgKF9fcHJlZGljYXRlKF9fY3VycmVudCwgX19wKSkK ICAgICB7CiAgICAgICBpZiAoKytfX3AgPT0gX19sYXN0MikKICByZXR1cm4gX19maXJzdDE7 CiAgICAgICBpZiAoKytfX2N1cnJlbnQgPT0gX19sYXN0MSkKICByZXR1cm4gX19sYXN0MTsK ICAgICB9CiAgICsrX19maXJzdDE7CiB9CiAgICAgIHJldHVybiBfX2ZpcnN0MTsKICAgIH0K IyAyMjc4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2FsZ29iYXNlLmgi IDMKCiMgMjMwMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9hbGdvYmFz ZS5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1l IF9Gb3J3YXJkSXRlcmF0b3IyLAogICAgdHlwZW5hbWUgX0JpbmFyeVByZWRpY2F0ZT4KICAg CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcjEKICAgIHNlYXJjaChfRm9yd2FyZEl0ZXJh dG9yMSBfX2ZpcnN0MSwgX0ZvcndhcmRJdGVyYXRvcjEgX19sYXN0MSwKICAgIF9Gb3J3YXJk SXRlcmF0b3IyIF9fZmlyc3QyLCBfRm9yd2FyZEl0ZXJhdG9yMiBfX2xhc3QyLAogICAgX0Jp bmFyeVByZWRpY2F0ZSBfX3ByZWRpY2F0ZSkKICAgIHsKCiAgICAgCiAgICAgCiAgICAgCgoK ICAgICAgOwogICAgICA7CgogICAgICByZXR1cm4gc3RkOjpfX3NlYXJjaChfX2ZpcnN0MSwg X19sYXN0MSwgX19maXJzdDIsIF9fbGFzdDIsCiAgICAgIF9fZ251X2N4eDo6X19vcHM6Ol9f aXRlcl9jb21wX2l0ZXIoX19wcmVkaWNhdGUpKTsKICAgIH0KCgoKfQojIDUyICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL3N0cmluZyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3JlZndyYXAuaCIgMSAzCiMgMzEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9yZWZ3cmFwLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9SRUZXUkFQX0ggMQoK ICAgICAgIAojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcmVmd3JhcC5o IiAzCiMgNTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyaW5nIiAyIDMKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcmFuZ2VfYWNjZXNzLmgiIDEgMwojIDMx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvcmFuZ2VfYWNjZXNzLmgiIDMKI2Rl ZmluZSBfR0xJQkNYWF9SQU5HRV9BQ0NFU1NfSCAxCgogICAgICAgCiMgMzQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9yYW5nZV9hY2Nlc3MuaCIgMwojIDU0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL3N0cmluZyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAxIDMKIyAzNSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiNkZWZpbmUgX0JBU0lDX1NUUklO R19IIDEKCiAgICAgICAKIyAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jh c2ljX3N0cmluZy5oIiAzCgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L2Fs bG9jX3RyYWl0cy5oIiAxIDMKIyAzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9leHQv YWxsb2NfdHJhaXRzLmgiIDMKI2RlZmluZSBfRVhUX0FMTE9DX1RSQUlUU19IIDEKCiAgICAg ICAKIyAzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9leHQvYWxsb2NfdHJhaXRzLmgi IDMKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2FsbG9jX3RyYWl0cy5o IiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2FsbG9jX3RyYWl0 cy5oIiAzCiNkZWZpbmUgX0FMTE9DX1RSQUlUU19IIDEKCiMgMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMSAzCiMgNTcgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9zdGxfY29uc3RydWN0LmgiIDMKI2RlZmluZSBfU1RMX0NP TlNUUlVDVF9IIDEKIyA3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9j b25zdHJ1Y3QuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxp dHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgMTIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX1QxLCB0eXBl bmFtZSBfVDI+CiAgICBpbmxpbmUgdm9pZAogICAgX0NvbnN0cnVjdChfVDEqIF9fcCwgY29u c3QgX1QyJiBfX3ZhbHVlKQogICAgewoKCiAgICAgIDo6bmV3KHN0YXRpY19jYXN0PHZvaWQq PihfX3ApKSBfVDEoX192YWx1ZSk7CiAgICB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVDE+ CiAgICBpbmxpbmUgdm9pZAogICAgX0NvbnN0cnVjdF9ub3ZhbHVlKF9UMSogX19wKQogICAg eyA6Om5ldygodm9pZCopX19wKSBfVDE7IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zvcndh cmRJdGVyYXRvcj4KICAgIHZvaWQKICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19m aXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QpOwoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfVHA+CiAgICBpbmxpbmUgdm9pZAogICAgX0Rlc3Ryb3koX1RwKiBfX3BvaW50ZXIpCiAg ICB7CgoKCiAgICAgIF9fcG9pbnRlci0+fl9UcCgpOwoKICAgIH0KCiAgdGVtcGxhdGU8Ym9v bD4KICAgIHN0cnVjdCBfRGVzdHJveV9hdXgKICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5h bWUgX0ZvcndhcmRJdGVyYXRvcj4KIHN0YXRpYyB2b2lkCiBfX2Rlc3Ryb3koX0ZvcndhcmRJ dGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJhdG9yIF9fbGFzdCkKIHsKICAgZm9yICg7 IF9fZmlyc3QgIT0gX19sYXN0OyArK19fZmlyc3QpCiAgICAgc3RkOjpfRGVzdHJveShzdGQ6 Ol9fYWRkcmVzc29mKCpfX2ZpcnN0KSk7CiB9CiAgICB9OwoKICB0ZW1wbGF0ZTw+CiAgICBz dHJ1Y3QgX0Rlc3Ryb3lfYXV4PHRydWU+CiAgICB7CiAgICAgIHRlbXBsYXRlPHR5cGVuYW1l IF9Gb3J3YXJkSXRlcmF0b3I+CiAgICAgICAgc3RhdGljIHZvaWQKICAgICAgICBfX2Rlc3Ry b3koX0ZvcndhcmRJdGVyYXRvciwgX0ZvcndhcmRJdGVyYXRvcikgeyB9CiAgICB9OwoKCgoK CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9Gb3J3YXJkSXRlcmF0b3I+CiAgICBpbmxpbmUgdm9p ZAogICAgX0Rlc3Ryb3koX0ZvcndhcmRJdGVyYXRvciBfX2ZpcnN0LCBfRm9yd2FyZEl0ZXJh dG9yIF9fbGFzdCkKICAgIHsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFp dHM8X0ZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUKICAgICAgICAgICAgICAgICAgICAg ICBfVmFsdWVfdHlwZTsKIyAxOTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9z dGxfY29uc3RydWN0LmgiIDMKICAgICAgc3RkOjpfRGVzdHJveV9hdXg8X19oYXNfdHJpdmlh bF9kZXN0cnVjdG9yKF9WYWx1ZV90eXBlKT46OgogX19kZXN0cm95KF9fZmlyc3QsIF9fbGFz dCk7CiAgICB9CgogIHRlbXBsYXRlPGJvb2w+CiAgICBzdHJ1Y3QgX0Rlc3Ryb3lfbl9hdXgK ICAgIHsKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h bWUgX1NpemU+CiBzdGF0aWMgX0ZvcndhcmRJdGVyYXRvcgogX19kZXN0cm95X24oX0Zvcndh cmRJdGVyYXRvciBfX2ZpcnN0LCBfU2l6ZSBfX2NvdW50KQogewogICBmb3IgKDsgX19jb3Vu dCA+IDA7ICh2b2lkKSsrX19maXJzdCwgLS1fX2NvdW50KQogICAgIHN0ZDo6X0Rlc3Ryb3ko c3RkOjpfX2FkZHJlc3NvZigqX19maXJzdCkpOwogICByZXR1cm4gX19maXJzdDsKIH0KICAg IH07CgogIHRlbXBsYXRlPD4KICAgIHN0cnVjdCBfRGVzdHJveV9uX2F1eDx0cnVlPgogICAg ewogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBf U2l6ZT4KICAgICAgICBzdGF0aWMgX0ZvcndhcmRJdGVyYXRvcgogICAgICAgIF9fZGVzdHJv eV9uKF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX1NpemUgX19jb3VudCkKIHsKICAgc3Rk OjphZHZhbmNlKF9fZmlyc3QsIF9fY291bnQpOwogICByZXR1cm4gX19maXJzdDsKIH0KICAg IH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZvcndhcmRJdGVyYXRvciwgdHlwZW5h bWUgX1NpemU+CiAgICBpbmxpbmUgX0ZvcndhcmRJdGVyYXRvcgogICAgX0Rlc3Ryb3lfbihf Rm9yd2FyZEl0ZXJhdG9yIF9fZmlyc3QsIF9TaXplIF9fY291bnQpCiAgICB7CiAgICAgIHR5 cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPF9Gb3J3YXJkSXRlcmF0b3I+Ojp2YWx1 ZV90eXBlCiAgICAgICAgICAgICAgICAgICAgICAgX1ZhbHVlX3R5cGU7CiMgMjQ0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RsX2NvbnN0cnVjdC5oIiAzCiAgICAgIHJl dHVybiBzdGQ6Ol9EZXN0cm95X25fYXV4PF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihfVmFs dWVfdHlwZSk+OjoKIF9fZGVzdHJveV9uKF9fZmlyc3QsIF9fY291bnQpOwogICAgfQojIDI2 NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0bF9jb25zdHJ1Y3QuaCIgMwoK fQojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYWxsb2NfdHJhaXRzLmgi IDIgMwojIDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYWxsb2NfdHJhaXRz LmgiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJk ZWZhdWx0IikpKQp7CgojIDg2NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Fs bG9jX3RyYWl0cy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0FsbG9jLCBib29sID0gX19p c19lbXB0eShfQWxsb2MpPgogICAgc3RydWN0IF9fYWxsb2Nfc3dhcAogICAgeyBzdGF0aWMg dm9pZCBfU19kb19pdChfQWxsb2MmLCBfQWxsb2MmKSB7IH0gfTsKCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0FsbG9jPgogICAgc3RydWN0IF9fYWxsb2Nfc3dhcDxfQWxsb2MsIGZhbHNlPgog ICAgewogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19kb19pdChfQWxsb2MmIF9fb25lLCBf QWxsb2MmIF9fdHdvKQogICAgICB7CgogaWYgKF9fb25lICE9IF9fdHdvKQogICBzd2FwKF9f b25lLCBfX3R3byk7CiAgICAgIH0KICAgIH07CiMgOTE5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvYWxsb2NfdHJhaXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRm9y d2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBfQWxsb2NhdG9yPgogICAKICAgIHZvaWQKICAgIF9E ZXN0cm95KF9Gb3J3YXJkSXRlcmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xh c3QsCiAgICAgIF9BbGxvY2F0b3ImIF9fYWxsb2MpCiAgICB7CiAgICAgIGZvciAoOyBfX2Zp cnN0ICE9IF9fbGFzdDsgKytfX2ZpcnN0KQoKIF9fYWxsb2MuZGVzdHJveShzdGQ6Ol9fYWRk cmVzc29mKCpfX2ZpcnN0KSk7CgoKCgogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0Zv cndhcmRJdGVyYXRvciwgdHlwZW5hbWUgX1RwPgogICAgX19hdHRyaWJ1dGVfXygoX19hbHdh eXNfaW5saW5lX18pKQogICAgaW5saW5lIHZvaWQKICAgIF9EZXN0cm95KF9Gb3J3YXJkSXRl cmF0b3IgX19maXJzdCwgX0ZvcndhcmRJdGVyYXRvciBfX2xhc3QsCiAgICAgIGFsbG9jYXRv cjxfVHA+JikKICAgIHsKICAgICAgc3RkOjpfRGVzdHJveShfX2ZpcnN0LCBfX2xhc3QpOwog ICAgfQoKCgoKfQojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2V4dC9hbGxvY190 cmFpdHMuaCIgMiAzCgpuYW1lc3BhY2UgX19nbnVfY3h4IF9fYXR0cmlidXRlX18gKChfX3Zp c2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgoKdGVtcGxhdGU8dHlwZW5hbWUgX0Fs bG9jLCB0eXBlbmFtZSA9IHR5cGVuYW1lIF9BbGxvYzo6dmFsdWVfdHlwZT4KICBzdHJ1Y3Qg X19hbGxvY190cmFpdHMKCgoKICB7CiAgICB0eXBlZGVmIF9BbGxvYyBhbGxvY2F0b3JfdHlw ZTsKIyAxMjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZXh0L2FsbG9jX3RyYWl0cy5o IiAzCiAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6cG9pbnRlciBwb2ludGVyOwogICAg dHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsK ICAgIHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7CiAg ICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6cmVmZXJlbmNlIHJlZmVyZW5jZTsKICAgIHR5 cGVkZWYgdHlwZW5hbWUgX0FsbG9jOjpjb25zdF9yZWZlcmVuY2UgY29uc3RfcmVmZXJlbmNl OwogICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2M6OnNpemVfdHlwZSBzaXplX3R5cGU7CiAg ICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvYzo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2Vf dHlwZTsKCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCiAgICBzdGF0 aWMgcG9pbnRlcgogICAgYWxsb2NhdGUoX0FsbG9jJiBfX2EsIHNpemVfdHlwZSBfX24pCiAg ICB7IHJldHVybiBfX2EuYWxsb2NhdGUoX19uKTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1l IF9IaW50PgogICAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCiAgICAg IHN0YXRpYyBwb2ludGVyCiAgICAgIGFsbG9jYXRlKF9BbGxvYyYgX19hLCBzaXplX3R5cGUg X19uLCBfSGludCBfX2hpbnQpCiAgICAgIHsgcmV0dXJuIF9fYS5hbGxvY2F0ZShfX24sIF9f aGludCk7IH0KCiAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCiAgICBz dGF0aWMgdm9pZCBkZWFsbG9jYXRlKF9BbGxvYyYgX19hLCBwb2ludGVyIF9fcCwgc2l6ZV90 eXBlIF9fbikKICAgIHsgX19hLmRlYWxsb2NhdGUoX19wLCBfX24pOyB9CgogICAgdGVtcGxh dGU8dHlwZW5hbWUgX1RwPgogICAgICBfX2F0dHJpYnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVf XykpCiAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChfQWxsb2MmIF9fYSwgcG9pbnRlciBf X3AsIGNvbnN0IF9UcCYgX19hcmcpCiAgICAgIHsgX19hLmNvbnN0cnVjdChfX3AsIF9fYXJn KTsgfQoKICAgIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKICAgIHN0YXRp YyB2b2lkIGRlc3Ryb3koX0FsbG9jJiBfX2EsIHBvaW50ZXIgX19wKQogICAgeyBfX2EuZGVz dHJveShfX3ApOyB9CgogICAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNfaW5saW5lX18pKQog ICAgc3RhdGljIHNpemVfdHlwZSBtYXhfc2l6ZShjb25zdCBfQWxsb2MmIF9fYSkKICAgIHsg cmV0dXJuIF9fYS5tYXhfc2l6ZSgpOyB9CgogICAgX19hdHRyaWJ1dGVfXygoX19hbHdheXNf aW5saW5lX18pKQogICAgc3RhdGljIGNvbnN0IF9BbGxvYyYgX1Nfc2VsZWN0X29uX2NvcHko Y29uc3QgX0FsbG9jJiBfX2EpIHsgcmV0dXJuIF9fYTsgfQoKICAgIF9fYXR0cmlidXRlX18o KF9fYWx3YXlzX2lubGluZV9fKSkKICAgIHN0YXRpYyB2b2lkIF9TX29uX3N3YXAoX0FsbG9j JiBfX2EsIF9BbGxvYyYgX19iKQogICAgewoKCiAgICAgIHN0ZDo6X19hbGxvY19zd2FwPF9B bGxvYz46Ol9TX2RvX2l0KF9fYSwgX19iKTsKICAgIH0KCiAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfVHA+CiAgICAgIHN0cnVjdCByZWJpbmQKICAgICAgeyB0eXBlZGVmIHR5cGVuYW1lIF9B bGxvYzo6dGVtcGxhdGUgcmViaW5kPF9UcD46Om90aGVyIG90aGVyOyB9OwoKICB9OwoKCn0K IyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAy IDMKIyA1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5o IiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMSAz CiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKICAg ICAgIAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRz IDIwMTUwNUwKCgoKCgojdW5kZWYgX19nbGliY3h4X3dhbnRfaW5jb21wbGV0ZV9jb250YWlu ZXJfZWxlbWVudHMKIyA3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5jYXVnaHRfZXhjZXB0aW9ucwojIDgy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9hbGxvY2F0b3JfdHJhaXRzX2lzX2Fsd2F5c19lcXVhbAojIDkzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19udWxsX3BvaW50ZXIKIyAxMDQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jlc3VsdF9v Zl9zZmluYWUKIyAxMjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfYXJyYXlzCiMgMTMxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19zd2FwcGFibGUKIyAxNDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ZvaWRfdAojIDE1 MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMKIyAxNjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X21hdGhfc3BlY19mdW5jcwojIDE3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29yb3V0aW5lCiMgMTg2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9leGNoYW5nZV9mdW5jdGlvbgojIDE5NyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50 ZWdlcl9zZXF1ZW5jZQojIDIwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdyYWxfY29uc3RhbnRfY2Fs bGFibGUKIyAyMTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ZpbmFsCiMgMjMwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9t YWtlX3JldmVyc2VfaXRlcmF0b3IKIyAyNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X251bGxfaXRlcmF0b3Jz CiMgMjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc2Zvcm1hdGlvbl90cmFpdF9hbGlhc2VzCiMgMjYz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF90cmFuc3BhcmVudF9vcGVyYXRvcnMKIyAyNzQgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3R1cGxlX2VsZW1lbnRfdAojIDI4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHVwbGVzX2J5X3R5cGUKIyAy OTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3JvYnVzdF9ub25tb2RpZnlpbmdfc2VxX29wcwojIDMxMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdG9fY2hhcnMKIyAzMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nocm9ub191ZGxzCiMgMzM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb21wbGV4X3VkbHMKIyAzNDUgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNf YXNzb2NpYXRpdmVfbG9va3VwCiMgMzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX3VuaXF1ZQojIDM2 NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcXVvdGVkX3N0cmluZ19pbwojIDM3OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2hh cmVkX3RpbWVkX211dGV4CiMgMzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdfdWRscwojIDQwMCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfYWRkcmVzc29mX2NvbnN0ZXhwcgojIDQxMSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYW55 CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9hcHBseQojIDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNfY29uc3QK IyA0NDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19pc19hbHdheXNfbG9ja19mcmVlCiMgNDU1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9ib29sX2NvbnN0YW50CiMgNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlCiMgNDc3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9oYXNfdW5pcXVlX29iamVjdF9yZXByZXNlbnRhdGlvbnMKIyA0ODgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2hhcmR3YXJlX2ludGVyZmVyZW5jZV9zaXplCiMgNDk5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pbnZva2UKIyA1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2FnZ3JlZ2F0ZQojIDUyMSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfaXNfaW52b2NhYmxlCiMgNTMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sYXVuZGVyCiMgNTQz ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9sb2dpY2FsX3RyYWl0cwojIDU1NCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9m cm9tX3R1cGxlCiMgNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub3RfZm4KIyA1NzYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3R5cGVfdHJhaXRfdmFyaWFibGVfdGVtcGxhdGVzCiMgNTkyICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF92YXJp YW50CiMgNjAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sY20KIyA2MTQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZAojIDYy NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZ2NkX2xjbQojIDYzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmF3X21lbW9yeV9h bGdvcml0aG1zCiMgNjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcnJheV9jb25zdGV4cHIKIyA2NjMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X25vbm1lbWJlcl9jb250YWluZXJfYWNjZXNzCiMgNjc0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9jbGFtcAojIDY4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2FtcGxlCiMgNjk2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9i b3llcl9tb29yZV9zZWFyY2hlcgojIDcxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2hyb25vCiMgNzIzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9leGVjdXRpb24KIyA3MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZpbGVzeXN0ZW0KIyA3 NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2h5cG90CiMgNzU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXBfdHJ5X2VtcGxh Y2UKIyA3NjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3BlY2lhbF9mdW5jdGlvbnMKIyA3ODMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X21lbW9yeV9yZXNvdXJjZQojIDc5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm9kZV9leHRy YWN0CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wYXJhbGxlbF9hbGdvcml0aG0KIyA4MTYgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X3Njb3BlZF9sb2NrCiMgODI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfbXV0ZXgKIyA4 MzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfd2Vha190eXBlCiMgODQ5ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9zdHJpbmdfdmlldwojIDg2MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5vcmRlcmVkX21hcF90cnlfZW1w bGFjZQojIDg3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNzdW1lX2FsaWduZWQKIyA4ODIgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2F0b21pY19mbGFnX3Rlc3QKIyA4OTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19mbG9hdAoj IDkwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2xvY2tfZnJlZV90eXBlX2FsaWFzZXMKIyA5MTUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY19yZWYKIyA5MjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY192YWx1 ZV9pbml0aWFsaXphdGlvbgojIDkzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmluZF9mcm9udAojIDk0OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc3RhcnRzX2VuZHNfd2l0aAojIDk1OSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYml0X2Nh c3QKIyA5NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2JpdG9wcwojIDk4MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm91bmRl ZF9hcnJheV90cmFpdHMKIyA5OTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbmNlcHRzCiMgMTAxMyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfb3B0aW9uYWwKIyAxMDI0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9kZXN0cm95aW5nX2RlbGV0 ZQojIDEwMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9zdHJpbmdfdmlldwojIDEwNDYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2VuZGlhbgojIDEwNTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludF9wb3cyCiMgMTA2OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfaW50ZWdlcl9jb21wYXJpc29uX2Z1bmN0aW9ucwojIDEwNzkgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2lzX2NvbnN0YW50X2V2YWx1YXRlZAojIDEwOTUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9jaGFyX3RyYWl0cwojIDExMDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2xheW91dF9jb21wYXRp YmxlCiMgMTExNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbm90aHJvd19jb252ZXJ0aWJsZQojIDExMjgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2lzX3BvaW50ZXJfaW50ZXJjb252ZXJ0aWJsZQojIDExMzkgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X21hdGhfY29uc3RhbnRzCiMgMTE1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9vYmpfdXNp bmdfYWxsb2NhdG9yCiMgMTE2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVtb3ZlX2N2cmVmCiMgMTE3MiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc291cmNlX2xvY2F0aW9uCiMgMTE4OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3Bhbgoj IDExOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NzaXplCiMgMTIxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdGhyZWVfd2F5 X2NvbXBhcmlzb24KIyAxMjIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b19hZGRyZXNzCiMgMTIzMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdG9fYXJyYXkKIyAxMjQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX2lkZW50aXR5CiMg MTI1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfdW53cmFwX3JlZgojIDEyNjUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9pdGVyYXRvcgojIDEyNzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVycG9sYXRlCiMgMTI4NyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfY29uc3RleHByX3V0aWxpdHkKIyAxMjk4ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGlm dAojIDEzMTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhbmdlcwojIDEzMjUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9udW1lcmljCiMgMTMzNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2Z1bmN0aW9uYWwK IyAxMzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfYWxnb3JpdGhtcwojIDEzNTggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2NvbnN0ZXhwcl90dXBsZQojIDEzNzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9t ZW1vcnkKIyAxMzg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfc2hhcmVkX3B0cgojIDE0MDEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2F0b21pY193YWl0CiMgMTQxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYmFycmllcgojIDE0 MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2Zvcm1hdAojIDE0MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9j b21wbGV4CiMgMTQ0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2R5bmFtaWNfYWxsb2MKIyAx NDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfc3RyaW5nCiMgMTQ3NyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf Y29uc3RleHByX3ZlY3RvcgojIDE0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VyYXNlX2lmCiMgMTQ5OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfZ2VuZXJpY191bm9yZGVyZWRfbG9va3VwCiMgMTUxMCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfanRocmVhZAojIDE1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xhdGNoCiMgMTUzMiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfbGlzdF9yZW1vdmVfcmV0dXJuX3R5cGUKIyAxNTQzICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wb2x5bW9y cGhpY19hbGxvY2F0b3IKIyAxNTU0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3ZlX2l0ZXJhdG9yX2NvbmNl cHQKIyAxNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zZW1hcGhvcmUKIyAxNTc2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z bWFydF9wdHJfZm9yX292ZXJ3cml0ZQojIDE1ODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N5bmNidWYKIyAx NTk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9ieXRlc3dhcAojIDE2MDkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhw cl9jaGFyY29udgojIDE2MjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl90eXBlaW5mbwojIDE2 MzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2V4cGVjdGVkCiMgMTY0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5k aW5nX2FsZ29yaXRobQojIDE2NTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hcnJheQoj IDE2NjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19jc3RyaW5nCiMgMTY3NSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZnJlZXN0YW5kaW5nX2V4cGVjdGVkCiMgMTY4NiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0 YW5kaW5nX29wdGlvbmFsCiMgMTY5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3N0cmlu Z192aWV3CiMgMTcwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX3ZhcmlhbnQKIyAxNzE5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9pbnZva2VfcgojIDE3MzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX3Njb3BlZF9l bnVtCiMgMTc0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVmZXJlbmNlX2Zyb21fdGVtcG9yYXJ5CiMgMTc1 MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcmFuZ2VzX3RvX2NvbnRhaW5lcgojIDE3NjMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc196aXAKIyAxNzc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1bmsKIyAxNzg1ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yYW5nZXNfc2xpZGUKIyAxNzk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1 bmtfYnkKIyAxODA3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfam9pbl93aXRoCiMgMTgxOCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfcmFuZ2VzX3JlcGVhdAojIDE4MjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19zdHJp ZGUKIyAxODQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2FydGVzaWFuX3Byb2R1Y3QKIyAxODUx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfcnZhbHVlCiMgMTg2MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFu Z2VzX2FzX2NvbnN0CiMgMTg3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2VudW1lcmF0ZQojIDE4 ODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jhbmdlc19mb2xkCiMgMTg5NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2Vz X2NvbnRhaW5zCiMgMTkwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2lvdGEKIyAxOTE3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9yYW5nZXNfZmluZF9sYXN0CiMgMTkyOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHBy X2JpdHNldAojIDE5MzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0ZGF0b21pY19oCiMgMTk1MCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfYWRhcHRvcl9pdGVyYXRvcl9wYWlyX2NvbnN0cnVjdG9yCiMgMTk2MSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZm9ybWF0dGVycwojIDE5NzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZvcndhcmRfbGlrZQojIDE5 ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2lvc19ub3JlcGxhY2UKIyAxOTk0ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3Zl X29ubHlfZnVuY3Rpb24KIyAyMDA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9vdXRfcHRyCiMgMjAxNiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfcHJpbnQKIyAyMDI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zcGFuc3RyZWFtCiMgMjAzOCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfc3RhY2t0cmFjZQojIDIwNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19jb250 YWlucwojIDIwNjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmluZ19yZXNpemVfYW5kX292ZXJ3cml0ZQoj IDIwNzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3RvX3VuZGVybHlpbmcKIyAyMDgyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF91 bnJlYWNoYWJsZQojIDIwOTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZzdHJlYW1fbmF0aXZlX2hhbmRsZQoj IDIxMDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3JhdGlvCiMgMjExNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2F0dXJhdGlv bl9hcml0aG1ldGljCiMgMjEyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fc3RyaW5nCiMgMjEzNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZ2VuZXJhdG9yCgojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsCiMgNTUgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMiAzCgoKCgoK bmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0 IikpKQp7CgpuYW1lc3BhY2UgX19jeHgxMSB7CiMgODUgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY2xhc3MgYmFzaWNf c3RyaW5nCiAgICB7CgoKCgoKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2dudV9jeHg6Ol9f YWxsb2NfdHJhaXRzPF9BbGxvYz46OnRlbXBsYXRlCiByZWJpbmQ8X0NoYXJUPjo6b3RoZXIg X0NoYXJfYWxsb2NfdHlwZTsKCgogICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19hbGxvY190 cmFpdHM8X0NoYXJfYWxsb2NfdHlwZT4gX0FsbG9jX3RyYWl0czsKCgogICAgcHVibGljOgog ICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h bWUgX1RyYWl0czo6Y2hhcl90eXBlIHZhbHVlX3R5cGU7CiAgICAgIHR5cGVkZWYgX0NoYXJf YWxsb2NfdHlwZSBhbGxvY2F0b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxs b2NfdHJhaXRzOjpzaXplX3R5cGUgc2l6ZV90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1l IF9BbGxvY190cmFpdHM6OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7CiAgICAg IHR5cGVkZWYgdHlwZW5hbWUgX0FsbG9jX3RyYWl0czo6cmVmZXJlbmNlIHJlZmVyZW5jZTsK ICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRzOjpjb25zdF9yZWZlcmVuY2Ug Y29uc3RfcmVmZXJlbmNlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9BbGxvY190cmFpdHM6 OnBvaW50ZXIgcG9pbnRlcjsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfQWxsb2NfdHJhaXRz Ojpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4 OjpfX25vcm1hbF9pdGVyYXRvcjxwb2ludGVyLCBiYXNpY19zdHJpbmc+IGl0ZXJhdG9yOwog ICAgICB0eXBlZGVmIF9fZ251X2N4eDo6X19ub3JtYWxfaXRlcmF0b3I8Y29uc3RfcG9pbnRl ciwgYmFzaWNfc3RyaW5nPgogICAgICAgY29uc3RfaXRlcmF0b3I7CiAgICAgIHR5cGVkZWYg c3RkOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPiBjb25zdF9yZXZlcnNlX2l0 ZXJhdG9yOwogICAgICB0eXBlZGVmIHN0ZDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4g cmV2ZXJzZV9pdGVyYXRvcjsKCgogICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlIG5wb3Mg PSBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKTsKCiAgICBwcm90ZWN0ZWQ6CgoKICAgICAg dHlwZWRlZiBpdGVyYXRvciBfX2NvbnN0X2l0ZXJhdG9yOwoKCgoKICAgIHByaXZhdGU6CiAg ICAgIHN0YXRpYyBwb2ludGVyCiAgICAgIF9TX2FsbG9jYXRlKF9DaGFyX2FsbG9jX3R5cGUm IF9fYSwgc2l6ZV90eXBlIF9fbikKICAgICAgewogcG9pbnRlciBfX3AgPSBfQWxsb2NfdHJh aXRzOjphbGxvY2F0ZShfX2EsIF9fbik7CiMgMTQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKIHJldHVybiBfX3A7CiAgICAgIH0KIyAxODYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg ICBzdHJ1Y3QgX0FsbG9jX2hpZGVyIDogYWxsb2NhdG9yX3R5cGUKICAgICAgewoKIF9BbGxv Y19oaWRlcihwb2ludGVyIF9fZGF0LCBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxvYygpKQog OiBhbGxvY2F0b3JfdHlwZShfX2EpLCBfTV9wKF9fZGF0KSB7IH0KIyAyMDEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogcG9pbnRlciBfTV9w OwogICAgICB9OwoKICAgICAgX0FsbG9jX2hpZGVyIF9NX2RhdGFwbHVzOwogICAgICBzaXpl X3R5cGUgX01fc3RyaW5nX2xlbmd0aDsKCiAgICAgIGVudW0geyBfU19sb2NhbF9jYXBhY2l0 eSA9IDE1IC8gc2l6ZW9mKF9DaGFyVCkgfTsKCiAgICAgIHVuaW9uCiAgICAgIHsKIF9DaGFy VCBfTV9sb2NhbF9idWZbX1NfbG9jYWxfY2FwYWNpdHkgKyAxXTsKIHNpemVfdHlwZSBfTV9h bGxvY2F0ZWRfY2FwYWNpdHk7CiAgICAgIH07CgogICAgIAogICAgICB2b2lkCiAgICAgIF9N X2RhdGEocG9pbnRlciBfX3ApCiAgICAgIHsgX01fZGF0YXBsdXMuX01fcCA9IF9fcDsgfQoK ICAgICAKICAgICAgdm9pZAogICAgICBfTV9sZW5ndGgoc2l6ZV90eXBlIF9fbGVuZ3RoKQog ICAgICB7IF9NX3N0cmluZ19sZW5ndGggPSBfX2xlbmd0aDsgfQoKICAgICAKICAgICAgcG9p bnRlcgogICAgICBfTV9kYXRhKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXMu X01fcDsgfQoKICAgICAKICAgICAgcG9pbnRlcgogICAgICBfTV9sb2NhbF9kYXRhKCkKICAg ICAgewoKCgogcmV0dXJuIHBvaW50ZXIoX01fbG9jYWxfYnVmKTsKCiAgICAgIH0KCiAgICAg CiAgICAgIGNvbnN0X3BvaW50ZXIKICAgICAgX01fbG9jYWxfZGF0YSgpIGNvbnN0CiAgICAg IHsKCgoKIHJldHVybiBjb25zdF9wb2ludGVyKF9NX2xvY2FsX2J1Zik7CgogICAgICB9Cgog ICAgIAogICAgICB2b2lkCiAgICAgIF9NX2NhcGFjaXR5KHNpemVfdHlwZSBfX2NhcGFjaXR5 KQogICAgICB7IF9NX2FsbG9jYXRlZF9jYXBhY2l0eSA9IF9fY2FwYWNpdHk7IH0KCiAgICAg CiAgICAgIHZvaWQKICAgICAgX01fc2V0X2xlbmd0aChzaXplX3R5cGUgX19uKQogICAgICB7 CiBfTV9sZW5ndGgoX19uKTsKIHRyYWl0c190eXBlOjphc3NpZ24oX01fZGF0YSgpW19fbl0s IF9DaGFyVCgpKTsKICAgICAgfQoKICAgICAKICAgICAgYm9vbAogICAgICBfTV9pc19sb2Nh bCgpIGNvbnN0CiAgICAgIHsKIGlmIChfTV9kYXRhKCkgPT0gX01fbG9jYWxfZGF0YSgpKQog ICB7CiAgICAgaWYgKF9NX3N0cmluZ19sZW5ndGggPiBfU19sb2NhbF9jYXBhY2l0eSkKICAg ICAgIF9fYnVpbHRpbl91bnJlYWNoYWJsZSgpOwogICAgIHJldHVybiB0cnVlOwogICB9CiBy ZXR1cm4gZmFsc2U7CiAgICAgIH0KCgogICAgIAogICAgICBwb2ludGVyCiAgICAgIF9NX2Ny ZWF0ZShzaXplX3R5cGUmLCBzaXplX3R5cGUpOwoKICAgICAKICAgICAgdm9pZAogICAgICBf TV9kaXNwb3NlKCkKICAgICAgewogaWYgKCFfTV9pc19sb2NhbCgpKQogICBfTV9kZXN0cm95 KF9NX2FsbG9jYXRlZF9jYXBhY2l0eSk7CiAgICAgIH0KCiAgICAgCiAgICAgIHZvaWQKICAg ICAgX01fZGVzdHJveShzaXplX3R5cGUgX19zaXplKSB0aHJvdygpCiAgICAgIHsgX0FsbG9j X3RyYWl0czo6ZGVhbGxvY2F0ZShfTV9nZXRfYWxsb2NhdG9yKCksIF9NX2RhdGEoKSwgX19z aXplICsgMSk7IH0KCgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Jbkl0ZXJhdG9yPgog ICAgICAgIHZvaWQKICAgICAgICBfTV9jb25zdHJ1Y3RfYXV4KF9Jbkl0ZXJhdG9yIF9fYmVn LCBfSW5JdGVyYXRvciBfX2VuZCwKICAgIHN0ZDo6X19mYWxzZV90eXBlKQogewogICAgICAg ICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8X0luSXRlcmF0b3I+OjppdGVy YXRvcl9jYXRlZ29yeSBfVGFnOwogICAgICAgICAgX01fY29uc3RydWN0KF9fYmVnLCBfX2Vu ZCwgX1RhZygpKTsKIH0KCgoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ludGVnZXI+CiAg ICAgICAgdm9pZAogICAgICAgIF9NX2NvbnN0cnVjdF9hdXgoX0ludGVnZXIgX19iZWcsIF9J bnRlZ2VyIF9fZW5kLCBzdGQ6Ol9fdHJ1ZV90eXBlKQogeyBfTV9jb25zdHJ1Y3RfYXV4XzIo c3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihfX2JlZyksIF9fZW5kKTsgfQoKICAgICAgdm9pZAog ICAgICBfTV9jb25zdHJ1Y3RfYXV4XzIoc2l6ZV90eXBlIF9fcmVxLCBfQ2hhclQgX19jKQog ICAgICB7IF9NX2NvbnN0cnVjdChfX3JlcSwgX19jKTsgfQoKCgogICAgICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfSW5JdGVyYXRvcj4KCiAgICAgICAgdm9pZAogICAgICAgIF9NX2NvbnN0cnVj dChfSW5JdGVyYXRvciBfX2JlZywgX0luSXRlcmF0b3IgX19lbmQsCiAgICAgICBzdGQ6Omlu cHV0X2l0ZXJhdG9yX3RhZyk7CgoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9Gd2RJdGVy YXRvcj4KCiAgICAgICAgdm9pZAogICAgICAgIF9NX2NvbnN0cnVjdChfRndkSXRlcmF0b3Ig X19iZWcsIF9Gd2RJdGVyYXRvciBfX2VuZCwKICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRv cl90YWcpOwoKICAgICAKICAgICAgdm9pZAogICAgICBfTV9jb25zdHJ1Y3Qoc2l6ZV90eXBl IF9fcmVxLCBfQ2hhclQgX19jKTsKCiAgICAgCiAgICAgIGFsbG9jYXRvcl90eXBlJgogICAg ICBfTV9nZXRfYWxsb2NhdG9yKCkKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXM7IH0KCiAg ICAgCiAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJgogICAgICBfTV9nZXRfYWxsb2NhdG9y KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YXBsdXM7IH0KCgogICAgICBfX2F0dHJp YnV0ZV9fKChfX2Fsd2F5c19pbmxpbmVfXykpCiAgICAgCiAgICAgIHZvaWQKICAgICAgX01f aW5pdF9sb2NhbF9idWYoKQogICAgICB7CgoKCgoKICAgICAgfQoKICAgICAgX19hdHRyaWJ1 dGVfXygoX19hbHdheXNfaW5saW5lX18pKQogICAgIAogICAgICBwb2ludGVyCiAgICAgIF9N X3VzZV9sb2NhbF9kYXRhKCkKICAgICAgewoKCgogcmV0dXJuIF9NX2xvY2FsX2RhdGEoKTsK ICAgICAgfQoKICAgIHByaXZhdGU6CiMgMzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIF9N X2NoZWNrKHNpemVfdHlwZSBfX3BvcywgY29uc3QgY2hhciogX19zKSBjb25zdAogICAgICB7 CiBpZiAoX19wb3MgPiB0aGlzLT5zaXplKCkpCiAgIF9fdGhyb3dfb3V0X29mX3JhbmdlX2Zt dCgoIiVzOiBfX3BvcyAod2hpY2ggaXMgJXp1KSA+ICIgInRoaXMtPnNpemUoKSAod2hpY2gg aXMgJXp1KSIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLAog ICAgICAgX19zLCBfX3BvcywgdGhpcy0+c2l6ZSgpKTsKIHJldHVybiBfX3BvczsKICAgICAg fQoKICAgICAKICAgICAgdm9pZAogICAgICBfTV9jaGVja19sZW5ndGgoc2l6ZV90eXBlIF9f bjEsIHNpemVfdHlwZSBfX24yLCBjb25zdCBjaGFyKiBfX3MpIGNvbnN0CiAgICAgIHsKIGlm ICh0aGlzLT5tYXhfc2l6ZSgpIC0gKHRoaXMtPnNpemUoKSAtIF9fbjEpIDwgX19uMikKICAg X190aHJvd19sZW5ndGhfZXJyb3IoKF9fcykpOwogICAgICB9CgoKCiAgICAgCiAgICAgIHNp emVfdHlwZQogICAgICBfTV9saW1pdChzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX29m ZikgY29uc3QKICAgICAgewogY29uc3QgYm9vbCBfX3Rlc3RvZmYgPSBfX29mZiA8IHRoaXMt PnNpemUoKSAtIF9fcG9zOwogcmV0dXJuIF9fdGVzdG9mZiA/IF9fb2ZmIDogdGhpcy0+c2l6 ZSgpIC0gX19wb3M7CiAgICAgIH0KCgogICAgICBib29sCiAgICAgIF9NX2Rpc2p1bmN0KGNv bnN0IF9DaGFyVCogX19zKSBjb25zdAogICAgICB7CiByZXR1cm4gKGxlc3M8Y29uc3QgX0No YXJUKj4oKShfX3MsIF9NX2RhdGEoKSkKICB8fCBsZXNzPGNvbnN0IF9DaGFyVCo+KCkoX01f ZGF0YSgpICsgdGhpcy0+c2l6ZSgpLCBfX3MpKTsKICAgICAgfQoKCgogICAgIAogICAgICBz dGF0aWMgdm9pZAogICAgICBfU19jb3B5KF9DaGFyVCogX19kLCBjb25zdCBfQ2hhclQqIF9f cywgc2l6ZV90eXBlIF9fbikKICAgICAgewogaWYgKF9fbiA9PSAxKQogICB0cmFpdHNfdHlw ZTo6YXNzaWduKCpfX2QsICpfX3MpOwogZWxzZQogICB0cmFpdHNfdHlwZTo6Y29weShfX2Qs IF9fcywgX19uKTsKICAgICAgfQoKICAgICAKICAgICAgc3RhdGljIHZvaWQKICAgICAgX1Nf bW92ZShfQ2hhclQqIF9fZCwgY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAg ICAgIHsKIGlmIChfX24gPT0gMSkKICAgdHJhaXRzX3R5cGU6OmFzc2lnbigqX19kLCAqX19z KTsKIGVsc2UKICAgdHJhaXRzX3R5cGU6Om1vdmUoX19kLCBfX3MsIF9fbik7CiAgICAgIH0K CiAgICAgCiAgICAgIHN0YXRpYyB2b2lkCiAgICAgIF9TX2Fzc2lnbihfQ2hhclQqIF9fZCwg c2l6ZV90eXBlIF9fbiwgX0NoYXJUIF9fYykKICAgICAgewogaWYgKF9fbiA9PSAxKQogICB0 cmFpdHNfdHlwZTo6YXNzaWduKCpfX2QsIF9fYyk7CiBlbHNlCiAgIHRyYWl0c190eXBlOjph c3NpZ24oX19kLCBfX24sIF9fYyk7CiAgICAgIH0KCgoKICAgICAgdGVtcGxhdGU8Y2xhc3Mg X0l0ZXJhdG9yPgoKICAgICAgICBzdGF0aWMgdm9pZAogICAgICAgIF9TX2NvcHlfY2hhcnMo X0NoYXJUKiBfX3AsIF9JdGVyYXRvciBfX2sxLCBfSXRlcmF0b3IgX19rMikKICAgICAgICB7 CiAgIGZvciAoOyBfX2sxICE9IF9fazI7ICsrX19rMSwgKHZvaWQpKytfX3ApCiAgICAgdHJh aXRzX3R5cGU6OmFzc2lnbigqX19wLCAqX19rMSk7CiB9CgogICAgIAogICAgICBzdGF0aWMg dm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBpdGVyYXRvciBfX2sxLCBp dGVyYXRvciBfX2syKQogICAgICB7IF9TX2NvcHlfY2hhcnMoX19wLCBfX2sxLmJhc2UoKSwg X19rMi5iYXNlKCkpOyB9CgogICAgIAogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5 X2NoYXJzKF9DaGFyVCogX19wLCBjb25zdF9pdGVyYXRvciBfX2sxLCBjb25zdF9pdGVyYXRv ciBfX2syKQogICAgIAogICAgICB7IF9TX2NvcHlfY2hhcnMoX19wLCBfX2sxLmJhc2UoKSwg X19rMi5iYXNlKCkpOyB9CgogICAgIAogICAgICBzdGF0aWMgdm9pZAogICAgICBfU19jb3B5 X2NoYXJzKF9DaGFyVCogX19wLCBfQ2hhclQqIF9fazEsIF9DaGFyVCogX19rMikKICAgICAg eyBfU19jb3B5KF9fcCwgX19rMSwgX19rMiAtIF9fazEpOyB9CgogICAgIAogICAgICBzdGF0 aWMgdm9pZAogICAgICBfU19jb3B5X2NoYXJzKF9DaGFyVCogX19wLCBjb25zdCBfQ2hhclQq IF9fazEsIGNvbnN0IF9DaGFyVCogX19rMikKICAgICAKICAgICAgeyBfU19jb3B5KF9fcCwg X19rMSwgX19rMiAtIF9fazEpOyB9CgogICAgIAogICAgICBzdGF0aWMgaW50CiAgICAgIF9T X2NvbXBhcmUoc2l6ZV90eXBlIF9fbjEsIHNpemVfdHlwZSBfX24yKQogICAgICB7CiBjb25z dCBkaWZmZXJlbmNlX3R5cGUgX19kID0gZGlmZmVyZW5jZV90eXBlKF9fbjEgLSBfX24yKTsK CiBpZiAoX19kID4gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWF4KQog ICByZXR1cm4gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWF4OwogZWxz ZSBpZiAoX19kIDwgX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWluKQog ICByZXR1cm4gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9fbWluOwogZWxz ZQogICByZXR1cm4gaW50KF9fZCk7CiAgICAgIH0KCiAgICAgCiAgICAgIHZvaWQKICAgICAg X01fYXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYpOwoKICAgICAKICAgICAgdm9pZAogICAg ICBfTV9tdXRhdGUoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19sZW4xLCBjb25zdCBf Q2hhclQqIF9fcywKICBzaXplX3R5cGUgX19sZW4yKTsKCiAgICAgCiAgICAgIHZvaWQKICAg ICAgX01fZXJhc2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKTsKCiAgICBwdWJs aWM6CgoKCgoKCgogICAgIAogICAgICBiYXNpY19zdHJpbmcoKQogICAgIAogICAgICA6IF9N X2RhdGFwbHVzKF9NX2xvY2FsX2RhdGEoKSkKICAgICAgewogX01faW5pdF9sb2NhbF9idWYo KTsKIF9NX3NldF9sZW5ndGgoMCk7CiAgICAgIH0KCgoKCiAgICAgCiAgICAgIGV4cGxpY2l0 CiAgICAgIGJhc2ljX3N0cmluZyhjb25zdCBfQWxsb2MmIF9fYSkKICAgICAgOiBfTV9kYXRh cGx1cyhfTV9sb2NhbF9kYXRhKCksIF9fYSkKICAgICAgewogX01faW5pdF9sb2NhbF9idWYo KTsKIF9NX3NldF9sZW5ndGgoMCk7CiAgICAgIH0KCgoKCgogICAgIAogICAgICBiYXNpY19z dHJpbmcoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0cikKICAgICAgOiBfTV9kYXRhcGx1cyhf TV9sb2NhbF9kYXRhKCksCiAgICAgIF9BbGxvY190cmFpdHM6Ol9TX3NlbGVjdF9vbl9jb3B5 KF9fc3RyLl9NX2dldF9hbGxvY2F0b3IoKSkpCiAgICAgIHsKIF9NX2NvbnN0cnVjdChfX3N0 ci5fTV9kYXRhKCksIF9fc3RyLl9NX2RhdGEoKSArIF9fc3RyLmxlbmd0aCgpLAogICAgICAg c3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZygpKTsKICAgICAgfQojIDU2OCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJh c2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3Ms CiAgICAgY29uc3QgX0FsbG9jJiBfX2EgPSBfQWxsb2MoKSkKICAgICAgOiBfTV9kYXRhcGx1 cyhfTV9sb2NhbF9kYXRhKCksIF9fYSkKICAgICAgewogY29uc3QgX0NoYXJUKiBfX3N0YXJ0 ID0gX19zdHIuX01fZGF0YSgpCiAgICsgX19zdHIuX01fY2hlY2soX19wb3MsICJiYXNpY19z dHJpbmc6OmJhc2ljX3N0cmluZyIpOwogX01fY29uc3RydWN0KF9fc3RhcnQsIF9fc3RhcnQg KyBfX3N0ci5fTV9saW1pdChfX3BvcywgbnBvcyksCiAgICAgICBzdGQ6OmZvcndhcmRfaXRl cmF0b3JfdGFnKCkpOwogICAgICB9CgoKCgoKCgogICAgIAogICAgICBiYXNpY19zdHJpbmco Y29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zLAogICAgIHNpemVf dHlwZSBfX24pCiAgICAgIDogX01fZGF0YXBsdXMoX01fbG9jYWxfZGF0YSgpKQogICAgICB7 CiBjb25zdCBfQ2hhclQqIF9fc3RhcnQgPSBfX3N0ci5fTV9kYXRhKCkKICAgKyBfX3N0ci5f TV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6YmFzaWNfc3RyaW5nIik7CiBfTV9jb25z dHJ1Y3QoX19zdGFydCwgX19zdGFydCArIF9fc3RyLl9NX2xpbWl0KF9fcG9zLCBfX24pLAog ICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZygpKTsKICAgICAgfQojIDYwMyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAg ICAgIGJhc2ljX3N0cmluZyhjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUg X19wb3MsCiAgICAgc2l6ZV90eXBlIF9fbiwgY29uc3QgX0FsbG9jJiBfX2EpCiAgICAgIDog X01fZGF0YXBsdXMoX01fbG9jYWxfZGF0YSgpLCBfX2EpCiAgICAgIHsKIGNvbnN0IF9DaGFy VCogX19zdGFydAogICA9IF9fc3RyLl9NX2RhdGEoKSArIF9fc3RyLl9NX2NoZWNrKF9fcG9z LCAic3RyaW5nOjpzdHJpbmciKTsKIF9NX2NvbnN0cnVjdChfX3N0YXJ0LCBfX3N0YXJ0ICsg X19zdHIuX01fbGltaXQoX19wb3MsIF9fbiksCiAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0 b3JfdGFnKCkpOwogICAgICB9CiMgNjIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IF9D aGFyVCogX19zLCBzaXplX3R5cGUgX19uLAogICAgIGNvbnN0IF9BbGxvYyYgX19hID0gX0Fs bG9jKCkpCiAgICAgIDogX01fZGF0YXBsdXMoX01fbG9jYWxfZGF0YSgpLCBfX2EpCiAgICAg IHsKCiBpZiAoX19zID09IDAgJiYgX19uID4gMCkKICAgc3RkOjpfX3Rocm93X2xvZ2ljX2Vy cm9yKCgiYmFzaWNfc3RyaW5nOiAiICJjb25zdHJ1Y3Rpb24gZnJvbSBudWxsIGlzIG5vdCB2 YWxpZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApOwogX01fY29uc3RydWN0KF9fcywgX19zICsgX19uLCBzdGQ6OmZvcndhcmRfaXRlcmF0 b3JfdGFnKCkpOwogICAgICB9CiMgNjQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgYmFzaWNfc3RyaW5nKGNvbnN0IF9D aGFyVCogX19zLCBjb25zdCBfQWxsb2MmIF9fYSA9IF9BbGxvYygpKQogICAgICA6IF9NX2Rh dGFwbHVzKF9NX2xvY2FsX2RhdGEoKSwgX19hKQogICAgICB7CgogaWYgKF9fcyA9PSAwKQog ICBzdGQ6Ol9fdGhyb3dfbG9naWNfZXJyb3IoKCJiYXNpY19zdHJpbmc6ICIgImNvbnN0cnVj dGlvbiBmcm9tIG51bGwgaXMgbm90IHZhbGlkIikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICk7CiBjb25zdCBfQ2hhclQqIF9fZW5kID0gX19z ICsgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpOwogX01fY29uc3RydWN0KF9fcywgX19lbmQs IGZvcndhcmRfaXRlcmF0b3JfdGFnKCkpOwogICAgICB9CiMgNjY4ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgYmFzaWNf c3RyaW5nKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MsIGNvbnN0IF9BbGxvYyYgX19hID0g X0FsbG9jKCkpCiAgICAgIDogX01fZGF0YXBsdXMoX01fbG9jYWxfZGF0YSgpLCBfX2EpCiAg ICAgIHsgX01fY29uc3RydWN0KF9fbiwgX19jKTsgfQojIDc2MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVu YW1lIF9JbnB1dEl0ZXJhdG9yPgoKCiAgICAgICAgYmFzaWNfc3RyaW5nKF9JbnB1dEl0ZXJh dG9yIF9fYmVnLCBfSW5wdXRJdGVyYXRvciBfX2VuZCwKICAgICAgIGNvbnN0IF9BbGxvYyYg X19hID0gX0FsbG9jKCkpCiA6IF9NX2RhdGFwbHVzKF9NX2xvY2FsX2RhdGEoKSwgX19hKSwg X01fc3RyaW5nX2xlbmd0aCgwKQogewoKCgogICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6X19p c19pbnRlZ2VyPF9JbnB1dEl0ZXJhdG9yPjo6X190eXBlIF9JbnRlZ3JhbDsKICAgX01fY29u c3RydWN0X2F1eChfX2JlZywgX19lbmQsIF9JbnRlZ3JhbCgpKTsKCiB9CiMgODA3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAg ICAgfmJhc2ljX3N0cmluZygpCiAgICAgIHsgX01fZGlzcG9zZSgpOyB9CgoKCgoKICAgICAK ICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcj0oY29uc3QgYmFzaWNfc3RyaW5n JiBfX3N0cikKICAgICAgewogcmV0dXJuIHRoaXMtPmFzc2lnbihfX3N0cik7CiAgICAgIH0K CgoKCgogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShjb25zdCBf Q2hhclQqIF9fcykKICAgICAgeyByZXR1cm4gdGhpcy0+YXNzaWduKF9fcyk7IH0KIyA4Mzgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg IAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yPShfQ2hhclQgX19jKQogICAg ICB7CiB0aGlzLT5hc3NpZ24oMSwgX19jKTsKIHJldHVybiAqdGhpczsKICAgICAgfQojIDk1 OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg ICAgCiAgICAgIGl0ZXJhdG9yCiAgICAgIGJlZ2luKCkKICAgICAgeyByZXR1cm4gaXRlcmF0 b3IoX01fZGF0YSgpKTsgfQoKCgoKCiAgICAgCiAgICAgIGNvbnN0X2l0ZXJhdG9yCiAgICAg IGJlZ2luKCkgY29uc3QKICAgICAgeyByZXR1cm4gY29uc3RfaXRlcmF0b3IoX01fZGF0YSgp KTsgfQoKCgoKCiAgICAgCiAgICAgIGl0ZXJhdG9yCiAgICAgIGVuZCgpCiAgICAgIHsgcmV0 dXJuIGl0ZXJhdG9yKF9NX2RhdGEoKSArIHRoaXMtPnNpemUoKSk7IH0KCgoKCgogICAgIAog ICAgICBjb25zdF9pdGVyYXRvcgogICAgICBlbmQoKSBjb25zdAogICAgICB7IHJldHVybiBj b25zdF9pdGVyYXRvcihfTV9kYXRhKCkgKyB0aGlzLT5zaXplKCkpOyB9CgoKCgoKCiAgICAg CiAgICAgIHJldmVyc2VfaXRlcmF0b3IKICAgICAgcmJlZ2luKCkKICAgICAgeyByZXR1cm4g cmV2ZXJzZV9pdGVyYXRvcih0aGlzLT5lbmQoKSk7IH0KCgoKCgoKICAgICAKICAgICAgY29u c3RfcmV2ZXJzZV9pdGVyYXRvcgogICAgICByYmVnaW4oKSBjb25zdAogICAgICB7IHJldHVy biBjb25zdF9yZXZlcnNlX2l0ZXJhdG9yKHRoaXMtPmVuZCgpKTsgfQoKCgoKCgogICAgIAog ICAgICByZXZlcnNlX2l0ZXJhdG9yCiAgICAgIHJlbmQoKQogICAgICB7IHJldHVybiByZXZl cnNlX2l0ZXJhdG9yKHRoaXMtPmJlZ2luKCkpOyB9CgoKCgoKCiAgICAgCiAgICAgIGNvbnN0 X3JldmVyc2VfaXRlcmF0b3IKICAgICAgcmVuZCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGNv bnN0X3JldmVyc2VfaXRlcmF0b3IodGhpcy0+YmVnaW4oKSk7IH0KIyAxMDcwICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgIHB1YmxpYzoK CgoKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIHNpemUoKSBjb25zdAogICAgICB7IHJl dHVybiBfTV9zdHJpbmdfbGVuZ3RoOyB9CgoKCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAg ICBsZW5ndGgoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9zdHJpbmdfbGVuZ3RoOyB9CgoK ICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIG1heF9zaXplKCkgY29uc3QKICAgICAgeyBy ZXR1cm4gKF9BbGxvY190cmFpdHM6Om1heF9zaXplKF9NX2dldF9hbGxvY2F0b3IoKSkgLSAx KSAvIDI7IH0KIyAxMTAyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf c3RyaW5nLmgiIDMKICAgICAKICAgICAgdm9pZAogICAgICByZXNpemUoc2l6ZV90eXBlIF9f biwgX0NoYXJUIF9fYyk7CiMgMTExNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHZvaWQKICAgICAgcmVzaXplKHNpemVf dHlwZSBfX24pCiAgICAgIHsgdGhpcy0+cmVzaXplKF9fbiwgX0NoYXJUKCkpOyB9CiMgMTE3 OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg ICAgCiAgICAgIHNpemVfdHlwZQogICAgICBjYXBhY2l0eSgpIGNvbnN0CiAgICAgIHsKIHJl dHVybiBfTV9pc19sb2NhbCgpID8gc2l6ZV90eXBlKF9TX2xvY2FsX2NhcGFjaXR5KQogICAg ICAgICAgICAgICAgICAgICAgOiBfTV9hbGxvY2F0ZWRfY2FwYWNpdHk7CiAgICAgIH0KIyAx MjAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK ICAgICAKICAgICAgdm9pZAogICAgICByZXNlcnZlKHNpemVfdHlwZSBfX3Jlc19hcmcpOwoK CgoKCgoKICAgICAKICAgICAgdm9pZAogICAgICByZXNlcnZlKCk7CgoKCgogICAgIAogICAg ICB2b2lkCiAgICAgIGNsZWFyKCkKICAgICAgeyBfTV9zZXRfbGVuZ3RoKDApOyB9CgoKCgoK ICAgICAKICAgICAgYm9vbAogICAgICBlbXB0eSgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo aXMtPnNpemUoKSA9PSAwOyB9CiMgMTI0NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGNvbnN0X3JlZmVyZW5jZQogICAg ICBvcGVyYXRvcltdIChzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICAgIHsKIDsKIHJldHVy biBfTV9kYXRhKClbX19wb3NdOwogICAgICB9CiMgMTI2MyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHJlZmVyZW5jZQog ICAgICBvcGVyYXRvcltdKHNpemVfdHlwZSBfX3BvcykKICAgICAgewoKCiA7CgogOwogcmV0 dXJuIF9NX2RhdGEoKVtfX3Bvc107CiAgICAgIH0KIyAxMjg1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgY29uc3RfcmVm ZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIHsKIGlmIChfX24g Pj0gdGhpcy0+c2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZV9mbXQoKCJiYXNpY19z dHJpbmc6OmF0OiBfX24gIiAiKHdoaWNoIGlzICV6dSkgPj0gdGhpcy0+c2l6ZSgpICIgIih3 aGljaCBpcyAlenUpIikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsCiAgICAgICBf X24sIHRoaXMtPnNpemUoKSk7CiByZXR1cm4gX01fZGF0YSgpW19fbl07CiAgICAgIH0KIyAx MzA3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK ICAgICAKICAgICAgcmVmZXJlbmNlCiAgICAgIGF0KHNpemVfdHlwZSBfX24pCiAgICAgIHsK IGlmIChfX24gPj0gc2l6ZSgpKQogICBfX3Rocm93X291dF9vZl9yYW5nZV9mbXQoKCJiYXNp Y19zdHJpbmc6OmF0OiBfX24gIiAiKHdoaWNoIGlzICV6dSkgPj0gdGhpcy0+c2l6ZSgpICIg Iih3aGljaCBpcyAlenUpIikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAsCiAgICAg ICBfX24sIHRoaXMtPnNpemUoKSk7CiByZXR1cm4gX01fZGF0YSgpW19fbl07CiAgICAgIH0K IyAxMzc1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgi IDMKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcis9KGNvbnN0IGJh c2ljX3N0cmluZyYgX19zdHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmFwcGVuZChfX3N0cik7 IH0KCgoKCgoKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBvcGVyYXRvcis9KGNv bnN0IF9DaGFyVCogX19zKQogICAgICB7IHJldHVybiB0aGlzLT5hcHBlbmQoX19zKTsgfQoK CgoKCgogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIG9wZXJhdG9yKz0oX0NoYXJU IF9fYykKICAgICAgewogdGhpcy0+cHVzaF9iYWNrKF9fYyk7CiByZXR1cm4gKnRoaXM7CiAg ICAgIH0KIyAxNDMzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3Ry aW5nLmgiIDMKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29uc3Qg YmFzaWNfc3RyaW5nJiBfX3N0cikKICAgICAgeyByZXR1cm4gdGhpcy0+YXBwZW5kKF9fc3Ry Ll9NX2RhdGEoKSwgX19zdHIuc2l6ZSgpKTsgfQojIDE0NTEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJp bmcmCiAgICAgIGFwcGVuZChjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUg X19wb3MsIHNpemVfdHlwZSBfX24gPSBucG9zKQogICAgICB7IHJldHVybiB0aGlzLT5hcHBl bmQoX19zdHIuX01fZGF0YSgpCiAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9fcG9zLCAiYmFz aWNfc3RyaW5nOjphcHBlbmQiKSwKICAgICAgIF9fc3RyLl9NX2xpbWl0KF9fcG9zLCBfX24p KTsgfQoKCgoKCgoKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBhcHBlbmQoY29u c3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24pCiAgICAgIHsKIDsKIF9NX2NoZWNrX2xl bmd0aChzaXplX3R5cGUoMCksIF9fbiwgImJhc2ljX3N0cmluZzo6YXBwZW5kIik7CiByZXR1 cm4gX01fYXBwZW5kKF9fcywgX19uKTsKICAgICAgfQoKCgoKCgogICAgIAogICAgICBiYXNp Y19zdHJpbmcmCiAgICAgIGFwcGVuZChjb25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwog Y29uc3Qgc2l6ZV90eXBlIF9fbiA9IHRyYWl0c190eXBlOjpsZW5ndGgoX19zKTsKIF9NX2No ZWNrX2xlbmd0aChzaXplX3R5cGUoMCksIF9fbiwgImJhc2ljX3N0cmluZzo6YXBwZW5kIik7 CiByZXR1cm4gX01fYXBwZW5kKF9fcywgX19uKTsKICAgICAgfQojIDE0OTYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBi YXNpY19zdHJpbmcmCiAgICAgIGFwcGVuZChzaXplX3R5cGUgX19uLCBfQ2hhclQgX19jKQog ICAgICB7IHJldHVybiBfTV9yZXBsYWNlX2F1eCh0aGlzLT5zaXplKCksIHNpemVfdHlwZSgw KSwgX19uLCBfX2MpOyB9CiMgMTUyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9y PgoKICAgICAgICBiYXNpY19zdHJpbmcmCiAgICAgICAgYXBwZW5kKF9JbnB1dEl0ZXJhdG9y IF9fZmlyc3QsIF9JbnB1dEl0ZXJhdG9yIF9fbGFzdCkKICAgICAgICB7IHJldHVybiB0aGlz LT5yZXBsYWNlKGVuZCgpLCBlbmQoKSwgX19maXJzdCwgX19sYXN0KTsgfQojIDE1NzAgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAog ICAgICB2b2lkCiAgICAgIHB1c2hfYmFjayhfQ2hhclQgX19jKQogICAgICB7CiBjb25zdCBz aXplX3R5cGUgX19zaXplID0gdGhpcy0+c2l6ZSgpOwogaWYgKF9fc2l6ZSArIDEgPiB0aGlz LT5jYXBhY2l0eSgpKQogICB0aGlzLT5fTV9tdXRhdGUoX19zaXplLCBzaXplX3R5cGUoMCks IDAsIHNpemVfdHlwZSgxKSk7CiB0cmFpdHNfdHlwZTo6YXNzaWduKHRoaXMtPl9NX2RhdGEo KVtfX3NpemVdLCBfX2MpOwogdGhpcy0+X01fc2V0X2xlbmd0aChfX3NpemUgKyAxKTsKICAg ICAgfQoKCgoKCgogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFzc2lnbihjb25z dCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgICB7CiMgMTYxOSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiB0aGlzLT5fTV9hc3NpZ24oX19z dHIpOwogcmV0dXJuICp0aGlzOwogICAgICB9CiMgMTY1NiAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJhc2ljX3N0cmlu ZyYKICAgICAgYXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIsIHNpemVfdHlwZSBf X3Bvcywgc2l6ZV90eXBlIF9fbiA9IG5wb3MpCiAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2Uo c2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9fc3RyLl9NX2RhdGEoKQogICAgICsgX19z dHIuX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OmFzc2lnbiIpLAogICAgIF9fc3Ry Ll9NX2xpbWl0KF9fcG9zLCBfX24pKTsgfQojIDE2NzMgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcm CiAgICAgIGFzc2lnbihjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgICAg ewogOwogcmV0dXJuIF9NX3JlcGxhY2Uoc2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9f cywgX19uKTsKICAgICAgfQojIDE2OTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGFz c2lnbihjb25zdCBfQ2hhclQqIF9fcykKICAgICAgewogOwogcmV0dXJuIF9NX3JlcGxhY2Uo c2l6ZV90eXBlKDApLCB0aGlzLT5zaXplKCksIF9fcywKICAgICB0cmFpdHNfdHlwZTo6bGVu Z3RoKF9fcykpOwogICAgICB9CiMgMTcwOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAg YXNzaWduKHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpCiAgICAgIHsgcmV0dXJuIF9NX3Jl cGxhY2VfYXV4KHNpemVfdHlwZSgwKSwgdGhpcy0+c2l6ZSgpLCBfX24sIF9fYyk7IH0KIyAx NzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMK ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0b3I+CiBiYXNpY19zdHJpbmcmCiBh c3NpZ24oX0lucHV0SXRlcmF0b3IgX19maXJzdCwgX0lucHV0SXRlcmF0b3IgX19sYXN0KQog eyByZXR1cm4gdGhpcy0+cmVwbGFjZShiZWdpbigpLCBlbmQoKSwgX19maXJzdCwgX19sYXN0 KTsgfQojIDE4NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJp bmcuaCIgMwogICAgICB2b2lkCiAgICAgIGluc2VydChpdGVyYXRvciBfX3AsIHNpemVfdHlw ZSBfX24sIF9DaGFyVCBfX2MpCiAgICAgIHsgdGhpcy0+cmVwbGFjZShfX3AsIF9fcCwgX19u LCBfX2MpOyB9CiMgMTg5NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2lj X3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJhdG9yPgogICAg ICAgIHZvaWQKICAgICAgICBpbnNlcnQoaXRlcmF0b3IgX19wLCBfSW5wdXRJdGVyYXRvciBf X2JlZywgX0lucHV0SXRlcmF0b3IgX19lbmQpCiAgICAgICAgeyB0aGlzLT5yZXBsYWNlKF9f cCwgX19wLCBfX2JlZywgX19lbmQpOyB9CiMgMTkzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJhc2ljX3N0cmluZyYK ICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvczEsIGNvbnN0IGJhc2ljX3N0cmluZyYgX19z dHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19wb3MxLCBzaXplX3R5cGUoMCks CiAgICAgICAgX19zdHIuX01fZGF0YSgpLCBfX3N0ci5zaXplKCkpOyB9CiMgMTk2MSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAg ICAgIGJhc2ljX3N0cmluZyYKICAgICAgaW5zZXJ0KHNpemVfdHlwZSBfX3BvczEsIGNvbnN0 IGJhc2ljX3N0cmluZyYgX19zdHIsCiAgICAgIHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlw ZSBfX24gPSBucG9zKQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zMSwgc2l6 ZV90eXBlKDApLCBfX3N0ci5fTV9kYXRhKCkKICAgICAgICArIF9fc3RyLl9NX2NoZWNrKF9f cG9zMiwgImJhc2ljX3N0cmluZzo6aW5zZXJ0IiksCiAgICAgICAgX19zdHIuX01fbGltaXQo X19wb3MyLCBfX24pKTsgfQojIDE5ODUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGlu c2VydChzaXplX3R5cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19u KQogICAgICB7IHJldHVybiB0aGlzLT5yZXBsYWNlKF9fcG9zLCBzaXplX3R5cGUoMCksIF9f cywgX19uKTsgfQojIDIwMDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNp Y19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGluc2VydChz aXplX3R5cGUgX19wb3MsIGNvbnN0IF9DaGFyVCogX19zKQogICAgICB7CiA7CiByZXR1cm4g dGhpcy0+cmVwbGFjZShfX3Bvcywgc2l6ZV90eXBlKDApLCBfX3MsCiAgICAgICAgdHJhaXRz X3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDIwMzAgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJp bmcmCiAgICAgIGluc2VydChzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24sIF9DaGFy VCBfX2MpCiAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9NX2NoZWNrKF9fcG9zLCAi YmFzaWNfc3RyaW5nOjppbnNlcnQiKSwKICAgICAgICAgc2l6ZV90eXBlKDApLCBfX24sIF9f Yyk7IH0KIyAyMDQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3Ry aW5nLmgiIDMKICAgICAKICAgICAgaXRlcmF0b3IKICAgICAgaW5zZXJ0KF9fY29uc3RfaXRl cmF0b3IgX19wLCBfQ2hhclQgX19jKQogICAgICB7CiA7CiBjb25zdCBzaXplX3R5cGUgX19w b3MgPSBfX3AgLSBiZWdpbigpOwogX01fcmVwbGFjZV9hdXgoX19wb3MsIHNpemVfdHlwZSgw KSwgc2l6ZV90eXBlKDEpLCBfX2MpOwogcmV0dXJuIGl0ZXJhdG9yKF9NX2RhdGEoKSArIF9f cG9zKTsKICAgICAgfQojIDIxMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9i YXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIGVyYXNl KHNpemVfdHlwZSBfX3BvcyA9IDAsIHNpemVfdHlwZSBfX24gPSBucG9zKQogICAgICB7CiBf TV9jaGVjayhfX3BvcywgImJhc2ljX3N0cmluZzo6ZXJhc2UiKTsKIGlmIChfX24gPT0gbnBv cykKICAgdGhpcy0+X01fc2V0X2xlbmd0aChfX3Bvcyk7CiBlbHNlIGlmIChfX24gIT0gMCkK ICAgdGhpcy0+X01fZXJhc2UoX19wb3MsIF9NX2xpbWl0KF9fcG9zLCBfX24pKTsKIHJldHVy biAqdGhpczsKICAgICAgfQojIDIxMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBpdGVyYXRvcgogICAgICBlcmFzZShf X2NvbnN0X2l0ZXJhdG9yIF9fcG9zaXRpb24pCiAgICAgIHsKCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKIGNvbnN0IHNpemVfdHlwZSBfX3BvcyA9IF9fcG9zaXRpb24gLSBiZWdp bigpOwogdGhpcy0+X01fZXJhc2UoX19wb3MsIHNpemVfdHlwZSgxKSk7CiByZXR1cm4gaXRl cmF0b3IoX01fZGF0YSgpICsgX19wb3MpOwogICAgICB9CiMgMjE1MiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGl0ZXJh dG9yCiAgICAgIGVyYXNlKF9fY29uc3RfaXRlcmF0b3IgX19maXJzdCwgX19jb25zdF9pdGVy YXRvciBfX2xhc3QpCiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg ICBjb25zdCBzaXplX3R5cGUgX19wb3MgPSBfX2ZpcnN0IC0gYmVnaW4oKTsKIGlmIChfX2xh c3QgPT0gZW5kKCkpCiAgIHRoaXMtPl9NX3NldF9sZW5ndGgoX19wb3MpOwogZWxzZQogICB0 aGlzLT5fTV9lcmFzZShfX3BvcywgX19sYXN0IC0gX19maXJzdCk7CiByZXR1cm4gaXRlcmF0 b3IodGhpcy0+X01fZGF0YSgpICsgX19wb3MpOwogICAgICB9CiMgMjE5OCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJh c2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBf X24sIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpCiAgICAgIHsgcmV0dXJuIHRoaXMtPnJl cGxhY2UoX19wb3MsIF9fbiwgX19zdHIuX01fZGF0YSgpLCBfX3N0ci5zaXplKCkpOyB9CiMg MjIyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAz CiAgICAgCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXplX3R5cGUgX19w b3MxLCBzaXplX3R5cGUgX19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAg IHNpemVfdHlwZSBfX3BvczIsIHNpemVfdHlwZSBfX24yID0gbnBvcykKICAgICAgeyByZXR1 cm4gdGhpcy0+cmVwbGFjZShfX3BvczEsIF9fbjEsIF9fc3RyLl9NX2RhdGEoKQogICAgICAg ICsgX19zdHIuX01fY2hlY2soX19wb3MyLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIiksCiAg ICAgICAgX19zdHIuX01fbGltaXQoX19wb3MyLCBfX24yKSk7IH0KIyAyMjQ3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAg YmFzaWNfc3RyaW5nJgogICAgICByZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBl IF9fbjEsIGNvbnN0IF9DaGFyVCogX19zLAogICAgICAgc2l6ZV90eXBlIF9fbjIpCiAgICAg IHsKIDsKIHJldHVybiBfTV9yZXBsYWNlKF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5n OjpyZXBsYWNlIiksCiAgICAgX01fbGltaXQoX19wb3MsIF9fbjEpLCBfX3MsIF9fbjIpOwog ICAgICB9CiMgMjI3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0 cmluZy5oIiAzCiAgICAgCiAgICAgIGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShzaXpl X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24xLCBjb25zdCBfQ2hhclQqIF9fcykKICAgICAg ewogOwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19wb3MsIF9fbjEsIF9fcywgdHJhaXRzX3R5 cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDIyOTggIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcm CiAgICAgIHJlcGxhY2Uoc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uMSwgc2l6ZV90 eXBlIF9fbjIsIF9DaGFyVCBfX2MpCiAgICAgIHsgcmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9N X2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpyZXBsYWNlIiksCiAgICAgICAgIF9NX2xp bWl0KF9fcG9zLCBfX24xKSwgX19uMiwgX19jKTsgfQojIDIzMTcgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19z dHJpbmcmCiAgICAgIHJlcGxhY2UoX19jb25zdF9pdGVyYXRvciBfX2kxLCBfX2NvbnN0X2l0 ZXJhdG9yIF9faTIsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmcmIF9fc3RyKQogICAgICB7 IHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEsIF9faTIsIF9fc3RyLl9NX2RhdGEoKSwgX19z dHIuc2l6ZSgpKTsgfQojIDIzMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9i YXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxh Y2UoX19jb25zdF9pdGVyYXRvciBfX2kxLCBfX2NvbnN0X2l0ZXJhdG9yIF9faTIsCiAgICAg ICBjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgICAgewoKICAgICAgICAg ICAgICAgICAgICAgIDsKIHJldHVybiB0aGlzLT5yZXBsYWNlKF9faTEgLSBiZWdpbigpLCBf X2kyIC0gX19pMSwgX19zLCBfX24pOwogICAgICB9CiMgMjM2MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGJhc2ljX3N0 cmluZyYKICAgICAgcmVwbGFjZShfX2NvbnN0X2l0ZXJhdG9yIF9faTEsIF9fY29uc3RfaXRl cmF0b3IgX19pMiwgY29uc3QgX0NoYXJUKiBfX3MpCiAgICAgIHsKIDsKIHJldHVybiB0aGlz LT5yZXBsYWNlKF9faTEsIF9faTIsIF9fcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsK ICAgICAgfQojIDIzODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19z dHJpbmcuaCIgMwogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoX19j b25zdF9pdGVyYXRvciBfX2kxLCBfX2NvbnN0X2l0ZXJhdG9yIF9faTIsIHNpemVfdHlwZSBf X24sCiAgICAgICBfQ2hhclQgX19jKQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAg OwogcmV0dXJuIF9NX3JlcGxhY2VfYXV4KF9faTEgLSBiZWdpbigpLCBfX2kyIC0gX19pMSwg X19uLCBfX2MpOwogICAgICB9CiMgMjQyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPGNsYXNzIF9JbnB1dEl0ZXJh dG9yPgoKCgogICAgICAgIGJhc2ljX3N0cmluZyYKCiAgICAgICAgcmVwbGFjZShpdGVyYXRv ciBfX2kxLCBpdGVyYXRvciBfX2kyLAogIF9JbnB1dEl0ZXJhdG9yIF9fazEsIF9JbnB1dEl0 ZXJhdG9yIF9fazIpCiAgICAgICAgewogIAogICAgICAgICAgICAgICAgICAgICAgICA7CiAg IDsKICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Ol9faXNfaW50ZWdlcjxfSW5wdXRJdGVyYXRv cj46Ol9fdHlwZSBfSW50ZWdyYWw7CiAgIHJldHVybiBfTV9yZXBsYWNlX2Rpc3BhdGNoKF9f aTEsIF9faTIsIF9fazEsIF9fazIsIF9JbnRlZ3JhbCgpKTsKIH0KCgoKCiAgICAgCiAgICAg IGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShfX2NvbnN0X2l0ZXJhdG9yIF9faTEsIF9f Y29uc3RfaXRlcmF0b3IgX19pMiwKICAgICAgIF9DaGFyVCogX19rMSwgX0NoYXJUKiBfX2sy KQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgOwogOwogcmV0dXJuIHRoaXMtPnJl cGxhY2UoX19pMSAtIGJlZ2luKCksIF9faTIgLSBfX2kxLAogICAgICAgIF9fazEsIF9fazIg LSBfX2sxKTsKICAgICAgfQoKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICByZXBs YWNlKF9fY29uc3RfaXRlcmF0b3IgX19pMSwgX19jb25zdF9pdGVyYXRvciBfX2kyLAogICAg ICAgY29uc3QgX0NoYXJUKiBfX2sxLCBjb25zdCBfQ2hhclQqIF9fazIpCiAgICAgIHsKCiAg ICAgICAgICAgICAgICAgICAgICA7CiA7CiByZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0g YmVnaW4oKSwgX19pMiAtIF9faTEsCiAgICAgICAgX19rMSwgX19rMiAtIF9fazEpOwogICAg ICB9CgogICAgIAogICAgICBiYXNpY19zdHJpbmcmCiAgICAgIHJlcGxhY2UoX19jb25zdF9p dGVyYXRvciBfX2kxLCBfX2NvbnN0X2l0ZXJhdG9yIF9faTIsCiAgICAgICBpdGVyYXRvciBf X2sxLCBpdGVyYXRvciBfX2syKQogICAgICB7CgogICAgICAgICAgICAgICAgICAgICAgOwog OwogcmV0dXJuIHRoaXMtPnJlcGxhY2UoX19pMSAtIGJlZ2luKCksIF9faTIgLSBfX2kxLAog ICAgICAgIF9fazEuYmFzZSgpLCBfX2syIC0gX19rMSk7CiAgICAgIH0KCiAgICAgCiAgICAg IGJhc2ljX3N0cmluZyYKICAgICAgcmVwbGFjZShfX2NvbnN0X2l0ZXJhdG9yIF9faTEsIF9f Y29uc3RfaXRlcmF0b3IgX19pMiwKICAgICAgIGNvbnN0X2l0ZXJhdG9yIF9fazEsIGNvbnN0 X2l0ZXJhdG9yIF9fazIpCiAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICA7CiA7CiBy ZXR1cm4gdGhpcy0+cmVwbGFjZShfX2kxIC0gYmVnaW4oKSwgX19pMiAtIF9faTEsCiAgICAg ICAgX19rMS5iYXNlKCksIF9fazIgLSBfX2sxKTsKICAgICAgfQojIDI1NjkgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgcHJpdmF0ZToK ICAgICAgdGVtcGxhdGU8Y2xhc3MgX0ludGVnZXI+CgogYmFzaWNfc3RyaW5nJgogX01fcmVw bGFjZV9kaXNwYXRjaChjb25zdF9pdGVyYXRvciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2ky LAogICAgICAgX0ludGVnZXIgX19uLCBfSW50ZWdlciBfX3ZhbCwgX190cnVlX3R5cGUpCiAg ICAgICAgeyByZXR1cm4gX01fcmVwbGFjZV9hdXgoX19pMSAtIGJlZ2luKCksIF9faTIgLSBf X2kxLCBfX24sIF9fdmFsKTsgfQoKICAgICAgdGVtcGxhdGU8Y2xhc3MgX0lucHV0SXRlcmF0 b3I+CgogYmFzaWNfc3RyaW5nJgogX01fcmVwbGFjZV9kaXNwYXRjaChjb25zdF9pdGVyYXRv ciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2kyLAogICAgICAgX0lucHV0SXRlcmF0b3IgX19r MSwgX0lucHV0SXRlcmF0b3IgX19rMiwKICAgICAgIF9fZmFsc2VfdHlwZSk7CgogICAgIAog ICAgICBiYXNpY19zdHJpbmcmCiAgICAgIF9NX3JlcGxhY2VfYXV4KHNpemVfdHlwZSBfX3Bv czEsIHNpemVfdHlwZSBfX24xLCBzaXplX3R5cGUgX19uMiwKICAgICAgIF9DaGFyVCBfX2Mp OwoKICAgICAgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fLCBfX25vY2xvbmVfXywgX19j b2xkX18pKSB2b2lkCiAgICAgIF9NX3JlcGxhY2VfY29sZChwb2ludGVyIF9fcCwgc2l6ZV90 eXBlIF9fbGVuMSwgY29uc3QgX0NoYXJUKiBfX3MsCiAgICAgICAgY29uc3Qgc2l6ZV90eXBl IF9fbGVuMiwgY29uc3Qgc2l6ZV90eXBlIF9faG93X211Y2gpOwoKICAgICAKICAgICAgYmFz aWNfc3RyaW5nJgogICAgICBfTV9yZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBl IF9fbGVuMSwgY29uc3QgX0NoYXJUKiBfX3MsCiAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbjIp OwoKICAgICAKICAgICAgYmFzaWNfc3RyaW5nJgogICAgICBfTV9hcHBlbmQoY29uc3QgX0No YXJUKiBfX3MsIHNpemVfdHlwZSBfX24pOwoKICAgIHB1YmxpYzoKIyAyNjE2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAg c2l6ZV90eXBlCiAgICAgIGNvcHkoX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIHNpemVf dHlwZSBfX3BvcyA9IDApIGNvbnN0OwojIDI2MjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICB2b2lkCiAgICAgIHN3YXAo YmFzaWNfc3RyaW5nJiBfX3MpIDsKIyAyNjM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgY29uc3QgX0NoYXJUKgogICAg ICBjX3N0cigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEoKTsgfQojIDI2NTEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAog ICAgICBjb25zdCBfQ2hhclQqCiAgICAgIGRhdGEoKSBjb25zdAogICAgICB7IHJldHVybiBf TV9kYXRhKCk7IH0KIyAyNjcyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFz aWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgYWxsb2NhdG9yX3R5cGUKICAgICAgZ2V0X2Fs bG9jYXRvcigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2dldF9hbGxvY2F0b3IoKTsgfQoj IDI2ODkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIg MwogICAgIAogICAgICBzaXplX3R5cGUKICAgICAgZmluZChjb25zdCBfQ2hhclQqIF9fcywg c2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAogICAgICA7CiMgMjcwNCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAg CiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs IHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgCiAgICAgIHsgcmV0dXJuIHRoaXMt PmZpbmQoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgpKTsgfQojIDI3MzggIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAog ICAgICBzaXplX3R5cGUKICAgICAgZmluZChjb25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBl IF9fcG9zID0gMCkgY29uc3QKICAgICAgewogOwogcmV0dXJuIHRoaXMtPmZpbmQoX19zLCBf X3BvcywgdHJhaXRzX3R5cGU6Omxlbmd0aChfX3MpKTsKICAgICAgfQojIDI3NTYgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAg ICBzaXplX3R5cGUKICAgICAgZmluZChfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSAw KSBjb25zdCA7CiMgMjc3MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2lj X3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChjb25zdCBi YXNpY19zdHJpbmcmIF9fc3RyLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAg IAogICAgICB7IHJldHVybiB0aGlzLT5yZmluZChfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0 ci5zaXplKCkpOyB9CiMgMjgwNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jh c2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChjb25z dCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19uKSBjb25zdAog ICAgICA7CiMgMjgyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0 cmluZy5oIiAzCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICByZmluZChjb25zdCBfQ2hh clQqIF9fcywgc2l6ZV90eXBlIF9fcG9zID0gbnBvcykgY29uc3QKICAgICAgewogOwogcmV0 dXJuIHRoaXMtPnJmaW5kKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjpsZW5ndGgoX19zKSk7 CiAgICAgIH0KIyAyODM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf c3RyaW5nLmgiIDMKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIHJmaW5kKF9DaGFyVCBf X2MsIHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0IDsKIyAyODU0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgc2l6 ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwg c2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAgICAKICAgICAgeyByZXR1cm4gdGhpcy0+ ZmluZF9maXJzdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9CiMg Mjg5MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAz CiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFy VCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgICAgIDsK IyAyOTA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgi IDMKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIGZpbmRfZmlyc3Rfb2YoY29uc3QgX0No YXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNvbnN0CiAgICAgCiAgICAgIHsKIDsK IHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X29mKF9fcywgX19wb3MsIHRyYWl0c190eXBlOjps ZW5ndGgoX19zKSk7CiAgICAgIH0KIyAyOTI3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAgIGZp bmRfZmlyc3Rfb2YoX0NoYXJUIF9fYywgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAg ICAgeyByZXR1cm4gdGhpcy0+ZmluZChfX2MsIF9fcG9zKTsgfQojIDI5NDMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBz aXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs IHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgCiAgICAgIHsgcmV0dXJuIHRo aXMtPmZpbmRfbGFzdF9vZihfX3N0ci5kYXRhKCksIF9fcG9zLCBfX3N0ci5zaXplKCkpOyB9 CiMgMjk4MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5o IiAzCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfb2YoY29uc3QgX0No YXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgICAg OwojIDI5OTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcu aCIgMwogICAgIAogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X29mKGNvbnN0IF9D aGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25zdAogICAgIAogICAgICB7 CiA7CiByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X29mKF9fcywgX19wb3MsIHRyYWl0c190eXBl OjpsZW5ndGgoX19zKSk7CiAgICAgIH0KIyAzMDE2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgc2l6ZV90eXBlCiAgICAg IGZpbmRfbGFzdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25z dAogICAgICB7IHJldHVybiB0aGlzLT5yZmluZChfX2MsIF9fcG9zKTsgfQojIDMwMzEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAog ICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgYmFzaWNfc3Ry aW5nJiBfX3N0ciwgc2l6ZV90eXBlIF9fcG9zID0gMCkgY29uc3QKICAgICAKICAgICAgeyBy ZXR1cm4gdGhpcy0+ZmluZF9maXJzdF9ub3Rfb2YoX19zdHIuZGF0YSgpLCBfX3BvcywgX19z dHIuc2l6ZSgpKTsgfQojIDMwNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9i YXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9maXJz dF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcywKICAgc2l6ZV90 eXBlIF9fbikgY29uc3QgOwojIDMwODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9m aXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3BvcyA9IDApIGNv bnN0CiAgICAgCiAgICAgIHsKIDsKIHJldHVybiB0aGlzLT5maW5kX2ZpcnN0X25vdF9vZihf X3MsIF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMzEwMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAg CiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2ZpcnN0X25vdF9vZihfQ2hhclQgX19jLCBz aXplX3R5cGUgX19wb3MgPSAwKSBjb25zdAogICAgICA7CiMgMzExOCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHNpemVf dHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIs IHNpemVfdHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgCiAgICAgIHsgcmV0dXJuIHRo aXMtPmZpbmRfbGFzdF9ub3Rfb2YoX19zdHIuZGF0YSgpLCBfX3BvcywgX19zdHIuc2l6ZSgp KTsgfQojIDMxNTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJp bmcuaCIgMwogICAgIAogICAgICBzaXplX3R5cGUKICAgICAgZmluZF9sYXN0X25vdF9vZihj b25zdCBfQ2hhclQqIF9fcywgc2l6ZV90eXBlIF9fcG9zLAogICAgICAgICBzaXplX3R5cGUg X19uKSBjb25zdCA7CiMgMzE3MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jh c2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rf bm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MgPSBucG9zKSBjb25z dAogICAgIAogICAgICB7CiA7CiByZXR1cm4gdGhpcy0+ZmluZF9sYXN0X25vdF9vZihfX3Ms IF9fcG9zLCB0cmFpdHNfdHlwZTo6bGVuZ3RoKF9fcykpOwogICAgICB9CiMgMzE4OSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAg ICAgIHNpemVfdHlwZQogICAgICBmaW5kX2xhc3Rfbm90X29mKF9DaGFyVCBfX2MsIHNpemVf dHlwZSBfX3BvcyA9IG5wb3MpIGNvbnN0CiAgICAgIDsKIyAzMjA2ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgYmFzaWNf c3RyaW5nCiAgICAgIHN1YnN0cihzaXplX3R5cGUgX19wb3MgPSAwLCBzaXplX3R5cGUgX19u ID0gbnBvcykgY29uc3QKICAgICAgeyByZXR1cm4gYmFzaWNfc3RyaW5nKCp0aGlzLAogICAg ICAgX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OnN1YnN0ciIpLCBfX24pOyB9CiMg MzIyNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAz CiAgICAgCiAgICAgIGludAogICAgICBjb21wYXJlKGNvbnN0IGJhc2ljX3N0cmluZyYgX19z dHIpIGNvbnN0CiAgICAgIHsKIGNvbnN0IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXpl KCk7CiBjb25zdCBzaXplX3R5cGUgX19vc2l6ZSA9IF9fc3RyLnNpemUoKTsKIGNvbnN0IHNp emVfdHlwZSBfX2xlbiA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CgogaW50IF9fciA9 IHRyYWl0c190eXBlOjpjb21wYXJlKF9NX2RhdGEoKSwgX19zdHIuZGF0YSgpLCBfX2xlbik7 CiBpZiAoIV9fcikKICAgX19yID0gX1NfY29tcGFyZShfX3NpemUsIF9fb3NpemUpOwogcmV0 dXJuIF9fcjsKICAgICAgfQojIDMzMjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogICAgIAogICAgICBpbnQKICAgICAgY29tcGFyZShzaXpl X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24sIGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIp IGNvbnN0CiAgICAgIHsKIF9NX2NoZWNrKF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJl Iik7CiBfX24gPSBfTV9saW1pdChfX3BvcywgX19uKTsKIGNvbnN0IHNpemVfdHlwZSBfX29z aXplID0gX19zdHIuc2l6ZSgpOwogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4o X19uLCBfX29zaXplKTsKIGludCBfX3IgPSB0cmFpdHNfdHlwZTo6Y29tcGFyZShfTV9kYXRh KCkgKyBfX3BvcywgX19zdHIuZGF0YSgpLCBfX2xlbik7CiBpZiAoIV9fcikKICAgX19yID0g X1NfY29tcGFyZShfX24sIF9fb3NpemUpOwogcmV0dXJuIF9fcjsKICAgICAgfQojIDMzNjAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogICAg IAogICAgICBpbnQKICAgICAgY29tcGFyZShzaXplX3R5cGUgX19wb3MxLCBzaXplX3R5cGUg X19uMSwgY29uc3QgYmFzaWNfc3RyaW5nJiBfX3N0ciwKICAgICAgIHNpemVfdHlwZSBfX3Bv czIsIHNpemVfdHlwZSBfX24yID0gbnBvcykgY29uc3QKICAgICAgewogX01fY2hlY2soX19w b3MxLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiBfX3N0ci5fTV9jaGVjayhfX3BvczIs ICJiYXNpY19zdHJpbmc6OmNvbXBhcmUiKTsKIF9fbjEgPSBfTV9saW1pdChfX3BvczEsIF9f bjEpOwogX19uMiA9IF9fc3RyLl9NX2xpbWl0KF9fcG9zMiwgX19uMik7CiBjb25zdCBzaXpl X3R5cGUgX19sZW4gPSBzdGQ6Om1pbihfX24xLCBfX24yKTsKIGludCBfX3IgPSB0cmFpdHNf dHlwZTo6Y29tcGFyZShfTV9kYXRhKCkgKyBfX3BvczEsCiAgICAgICAgICAgX19zdHIuZGF0 YSgpICsgX19wb3MyLCBfX2xlbik7CiBpZiAoIV9fcikKICAgX19yID0gX1NfY29tcGFyZShf X24xLCBfX24yKTsKIHJldHVybiBfX3I7CiAgICAgIH0KIyAzMzkxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICAgICAKICAgICAgaW50CiAg ICAgIGNvbXBhcmUoY29uc3QgX0NoYXJUKiBfX3MpIGNvbnN0CiAgICAgIHsKIDsKIGNvbnN0 IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiBjb25zdCBzaXplX3R5cGUgX19v c2l6ZSA9IHRyYWl0c190eXBlOjpsZW5ndGgoX19zKTsKIGNvbnN0IHNpemVfdHlwZSBfX2xl biA9IHN0ZDo6bWluKF9fc2l6ZSwgX19vc2l6ZSk7CiBpbnQgX19yID0gdHJhaXRzX3R5cGU6 OmNvbXBhcmUoX01fZGF0YSgpLCBfX3MsIF9fbGVuKTsKIGlmICghX19yKQogICBfX3IgPSBf U19jb21wYXJlKF9fc2l6ZSwgX19vc2l6ZSk7CiByZXR1cm4gX19yOwogICAgICB9CiMgMzQy NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAg ICAgCiAgICAgIGludAogICAgICBjb21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBl IF9fbjEsIGNvbnN0IF9DaGFyVCogX19zKSBjb25zdAogICAgICB7CiA7CiBfTV9jaGVjayhf X3BvcywgImJhc2ljX3N0cmluZzo6Y29tcGFyZSIpOwogX19uMSA9IF9NX2xpbWl0KF9fcG9z LCBfX24xKTsKIGNvbnN0IHNpemVfdHlwZSBfX29zaXplID0gdHJhaXRzX3R5cGU6Omxlbmd0 aChfX3MpOwogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4oX19uMSwgX19vc2l6 ZSk7CiBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19wb3Ms IF9fcywgX19sZW4pOwogaWYgKCFfX3IpCiAgIF9fciA9IF9TX2NvbXBhcmUoX19uMSwgX19v c2l6ZSk7CiByZXR1cm4gX19yOwogICAgICB9CiMgMzQ2NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgCiAgICAgIGludAogICAgICBj b21wYXJlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbjEsIGNvbnN0IF9DaGFyVCog X19zLAogICAgICAgc2l6ZV90eXBlIF9fbjIpIGNvbnN0CiAgICAgIHsKIDsKIF9NX2NoZWNr KF9fcG9zLCAiYmFzaWNfc3RyaW5nOjpjb21wYXJlIik7CiBfX24xID0gX01fbGltaXQoX19w b3MsIF9fbjEpOwogY29uc3Qgc2l6ZV90eXBlIF9fbGVuID0gc3RkOjptaW4oX19uMSwgX19u Mik7CiBpbnQgX19yID0gdHJhaXRzX3R5cGU6OmNvbXBhcmUoX01fZGF0YSgpICsgX19wb3Ms IF9fcywgX19sZW4pOwogaWYgKCFfX3IpCiAgIF9fciA9IF9TX2NvbXBhcmUoX19uMSwgX19u Mik7CiByZXR1cm4gX19yOwogICAgICB9CiMgMzUzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lLCB0 eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBiYXNpY19zdHJpbmdidWY7CiAgICB9 Owp9Cgp9CgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g KCJkZWZhdWx0IikpKQp7CgojIDM1NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9TdHI+CiAgIAogICAg aW5saW5lIF9TdHIKICAgIF9fc3RyX2NvbmNhdCh0eXBlbmFtZSBfU3RyOjp2YWx1ZV90eXBl IGNvbnN0KiBfX2xocywKICAgdHlwZW5hbWUgX1N0cjo6c2l6ZV90eXBlIF9fbGhzX2xlbiwK ICAgdHlwZW5hbWUgX1N0cjo6dmFsdWVfdHlwZSBjb25zdCogX19yaHMsCiAgIHR5cGVuYW1l IF9TdHI6OnNpemVfdHlwZSBfX3Joc19sZW4sCiAgIHR5cGVuYW1lIF9TdHI6OmFsbG9jYXRv cl90eXBlIGNvbnN0JiBfX2EpCiAgICB7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1N0cjo6 YWxsb2NhdG9yX3R5cGUgYWxsb2NhdG9yX3R5cGU7CiAgICAgIHR5cGVkZWYgX19nbnVfY3h4 OjpfX2FsbG9jX3RyYWl0czxhbGxvY2F0b3JfdHlwZT4gX0FsbG9jX3RyYWl0czsKICAgICAg X1N0ciBfX3N0cihfQWxsb2NfdHJhaXRzOjpfU19zZWxlY3Rfb25fY29weShfX2EpKTsKICAg ICAgX19zdHIucmVzZXJ2ZShfX2xoc19sZW4gKyBfX3Joc19sZW4pOwogICAgICBfX3N0ci5h cHBlbmQoX19saHMsIF9fbGhzX2xlbik7CiAgICAgIF9fc3RyLmFwcGVuZChfX3JocywgX19y aHNfbGVuKTsKICAgICAgcmV0dXJuIF9fc3RyOwogICAgfQojIDM1OTUgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAg IGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVy YXRvcisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19s aHMsCiAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+ JiBfX3JocykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh aXRzLCBfQWxsb2M+IF9TdHI7CiAgICAgIHJldHVybiBzdGQ6Ol9fc3RyX2NvbmNhdDxfU3Ry PihfX2xocy5jX3N0cigpLCBfX2xocy5zaXplKCksCiAgICAgICAgIF9fcmhzLmNfc3RyKCks IF9fcmhzLnNpemUoKSwKICAgICAgICAgX19saHMuZ2V0X2FsbG9jYXRvcigpKTsKICAgIH0K CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0 eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJhc2ljX3N0cmluZzxfQ2hhclQsX1Ry YWl0cyxfQWxsb2M+CiAgICBvcGVyYXRvcisoY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAg IGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsX1RyYWl0cyxfQWxsb2M+JiBfX3JocykKICAg IHsKICAgICAgOwogICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs IF9BbGxvYz4gX1N0cjsKICAgICAgcmV0dXJuIHN0ZDo6X19zdHJfY29uY2F0PF9TdHI+KF9f bGhzLCBfVHJhaXRzOjpsZW5ndGgoX19saHMpLAogICAgICAgICBfX3Jocy5jX3N0cigpLCBf X3Jocy5zaXplKCksCiAgICAgICAgIF9fcmhzLmdldF9hbGxvY2F0b3IoKSk7CiAgICB9CgoK CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlw ZW5hbWUgX0FsbG9jPgogICAKICAgIGlubGluZSBiYXNpY19zdHJpbmc8X0NoYXJULF9UcmFp dHMsX0FsbG9jPgogICAgb3BlcmF0b3IrKF9DaGFyVCBfX2xocywgY29uc3QgYmFzaWNfc3Ry aW5nPF9DaGFyVCxfVHJhaXRzLF9BbGxvYz4mIF9fcmhzKQogICAgewogICAgICB0eXBlZGVm IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX1N0cjsKICAgICAgcmV0 dXJuIHN0ZDo6X19zdHJfY29uY2F0PF9TdHI+KF9fYnVpbHRpbl9hZGRyZXNzb2YoX19saHMp LCAxLAogICAgICAgICBfX3Jocy5jX3N0cigpLCBfX3Jocy5zaXplKCksCiAgICAgICAgIF9f cmhzLmdldF9hbGxvY2F0b3IoKSk7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlu bGluZSBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+CiAgICBvcGVyYXRv cisoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMs CiAgICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgewogICAgICA7CiAgICAgIHR5cGVk ZWYgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiBfU3RyOwogICAgICBy ZXR1cm4gc3RkOjpfX3N0cl9jb25jYXQ8X1N0cj4oX19saHMuY19zdHIoKSwgX19saHMuc2l6 ZSgpLAogICAgICAgICBfX3JocywgX1RyYWl0czo6bGVuZ3RoKF9fcmhzKSwKICAgICAgICAg X19saHMuZ2V0X2FsbG9jYXRvcigpKTsKICAgIH0KCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICBp bmxpbmUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPgogICAgb3BlcmF0 b3IrKGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhz LCBfQ2hhclQgX19yaHMpCiAgICB7CiAgICAgIHR5cGVkZWYgYmFzaWNfc3RyaW5nPF9DaGFy VCwgX1RyYWl0cywgX0FsbG9jPiBfU3RyOwogICAgICByZXR1cm4gc3RkOjpfX3N0cl9jb25j YXQ8X1N0cj4oX19saHMuY19zdHIoKSwgX19saHMuc2l6ZSgpLAogICAgICAgICBfX2J1aWx0 aW5fYWRkcmVzc29mKF9fcmhzKSwgMSwKICAgICAgICAgX19saHMuZ2V0X2FsbG9jYXRvcigp KTsKICAgIH0KIyAzNzUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf c3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I9 PShjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywK ICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBf X3JocykKICAgCiAgICB7CiAgICAgIHJldHVybiBfX2xocy5zaXplKCkgPT0gX19yaHMuc2l6 ZSgpCiAgICAgICAgJiYgIV9UcmFpdHM6OmNvbXBhcmUoX19saHMuZGF0YSgpLCBfX3Jocy5k YXRhKCksIF9fbGhzLnNpemUoKSk7CiAgICB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1l IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlu bGluZSBib29sCiAgICBvcGVyYXRvcj09KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U cmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAg ICB7CiAgICAgIHJldHVybiBfX2xocy5zaXplKCkgPT0gX1RyYWl0czo6bGVuZ3RoKF9fcmhz KQogICAgICAgICYmICFfVHJhaXRzOjpjb21wYXJlKF9fbGhzLmRhdGEoKSwgX19yaHMsIF9f bGhzLnNpemUoKSk7CiAgICB9CiMgMzgxNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAg IG9wZXJhdG9yPT0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgICBjb25zdCBiYXNpY19z dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuIF9f cmhzID09IF9fbGhzOyB9CiMgMzgzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9w ZXJhdG9yIT0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYg X19saHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0Fs bG9jPiYgX19yaHMpCiAgIAogICAgeyByZXR1cm4gIShfX2xocyA9PSBfX3Jocyk7IH0KCgoK CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl bmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3Qg X0NoYXJUKiBfX2xocywKICAgICAgICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh aXRzLCBfQWxsb2M+JiBfX3JocykKICAgIHsgcmV0dXJuICEoX19yaHMgPT0gX19saHMpOyB9 CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg dHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvciE9KGNv bnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAogICAg ICAgIGNvbnN0IF9DaGFyVCogX19yaHMpCiAgICB7IHJldHVybiAhKF9fbGhzID09IF9fcmhz KTsgfQojIDM4NzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJp bmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywg dHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcjwoY29u c3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAg ICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3JocykK ICAgCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8IDA7IH0KCgoKCgoKCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf QWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25zdCBiYXNpY19z dHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAgICAgIGNvbnN0IF9D aGFyVCogX19yaHMpCiAgICB7IHJldHVybiBfX2xocy5jb21wYXJlKF9fcmhzKSA8IDA7IH0K CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0 eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJhdG9yPChjb25z dCBfQ2hhclQqIF9fbGhzLAogICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1Ry YWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhz KSA+IDA7IH0KIyAzOTEyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf c3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp dHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I+ KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fbGhzLAog ICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19y aHMpCiAgIAogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPiAwOyB9CgoKCgoK CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h bWUgX0FsbG9jPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4oY29uc3QgYmFz aWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19saHMsCiAgICAgICBjb25z dCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPiAw OyB9CgoKCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0 cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlubGluZSBib29sCiAgICBvcGVyYXRvcj4o Y29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQs IF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19yaHMuY29tcGFyZShf X2xocykgPCAwOyB9CiMgMzk1MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jh c2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAgIG9wZXJh dG9yPD0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19s aHMsCiAgICAgICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j PiYgX19yaHMpCiAgIAogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShfX3JocykgPD0gMDsg fQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs IHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICBpbmxpbmUgYm9vbAogICAgb3BlcmF0b3I8PShj b25zdCBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX2xocywKICAg ICAgICBjb25zdCBfQ2hhclQqIF9fcmhzKQogICAgeyByZXR1cm4gX19saHMuY29tcGFyZShf X3JocykgPD0gMDsgfQoKCgoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu YW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICBpbmxpbmUgYm9vbAogICAg b3BlcmF0b3I8PShjb25zdCBfQ2hhclQqIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0 cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAgeyByZXR1cm4gX19y aHMuY29tcGFyZShfX2xocykgPj0gMDsgfQojIDM5OTQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIGlubGluZSBi b29sCiAgICBvcGVyYXRvcj49KGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs IF9BbGxvYz4mIF9fbGhzLAogICAgICAgIGNvbnN0IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9U cmFpdHMsIF9BbGxvYz4mIF9fcmhzKQogICAKICAgIHsgcmV0dXJuIF9fbGhzLmNvbXBhcmUo X19yaHMpID49IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBl bmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5saW5lIGJvb2wKICAg IG9wZXJhdG9yPj0oY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j PiYgX19saHMsCiAgICAgICAgY29uc3QgX0NoYXJUKiBfX3JocykKICAgIHsgcmV0dXJuIF9f bGhzLmNvbXBhcmUoX19yaHMpID49IDA7IH0KCgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgaW5s aW5lIGJvb2wKICAgIG9wZXJhdG9yPj0oY29uc3QgX0NoYXJUKiBfX2xocywKICAgICAgY29u c3QgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19yaHMpCiAgICB7 IHJldHVybiBfX3Jocy5jb21wYXJlKF9fbGhzKSA8PSAwOyB9CiMgNDAzNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAog ICAgaW5saW5lIHZvaWQKICAgIHN3YXAoYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywg X0FsbG9jPiYgX19saHMsCiAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9j PiYgX19yaHMpCiAgIAogICAgeyBfX2xocy5zd2FwKF9fcmhzKTsgfQojIDQwNTcgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNp Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faXMsCiAgICAgICAgYmFzaWNfc3RyaW5n PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIpOwoKICB0ZW1wbGF0ZTw+CiAgICBi YXNpY19pc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNoYXI+ JiBfX2lzLCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fc3RyKTsKIyA0MDc1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLmgiIDMKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIGlu bGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJh c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vcywKICAgICAgICBjb25zdCBiYXNp Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0cikKICAgIHsKCgogICAg ICByZXR1cm4gX19vc3RyZWFtX2luc2VydChfX29zLCBfX3N0ci5kYXRhKCksIF9fc3RyLnNp emUoKSk7CiAgICB9CiMgNDA5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jh c2ljX3N0cmluZy5oIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry YWl0cz4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19p cywKICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3N0ciwg X0NoYXJUIF9fZGVsaW0pOwojIDQxMTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgaW5saW5lIGJhc2ljX2lzdHJlYW08 X0NoYXJULCBfVHJhaXRzPiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U cmFpdHM+JiBfX2lzLAogICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxv Yz4mIF9fc3RyKQogICAgeyByZXR1cm4gc3RkOjpnZXRsaW5lKF9faXMsIF9fc3RyLCBfX2lz LndpZGVuKCdcbicpKTsgfQojIDQxMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19zdHJpbmcuaCIgMwogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08Y2hh cj4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08Y2hhcj4mIF9faW4sIGJhc2ljX3N0cmlu ZzxjaGFyPiYgX19zdHIsCiAgICAgY2hhciBfX2RlbGltKTsKCgogIHRlbXBsYXRlPD4KICAg IGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBnZXRsaW5lKGJhc2ljX2lzdHJlYW08d2No YXJfdD4mIF9faW4sIGJhc2ljX3N0cmluZzx3Y2hhcl90PiYgX19zdHIsCiAgICAgd2NoYXJf dCBfX2RlbGltKTsKCgoKfQojIDU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmlu ZyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmlu Zy50Y2MiIDEgMwojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf c3RyaW5nLnRjYyIgMwojZGVmaW5lIF9CQVNJQ19TVFJJTkdfVENDIDEKCiAgICAgICAKIyA0 MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmluZy50Y2MiIDMK CgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZh dWx0IikpKQp7CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAgY29uc3QgdHlwZW5hbWUgYmFzaWNfc3RyaW5n PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8 X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjpucG9zOwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICB2b2lk CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHN3YXAo YmFzaWNfc3RyaW5nJiBfX3MpCiAgICB7CiAgICAgIGlmICh0aGlzID09IHN0ZDo6X19hZGRy ZXNzb2YoX19zKSkKIHJldHVybjsKCiAgICAgIF9BbGxvY190cmFpdHM6Ol9TX29uX3N3YXAo X01fZ2V0X2FsbG9jYXRvcigpLCBfX3MuX01fZ2V0X2FsbG9jYXRvcigpKTsKCiAgICAgIGlm IChfTV9pc19sb2NhbCgpKQogaWYgKF9fcy5fTV9pc19sb2NhbCgpKQogICB7CiAgICAgaWYg KGxlbmd0aCgpICYmIF9fcy5sZW5ndGgoKSkKICAgICAgIHsKICBfQ2hhclQgX190bXBfZGF0 YVtfU19sb2NhbF9jYXBhY2l0eSArIDFdOwogIHRyYWl0c190eXBlOjpjb3B5KF9fdG1wX2Rh dGEsIF9fcy5fTV9sb2NhbF9idWYsCiAgICAgIF9fcy5sZW5ndGgoKSArIDEpOwogIHRyYWl0 c190eXBlOjpjb3B5KF9fcy5fTV9sb2NhbF9idWYsIF9NX2xvY2FsX2J1ZiwKICAgICAgbGVu Z3RoKCkgKyAxKTsKICB0cmFpdHNfdHlwZTo6Y29weShfTV9sb2NhbF9idWYsIF9fdG1wX2Rh dGEsCiAgICAgIF9fcy5sZW5ndGgoKSArIDEpOwogICAgICAgfQogICAgIGVsc2UgaWYgKF9f cy5sZW5ndGgoKSkKICAgICAgIHsKICBfTV9pbml0X2xvY2FsX2J1ZigpOwogIHRyYWl0c190 eXBlOjpjb3B5KF9NX2xvY2FsX2J1ZiwgX19zLl9NX2xvY2FsX2J1ZiwKICAgICAgX19zLmxl bmd0aCgpICsgMSk7CiAgX01fbGVuZ3RoKF9fcy5sZW5ndGgoKSk7CiAgX19zLl9NX3NldF9s ZW5ndGgoMCk7CiAgcmV0dXJuOwogICAgICAgfQogICAgIGVsc2UgaWYgKGxlbmd0aCgpKQog ICAgICAgewogIF9fcy5fTV9pbml0X2xvY2FsX2J1ZigpOwogIHRyYWl0c190eXBlOjpjb3B5 KF9fcy5fTV9sb2NhbF9idWYsIF9NX2xvY2FsX2J1ZiwKICAgICAgbGVuZ3RoKCkgKyAxKTsK ICBfX3MuX01fbGVuZ3RoKGxlbmd0aCgpKTsKICBfTV9zZXRfbGVuZ3RoKDApOwogIHJldHVy bjsKICAgICAgIH0KICAgfQogZWxzZQogICB7CiAgICAgY29uc3Qgc2l6ZV90eXBlIF9fdG1w X2NhcGFjaXR5ID0gX19zLl9NX2FsbG9jYXRlZF9jYXBhY2l0eTsKICAgICBfX3MuX01faW5p dF9sb2NhbF9idWYoKTsKICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3MuX01fbG9jYWxfYnVm LCBfTV9sb2NhbF9idWYsCiAgICAgICAgIGxlbmd0aCgpICsgMSk7CiAgICAgX01fZGF0YShf X3MuX01fZGF0YSgpKTsKICAgICBfX3MuX01fZGF0YShfX3MuX01fbG9jYWxfYnVmKTsKICAg ICBfTV9jYXBhY2l0eShfX3RtcF9jYXBhY2l0eSk7CiAgIH0KICAgICAgZWxzZQogewogICBj b25zdCBzaXplX3R5cGUgX190bXBfY2FwYWNpdHkgPSBfTV9hbGxvY2F0ZWRfY2FwYWNpdHk7 CiAgIGlmIChfX3MuX01faXNfbG9jYWwoKSkKICAgICB7CiAgICAgICBfTV9pbml0X2xvY2Fs X2J1ZigpOwogICAgICAgdHJhaXRzX3R5cGU6OmNvcHkoX01fbG9jYWxfYnVmLCBfX3MuX01f bG9jYWxfYnVmLAogICAgX19zLmxlbmd0aCgpICsgMSk7CiAgICAgICBfX3MuX01fZGF0YShf TV9kYXRhKCkpOwogICAgICAgX01fZGF0YShfTV9sb2NhbF9idWYpOwogICAgIH0KICAgZWxz ZQogICAgIHsKICAgICAgIHBvaW50ZXIgX190bXBfcHRyID0gX01fZGF0YSgpOwogICAgICAg X01fZGF0YShfX3MuX01fZGF0YSgpKTsKICAgICAgIF9fcy5fTV9kYXRhKF9fdG1wX3B0cik7 CiAgICAgICBfTV9jYXBhY2l0eShfX3MuX01fYWxsb2NhdGVkX2NhcGFjaXR5KTsKICAgICB9 CiAgIF9fcy5fTV9jYXBhY2l0eShfX3RtcF9jYXBhY2l0eSk7CiB9CgogICAgICBjb25zdCBz aXplX3R5cGUgX190bXBfbGVuZ3RoID0gbGVuZ3RoKCk7CiAgICAgIF9NX2xlbmd0aChfX3Mu bGVuZ3RoKCkpOwogICAgICBfX3MuX01fbGVuZ3RoKF9fdG1wX2xlbmd0aCk7CiAgICB9Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg X0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMs IF9BbGxvYz46OnBvaW50ZXIKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9B bGxvYz46OgogICAgX01fY3JlYXRlKHNpemVfdHlwZSYgX19jYXBhY2l0eSwgc2l6ZV90eXBl IF9fb2xkX2NhcGFjaXR5KQogICAgewoKCiAgICAgIGlmIChfX2NhcGFjaXR5ID4gbWF4X3Np emUoKSkKIHN0ZDo6X190aHJvd19sZW5ndGhfZXJyb3IoKCJiYXNpY19zdHJpbmc6Ol9NX2Ny ZWF0ZSIpKTsKCgoKCiAgICAgIGlmIChfX2NhcGFjaXR5ID4gX19vbGRfY2FwYWNpdHkgJiYg X19jYXBhY2l0eSA8IDIgKiBfX29sZF9jYXBhY2l0eSkKIHsKICAgX19jYXBhY2l0eSA9IDIg KiBfX29sZF9jYXBhY2l0eTsKCiAgIGlmIChfX2NhcGFjaXR5ID4gbWF4X3NpemUoKSkKICAg ICBfX2NhcGFjaXR5ID0gbWF4X3NpemUoKTsKIH0KCgoKICAgICAgcmV0dXJuIF9TX2FsbG9j YXRlKF9NX2dldF9hbGxvY2F0b3IoKSwgX19jYXBhY2l0eSArIDEpOwogICAgfQoKCgoKCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBf QWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfSW5JdGVyYXRvcj4KICAgICAKICAgICAg dm9pZAogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAg ICAgX01fY29uc3RydWN0KF9Jbkl0ZXJhdG9yIF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwK ICAgICBzdGQ6OmlucHV0X2l0ZXJhdG9yX3RhZykKICAgICAgewogc2l6ZV90eXBlIF9fbGVu ID0gMDsKIHNpemVfdHlwZSBfX2NhcGFjaXR5ID0gc2l6ZV90eXBlKF9TX2xvY2FsX2NhcGFj aXR5KTsKCiBfTV9pbml0X2xvY2FsX2J1ZigpOwoKIHdoaWxlIChfX2JlZyAhPSBfX2VuZCAm JiBfX2xlbiA8IF9fY2FwYWNpdHkpCiAgIHsKICAgICBfTV9sb2NhbF9idWZbX19sZW4rK10g PSAqX19iZWc7CiAgICAgKytfX2JlZzsKICAgfQoKIHN0cnVjdCBfR3VhcmQKIHsKICAKICAg ZXhwbGljaXQgX0d1YXJkKGJhc2ljX3N0cmluZyogX19zKSA6IF9NX2d1YXJkZWQoX19zKSB7 IH0KCiAgCiAgIH5fR3VhcmQoKSB7IGlmIChfTV9ndWFyZGVkKSBfTV9ndWFyZGVkLT5fTV9k aXNwb3NlKCk7IH0KCiAgIGJhc2ljX3N0cmluZyogX01fZ3VhcmRlZDsKIH0gX19ndWFyZCh0 aGlzKTsKCiB3aGlsZSAoX19iZWcgIT0gX19lbmQpCiAgIHsKICAgICBpZiAoX19sZW4gPT0g X19jYXBhY2l0eSkKICAgICAgIHsKCiAgX19jYXBhY2l0eSA9IF9fbGVuICsgMTsKICBwb2lu dGVyIF9fYW5vdGhlciA9IF9NX2NyZWF0ZShfX2NhcGFjaXR5LCBfX2xlbik7CiAgdGhpcy0+ X1NfY29weShfX2Fub3RoZXIsIF9NX2RhdGEoKSwgX19sZW4pOwogIF9NX2Rpc3Bvc2UoKTsK ICBfTV9kYXRhKF9fYW5vdGhlcik7CiAgX01fY2FwYWNpdHkoX19jYXBhY2l0eSk7CiAgICAg ICB9CiAgICAgdHJhaXRzX3R5cGU6OmFzc2lnbihfTV9kYXRhKClbX19sZW4rK10sICpfX2Jl Zyk7CiAgICAgKytfX2JlZzsKICAgfQoKIF9fZ3VhcmQuX01fZ3VhcmRlZCA9IDA7CgogX01f c2V0X2xlbmd0aChfX2xlbik7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgICB0ZW1wbGF0ZTx0eXBl bmFtZSBfSW5JdGVyYXRvcj4KICAgICAKICAgICAgdm9pZAogICAgICBiYXNpY19zdHJpbmc8 X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICAgX01fY29uc3RydWN0KF9Jbkl0ZXJh dG9yIF9fYmVnLCBfSW5JdGVyYXRvciBfX2VuZCwKICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0 b3JfdGFnKQogICAgICB7CiBzaXplX3R5cGUgX19kbmV3ID0gc3RhdGljX2Nhc3Q8c2l6ZV90 eXBlPihzdGQ6OmRpc3RhbmNlKF9fYmVnLCBfX2VuZCkpOwoKIGlmIChfX2RuZXcgPiBzaXpl X3R5cGUoX1NfbG9jYWxfY2FwYWNpdHkpKQogICB7CiAgICAgX01fZGF0YShfTV9jcmVhdGUo X19kbmV3LCBzaXplX3R5cGUoMCkpKTsKICAgICBfTV9jYXBhY2l0eShfX2RuZXcpOwogICB9 CiBlbHNlCiAgIF9NX2luaXRfbG9jYWxfYnVmKCk7CgoKIHN0cnVjdCBfR3VhcmQKIHsKICAK ICAgZXhwbGljaXQgX0d1YXJkKGJhc2ljX3N0cmluZyogX19zKSA6IF9NX2d1YXJkZWQoX19z KSB7IH0KCiAgCiAgIH5fR3VhcmQoKSB7IGlmIChfTV9ndWFyZGVkKSBfTV9ndWFyZGVkLT5f TV9kaXNwb3NlKCk7IH0KCiAgIGJhc2ljX3N0cmluZyogX01fZ3VhcmRlZDsKIH0gX19ndWFy ZCh0aGlzKTsKCiB0aGlzLT5fU19jb3B5X2NoYXJzKF9NX2RhdGEoKSwgX19iZWcsIF9fZW5k KTsKCiBfX2d1YXJkLl9NX2d1YXJkZWQgPSAwOwoKIF9NX3NldF9sZW5ndGgoX19kbmV3KTsK ICAgICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs IHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJU LCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9NX2NvbnN0cnVjdChzaXplX3R5cGUgX19uLCBf Q2hhclQgX19jKQogICAgewogICAgICBpZiAoX19uID4gc2l6ZV90eXBlKF9TX2xvY2FsX2Nh cGFjaXR5KSkKIHsKICAgX01fZGF0YShfTV9jcmVhdGUoX19uLCBzaXplX3R5cGUoMCkpKTsK ICAgX01fY2FwYWNpdHkoX19uKTsKIH0KICAgICAgZWxzZQogX01faW5pdF9sb2NhbF9idWYo KTsKCiAgICAgIGlmIChfX24pCiB0aGlzLT5fU19hc3NpZ24oX01fZGF0YSgpLCBfX24sIF9f Yyk7CgogICAgICBfTV9zZXRfbGVuZ3RoKF9fbik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAg IHZvaWQKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAg X01fYXNzaWduKGNvbnN0IGJhc2ljX3N0cmluZyYgX19zdHIpCiAgICB7CiAgICAgIGlmICh0 aGlzICE9IHN0ZDo6X19hZGRyZXNzb2YoX19zdHIpKQogewogICBjb25zdCBzaXplX3R5cGUg X19yc2l6ZSA9IF9fc3RyLmxlbmd0aCgpOwogICBjb25zdCBzaXplX3R5cGUgX19jYXBhY2l0 eSA9IGNhcGFjaXR5KCk7CgogICBpZiAoX19yc2l6ZSA+IF9fY2FwYWNpdHkpCiAgICAgewog ICAgICAgc2l6ZV90eXBlIF9fbmV3X2NhcGFjaXR5ID0gX19yc2l6ZTsKICAgICAgIHBvaW50 ZXIgX190bXAgPSBfTV9jcmVhdGUoX19uZXdfY2FwYWNpdHksIF9fY2FwYWNpdHkpOwogICAg ICAgX01fZGlzcG9zZSgpOwogICAgICAgX01fZGF0YShfX3RtcCk7CiAgICAgICBfTV9jYXBh Y2l0eShfX25ld19jYXBhY2l0eSk7CiAgICAgfQoKICAgaWYgKF9fcnNpemUpCiAgICAgdGhp cy0+X1NfY29weShfTV9kYXRhKCksIF9fc3RyLl9NX2RhdGEoKSwgX19yc2l6ZSk7CgogICBf TV9zZXRfbGVuZ3RoKF9fcnNpemUpOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICB2b2lk CiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIHJlc2Vy dmUoc2l6ZV90eXBlIF9fcmVzKQogICAgewogICAgICBjb25zdCBzaXplX3R5cGUgX19jYXBh Y2l0eSA9IGNhcGFjaXR5KCk7CgoKCgogICAgICBpZiAoX19yZXMgPD0gX19jYXBhY2l0eSkK IHJldHVybjsKCiAgICAgIHBvaW50ZXIgX190bXAgPSBfTV9jcmVhdGUoX19yZXMsIF9fY2Fw YWNpdHkpOwogICAgICB0aGlzLT5fU19jb3B5KF9fdG1wLCBfTV9kYXRhKCksIGxlbmd0aCgp ICsgMSk7CiAgICAgIF9NX2Rpc3Bvc2UoKTsKICAgICAgX01fZGF0YShfX3RtcCk7CiAgICAg IF9NX2NhcGFjaXR5KF9fcmVzKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAgIAogICAgdm9pZAogICAg YmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBfTV9tdXRhdGUo c2l6ZV90eXBlIF9fcG9zLCBzaXplX3R5cGUgX19sZW4xLCBjb25zdCBfQ2hhclQqIF9fcywK ICAgICAgIHNpemVfdHlwZSBfX2xlbjIpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBf X2hvd19tdWNoID0gbGVuZ3RoKCkgLSBfX3BvcyAtIF9fbGVuMTsKCiAgICAgIHNpemVfdHlw ZSBfX25ld19jYXBhY2l0eSA9IGxlbmd0aCgpICsgX19sZW4yIC0gX19sZW4xOwogICAgICBw b2ludGVyIF9fciA9IF9NX2NyZWF0ZShfX25ld19jYXBhY2l0eSwgY2FwYWNpdHkoKSk7Cgog ICAgICBpZiAoX19wb3MpCiB0aGlzLT5fU19jb3B5KF9fciwgX01fZGF0YSgpLCBfX3Bvcyk7 CiAgICAgIGlmIChfX3MgJiYgX19sZW4yKQogdGhpcy0+X1NfY29weShfX3IgKyBfX3Bvcywg X19zLCBfX2xlbjIpOwogICAgICBpZiAoX19ob3dfbXVjaCkKIHRoaXMtPl9TX2NvcHkoX19y ICsgX19wb3MgKyBfX2xlbjIsCiAgICAgICAgX01fZGF0YSgpICsgX19wb3MgKyBfX2xlbjEs IF9faG93X211Y2gpOwoKICAgICAgX01fZGlzcG9zZSgpOwogICAgICBfTV9kYXRhKF9fcik7 CiAgICAgIF9NX2NhcGFjaXR5KF9fbmV3X2NhcGFjaXR5KTsKICAgIH0KCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg IAogICAgdm9pZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6 CiAgICBfTV9lcmFzZShzaXplX3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pCiAgICB7CiAg ICAgIGNvbnN0IHNpemVfdHlwZSBfX2hvd19tdWNoID0gbGVuZ3RoKCkgLSBfX3BvcyAtIF9f bjsKCiAgICAgIGlmIChfX2hvd19tdWNoICYmIF9fbikKIHRoaXMtPl9TX21vdmUoX01fZGF0 YSgpICsgX19wb3MsIF9NX2RhdGEoKSArIF9fcG9zICsgX19uLCBfX2hvd19tdWNoKTsKCiAg ICAgIF9NX3NldF9sZW5ndGgobGVuZ3RoKCkgLSBfX24pOwogICAgfQoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAg CiAgICB2b2lkCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK ICAgIHJlc2VydmUoKQogICAgewogICAgICBpZiAoX01faXNfbG9jYWwoKSkKIHJldHVybjsK CiAgICAgIGNvbnN0IHNpemVfdHlwZSBfX2xlbmd0aCA9IGxlbmd0aCgpOwogICAgICBjb25z dCBzaXplX3R5cGUgX19jYXBhY2l0eSA9IF9NX2FsbG9jYXRlZF9jYXBhY2l0eTsKCiAgICAg IGlmIChfX2xlbmd0aCA8PSBzaXplX3R5cGUoX1NfbG9jYWxfY2FwYWNpdHkpKQogewogICBf TV9pbml0X2xvY2FsX2J1ZigpOwogICB0aGlzLT5fU19jb3B5KF9NX2xvY2FsX2J1ZiwgX01f ZGF0YSgpLCBfX2xlbmd0aCArIDEpOwogICBfTV9kZXN0cm95KF9fY2FwYWNpdHkpOwogICBf TV9kYXRhKF9NX2xvY2FsX2RhdGEoKSk7CiB9CgogICAgICBlbHNlIGlmIChfX2xlbmd0aCA8 IF9fY2FwYWNpdHkpCiB0cnkKICAgewogICAgIHBvaW50ZXIgX190bXAgPSBfU19hbGxvY2F0 ZShfTV9nZXRfYWxsb2NhdG9yKCksIF9fbGVuZ3RoICsgMSk7CiAgICAgdGhpcy0+X1NfY29w eShfX3RtcCwgX01fZGF0YSgpLCBfX2xlbmd0aCArIDEpOwogICAgIF9NX2Rpc3Bvc2UoKTsK ICAgICBfTV9kYXRhKF9fdG1wKTsKICAgICBfTV9jYXBhY2l0eShfX2xlbmd0aCk7CiAgIH0K IGNhdGNoIChjb25zdCBfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICB7IHRocm93 OyB9CiBjYXRjaCAoLi4uKQogICB7IH0KCiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIHZvaWQK ICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OgogICAgcmVzaXpl KHNpemVfdHlwZSBfX24sIF9DaGFyVCBfX2MpCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdHlw ZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3NpemUgPCBfX24pCiB0aGlz LT5hcHBlbmQoX19uIC0gX19zaXplLCBfX2MpOwogICAgICBlbHNlIGlmIChfX24gPCBfX3Np emUpCiB0aGlzLT5fTV9zZXRfbGVuZ3RoKF9fbik7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAg IGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICBiYXNpY19zdHJp bmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9NX2FwcGVuZChjb25zdCBfQ2hh clQqIF9fcywgc2l6ZV90eXBlIF9fbikKICAgIHsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9f bGVuID0gX19uICsgdGhpcy0+c2l6ZSgpOwoKICAgICAgaWYgKF9fbGVuIDw9IHRoaXMtPmNh cGFjaXR5KCkpCiB7CiAgIGlmIChfX24pCiAgICAgdGhpcy0+X1NfY29weSh0aGlzLT5fTV9k YXRhKCkgKyB0aGlzLT5zaXplKCksIF9fcywgX19uKTsKIH0KICAgICAgZWxzZQogdGhpcy0+ X01fbXV0YXRlKHRoaXMtPnNpemUoKSwgc2l6ZV90eXBlKDApLCBfX3MsIF9fbik7CgogICAg ICB0aGlzLT5fTV9zZXRfbGVuZ3RoKF9fbGVuKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAg fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVu YW1lIF9BbGxvYz4KICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnB1dEl0ZXJhdG9yPgogICAg IAogICAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JgogICAgICBi YXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgICAgX01fcmVwbGFj ZV9kaXNwYXRjaChjb25zdF9pdGVyYXRvciBfX2kxLCBjb25zdF9pdGVyYXRvciBfX2kyLAog ICAgIF9JbnB1dEl0ZXJhdG9yIF9fazEsIF9JbnB1dEl0ZXJhdG9yIF9fazIsCiAgICAgc3Rk OjpfX2ZhbHNlX3R5cGUpCiAgICAgIHsKCgogY29uc3QgYmFzaWNfc3RyaW5nIF9fcyhfX2sx LCBfX2syLCB0aGlzLT5nZXRfYWxsb2NhdG9yKCkpOwogY29uc3Qgc2l6ZV90eXBlIF9fbjEg PSBfX2kyIC0gX19pMTsKIHJldHVybiBfTV9yZXBsYWNlKF9faTEgLSBiZWdpbigpLCBfX24x LCBfX3MuX01fZGF0YSgpLAogICAgIF9fcy5zaXplKCkpOwogICAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog ICAKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4mCiAgICBiYXNp Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoKICAgIF9NX3JlcGxhY2VfYXV4 KHNpemVfdHlwZSBfX3BvczEsIHNpemVfdHlwZSBfX24xLCBzaXplX3R5cGUgX19uMiwKICAg ICBfQ2hhclQgX19jKQogICAgewogICAgICBfTV9jaGVja19sZW5ndGgoX19uMSwgX19uMiwg ImJhc2ljX3N0cmluZzo6X01fcmVwbGFjZV9hdXgiKTsKCiAgICAgIGNvbnN0IHNpemVfdHlw ZSBfX29sZF9zaXplID0gdGhpcy0+c2l6ZSgpOwogICAgICBjb25zdCBzaXplX3R5cGUgX19u ZXdfc2l6ZSA9IF9fb2xkX3NpemUgKyBfX24yIC0gX19uMTsKCiAgICAgIGlmIChfX25ld19z aXplIDw9IHRoaXMtPmNhcGFjaXR5KCkpCiB7CiAgIHBvaW50ZXIgX19wID0gdGhpcy0+X01f ZGF0YSgpICsgX19wb3MxOwoKICAgY29uc3Qgc2l6ZV90eXBlIF9faG93X211Y2ggPSBfX29s ZF9zaXplIC0gX19wb3MxIC0gX19uMTsKICAgaWYgKF9faG93X211Y2ggJiYgX19uMSAhPSBf X24yKQogICAgIHRoaXMtPl9TX21vdmUoX19wICsgX19uMiwgX19wICsgX19uMSwgX19ob3df bXVjaCk7CiB9CiAgICAgIGVsc2UKIHRoaXMtPl9NX211dGF0ZShfX3BvczEsIF9fbjEsIDAs IF9fbjIpOwoKICAgICAgaWYgKF9fbjIpCiB0aGlzLT5fU19hc3NpZ24odGhpcy0+X01fZGF0 YSgpICsgX19wb3MxLCBfX24yLCBfX2MpOwoKICAgICAgdGhpcy0+X01fc2V0X2xlbmd0aChf X25ld19zaXplKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5cGVuYW1lIF9BbGxvYz4KICAgIF9f YXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXywgX19ub2Nsb25lX18sIF9fY29sZF9fKSkgdm9p ZAogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBfTV9y ZXBsYWNlX2NvbGQocG9pbnRlciBfX3AsIHNpemVfdHlwZSBfX2xlbjEsIGNvbnN0IF9DaGFy VCogX19zLAogICAgICBjb25zdCBzaXplX3R5cGUgX19sZW4yLCBjb25zdCBzaXplX3R5cGUg X19ob3dfbXVjaCkKICAgIHsKCiAgICAgIGlmIChfX2xlbjIgJiYgX19sZW4yIDw9IF9fbGVu MSkKIHRoaXMtPl9TX21vdmUoX19wLCBfX3MsIF9fbGVuMik7CiAgICAgIGlmIChfX2hvd19t dWNoICYmIF9fbGVuMSAhPSBfX2xlbjIpCiB0aGlzLT5fU19tb3ZlKF9fcCArIF9fbGVuMiwg X19wICsgX19sZW4xLCBfX2hvd19tdWNoKTsKICAgICAgaWYgKF9fbGVuMiA+IF9fbGVuMSkK IHsKICAgaWYgKF9fcyArIF9fbGVuMiA8PSBfX3AgKyBfX2xlbjEpCiAgICAgdGhpcy0+X1Nf bW92ZShfX3AsIF9fcywgX19sZW4yKTsKICAgZWxzZSBpZiAoX19zID49IF9fcCArIF9fbGVu MSkKICAgICB7CgoKICAgICAgIGNvbnN0IHNpemVfdHlwZSBfX3BvZmYgPSAoX19zIC0gX19w KSArIChfX2xlbjIgLSBfX2xlbjEpOwogICAgICAgdGhpcy0+X1NfY29weShfX3AsIF9fcCAr IF9fcG9mZiwgX19sZW4yKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBjb25zdCBz aXplX3R5cGUgX19ubGVmdCA9IChfX3AgKyBfX2xlbjEpIC0gX19zOwogICAgICAgdGhpcy0+ X1NfbW92ZShfX3AsIF9fcywgX19ubGVmdCk7CiAgICAgICB0aGlzLT5fU19jb3B5KF9fcCAr IF9fbmxlZnQsIF9fcCArIF9fbGVuMiwgX19sZW4yIC0gX19ubGVmdCk7CiAgICAgfQogfQog ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMsIHR5 cGVuYW1lIF9BbGxvYz4KICAgCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBf QWxsb2M+JgogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAg ICBfTV9yZXBsYWNlKHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbGVuMSwgY29uc3Qg X0NoYXJUKiBfX3MsCiAgICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbGVuMikKICAgIHsKICAg ICAgX01fY2hlY2tfbGVuZ3RoKF9fbGVuMSwgX19sZW4yLCAiYmFzaWNfc3RyaW5nOjpfTV9y ZXBsYWNlIik7CgogICAgICBjb25zdCBzaXplX3R5cGUgX19vbGRfc2l6ZSA9IHRoaXMtPnNp emUoKTsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fbmV3X3NpemUgPSBfX29sZF9zaXplICsg X19sZW4yIC0gX19sZW4xOwoKICAgICAgaWYgKF9fbmV3X3NpemUgPD0gdGhpcy0+Y2FwYWNp dHkoKSkKIHsKICAgcG9pbnRlciBfX3AgPSB0aGlzLT5fTV9kYXRhKCkgKyBfX3BvczsKCiAg IGNvbnN0IHNpemVfdHlwZSBfX2hvd19tdWNoID0gX19vbGRfc2l6ZSAtIF9fcG9zIC0gX19s ZW4xOwojIDUzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX3N0cmlu Zy50Y2MiIDMKICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoX01fZGlzanVuY3QoX19zKSwgdHJ1 ZSkpCiAgICAgewogICAgICAgaWYgKF9faG93X211Y2ggJiYgX19sZW4xICE9IF9fbGVuMikK ICB0aGlzLT5fU19tb3ZlKF9fcCArIF9fbGVuMiwgX19wICsgX19sZW4xLCBfX2hvd19tdWNo KTsKICAgICAgIGlmIChfX2xlbjIpCiAgdGhpcy0+X1NfY29weShfX3AsIF9fcywgX19sZW4y KTsKICAgICB9CiAgIGVsc2UKICAgICBfTV9yZXBsYWNlX2NvbGQoX19wLCBfX2xlbjEsIF9f cywgX19sZW4yLCBfX2hvd19tdWNoKTsKIH0KICAgICAgZWxzZQogdGhpcy0+X01fbXV0YXRl KF9fcG9zLCBfX2xlbjEsIF9fcywgX19sZW4yKTsKCiAgICAgIHRoaXMtPl9NX3NldF9sZW5n dGgoX19uZXdfc2l6ZSk7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg IAogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6 c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK ICAgIGNvcHkoX0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX24sIHNpemVfdHlwZSBfX3Bvcykg Y29uc3QKICAgIHsKICAgICAgX01fY2hlY2soX19wb3MsICJiYXNpY19zdHJpbmc6OmNvcHki KTsKICAgICAgX19uID0gX01fbGltaXQoX19wb3MsIF9fbik7CiAgICAgIDsKICAgICAgaWYg KF9fbikKIF9TX2NvcHkoX19zLCBfTV9kYXRhKCkgKyBfX3BvcywgX19uKTsKCiAgICAgIHJl dHVybiBfX247CiAgICB9CiMgNjIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv YmFzaWNfc3RyaW5nLnRjYyIgMwojZGVmaW5lIF9HTElCQ1hYX1NUUklOR19DT05TVEVYUFIg CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h bWUgX0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp dHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0 cywgX0FsbG9jPjo6CiAgICBmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19w b3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgIAogICAgewogICAgICA7CiAgICAgIGNvbnN0 IHNpemVfdHlwZSBfX3NpemUgPSB0aGlzLT5zaXplKCk7CgogICAgICBpZiAoX19uID09IDAp CiByZXR1cm4gX19wb3MgPD0gX19zaXplID8gX19wb3MgOiBucG9zOwogICAgICBpZiAoX19w b3MgPj0gX19zaXplKQogcmV0dXJuIG5wb3M7CgogICAgICBjb25zdCBfQ2hhclQgX19lbGVt MCA9IF9fc1swXTsKICAgICAgY29uc3QgX0NoYXJUKiBjb25zdCBfX2RhdGEgPSBkYXRhKCk7 CiAgICAgIGNvbnN0IF9DaGFyVCogX19maXJzdCA9IF9fZGF0YSArIF9fcG9zOwogICAgICBj b25zdCBfQ2hhclQqIGNvbnN0IF9fbGFzdCA9IF9fZGF0YSArIF9fc2l6ZTsKICAgICAgc2l6 ZV90eXBlIF9fbGVuID0gX19zaXplIC0gX19wb3M7CgogICAgICB3aGlsZSAoX19sZW4gPj0g X19uKQogewoKICAgX19maXJzdCA9IHRyYWl0c190eXBlOjpmaW5kKF9fZmlyc3QsIF9fbGVu IC0gX19uICsgMSwgX19lbGVtMCk7CiAgIGlmICghX19maXJzdCkKICAgICByZXR1cm4gbnBv czsKCgoKICAgaWYgKHRyYWl0c190eXBlOjpjb21wYXJlKF9fZmlyc3QsIF9fcywgX19uKSA9 PSAwKQogICAgIHJldHVybiBfX2ZpcnN0IC0gX19kYXRhOwogICBfX2xlbiA9IF9fbGFzdCAt ICsrX19maXJzdDsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAK ICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNp emVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAg ICBmaW5kKF9DaGFyVCBfX2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3QKICAgIHsKICAgICAg c2l6ZV90eXBlIF9fcmV0ID0gbnBvczsKICAgICAgY29uc3Qgc2l6ZV90eXBlIF9fc2l6ZSA9 IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fcG9zIDwgX19zaXplKQogewogICBjb25zdCBf Q2hhclQqIF9fZGF0YSA9IF9NX2RhdGEoKTsKICAgY29uc3Qgc2l6ZV90eXBlIF9fbiA9IF9f c2l6ZSAtIF9fcG9zOwogICBjb25zdCBfQ2hhclQqIF9fcCA9IHRyYWl0c190eXBlOjpmaW5k KF9fZGF0YSArIF9fcG9zLCBfX24sIF9fYyk7CiAgIGlmIChfX3ApCiAgICAgX19yZXQgPSBf X3AgLSBfX2RhdGE7CiB9CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBlbmFtZSBfQWxsb2M+CiAg IAogICAgdHlwZW5hbWUgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6 c2l6ZV90eXBlCiAgICBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+OjoK ICAgIHJmaW5kKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlw ZSBfX24pIGNvbnN0CiAgIAogICAgewogICAgICA7CiAgICAgIGNvbnN0IHNpemVfdHlwZSBf X3NpemUgPSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX24gPD0gX19zaXplKQogewogICBf X3BvcyA9IHN0ZDo6bWluKHNpemVfdHlwZShfX3NpemUgLSBfX24pLCBfX3Bvcyk7CiAgIGNv bnN0IF9DaGFyVCogX19kYXRhID0gX01fZGF0YSgpOwogICBkbwogICAgIHsKICAgICAgIGlm ICh0cmFpdHNfdHlwZTo6Y29tcGFyZShfX2RhdGEgKyBfX3BvcywgX19zLCBfX24pID09IDAp CiAgcmV0dXJuIF9fcG9zOwogICAgIH0KICAgd2hpbGUgKF9fcG9zLS0gPiAwKTsKIH0KICAg ICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2lj X3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNf c3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICByZmluZChfQ2hhclQgX19j LCBzaXplX3R5cGUgX19wb3MpIGNvbnN0CiAgICB7CiAgICAgIHNpemVfdHlwZSBfX3NpemUg PSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+ IF9fcG9zKQogICAgIF9fc2l6ZSA9IF9fcG9zOwogICBmb3IgKCsrX19zaXplOyBfX3NpemUt LSA+IDA7ICkKICAgICBpZiAodHJhaXRzX3R5cGU6OmVxKF9NX2RhdGEoKVtfX3NpemVdLCBf X2MpKQogICAgICAgcmV0dXJuIF9fc2l6ZTsKIH0KICAgICAgcmV0dXJuIG5wb3M7CiAgICB9 CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5h bWUgX0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFp dHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0 cywgX0FsbG9jPjo6CiAgICBmaW5kX2ZpcnN0X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXpl X3R5cGUgX19wb3MsIHNpemVfdHlwZSBfX24pIGNvbnN0CiAgIAogICAgewogICAgICA7CiAg ICAgIGZvciAoOyBfX24gJiYgX19wb3MgPCB0aGlzLT5zaXplKCk7ICsrX19wb3MpCiB7CiAg IGNvbnN0IF9DaGFyVCogX19wID0gdHJhaXRzX3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2Rh dGEoKVtfX3Bvc10pOwogICBpZiAoX19wKQogICAgIHJldHVybiBfX3BvczsKIH0KICAgICAg cmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2ljX3N0 cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3Ry aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2xhc3Rfb2YoY29uc3Qg X0NoYXJUKiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAg CiAgICB7CiAgICAgIDsKICAgICAgc2l6ZV90eXBlIF9fc2l6ZSA9IHRoaXMtPnNpemUoKTsK ICAgICAgaWYgKF9fc2l6ZSAmJiBfX24pCiB7CiAgIGlmICgtLV9fc2l6ZSA+IF9fcG9zKQog ICAgIF9fc2l6ZSA9IF9fcG9zOwogICBkbwogICAgIHsKICAgICAgIGlmICh0cmFpdHNfdHlw ZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19fc2l6ZV0pKQogIHJldHVybiBfX3NpemU7 CiAgICAgfQogICB3aGlsZSAoX19zaXplLS0gIT0gMCk7CiB9CiAgICAgIHJldHVybiBucG9z OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHMs IHR5cGVuYW1lIF9BbGxvYz4KICAgCiAgICB0eXBlbmFtZSBiYXNpY19zdHJpbmc8X0NoYXJU LCBfVHJhaXRzLCBfQWxsb2M+OjpzaXplX3R5cGUKICAgIGJhc2ljX3N0cmluZzxfQ2hhclQs IF9UcmFpdHMsIF9BbGxvYz46OgogICAgZmluZF9maXJzdF9ub3Rfb2YoY29uc3QgX0NoYXJU KiBfX3MsIHNpemVfdHlwZSBfX3Bvcywgc2l6ZV90eXBlIF9fbikgY29uc3QKICAgCiAgICB7 CiAgICAgIDsKICAgICAgZm9yICg7IF9fcG9zIDwgdGhpcy0+c2l6ZSgpOyArK19fcG9zKQog aWYgKCF0cmFpdHNfdHlwZTo6ZmluZChfX3MsIF9fbiwgX01fZGF0YSgpW19fcG9zXSkpCiAg IHJldHVybiBfX3BvczsKICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAK ICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNp emVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAg ICBmaW5kX2ZpcnN0X25vdF9vZihfQ2hhclQgX19jLCBzaXplX3R5cGUgX19wb3MpIGNvbnN0 CiAgICB7CiAgICAgIGZvciAoOyBfX3BvcyA8IHRoaXMtPnNpemUoKTsgKytfX3BvcykKIGlm ICghdHJhaXRzX3R5cGU6OmVxKF9NX2RhdGEoKVtfX3Bvc10sIF9fYykpCiAgIHJldHVybiBf X3BvczsKICAgICAgcmV0dXJuIG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIHR5cGVu YW1lIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQog ICAgYmFzaWNfc3RyaW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2xh c3Rfbm90X29mKGNvbnN0IF9DaGFyVCogX19zLCBzaXplX3R5cGUgX19wb3MsIHNpemVfdHlw ZSBfX24pIGNvbnN0CiAgIAogICAgewogICAgICA7CiAgICAgIHNpemVfdHlwZSBfX3NpemUg PSB0aGlzLT5zaXplKCk7CiAgICAgIGlmIChfX3NpemUpCiB7CiAgIGlmICgtLV9fc2l6ZSA+ IF9fcG9zKQogICAgIF9fc2l6ZSA9IF9fcG9zOwogICBkbwogICAgIHsKICAgICAgIGlmICgh dHJhaXRzX3R5cGU6OmZpbmQoX19zLCBfX24sIF9NX2RhdGEoKVtfX3NpemVdKSkKICByZXR1 cm4gX19zaXplOwogICAgIH0KICAgd2hpbGUgKF9fc2l6ZS0tKTsKIH0KICAgICAgcmV0dXJu IG5wb3M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry YWl0cywgdHlwZW5hbWUgX0FsbG9jPgogICAKICAgIHR5cGVuYW1lIGJhc2ljX3N0cmluZzxf Q2hhclQsIF9UcmFpdHMsIF9BbGxvYz46OnNpemVfdHlwZQogICAgYmFzaWNfc3RyaW5nPF9D aGFyVCwgX1RyYWl0cywgX0FsbG9jPjo6CiAgICBmaW5kX2xhc3Rfbm90X29mKF9DaGFyVCBf X2MsIHNpemVfdHlwZSBfX3BvcykgY29uc3QKICAgIHsKICAgICAgc2l6ZV90eXBlIF9fc2l6 ZSA9IHRoaXMtPnNpemUoKTsKICAgICAgaWYgKF9fc2l6ZSkKIHsKICAgaWYgKC0tX19zaXpl ID4gX19wb3MpCiAgICAgX19zaXplID0gX19wb3M7CiAgIGRvCiAgICAgewogICAgICAgaWYg KCF0cmFpdHNfdHlwZTo6ZXEoX01fZGF0YSgpW19fc2l6ZV0sIF9fYykpCiAgcmV0dXJuIF9f c2l6ZTsKICAgICB9CiAgIHdoaWxlIChfX3NpemUtLSk7CiB9CiAgICAgIHJldHVybiBucG9z OwogICAgfQoKI3VuZGVmIF9HTElCQ1hYX1NUUklOR19DT05TVEVYUFIKCgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9jPgog ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNp Y19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sCiAgICAgICAgYmFzaWNfc3RyaW5n PF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIpCiAgICB7CiAgICAgIHR5cGVkZWYg YmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+IF9faXN0cmVhbV90eXBlOwogICAgICB0 eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQsIF9UcmFpdHMsIF9BbGxvYz4gX19zdHJpbmdf dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW9zX2Jhc2Ug X19pb3NfYmFzZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50 X3R5cGUgX19pbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX3N0cmluZ190eXBl OjpzaXplX3R5cGUgX19zaXplX3R5cGU7CiAgICAgIHR5cGVkZWYgY3R5cGU8X0NoYXJUPiBf X2N0eXBlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19jdHlwZV90eXBlOjpjdHlw ZV9iYXNlIF9fY3R5cGVfYmFzZTsKCiAgICAgIF9fc2l6ZV90eXBlIF9fZXh0cmFjdGVkID0g MDsKICAgICAgdHlwZW5hbWUgX19pb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IF9faW9zX2Jh c2U6Omdvb2RiaXQ7CiAgICAgIHR5cGVuYW1lIF9faXN0cmVhbV90eXBlOjpzZW50cnkgX19j ZXJiKF9faW4sIGZhbHNlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAgewoK ICAgICAgIF9fc3RyLmVyYXNlKCk7CiAgICAgICBfQ2hhclQgX19idWZbMTI4XTsKICAgICAg IF9fc2l6ZV90eXBlIF9fbGVuID0gMDsKICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX193ID0g X19pbi53aWR0aCgpOwogICAgICAgY29uc3QgX19zaXplX3R5cGUgX19uID0gX193ID4gMCA/ IHN0YXRpY19jYXN0PF9fc2l6ZV90eXBlPihfX3cpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiBfX3N0ci5tYXhfc2l6ZSgpOwogICAgICAgY29uc3QgX19jdHlwZV90eXBl JiBfX2N0ID0gdXNlX2ZhY2V0PF9fY3R5cGVfdHlwZT4oX19pbi5nZXRsb2MoKSk7CiAgICAg ICBjb25zdCBfX2ludF90eXBlIF9fZW9mID0gX1RyYWl0czo6ZW9mKCk7CiAgICAgICBfX2lu dF90eXBlIF9fYyA9IF9faW4ucmRidWYoKS0+c2dldGMoKTsKCiAgICAgICB3aGlsZSAoX19l eHRyYWN0ZWQgPCBfX24KICAgICAgICYmICFfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9f ZW9mKQogICAgICAgJiYgIV9fY3QuaXMoX19jdHlwZV9iYXNlOjpzcGFjZSwKICAgICBfVHJh aXRzOjp0b19jaGFyX3R5cGUoX19jKSkpCiAgewogICAgaWYgKF9fbGVuID09IHNpemVvZihf X2J1ZikgLyBzaXplb2YoX0NoYXJUKSkKICAgICAgewogICAgICAgIF9fc3RyLmFwcGVuZChf X2J1Ziwgc2l6ZW9mKF9fYnVmKSAvIHNpemVvZihfQ2hhclQpKTsKICAgICAgICBfX2xlbiA9 IDA7CiAgICAgIH0KICAgIF9fYnVmW19fbGVuKytdID0gX1RyYWl0czo6dG9fY2hhcl90eXBl KF9fYyk7CiAgICArK19fZXh0cmFjdGVkOwogICAgX19jID0gX19pbi5yZGJ1ZigpLT5zbmV4 dGMoKTsKICB9CiAgICAgICBfX3N0ci5hcHBlbmQoX19idWYsIF9fbGVuKTsKCiAgICAgICBp ZiAoX19leHRyYWN0ZWQgPCBfX24gJiYgX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2Vv ZikpCiAgX19lcnIgfD0gX19pb3NfYmFzZTo6ZW9mYml0OwogICAgICAgX19pbi53aWR0aCgw KTsKICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAg ewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQpOwogICAgICAg dGhyb3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgewoKCgogICAgICAgX19pbi5fTV9z ZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQpOwogICAgIH0KIH0KCiAgICAgIGlmICghX19l eHRyYWN0ZWQpCiBfX2VyciB8PSBfX2lvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19l cnIpCiBfX2luLnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuIF9faW47CiAgICB9Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUg X0FsbG9jPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgZ2V0bGlu ZShiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sCiAgICAgYmFzaWNfc3Ry aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zdHIsIF9DaGFyVCBfX2RlbGltKQog ICAgewogICAgICB0eXBlZGVmIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lz dHJlYW1fdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJhaXRz LCBfQWxsb2M+IF9fc3RyaW5nX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3Ry ZWFtX3R5cGU6Omlvc19iYXNlIF9faW9zX2Jhc2U7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg X19pc3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw ZW5hbWUgX19zdHJpbmdfdHlwZTo6c2l6ZV90eXBlIF9fc2l6ZV90eXBlOwoKICAgICAgX19z aXplX3R5cGUgX19leHRyYWN0ZWQgPSAwOwogICAgICBjb25zdCBfX3NpemVfdHlwZSBfX24g PSBfX3N0ci5tYXhfc2l6ZSgpOwogICAgICB0eXBlbmFtZSBfX2lvc19iYXNlOjppb3N0YXRl IF9fZXJyID0gX19pb3NfYmFzZTo6Z29vZGJpdDsKICAgICAgdHlwZW5hbWUgX19pc3RyZWFt X3R5cGU6OnNlbnRyeSBfX2NlcmIoX19pbiwgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7 CiAgIHRyeQogICAgIHsKICAgICAgIF9fc3RyLmVyYXNlKCk7CiAgICAgICBjb25zdCBfX2lu dF90eXBlIF9faWRlbGltID0gX1RyYWl0czo6dG9faW50X3R5cGUoX19kZWxpbSk7CiAgICAg ICBjb25zdCBfX2ludF90eXBlIF9fZW9mID0gX1RyYWl0czo6ZW9mKCk7CiAgICAgICBfX2lu dF90eXBlIF9fYyA9IF9faW4ucmRidWYoKS0+c2dldGMoKTsKCiAgICAgICB3aGlsZSAoX19l eHRyYWN0ZWQgPCBfX24KICAgICAgICYmICFfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9f ZW9mKQogICAgICAgJiYgIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19pZGVsaW0pKQog IHsKICAgIF9fc3RyICs9IF9UcmFpdHM6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgKytfX2V4 dHJhY3RlZDsKICAgIF9fYyA9IF9faW4ucmRidWYoKS0+c25leHRjKCk7CiAgfQoKICAgICAg IGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICBfX2VyciB8PSBfX2lv c19iYXNlOjplb2ZiaXQ7CiAgICAgICBlbHNlIGlmIChfVHJhaXRzOjplcV9pbnRfdHlwZShf X2MsIF9faWRlbGltKSkKICB7CiAgICArK19fZXh0cmFjdGVkOwogICAgX19pbi5yZGJ1Zigp LT5zYnVtcGMoKTsKICB9CiAgICAgICBlbHNlCiAgX19lcnIgfD0gX19pb3NfYmFzZTo6ZmFp bGJpdDsKICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAg ICAgewogICAgICAgX19pbi5fTV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQpOwogICAg ICAgdGhyb3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgewoKCgogICAgICAgX19pbi5f TV9zZXRzdGF0ZShfX2lvc19iYXNlOjpiYWRiaXQpOwogICAgIH0KIH0KICAgICAgaWYgKCFf X2V4dHJhY3RlZCkKIF9fZXJyIHw9IF9faW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChf X2VycikKIF9faW4uc2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gX19pbjsKICAgIH0K IyA5NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcudGNj IiAzCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3N0cmluZzxjaGFyPjsKIyA5OTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19zdHJpbmcudGNjIiAzCiAg ZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I+ PihiYXNpY19pc3RyZWFtPGNoYXI+Jiwgc3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAg ICBiYXNpY19vc3RyZWFtPGNoYXI+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNo YXI+JiwgY29uc3Qgc3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3Ry ZWFtPGNoYXI+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPGNoYXI+Jiwgc3RyaW5nJiwg Y2hhcik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19pc3RyZWFtPGNoYXI+JgogICAg Z2V0bGluZShiYXNpY19pc3RyZWFtPGNoYXI+Jiwgc3RyaW5nJik7CgoKCiAgZXh0ZXJuIHRl bXBsYXRlIGNsYXNzIGJhc2ljX3N0cmluZzx3Y2hhcl90PjsKIyAxMDE2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfc3RyaW5nLnRjYyIgMwogIGV4dGVybiB0ZW1w bGF0ZQogICAgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYKICAgIG9wZXJhdG9yPj4oYmFzaWNf aXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJpbmcmKTsKICBleHRlcm4gdGVtcGxhdGUKICAgIGJh c2ljX29zdHJlYW08d2NoYXJfdD4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08d2No YXJfdD4mLCBjb25zdCB3c3RyaW5nJik7CiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBiYXNpY19p c3RyZWFtPHdjaGFyX3Q+JgogICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPHdjaGFyX3Q+Jiwg d3N0cmluZyYsIHdjaGFyX3QpOwogIGV4dGVybiB0ZW1wbGF0ZQogICAgYmFzaWNfaXN0cmVh bTx3Y2hhcl90PiYKICAgIGdldGxpbmUoYmFzaWNfaXN0cmVhbTx3Y2hhcl90PiYsIHdzdHJp bmcmKTsKCgoKCn0KIyA1NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJpbmciIDIg MwoKI2RlZmluZSBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcl90cmFpdHMgCiNkZWZp bmUgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3N0cmluZyAKI2RlZmluZSBfX2dsaWJjeHhf d2FudF9lcmFzZV9pZiAKI2RlZmluZSBfX2dsaWJjeHhfd2FudF9ub25tZW1iZXJfY29udGFp bmVyX2FjY2VzcyAKI2RlZmluZSBfX2dsaWJjeHhfd2FudF9zdHJpbmdfcmVzaXplX2FuZF9v dmVyd3JpdGUgCiNkZWZpbmUgX19nbGliY3h4X3dhbnRfc3RyaW5nX3VkbHMgCiNkZWZpbmUg X19nbGliY3h4X3dhbnRfdG9fc3RyaW5nIAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDEgMwojIDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiAgICAgICAKIyA0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoKCgoKCgojZGVmaW5lIF9fZ2xpYmN4eF9pbmNvbXBs ZXRlX2NvbnRhaW5lcl9lbGVtZW50cyAyMDE1MDVMCgoKCgoKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzCiMgNzEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Vu Y2F1Z2h0X2V4Y2VwdGlvbnMKIyA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsb2NhdG9yX3RyYWl0c19p c19hbHdheXNfZXF1YWwKIyA5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbnVsbF9wb2ludGVyCiMgMTA0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yZXN1bHRfb2Zfc2ZpbmFlCiMgMTIwICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFy ZWRfcHRyX2FycmF5cwojIDEzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfc3dhcHBhYmxlCiMgMTQyICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF92b2lkX3QKIyAxNTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VuYWJsZV9zaGFyZWRfZnJv bV90aGlzCiMgMTY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3NwZWNfZnVuY3MKIyAxNzUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2Nvcm91dGluZQojIDE4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhjaGFuZ2VfZnVuY3Rpb24K IyAxOTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfc2VxdWVuY2UKIyAyMDggIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2ludGVncmFsX2NvbnN0YW50X2NhbGxhYmxlCiMgMjE5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19maW5h bAojIDIzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9yZXZlcnNlX2l0ZXJhdG9yCiMgMjQxICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9udWxsX2l0ZXJhdG9ycwojIDI1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNmb3JtYXRp b25fdHJhaXRfYWxpYXNlcwojIDI2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNwYXJlbnRfb3BlcmF0 b3JzCiMgMjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90dXBsZV9lbGVtZW50X3QKIyAyODUgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3R1cGxlc19ieV90eXBlCiMgMjk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yb2J1c3Rfbm9ubW9kaWZ5 aW5nX3NlcV9vcHMKIyAzMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2NoYXJzCiMgMzIzICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9jaHJvbm9fdWRscwojIDMzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29tcGxleF91ZGxzCiMgMzQ1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9nZW5lcmljX2Fzc29jaWF0aXZlX2xvb2t1cAojIDM1NiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfbWFrZV91bmlxdWUKIyAzNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3F1b3RlZF9zdHJpbmdfaW8K IyAzNzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF90aW1lZF9tdXRleAojIDM4OSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfc3RyaW5nX3VkbHMKIyA0MDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkZHJlc3NvZl9jb25zdGV4cHIK IyA0MTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2FueQojIDQyMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXBwbHkKIyA0MzMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2FzX2NvbnN0CiMgNDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfaXNfYWx3 YXlzX2xvY2tfZnJlZQojIDQ1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm9vbF9jb25zdGFudAojIDQ2NiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfYnl0ZQojIDQ3NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaGFzX3VuaXF1ZV9vYmplY3Rf cmVwcmVzZW50YXRpb25zCiMgNDg4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oYXJkd2FyZV9pbnRlcmZlcmVu Y2Vfc2l6ZQojIDQ5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlCiMgNTEwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9p c19hZ2dyZWdhdGUKIyA1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ludm9jYWJsZQojIDUzMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbGF1bmRlcgojIDU0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbG9naWNhbF90cmFpdHMKIyA1 NTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X21ha2VfZnJvbV90dXBsZQojIDU2NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm90 X2ZuCiMgNTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRlcwoj IDU5MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfdmFyaWFudAojIDYwMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbGNtCiMgNjE0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9nY2QKIyA2MjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZF9sY20KIyA2MzYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3Jhd19tZW1vcnlfYWxnb3JpdGhtcwojIDY1MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXJy YXlfY29uc3RleHByCiMgNjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub25tZW1iZXJfY29udGFpbmVyX2Fj Y2VzcwojIDY3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2xhbXAKIyA2ODUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NhbXBs ZQojIDY5NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYm95ZXJfbW9vcmVfc2VhcmNoZXIKIyA3MTIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2Nocm9ubwojIDcyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhlY3V0aW9uCiMgNzM0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9maWxlc3lzdGVtCiMgNzQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oeXBvdAojIDc1NiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbWFwX3RyeV9lbXBsYWNlCiMgNzY3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3NwZWNp YWxfZnVuY3Rpb25zCiMgNzgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tZW1vcnlfcmVzb3VyY2UKIyA3OTQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X25vZGVfZXh0cmFjdAojIDgwNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcGFyYWxsZWxf YWxnb3JpdGhtCiMgODE2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zY29wZWRfbG9jawojIDgyNyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfc2hhcmVkX211dGV4CiMgODM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfcHRyX3dlYWtf dHlwZQojIDg0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RyaW5nX3ZpZXcKIyA4NjAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Vub3JkZXJlZF9tYXBfdHJ5X2VtcGxhY2UKIyA4NzEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Fzc3VtZV9h bGlnbmVkCiMgODgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfZmxhZ190ZXN0CiMgODkzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9hdG9taWNfZmxvYXQKIyA5MDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19sb2NrX2Zy ZWVfdHlwZV9hbGlhc2VzCiMgOTE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfcmVmCiMgOTI2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9hdG9taWNfdmFsdWVfaW5pdGlhbGl6YXRpb24KIyA5MzcgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2JpbmRfZnJvbnQKIyA5NDggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YXJ0c19lbmRzX3dpdGgKIyA5 NTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2JpdF9jYXN0CiMgOTcwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iaXRvcHMKIyA5 ODEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2JvdW5kZWRfYXJyYXlfdHJhaXRzCiMgOTkyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9jb25jZXB0cwojIDEwMTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X29wdGlvbmFsCiMgMTAyNCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZGVzdHJveWluZ19kZWxldGUKIyAxMDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJf c3RyaW5nX3ZpZXcKIyAxMDQ2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9lbmRpYW4KIyAxMDU3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pbnRfcG93MgojIDEwNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfY29tcGFyaXNvbl9m dW5jdGlvbnMKIyAxMDc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19jb25zdGFudF9ldmFsdWF0ZWQKIyAx MDk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcl90cmFpdHMKIyAxMTA2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pc19sYXlvdXRfY29tcGF0aWJsZQojIDExMTcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX25vdGhy b3dfY29udmVydGlibGUKIyAxMTI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19wb2ludGVyX2ludGVyY29u dmVydGlibGUKIyAxMTM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX2NvbnN0YW50cwojIDExNTAgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X21ha2Vfb2JqX3VzaW5nX2FsbG9jYXRvcgojIDExNjEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3JlbW92ZV9jdnJlZgojIDExNzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NvdXJjZV9sb2NhdGlvbgojIDEx ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3NwYW4KIyAxMTk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zc2l6ZQojIDEyMTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3RocmVlX3dheV9jb21wYXJpc29uCiMgMTIyMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf dG9fYWRkcmVzcwojIDEyMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2FycmF5CiMgMTI0MyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdHlwZV9pZGVudGl0eQojIDEyNTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Vud3JhcF9yZWYKIyAx MjY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfaXRlcmF0b3IKIyAxMjc2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9pbnRlcnBvbGF0ZQojIDEyODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl91dGlsaXR5CiMg MTI5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfc2hpZnQKIyAxMzE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXMKIyAx MzI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfbnVtZXJpYwojIDEzMzYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2NvbnN0ZXhwcl9mdW5jdGlvbmFsCiMgMTM0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2Fs Z29yaXRobXMKIyAxMzU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfdHVwbGUKIyAxMzc0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9jb25zdGV4cHJfbWVtb3J5CiMgMTM4NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWlj X3NoYXJlZF9wdHIKIyAxNDAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfd2FpdAojIDE0MTIgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2JhcnJpZXIKIyAxNDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mb3JtYXQKIyAxNDM0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9jb25zdGV4cHJfY29tcGxleAojIDE0NDUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9keW5hbWljX2FsbG9jCiMgMTQ2NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3N0cmlu ZwojIDE0NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl92ZWN0b3IKIyAxNDg4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9lcmFzZV9pZgojIDE0OTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNfdW5vcmRlcmVkX2xv b2t1cAojIDE1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2p0aHJlYWQKIyAxNTIxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9s YXRjaAojIDE1MzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xpc3RfcmVtb3ZlX3JldHVybl90eXBlCiMgMTU0 MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcG9seW1vcnBoaWNfYWxsb2NhdG9yCiMgMTU1NCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfbW92ZV9pdGVyYXRvcl9jb25jZXB0CiMgMTU2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2VtYXBob3Jl CiMgMTU3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfc21hcnRfcHRyX2Zvcl9vdmVyd3JpdGUKIyAxNTg3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9zeW5jYnVmCiMgMTU5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYnl0ZXN3YXAKIyAxNjA5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcmNvbnYKIyAxNjIwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9j b25zdGV4cHJfdHlwZWluZm8KIyAxNjMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leHBlY3RlZAojIDE2NDIg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hbGdvcml0aG0KIyAxNjUzICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9mcmVlc3RhbmRpbmdfYXJyYXkKIyAxNjY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdf Y3N0cmluZwojIDE2NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19leHBlY3RlZAojIDE2 ODYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19vcHRpb25hbAojIDE2OTcgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ZyZWVzdGFuZGluZ19zdHJpbmdfdmlldwojIDE3MDggIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVz dGFuZGluZ192YXJpYW50CiMgMTcxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlX3IKIyAxNzMwICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19zY29wZWRfZW51bQojIDE3NDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JlZmVyZW5j ZV9mcm9tX3RlbXBvcmFyeQojIDE3NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc190b19jb250YWlu ZXIKIyAxNzYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfemlwCiMgMTc3NCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf cmFuZ2VzX2NodW5rCiMgMTc4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3NsaWRlCiMgMTc5NiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfcmFuZ2VzX2NodW5rX2J5CiMgMTgwNyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2Vz X2pvaW5fd2l0aAojIDE4MTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19yZXBlYXQKIyAxODI5ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yYW5nZXNfc3RyaWRlCiMgMTg0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2Nh cnRlc2lhbl9wcm9kdWN0CiMgMTg1MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2FzX3J2YWx1ZQoj IDE4NjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19hc19jb25zdAojIDE4NzMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc19lbnVtZXJhdGUKIyAxODg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZm9sZAojIDE4 OTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jhbmdlc19jb250YWlucwojIDE5MDYgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jh bmdlc19pb3RhCiMgMTkxNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2ZpbmRfbGFzdAojIDE5Mjgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2NvbnN0ZXhwcl9iaXRzZXQKIyAxOTM5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdGRh dG9taWNfaAojIDE5NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkYXB0b3JfaXRlcmF0b3JfcGFpcl9jb25z dHJ1Y3RvcgojIDE5NjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdHRlcnMKIyAxOTcyICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9mb3J3YXJkX2xpa2UKIyAxOTgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pb3Nfbm9yZXBsYWNlCiMg MTk5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfbW92ZV9vbmx5X2Z1bmN0aW9uCiMgMjAwNSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfb3V0X3B0cgojIDIwMTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ByaW50CiMgMjAyNyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfc3BhbnN0cmVhbQojIDIwMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YWNrdHJhY2UKIyAyMDQ5ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9zdHJpbmdfY29udGFpbnMKIyAyMDYwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdf cmVzaXplX2FuZF9vdmVyd3JpdGUKIyAyMDcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b191bmRlcmx5aW5n CiMgMjA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfdW5yZWFjaGFibGUKIyAyMDkzICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9m c3RyZWFtX25hdGl2ZV9oYW5kbGUKIyAyMTA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYXRpbwojIDIxMTUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3NhdHVyYXRpb25fYXJpdGhtZXRpYwojIDIxMjYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3RvX3N0cmluZwojIDIxMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyYXRvcgoKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2FsbAojIDY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmluZyIg MiAzCiMgNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nl cy5oIiAyIDMKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlf XyAoImRlZmF1bHQiKSkpCnsKCiMgNjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgY2xhc3MgbG9jYWxlCiAgewogIHB1YmxpYzoKCgog ICAgdHlwZWRlZiBpbnQgY2F0ZWdvcnk7CgoKICAgIGNsYXNzIGZhY2V0OwogICAgY2xhc3Mg aWQ7CiAgICBjbGFzcyBfSW1wbDsKCiAgICBmcmllbmQgY2xhc3MgZmFjZXQ7CiAgICBmcmll bmQgY2xhc3MgX0ltcGw7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBm cmllbmQgYm9vbAogICAgICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJikgdGhyb3coKTsKCiAg ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQm CiAgICAgIHVzZV9mYWNldChjb25zdCBsb2NhbGUmKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfRmFjZXQ+CiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQqCiAgICAgIF9fdHJ5X3VzZV9m YWNldChjb25zdCBsb2NhbGUmKSB0aHJvdygpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9D YWNoZT4KICAgICAgZnJpZW5kIHN0cnVjdCBfX3VzZV9jYWNoZTsKIyAxMDIgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBzdGF0aWMg Y29uc3QgY2F0ZWdvcnkgbm9uZSA9IDA7CiAgICBzdGF0aWMgY29uc3QgY2F0ZWdvcnkgY3R5 cGUgPSAxTCA8PCAwOwogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IG51bWVyaWMgPSAxTCA8 PCAxOwogICAgc3RhdGljIGNvbnN0IGNhdGVnb3J5IGNvbGxhdGUgPSAxTCA8PCAyOwogICAg c3RhdGljIGNvbnN0IGNhdGVnb3J5IHRpbWUgPSAxTCA8PCAzOwogICAgc3RhdGljIGNvbnN0 IGNhdGVnb3J5IG1vbmV0YXJ5ID0gMUwgPDwgNDsKICAgIHN0YXRpYyBjb25zdCBjYXRlZ29y eSBtZXNzYWdlcyA9IDFMIDw8IDU7CiAgICBzdGF0aWMgY29uc3QgY2F0ZWdvcnkgYWxsID0g KGN0eXBlIHwgbnVtZXJpYyB8IGNvbGxhdGUgfAogICAgICAgIHRpbWUgfCBtb25ldGFyeSB8 IG1lc3NhZ2VzKTsKIyAxMjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2Nh bGVfY2xhc3Nlcy5oIiAzCiAgICBsb2NhbGUoKSB0aHJvdygpOwojIDEzMCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGxvY2FsZShj b25zdCBsb2NhbGUmIF9fb3RoZXIpIHRocm93KCk7CiMgMTQwICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgZXhwbGljaXQKICAgIGxv Y2FsZShjb25zdCBjaGFyKiBfX3MpOwojIDE1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIGxvY2FsZShjb25zdCBsb2NhbGUmIF9f YmFzZSwgY29uc3QgY2hhciogX19zLCBjYXRlZ29yeSBfX2NhdCk7CiMgMTk2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgbG9jYWxl KGNvbnN0IGxvY2FsZSYgX19iYXNlLCBjb25zdCBsb2NhbGUmIF9fYWRkLCBjYXRlZ29yeSBf X2NhdCk7CiMgMjA5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2Ns YXNzZXMuaCIgMwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBsb2NhbGUo Y29uc3QgbG9jYWxlJiBfX290aGVyLCBfRmFjZXQqIF9fZik7CgoKICAgIH5sb2NhbGUoKSB0 aHJvdygpOwojIDIyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9j bGFzc2VzLmgiIDMKICAgIGNvbnN0IGxvY2FsZSYKICAgIG9wZXJhdG9yPShjb25zdCBsb2Nh bGUmIF9fb3RoZXIpIHRocm93KCk7CiMgMjM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0 PgogICAgICBsb2NhbGUKICAgICAgY29tYmluZShjb25zdCBsb2NhbGUmIF9fb3RoZXIpIGNv bnN0OwoKCgoKCgogICAgX19hdHRyaWJ1dGUgKChfX2FiaV90YWdfXyAoImN4eDExIikpKQog ICAgc3RyaW5nCiAgICBuYW1lKCkgY29uc3Q7CiMgMjU4ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgYm9vbAogICAgb3BlcmF0b3I9 PShjb25zdCBsb2NhbGUmIF9fb3RoZXIpIGNvbnN0IHRocm93KCk7CiMgMjY4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgYm9vbAog ICAgb3BlcmF0b3IhPShjb25zdCBsb2NhbGUmIF9fb3RoZXIpIGNvbnN0IHRocm93KCkKICAg IHsgcmV0dXJuICEodGhpcy0+b3BlcmF0b3I9PShfX290aGVyKSk7IH0KIyAyODggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhciwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j PgogICAgICBib29sCiAgICAgIG9wZXJhdG9yKCkoY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFy LCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MxLAogICBjb25zdCBiYXNpY19zdHJpbmc8X0NoYXIs IF9UcmFpdHMsIF9BbGxvYz4mIF9fczIpIGNvbnN0OwojIDMwNCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgIHN0YXRpYyBsb2NhbGUK ICAgIGdsb2JhbChjb25zdCBsb2NhbGUmIF9fbG9jKTsKCgoKCiAgICBzdGF0aWMgY29uc3Qg bG9jYWxlJgogICAgY2xhc3NpYygpOwoKICBwcml2YXRlOgoKICAgIF9JbXBsKiBfTV9pbXBs OwoKCiAgICBzdGF0aWMgX0ltcGwqIF9TX2NsYXNzaWM7CgoKICAgIHN0YXRpYyBfSW1wbCog X1NfZ2xvYmFsOwoKCgoKCiAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IF9T X2NhdGVnb3JpZXM7CiMgMzM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9j YWxlX2NsYXNzZXMuaCIgMwogICAgZW51bSB7IF9TX2NhdGVnb3JpZXNfc2l6ZSA9IDYgKyA2 IH07CgoKICAgIHN0YXRpYyBfX2d0aHJlYWRfb25jZV90IF9TX29uY2U7CgoKICAgIGV4cGxp Y2l0CiAgICBsb2NhbGUoX0ltcGwqKSB0aHJvdygpOwoKICAgIHN0YXRpYyB2b2lkCiAgICBf U19pbml0aWFsaXplKCk7CgogICAgc3RhdGljIHZvaWQKICAgIF9TX2luaXRpYWxpemVfb25j ZSgpIHRocm93KCk7CgogICAgc3RhdGljIGNhdGVnb3J5CiAgICBfU19ub3JtYWxpemVfY2F0 ZWdvcnkoY2F0ZWdvcnkpOwoKICAgIHZvaWQKICAgIF9NX2NvYWxlc2NlKGNvbnN0IGxvY2Fs ZSYgX19iYXNlLCBjb25zdCBsb2NhbGUmIF9fYWRkLCBjYXRlZ29yeSBfX2NhdCk7CgoKICAg IHN0YXRpYyBjb25zdCBpZCogY29uc3QgX1NfdHdpbm5lZF9mYWNldHNbXTsKCiAgfTsKIyAz NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAz CiAgY2xhc3MgbG9jYWxlOjpmYWNldAogIHsKICBwcml2YXRlOgogICAgZnJpZW5kIGNsYXNz IGxvY2FsZTsKICAgIGZyaWVuZCBjbGFzcyBsb2NhbGU6Ol9JbXBsOwoKICAgIG11dGFibGUg X0F0b21pY193b3JkIF9NX3JlZmNvdW50OwoKCiAgICBzdGF0aWMgX19jX2xvY2FsZSBfU19j X2xvY2FsZTsKCgogICAgc3RhdGljIGNvbnN0IGNoYXIgX1NfY19uYW1lWzJdOwoKCiAgICBz dGF0aWMgX19ndGhyZWFkX29uY2VfdCBfU19vbmNlOwoKCiAgICBzdGF0aWMgdm9pZAogICAg X1NfaW5pdGlhbGl6ZV9vbmNlKCk7CgogIHByb3RlY3RlZDoKIyA0MDggIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICBleHBsaWNpdAog ICAgZmFjZXQoc2l6ZV90IF9fcmVmcyA9IDApIHRocm93KCkgOiBfTV9yZWZjb3VudChfX3Jl ZnMgPyAxIDogMCkKICAgIHsgfQoKCiAgICB2aXJ0dWFsCiAgICB+ZmFjZXQoKTsKCiAgICBz dGF0aWMgdm9pZAogICAgX1NfY3JlYXRlX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYywg Y29uc3QgY2hhciogX19zLAogICAgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gMCk7CgogICAg c3RhdGljIF9fY19sb2NhbGUKICAgIF9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9f Y2xvYykgdGhyb3coKTsKCiAgICBzdGF0aWMgdm9pZAogICAgX1NfZGVzdHJveV9jX2xvY2Fs ZShfX2NfbG9jYWxlJiBfX2Nsb2MpOwoKICAgIHN0YXRpYyBfX2NfbG9jYWxlCiAgICBfU19s Y19jdHlwZV9jX2xvY2FsZShfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zKTsK CgoKICAgIHN0YXRpYyBfX2NfbG9jYWxlCiAgICBfU19nZXRfY19sb2NhbGUoKTsKCiAgICBf X2F0dHJpYnV0ZV9fICgoX19jb25zdF9fKSkgc3RhdGljIGNvbnN0IGNoYXIqCiAgICBfU19n ZXRfY19uYW1lKCkgdGhyb3coKTsKCgogIHByaXZhdGU6CiAgICBmYWNldChjb25zdCBmYWNl dCYpOwoKICAgIGZhY2V0JgogICAgb3BlcmF0b3I9KGNvbnN0IGZhY2V0Jik7CgoKCgoKCgog IHByaXZhdGU6CiAgICB2b2lkCiAgICBfTV9hZGRfcmVmZXJlbmNlKCkgY29uc3QgdGhyb3co KQogICAgeyBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZF9kaXNwYXRjaCgmX01fcmVmY291bnQs IDEpOyB9CgogICAgdm9pZAogICAgX01fcmVtb3ZlX3JlZmVyZW5jZSgpIGNvbnN0IHRocm93 KCkKICAgIHsKCiAgICAgIDsKICAgICAgaWYgKF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRf YWRkX2Rpc3BhdGNoKCZfTV9yZWZjb3VudCwgLTEpID09IDEpCiB7CiAgICAgICAgICA7CiAg IHRyeQogICAgIHsgZGVsZXRlIHRoaXM7IH0KICAgY2F0Y2goLi4uKQogICAgIHsgfQogfQog ICAgfQoKICAgIGNvbnN0IGZhY2V0KiBfTV9zc29fc2hpbShjb25zdCBpZCopIGNvbnN0Owog ICAgY29uc3QgZmFjZXQqIF9NX2Nvd19zaGltKGNvbnN0IGlkKikgY29uc3Q7CgogIHByb3Rl Y3RlZDoKICAgIGNsYXNzIF9fc2hpbTsKICB9OwojIDQ4OSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICBjbGFzcyBsb2NhbGU6OmlkCiAg ewogIHByaXZhdGU6CiAgICBmcmllbmQgY2xhc3MgbG9jYWxlOwogICAgZnJpZW5kIGNsYXNz IGxvY2FsZTo6X0ltcGw7CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBm cmllbmQgY29uc3QgX0ZhY2V0JgogICAgICB1c2VfZmFjZXQoY29uc3QgbG9jYWxlJik7Cgog ICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgYm9vbAogICAgICBo YXNfZmFjZXQoY29uc3QgbG9jYWxlJikgdGhyb3coKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFt ZSBfRmFjZXQ+CiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQqCiAgICAgIF9fdHJ5X3VzZV9m YWNldChjb25zdCBsb2NhbGUmKSB0aHJvdygpOwoKCgoKICAgIG11dGFibGUgc2l6ZV90IF9N X2luZGV4OwoKCiAgICBzdGF0aWMgX0F0b21pY193b3JkIF9TX3JlZmNvdW50OwoKICAgIHZv aWQKICAgIG9wZXJhdG9yPShjb25zdCBpZCYpOwoKICAgIGlkKGNvbnN0IGlkJik7CgogIHB1 YmxpYzoKCgoKICAgIGlkKCkgeyB9CgogICAgc2l6ZV90CiAgICBfTV9pZCgpIGNvbnN0IHRo cm93KCk7CiAgfTsKCgoKICBjbGFzcyBsb2NhbGU6Ol9JbXBsCiAgewogIHB1YmxpYzoKCiAg ICBmcmllbmQgY2xhc3MgbG9jYWxlOwogICAgZnJpZW5kIGNsYXNzIGxvY2FsZTo6ZmFjZXQ7 CgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgICBmcmllbmQgYm9vbAogICAg ICBoYXNfZmFjZXQoY29uc3QgbG9jYWxlJikgdGhyb3coKTsKCiAgICB0ZW1wbGF0ZTx0eXBl bmFtZSBfRmFjZXQ+CiAgICAgIGZyaWVuZCBjb25zdCBfRmFjZXQmCiAgICAgIHVzZV9mYWNl dChjb25zdCBsb2NhbGUmKTsKCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICAg IGZyaWVuZCBjb25zdCBfRmFjZXQqCiAgICAgIF9fdHJ5X3VzZV9mYWNldChjb25zdCBsb2Nh bGUmKSB0aHJvdygpOwoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DYWNoZT4KICAgICAgZnJp ZW5kIHN0cnVjdCBfX3VzZV9jYWNoZTsKCiAgcHJpdmF0ZToKCiAgICBfQXRvbWljX3dvcmQg X01fcmVmY291bnQ7CiAgICBjb25zdCBmYWNldCoqIF9NX2ZhY2V0czsKICAgIHNpemVfdCBf TV9mYWNldHNfc2l6ZTsKICAgIGNvbnN0IGZhY2V0KiogX01fY2FjaGVzOwogICAgY2hhcioq IF9NX25hbWVzOwogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX2N0 eXBlW107CiAgICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRfbnVtZXJp Y1tdOwogICAgc3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0IF9TX2lkX2NvbGxhdGVb XTsKICAgIHN0YXRpYyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF90aW1lW107CiAg ICBzdGF0aWMgY29uc3QgbG9jYWxlOjppZCogY29uc3QgX1NfaWRfbW9uZXRhcnlbXTsKICAg IHN0YXRpYyBjb25zdCBsb2NhbGU6OmlkKiBjb25zdCBfU19pZF9tZXNzYWdlc1tdOwogICAg c3RhdGljIGNvbnN0IGxvY2FsZTo6aWQqIGNvbnN0KiBjb25zdCBfU19mYWNldF9jYXRlZ29y aWVzW107CgogICAgdm9pZAogICAgX01fYWRkX3JlZmVyZW5jZSgpIHRocm93KCkKICAgIHsg X19nbnVfY3h4OjpfX2F0b21pY19hZGRfZGlzcGF0Y2goJl9NX3JlZmNvdW50LCAxKTsgfQoK ICAgIHZvaWQKICAgIF9NX3JlbW92ZV9yZWZlcmVuY2UoKSB0aHJvdygpCiAgICB7CgogICAg ICA7CiAgICAgIGlmIChfX2dudV9jeHg6Ol9fZXhjaGFuZ2VfYW5kX2FkZF9kaXNwYXRjaCgm X01fcmVmY291bnQsIC0xKSA9PSAxKQogewogICAgICAgICAgOwogICB0cnkKICAgICB7IGRl bGV0ZSB0aGlzOyB9CiAgIGNhdGNoKC4uLikKICAgICB7IH0KIH0KICAgIH0KCiAgICBfSW1w bChjb25zdCBfSW1wbCYsIHNpemVfdCk7CiAgICBfSW1wbChjb25zdCBjaGFyKiwgc2l6ZV90 KTsKICAgIF9JbXBsKHNpemVfdCkgdGhyb3coKTsKCiAgIH5fSW1wbCgpIHRocm93KCk7Cgog ICAgX0ltcGwoY29uc3QgX0ltcGwmKTsKCiAgICB2b2lkCiAgICBvcGVyYXRvcj0oY29uc3Qg X0ltcGwmKTsKCiAgICBib29sCiAgICBfTV9jaGVja19zYW1lX25hbWUoKQogICAgewogICAg ICBib29sIF9fcmV0ID0gdHJ1ZTsKICAgICAgaWYgKF9NX25hbWVzWzFdKQoKIGZvciAoc2l6 ZV90IF9faSA9IDA7IF9fcmV0ICYmIF9faSA8IF9TX2NhdGVnb3JpZXNfc2l6ZSAtIDE7ICsr X19pKQogICBfX3JldCA9IF9fYnVpbHRpbl9zdHJjbXAoX01fbmFtZXNbX19pXSwgX01fbmFt ZXNbX19pICsgMV0pID09IDA7CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgICB2b2lk CiAgICBfTV9yZXBsYWNlX2NhdGVnb3JpZXMoY29uc3QgX0ltcGwqLCBjYXRlZ29yeSk7Cgog ICAgdm9pZAogICAgX01fcmVwbGFjZV9jYXRlZ29yeShjb25zdCBfSW1wbCosIGNvbnN0IGxv Y2FsZTo6aWQqIGNvbnN0Kik7CgogICAgdm9pZAogICAgX01fcmVwbGFjZV9mYWNldChjb25z dCBfSW1wbCosIGNvbnN0IGxvY2FsZTo6aWQqKTsKCiAgICB2b2lkCiAgICBfTV9pbnN0YWxs X2ZhY2V0KGNvbnN0IGxvY2FsZTo6aWQqLCBjb25zdCBmYWNldCopOwoKICAgIHRlbXBsYXRl PHR5cGVuYW1lIF9GYWNldD4KICAgICAgdm9pZAogICAgICBfTV9pbml0X2ZhY2V0KF9GYWNl dCogX19mYWNldCkKICAgICAgeyBfTV9pbnN0YWxsX2ZhY2V0KCZfRmFjZXQ6OmlkLCBfX2Zh Y2V0KTsgfQoKICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgICAgdm9pZAogICAg ICBfTV9pbml0X2ZhY2V0X3VuY2hlY2tlZChfRmFjZXQqIF9fZmFjZXQpCiAgICAgIHsKIF9f ZmFjZXQtPl9NX2FkZF9yZWZlcmVuY2UoKTsKIF9NX2ZhY2V0c1tfRmFjZXQ6OmlkLl9NX2lk KCldID0gX19mYWNldDsKICAgICAgfQoKICAgIHZvaWQKICAgIF9NX2luc3RhbGxfY2FjaGUo Y29uc3QgZmFjZXQqLCBzaXplX3QpOwoKICAgIHZvaWQgX01faW5pdF9leHRyYShmYWNldCoq KTsKICAgIHZvaWQgX01faW5pdF9leHRyYSh2b2lkKiwgdm9pZCosIGNvbnN0IGNoYXIqLCBj b25zdCBjaGFyKik7CgoKCgogIH07CiMgNjU5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4K ICAgIGNsYXNzIF9fY3h4MTE6OiBjb2xsYXRlIDogcHVibGljIGxvY2FsZTo6ZmFjZXQKICAg IHsKICAgIHB1YmxpYzoKCgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAg ICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOwoKCiAgICBwcm90 ZWN0ZWQ6CgoKICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jb2xsYXRlOwoKICAgIHB1 YmxpYzoKCiAgICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwojIDY4NiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLmgiIDMKICAgICAgZXhwbGljaXQK ICAgICAgY29sbGF0ZShzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMp LCBfTV9jX2xvY2FsZV9jb2xsYXRlKF9TX2dldF9jX2xvY2FsZSgpKQogICAgICB7IH0KIyA3 MDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAz CiAgICAgIGV4cGxpY2l0CiAgICAgIGNvbGxhdGUoX19jX2xvY2FsZSBfX2Nsb2MsIHNpemVf dCBfX3JlZnMgPSAwKQogICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2NfbG9jYWxlX2NvbGxh dGUoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSkKICAgICAgeyB9CiMgNzE3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgICBpbnQK ICAgICAgY29tcGFyZShjb25zdCBfQ2hhclQqIF9fbG8xLCBjb25zdCBfQ2hhclQqIF9faGkx LAogICAgICAgY29uc3QgX0NoYXJUKiBfX2xvMiwgY29uc3QgX0NoYXJUKiBfX2hpMikgY29u c3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fY29tcGFyZShfX2xvMSwgX19oaTEsIF9fbG8y LCBfX2hpMik7IH0KIyA3MzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2Nh bGVfY2xhc3Nlcy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAgICAgIHRyYW5zZm9ybShjb25z dCBfQ2hhclQqIF9fbG8sIGNvbnN0IF9DaGFyVCogX19oaSkgY29uc3QKICAgICAgeyByZXR1 cm4gdGhpcy0+ZG9fdHJhbnNmb3JtKF9fbG8sIF9faGkpOyB9CiMgNzUwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgICBsb25nCiAg ICAgIGhhc2goY29uc3QgX0NoYXJUKiBfX2xvLCBjb25zdCBfQ2hhclQqIF9faGkpIGNvbnN0 CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2hhc2goX19sbywgX19oaSk7IH0KCgogICAgICBp bnQKICAgICAgX01fY29tcGFyZShjb25zdCBfQ2hhclQqLCBjb25zdCBfQ2hhclQqKSBjb25z dCB0aHJvdygpOwoKICAgICAgc2l6ZV90CiAgICAgIF9NX3RyYW5zZm9ybShfQ2hhclQqLCBj b25zdCBfQ2hhclQqLCBzaXplX3QpIGNvbnN0IHRocm93KCk7CgogIHByb3RlY3RlZDoKCiAg ICAgIHZpcnR1YWwKICAgICAgfmNvbGxhdGUoKQogICAgICB7IF9TX2Rlc3Ryb3lfY19sb2Nh bGUoX01fY19sb2NhbGVfY29sbGF0ZSk7IH0KIyA3NzkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9sb2NhbGVfY2xhc3Nlcy5oIiAzCiAgICAgIHZpcnR1YWwgaW50CiAgICAg IGRvX2NvbXBhcmUoY29uc3QgX0NoYXJUKiBfX2xvMSwgY29uc3QgX0NoYXJUKiBfX2hpMSwK ICAgY29uc3QgX0NoYXJUKiBfX2xvMiwgY29uc3QgX0NoYXJUKiBfX2hpMikgY29uc3Q7CiMg NzkzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIg MwogICAgICB2aXJ0dWFsIHN0cmluZ190eXBlCiAgICAgIGRvX3RyYW5zZm9ybShjb25zdCBf Q2hhclQqIF9fbG8sIGNvbnN0IF9DaGFyVCogX19oaSkgY29uc3Q7CiMgODA2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNzZXMuaCIgMwogICAgICB2aXJ0 dWFsIGxvbmcKICAgICAgZG9faGFzaChjb25zdCBfQ2hhclQqIF9fbG8sIGNvbnN0IF9DaGFy VCogX19oaSkgY29uc3Q7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg ICBsb2NhbGU6OmlkIGNvbGxhdGU8X0NoYXJUPjo6aWQ7CgoKICB0ZW1wbGF0ZTw+CiAgICBp bnQKICAgIGNvbGxhdGU8Y2hhcj46Ol9NX2NvbXBhcmUoY29uc3QgY2hhciosIGNvbnN0IGNo YXIqKSBjb25zdCB0aHJvdygpOwoKICB0ZW1wbGF0ZTw+CiAgICBzaXplX3QKICAgIGNvbGxh dGU8Y2hhcj46Ol9NX3RyYW5zZm9ybShjaGFyKiwgY29uc3QgY2hhciosIHNpemVfdCkgY29u c3QgdGhyb3coKTsKCgogIHRlbXBsYXRlPD4KICAgIGludAogICAgY29sbGF0ZTx3Y2hhcl90 Pjo6X01fY29tcGFyZShjb25zdCB3Y2hhcl90KiwgY29uc3Qgd2NoYXJfdCopIGNvbnN0IHRo cm93KCk7CgogIHRlbXBsYXRlPD4KICAgIHNpemVfdAogICAgY29sbGF0ZTx3Y2hhcl90Pjo6 X01fdHJhbnNmb3JtKHdjaGFyX3QqLCBjb25zdCB3Y2hhcl90Kiwgc2l6ZV90KSBjb25zdCB0 aHJvdygpOwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIF9fY3h4 MTE6OiBjb2xsYXRlX2J5bmFtZSA6IHB1YmxpYyBjb2xsYXRlPF9DaGFyVD4KICAgIHsKICAg IHB1YmxpYzoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVk ZWYgYmFzaWNfc3RyaW5nPF9DaGFyVD4gc3RyaW5nX3R5cGU7CgoKICAgICAgZXhwbGljaXQK ICAgICAgY29sbGF0ZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzID0g MCkKICAgICAgOiBjb2xsYXRlPF9DaGFyVD4oX19yZWZzKQogICAgICB7CiBpZiAoX19idWls dGluX3N0cmNtcChfX3MsICJDIikgIT0gMAogICAgICYmIF9fYnVpbHRpbl9zdHJjbXAoX19z LCAiUE9TSVgiKSAhPSAwKQogICB7CiAgICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0 aGlzLT5fTV9jX2xvY2FsZV9jb2xsYXRlKTsKICAgICB0aGlzLT5fU19jcmVhdGVfY19sb2Nh bGUodGhpcy0+X01fY19sb2NhbGVfY29sbGF0ZSwgX19zKTsKICAgfQogICAgICB9CgoKCgoK CgogICAgcHJvdGVjdGVkOgogICAgICB2aXJ0dWFsCiAgICAgIH5jb2xsYXRlX2J5bmFtZSgp IHsgfQogICAgfTsKCgp9CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9s b2NhbGVfY2xhc3Nlcy50Y2MiIDEgMwojIDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvbG9jYWxlX2NsYXNzZXMudGNjIiAzCiNkZWZpbmUgX0xPQ0FMRV9DTEFTU0VTX1RD QyAxCgogICAgICAgCiMgMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2Nh bGVfY2xhc3Nlcy50Y2MiIDMKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlz aWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0 PgogICAgbG9jYWxlOjoKICAgIGxvY2FsZShjb25zdCBsb2NhbGUmIF9fb3RoZXIsIF9GYWNl dCogX19mKQogICAgewogICAgICBfTV9pbXBsID0gbmV3IF9JbXBsKCpfX290aGVyLl9NX2lt cGwsIDEpOwoKICAgICAgdHJ5CiB7IF9NX2ltcGwtPl9NX2luc3RhbGxfZmFjZXQoJl9GYWNl dDo6aWQsIF9fZik7IH0KICAgICAgY2F0Y2goLi4uKQogewogICBfTV9pbXBsLT5fTV9yZW1v dmVfcmVmZXJlbmNlKCk7CiAgIHRocm93OwogfQogICAgICBkZWxldGUgW10gX01faW1wbC0+ X01fbmFtZXNbMF07CiAgICAgIF9NX2ltcGwtPl9NX25hbWVzWzBdID0gMDsKICAgIH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgbG9jYWxlCiAgICBsb2NhbGU6OgogICAg Y29tYmluZShjb25zdCBsb2NhbGUmIF9fb3RoZXIpIGNvbnN0CiAgICB7CiAgICAgIF9JbXBs KiBfX3RtcCA9IG5ldyBfSW1wbCgqX01faW1wbCwgMSk7CiAgICAgIHRyeQogewogICBfX3Rt cC0+X01fcmVwbGFjZV9mYWNldChfX290aGVyLl9NX2ltcGwsICZfRmFjZXQ6OmlkKTsKIH0K ICAgICAgY2F0Y2goLi4uKQogewogICBfX3RtcC0+X01fcmVtb3ZlX3JlZmVyZW5jZSgpOwog ICB0aHJvdzsKIH0KICAgICAgcmV0dXJuIGxvY2FsZShfX3RtcCk7CiAgICB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cywgdHlwZW5hbWUgX0FsbG9j PgogICAgYm9vbAogICAgbG9jYWxlOjoKICAgIG9wZXJhdG9yKCkoY29uc3QgYmFzaWNfc3Ry aW5nPF9DaGFyVCwgX1RyYWl0cywgX0FsbG9jPiYgX19zMSwKICAgICAgICBjb25zdCBiYXNp Y19zdHJpbmc8X0NoYXJULCBfVHJhaXRzLCBfQWxsb2M+JiBfX3MyKSBjb25zdAogICAgewog ICAgICB0eXBlZGVmIHN0ZDo6Y29sbGF0ZTxfQ2hhclQ+IF9fY29sbGF0ZV90eXBlOwogICAg ICBjb25zdCBfX2NvbGxhdGVfdHlwZSYgX19jb2xsYXRlID0gdXNlX2ZhY2V0PF9fY29sbGF0 ZV90eXBlPigqdGhpcyk7CiAgICAgIHJldHVybiAoX19jb2xsYXRlLmNvbXBhcmUoX19zMS5k YXRhKCksIF9fczEuZGF0YSgpICsgX19zMS5sZW5ndGgoKSwKICAgIF9fczIuZGF0YSgpLCBf X3MyLmRhdGEoKSArIF9fczIubGVuZ3RoKCkpIDwgMCk7CiAgICB9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9GYWNldD4KICAgIGlubGluZSBjb25zdCBfRmFjZXQqCiAgICBfX3RyeV91c2Vf ZmFjZXQoY29uc3QgbG9jYWxlJiBfX2xvYykgdGhyb3coKQogICAgewogICAgICBjb25zdCBz aXplX3QgX19pID0gX0ZhY2V0OjppZC5fTV9pZCgpOwogICAgICBjb25zdCBsb2NhbGU6OmZh Y2V0KiogX19mYWNldHMgPSBfX2xvYy5fTV9pbXBsLT5fTV9mYWNldHM7CgoKCiNkZWZpbmUg X0dMSUJDWFhfU1REX0ZBQ0VUKC4uLikgaWYgX0dMSUJDWFgxN19DT05TVEVYUFIgKF9faXNf c2FtZShfRmFjZXQsIF9fVkFfQVJHU19fKSkgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9G YWNldCo+KF9fZmFjZXRzW19faV0pCgoKCiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBj dHlwZTxjaGFyPikpIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQqPihfX2ZhY2V0 c1tfX2ldKTsKICAgICAgaWYgKF9faXNfc2FtZShfRmFjZXQsIG51bV9nZXQ8Y2hhcj4pKSBy ZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAgICAg IGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBudW1fcHV0PGNoYXI+KSkgcmV0dXJuIHN0YXRpY19j YXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwogICAgICBpZiAoX19pc19zYW1l KF9GYWNldCwgY29kZWN2dDxjaGFyLCBjaGFyLCBtYnN0YXRlX3Q+KSkgcmV0dXJuIHN0YXRp Y19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwogICAgICBpZiAoX19pc19z YW1lKF9GYWNldCwgY29sbGF0ZTxjaGFyPikpIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBf RmFjZXQqPihfX2ZhY2V0c1tfX2ldKTsKICAgICAgaWYgKF9faXNfc2FtZShfRmFjZXQsIG1v bmV5cHVuY3Q8Y2hhcj4pKSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19m YWNldHNbX19pXSk7CiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBtb25leXB1bmN0PGNo YXIsIHRydWU+KSkgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRz W19faV0pOwogICAgICBpZiAoX19pc19zYW1lKF9GYWNldCwgbW9uZXlfZ2V0PGNoYXI+KSkg cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwogICAg ICBpZiAoX19pc19zYW1lKF9GYWNldCwgbW9uZXlfcHV0PGNoYXI+KSkgcmV0dXJuIHN0YXRp Y19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwogICAgICBpZiAoX19pc19z YW1lKF9GYWNldCwgbnVtcHVuY3Q8Y2hhcj4pKSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg X0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCB0 aW1lX2dldDxjaGFyPikpIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQqPihfX2Zh Y2V0c1tfX2ldKTsKICAgICAgaWYgKF9faXNfc2FtZShfRmFjZXQsIHRpbWVfcHV0PGNoYXI+ KSkgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwog ICAgICBpZiAoX19pc19zYW1lKF9GYWNldCwgbWVzc2FnZXM8Y2hhcj4pKSByZXR1cm4gc3Rh dGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CgoKICAgICAgaWYgKF9f aXNfc2FtZShfRmFjZXQsIGN0eXBlPHdjaGFyX3Q+KSkgcmV0dXJuIHN0YXRpY19jYXN0PGNv bnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0pOwogICAgICBpZiAoX19pc19zYW1lKF9GYWNl dCwgbnVtX2dldDx3Y2hhcl90PikpIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQq PihfX2ZhY2V0c1tfX2ldKTsKICAgICAgaWYgKF9faXNfc2FtZShfRmFjZXQsIG51bV9wdXQ8 d2NoYXJfdD4pKSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNb X19pXSk7CiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBjb2RlY3Z0PHdjaGFyX3QsIGNo YXIsIG1ic3RhdGVfdD4pKSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19m YWNldHNbX19pXSk7CiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBjb2xsYXRlPHdjaGFy X3Q+KSkgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRzW19faV0p OwogICAgICBpZiAoX19pc19zYW1lKF9GYWNldCwgbW9uZXlwdW5jdDx3Y2hhcl90PikpIHJl dHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQqPihfX2ZhY2V0c1tfX2ldKTsKICAgICAg aWYgKF9faXNfc2FtZShfRmFjZXQsIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT4pKSByZXR1 cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAgICAgIGlm IChfX2lzX3NhbWUoX0ZhY2V0LCBtb25leV9nZXQ8d2NoYXJfdD4pKSByZXR1cm4gc3RhdGlj X2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAgICAgIGlmIChfX2lzX3Nh bWUoX0ZhY2V0LCBtb25leV9wdXQ8d2NoYXJfdD4pKSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u c3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAgICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0 LCBudW1wdW5jdDx3Y2hhcl90PikpIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBfRmFjZXQq PihfX2ZhY2V0c1tfX2ldKTsKICAgICAgaWYgKF9faXNfc2FtZShfRmFjZXQsIHRpbWVfZ2V0 PHdjaGFyX3Q+KSkgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IF9GYWNldCo+KF9fZmFjZXRz W19faV0pOwogICAgICBpZiAoX19pc19zYW1lKF9GYWNldCwgdGltZV9wdXQ8d2NoYXJfdD4p KSByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CiAg ICAgIGlmIChfX2lzX3NhbWUoX0ZhY2V0LCBtZXNzYWdlczx3Y2hhcl90PikpIHJldHVybiBz dGF0aWNfY2FzdDxjb25zdCBfRmFjZXQqPihfX2ZhY2V0c1tfX2ldKTsKCgoKCgoKI3VuZGVm IF9HTElCQ1hYX1NURF9GQUNFVAoKICAgICAgaWYgKF9faSA+PSBfX2xvYy5fTV9pbXBsLT5f TV9mYWNldHNfc2l6ZSB8fCAhX19mYWNldHNbX19pXSkKIHJldHVybiAwOwoKCiAgICAgIHJl dHVybiBkeW5hbWljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oX19mYWNldHNbX19pXSk7CgoKCiAg ICB9CiMgMTYxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2NsYXNz ZXMudGNjIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0ZhY2V0PgogICAgaW5saW5lIGJvb2wK ICAgIGhhc19mYWNldChjb25zdCBsb2NhbGUmIF9fbG9jKSB0aHJvdygpCiAgICB7CgoKCgog ICAgICAodm9pZCkgc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oc3RhdGljX2Nhc3Q8Y29u c3QgbG9jYWxlOjpmYWNldCo+KDApKTsKCiAgICAgIHJldHVybiBzdGQ6Ol9fdHJ5X3VzZV9m YWNldDxfRmFjZXQ+KF9fbG9jKSAhPSAwOwogICAgfQojIDE4OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2xvY2FsZV9jbGFzc2VzLnRjYyIgMwojcHJhZ21hIEdDQyBkaWFn bm9zdGljIHB1c2gKI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RhbmdsaW5n LXJlZmVyZW5jZSIKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICBpbmxpbmUgY29u c3QgX0ZhY2V0JgogICAgdXNlX2ZhY2V0KGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7CgoK CgogICAgICAodm9pZCkgc3RhdGljX2Nhc3Q8Y29uc3QgX0ZhY2V0Kj4oc3RhdGljX2Nhc3Q8 Y29uc3QgbG9jYWxlOjpmYWNldCo+KDApKTsKCiAgICAgIGlmIChjb25zdCBfRmFjZXQqIF9f ZiA9IHN0ZDo6X190cnlfdXNlX2ZhY2V0PF9GYWNldD4oX19sb2MpKQogcmV0dXJuICpfX2Y7 CiAgICAgIF9fdGhyb3dfYmFkX2Nhc3QoKTsKICAgIH0KI3ByYWdtYSBHQ0MgZGlhZ25vc3Rp YyBwb3AKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbnQKICAgIGNvbGxh dGU8X0NoYXJUPjo6X01fY29tcGFyZShjb25zdCBfQ2hhclQqLCBjb25zdCBfQ2hhclQqKSBj b25zdCB0aHJvdyAoKQogICAgeyByZXR1cm4gMDsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0NoYXJUPgogICAgc2l6ZV90CiAgICBjb2xsYXRlPF9DaGFyVD46Ol9NX3RyYW5zZm9ybShf Q2hhclQqLCBjb25zdCBfQ2hhclQqLCBzaXplX3QpIGNvbnN0IHRocm93ICgpCiAgICB7IHJl dHVybiAwOyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGludAogICAgY29s bGF0ZTxfQ2hhclQ+OjoKICAgIGRvX2NvbXBhcmUoY29uc3QgX0NoYXJUKiBfX2xvMSwgY29u c3QgX0NoYXJUKiBfX2hpMSwKICAgICAgICBjb25zdCBfQ2hhclQqIF9fbG8yLCBjb25zdCBf Q2hhclQqIF9faGkyKSBjb25zdAogICAgewoKCiAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9f b25lKF9fbG8xLCBfX2hpMSk7CiAgICAgIGNvbnN0IHN0cmluZ190eXBlIF9fdHdvKF9fbG8y LCBfX2hpMik7CgogICAgICBjb25zdCBfQ2hhclQqIF9fcCA9IF9fb25lLmNfc3RyKCk7CiAg ICAgIGNvbnN0IF9DaGFyVCogX19wZW5kID0gX19vbmUuZGF0YSgpICsgX19vbmUubGVuZ3Ro KCk7CiAgICAgIGNvbnN0IF9DaGFyVCogX19xID0gX190d28uY19zdHIoKTsKICAgICAgY29u c3QgX0NoYXJUKiBfX3FlbmQgPSBfX3R3by5kYXRhKCkgKyBfX3R3by5sZW5ndGgoKTsKCgoK CiAgICAgIGZvciAoOzspCiB7CiAgIGNvbnN0IGludCBfX3JlcyA9IF9NX2NvbXBhcmUoX19w LCBfX3EpOwogICBpZiAoX19yZXMpCiAgICAgcmV0dXJuIF9fcmVzOwoKICAgX19wICs9IGNo YXJfdHJhaXRzPF9DaGFyVD46Omxlbmd0aChfX3ApOwogICBfX3EgKz0gY2hhcl90cmFpdHM8 X0NoYXJUPjo6bGVuZ3RoKF9fcSk7CiAgIGlmIChfX3AgPT0gX19wZW5kICYmIF9fcSA9PSBf X3FlbmQpCiAgICAgcmV0dXJuIDA7CiAgIGVsc2UgaWYgKF9fcCA9PSBfX3BlbmQpCiAgICAg cmV0dXJuIC0xOwogICBlbHNlIGlmIChfX3EgPT0gX19xZW5kKQogICAgIHJldHVybiAxOwoK ICAgX19wKys7CiAgIF9fcSsrOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQ+CiAgICB0eXBlbmFtZSBjb2xsYXRlPF9DaGFyVD46OnN0cmluZ190eXBlCiAgICBjb2xs YXRlPF9DaGFyVD46OgogICAgZG9fdHJhbnNmb3JtKGNvbnN0IF9DaGFyVCogX19sbywgY29u c3QgX0NoYXJUKiBfX2hpKSBjb25zdAogICAgewogICAgICBzdHJpbmdfdHlwZSBfX3JldDsK CgogICAgICBjb25zdCBzdHJpbmdfdHlwZSBfX3N0cihfX2xvLCBfX2hpKTsKCiAgICAgIGNv bnN0IF9DaGFyVCogX19wID0gX19zdHIuY19zdHIoKTsKICAgICAgY29uc3QgX0NoYXJUKiBf X3BlbmQgPSBfX3N0ci5kYXRhKCkgKyBfX3N0ci5sZW5ndGgoKTsKCiAgICAgIHNpemVfdCBf X2xlbiA9IChfX2hpIC0gX19sbykgKiAyOwoKICAgICAgX0NoYXJUKiBfX2MgPSBuZXcgX0No YXJUW19fbGVuXTsKCiAgICAgIHRyeQogewoKCgogICBmb3IgKDs7KQogICAgIHsKCiAgICAg ICBzaXplX3QgX19yZXMgPSBfTV90cmFuc2Zvcm0oX19jLCBfX3AsIF9fbGVuKTsKCgogICAg ICAgaWYgKF9fcmVzID49IF9fbGVuKQogIHsKICAgIF9fbGVuID0gX19yZXMgKyAxOwogICAg ZGVsZXRlIFtdIF9fYywgX19jID0gMDsKICAgIF9fYyA9IG5ldyBfQ2hhclRbX19sZW5dOwog ICAgX19yZXMgPSBfTV90cmFuc2Zvcm0oX19jLCBfX3AsIF9fbGVuKTsKICB9CgogICAgICAg X19yZXQuYXBwZW5kKF9fYywgX19yZXMpOwogICAgICAgX19wICs9IGNoYXJfdHJhaXRzPF9D aGFyVD46Omxlbmd0aChfX3ApOwogICAgICAgaWYgKF9fcCA9PSBfX3BlbmQpCiAgYnJlYWs7 CgogICAgICAgX19wKys7CiAgICAgICBfX3JldC5wdXNoX2JhY2soX0NoYXJUKCkpOwogICAg IH0KIH0KICAgICAgY2F0Y2goLi4uKQogewogICBkZWxldGUgW10gX19jOwogICB0aHJvdzsK IH0KCiAgICAgIGRlbGV0ZSBbXSBfX2M7CgogICAgICByZXR1cm4gX19yZXQ7CiAgICB9Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGxvbmcKICAgIGNvbGxhdGU8X0NoYXJU Pjo6CiAgICBkb19oYXNoKGNvbnN0IF9DaGFyVCogX19sbywgY29uc3QgX0NoYXJUKiBfX2hp KSBjb25zdAogICAgewogICAgICB1bnNpZ25lZCBsb25nIF9fdmFsID0gMDsKICAgICAgZm9y ICg7IF9fbG8gPCBfX2hpOyArK19fbG8pCiBfX3ZhbCA9CiAgICpfX2xvICsgKChfX3ZhbCA8 PCA3KQogICAgIHwgKF9fdmFsID4+IChfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8dW5z aWduZWQgbG9uZz46OgogICAgX19kaWdpdHMgLSA3KSkpOwogICAgICByZXR1cm4gc3RhdGlj X2Nhc3Q8bG9uZz4oX192YWwpOwogICAgfQoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3Mg Y29sbGF0ZTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgY29sbGF0ZV9ieW5hbWU8 Y2hhcj47CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY29sbGF0ZTxjaGFyPioKICAg IF9fdHJ5X3VzZV9mYWNldDxjb2xsYXRlPGNoYXI+ID4oY29uc3QgbG9jYWxlJikgdGhyb3co KTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBjb2xsYXRlPGNoYXI+JgogICAgdXNl X2ZhY2V0PGNvbGxhdGU8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBs YXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8Y29sbGF0ZTxjaGFyPiA+KGNvbnN0IGxvY2Fs ZSYpOwoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvbGxhdGU8d2NoYXJfdD47CiAgZXh0 ZXJuIHRlbXBsYXRlIGNsYXNzIGNvbGxhdGVfYnluYW1lPHdjaGFyX3Q+OwoKICBleHRlcm4g dGVtcGxhdGUKICAgIGNvbnN0IGNvbGxhdGU8d2NoYXJfdD4qCiAgICBfX3RyeV91c2VfZmFj ZXQ8Y29sbGF0ZTx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7CgogIGV4dGVy biB0ZW1wbGF0ZQogICAgY29uc3QgY29sbGF0ZTx3Y2hhcl90PiYKICAgIHVzZV9mYWNldDxj b2xsYXRlPHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQog ICAgYm9vbAogICAgaGFzX2ZhY2V0PGNvbGxhdGU8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUm KTsKCgoKCn0KIyA4NzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVf Y2xhc3Nlcy5oIiAyIDMKIyA0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lv c19iYXNlLmgiIDIgMwoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdGRleGNl cHQiIDEgMwojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0ZGV4Y2VwdCIgMwoj ZGVmaW5lIF9HTElCQ1hYX1NUREVYQ0VQVCAxCgogICAgICAgCiMgMzcgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvc3RkZXhjZXB0IiAzCgoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmli dXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKCgogIHN0cnVjdCBf X2Nvd19zdHJpbmcKICB7CiAgICB1bmlvbiB7CiAgICAgIGNvbnN0IGNoYXIqIF9NX3A7CiAg ICAgIGNoYXIgX01fYnl0ZXNbc2l6ZW9mKGNvbnN0IGNoYXIqKV07CiAgICB9OwoKICAgIF9f Y293X3N0cmluZygpOwogICAgX19jb3dfc3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJik7CiAg ICBfX2Nvd19zdHJpbmcoY29uc3QgY2hhciosIHNpemVfdCk7CiAgICBfX2Nvd19zdHJpbmco Y29uc3QgX19jb3dfc3RyaW5nJikgdGhyb3coKTsKICAgIF9fY293X3N0cmluZyYgb3BlcmF0 b3I9KGNvbnN0IF9fY293X3N0cmluZyYpIHRocm93KCk7CiAgICB+X19jb3dfc3RyaW5nKCk7 CgoKCgogIH07CgogIHR5cGVkZWYgYmFzaWNfc3RyaW5nPGNoYXI+IF9fc3NvX3N0cmluZzsK IyAxMTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RkZXhjZXB0IiAzCiAgY2xhc3Mg bG9naWNfZXJyb3IgOiBwdWJsaWMgZXhjZXB0aW9uCiAgewogICAgX19jb3dfc3RyaW5nIF9N X21zZzsKCiAgcHVibGljOgoKICAgIGV4cGxpY2l0CiAgICBsb2dpY19lcnJvcihjb25zdCBz dHJpbmcmIF9fYXJnKSA7CiMgMTMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0ZGV4 Y2VwdCIgMwogICAgbG9naWNfZXJyb3IoY29uc3QgbG9naWNfZXJyb3ImKSB0aHJvdygpOwog ICAgbG9naWNfZXJyb3ImIG9wZXJhdG9yPShjb25zdCBsb2dpY19lcnJvciYpIHRocm93KCk7 CgoKCgoKICAgIHZpcnR1YWwgfmxvZ2ljX2Vycm9yKCkgdGhyb3coKTsKCgoKICAgIHZpcnR1 YWwgY29uc3QgY2hhcioKICAgIHdoYXQoKSBjb25zdCB0aHJvdygpOwoKCgoKCiAgfTsKCgoK ICBjbGFzcyBkb21haW5fZXJyb3IgOiBwdWJsaWMgbG9naWNfZXJyb3IKICB7CiAgcHVibGlj OgogICAgZXhwbGljaXQgZG9tYWluX2Vycm9yKGNvbnN0IHN0cmluZyYgX19hcmcpIDsKCgoK CgoKCiAgICB2aXJ0dWFsIH5kb21haW5fZXJyb3IoKSB0aHJvdygpOwogIH07CgoKICBjbGFz cyBpbnZhbGlkX2FyZ3VtZW50IDogcHVibGljIGxvZ2ljX2Vycm9yCiAgewogIHB1YmxpYzoK ICAgIGV4cGxpY2l0IGludmFsaWRfYXJndW1lbnQoY29uc3Qgc3RyaW5nJiBfX2FyZykgOwoK CgoKCgoKICAgIHZpcnR1YWwgfmludmFsaWRfYXJndW1lbnQoKSB0aHJvdygpOwogIH07CgoK CiAgY2xhc3MgbGVuZ3RoX2Vycm9yIDogcHVibGljIGxvZ2ljX2Vycm9yCiAgewogIHB1Ymxp YzoKICAgIGV4cGxpY2l0IGxlbmd0aF9lcnJvcihjb25zdCBzdHJpbmcmIF9fYXJnKSA7CgoK CgoKCgogICAgdmlydHVhbCB+bGVuZ3RoX2Vycm9yKCkgdGhyb3coKTsKICB9OwoKCgogIGNs YXNzIG91dF9vZl9yYW5nZSA6IHB1YmxpYyBsb2dpY19lcnJvcgogIHsKICBwdWJsaWM6CiAg ICBleHBsaWNpdCBvdXRfb2ZfcmFuZ2UoY29uc3Qgc3RyaW5nJiBfX2FyZykgOwoKCgoKCgoK ICAgIHZpcnR1YWwgfm91dF9vZl9yYW5nZSgpIHRocm93KCk7CiAgfTsKCgoKCgoKICBjbGFz cyBydW50aW1lX2Vycm9yIDogcHVibGljIGV4Y2VwdGlvbgogIHsKICAgIF9fY293X3N0cmlu ZyBfTV9tc2c7CgogIHB1YmxpYzoKCiAgICBleHBsaWNpdAogICAgcnVudGltZV9lcnJvcihj b25zdCBzdHJpbmcmIF9fYXJnKSA7CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L3N0ZGV4Y2VwdCIgMwogICAgcnVudGltZV9lcnJvcihjb25zdCBydW50aW1lX2Vycm9yJikg dGhyb3coKTsKICAgIHJ1bnRpbWVfZXJyb3ImIG9wZXJhdG9yPShjb25zdCBydW50aW1lX2Vy cm9yJikgdGhyb3coKTsKCgoKCgogICAgdmlydHVhbCB+cnVudGltZV9lcnJvcigpIHRocm93 KCk7CgoKCiAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqCiAgICB3aGF0KCkgY29uc3QgdGhyb3co KTsKCgoKCgogIH07CgoKICBjbGFzcyByYW5nZV9lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vy cm9yCiAgewogIHB1YmxpYzoKICAgIGV4cGxpY2l0IHJhbmdlX2Vycm9yKGNvbnN0IHN0cmlu ZyYgX19hcmcpIDsKCgoKCgoKCiAgICB2aXJ0dWFsIH5yYW5nZV9lcnJvcigpIHRocm93KCk7 CiAgfTsKCgogIGNsYXNzIG92ZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJyb3IK ICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgb3ZlcmZsb3dfZXJyb3IoY29uc3Qgc3RyaW5n JiBfX2FyZykgOwoKCgoKCgoKICAgIHZpcnR1YWwgfm92ZXJmbG93X2Vycm9yKCkgdGhyb3co KTsKICB9OwoKCiAgY2xhc3MgdW5kZXJmbG93X2Vycm9yIDogcHVibGljIHJ1bnRpbWVfZXJy b3IKICB7CiAgcHVibGljOgogICAgZXhwbGljaXQgdW5kZXJmbG93X2Vycm9yKGNvbnN0IHN0 cmluZyYgX19hcmcpIDsKCgoKCgoKCiAgICB2aXJ0dWFsIH51bmRlcmZsb3dfZXJyb3IoKSB0 aHJvdygpOwogIH07CgoKCgp9CiMgNDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9pb3NfYmFzZS5oIiAyIDMKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgogIGVudW0gX0lvc19GbXRmbGFn cwogICAgewogICAgICBfU19ib29sYWxwaGEgPSAxTCA8PCAwLAogICAgICBfU19kZWMgPSAx TCA8PCAxLAogICAgICBfU19maXhlZCA9IDFMIDw8IDIsCiAgICAgIF9TX2hleCA9IDFMIDw8 IDMsCiAgICAgIF9TX2ludGVybmFsID0gMUwgPDwgNCwKICAgICAgX1NfbGVmdCA9IDFMIDw8 IDUsCiAgICAgIF9TX29jdCA9IDFMIDw8IDYsCiAgICAgIF9TX3JpZ2h0ID0gMUwgPDwgNywK ICAgICAgX1Nfc2NpZW50aWZpYyA9IDFMIDw8IDgsCiAgICAgIF9TX3Nob3diYXNlID0gMUwg PDwgOSwKICAgICAgX1Nfc2hvd3BvaW50ID0gMUwgPDwgMTAsCiAgICAgIF9TX3Nob3dwb3Mg PSAxTCA8PCAxMSwKICAgICAgX1Nfc2tpcHdzID0gMUwgPDwgMTIsCiAgICAgIF9TX3VuaXRi dWYgPSAxTCA8PCAxMywKICAgICAgX1NfdXBwZXJjYXNlID0gMUwgPDwgMTQsCiAgICAgIF9T X2FkanVzdGZpZWxkID0gX1NfbGVmdCB8IF9TX3JpZ2h0IHwgX1NfaW50ZXJuYWwsCiAgICAg IF9TX2Jhc2VmaWVsZCA9IF9TX2RlYyB8IF9TX29jdCB8IF9TX2hleCwKICAgICAgX1NfZmxv YXRmaWVsZCA9IF9TX3NjaWVudGlmaWMgfCBfU19maXhlZCwKICAgICAgX1NfaW9zX2ZtdGZs YWdzX2VuZCA9IDFMIDw8IDE2LAogICAgICBfU19pb3NfZm10ZmxhZ3NfbWF4ID0gMHg3ZmZm ZmZmZiwKICAgICAgX1NfaW9zX2ZtdGZsYWdzX21pbiA9IH4weDdmZmZmZmZmCiAgICB9OwoK ICBpbmxpbmUgX0lvc19GbXRmbGFncwogIG9wZXJhdG9yJihfSW9zX0ZtdGZsYWdzIF9fYSwg X0lvc19GbXRmbGFncyBfX2IpCiAgeyByZXR1cm4gX0lvc19GbXRmbGFncyhzdGF0aWNfY2Fz dDxpbnQ+KF9fYSkgJiBzdGF0aWNfY2FzdDxpbnQ+KF9fYikpOyB9CgogIGlubGluZSBfSW9z X0ZtdGZsYWdzCiAgb3BlcmF0b3J8KF9Jb3NfRm10ZmxhZ3MgX19hLCBfSW9zX0ZtdGZsYWdz IF9fYikKICB7IHJldHVybiBfSW9zX0ZtdGZsYWdzKHN0YXRpY19jYXN0PGludD4oX19hKSB8 IHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5saW5lIF9Jb3NfRm10ZmxhZ3MKICBv cGVyYXRvcl4oX0lvc19GbXRmbGFncyBfX2EsIF9Jb3NfRm10ZmxhZ3MgX19iKQogIHsgcmV0 dXJuIF9Jb3NfRm10ZmxhZ3Moc3RhdGljX2Nhc3Q8aW50PihfX2EpIF4gc3RhdGljX2Nhc3Q8 aW50PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19GbXRmbGFncwogIG9wZXJhdG9yfihfSW9z X0ZtdGZsYWdzIF9fYSkKICB7IHJldHVybiBfSW9zX0ZtdGZsYWdzKH5zdGF0aWNfY2FzdDxp bnQ+KF9fYSkpOyB9CgogIGlubGluZSBjb25zdCBfSW9zX0ZtdGZsYWdzJgogIG9wZXJhdG9y fD0oX0lvc19GbXRmbGFncyYgX19hLCBfSW9zX0ZtdGZsYWdzIF9fYikKICB7IHJldHVybiBf X2EgPSBfX2EgfCBfX2I7IH0KCiAgaW5saW5lIGNvbnN0IF9Jb3NfRm10ZmxhZ3MmCiAgb3Bl cmF0b3ImPShfSW9zX0ZtdGZsYWdzJiBfX2EsIF9Jb3NfRm10ZmxhZ3MgX19iKQogIHsgcmV0 dXJuIF9fYSA9IF9fYSAmIF9fYjsgfQoKICBpbmxpbmUgY29uc3QgX0lvc19GbXRmbGFncyYK ICBvcGVyYXRvcl49KF9Jb3NfRm10ZmxhZ3MmIF9fYSwgX0lvc19GbXRmbGFncyBfX2IpCiAg eyByZXR1cm4gX19hID0gX19hIF4gX19iOyB9CgoKICBlbnVtIF9Jb3NfT3Blbm1vZGUKICAg IHsKICAgICAgX1NfYXBwID0gMUwgPDwgMCwKICAgICAgX1NfYXRlID0gMUwgPDwgMSwKICAg ICAgX1NfYmluID0gMUwgPDwgMiwKICAgICAgX1NfaW4gPSAxTCA8PCAzLAogICAgICBfU19v dXQgPSAxTCA8PCA0LAogICAgICBfU190cnVuYyA9IDFMIDw8IDUsCiAgICAgIF9TX25vcmVw bGFjZSA9IDFMIDw8IDYsCiAgICAgIF9TX2lvc19vcGVubW9kZV9lbmQgPSAxTCA8PCAxNiwK ICAgICAgX1NfaW9zX29wZW5tb2RlX21heCA9IDB4N2ZmZmZmZmYsCiAgICAgIF9TX2lvc19v cGVubW9kZV9taW4gPSB+MHg3ZmZmZmZmZgogICAgfTsKCiAgaW5saW5lIF9Jb3NfT3Blbm1v ZGUKICBvcGVyYXRvciYoX0lvc19PcGVubW9kZSBfX2EsIF9Jb3NfT3Blbm1vZGUgX19iKQog IHsgcmV0dXJuIF9Jb3NfT3Blbm1vZGUoc3RhdGljX2Nhc3Q8aW50PihfX2EpICYgc3RhdGlj X2Nhc3Q8aW50PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19PcGVubW9kZQogIG9wZXJhdG9y fChfSW9zX09wZW5tb2RlIF9fYSwgX0lvc19PcGVubW9kZSBfX2IpCiAgeyByZXR1cm4gX0lv c19PcGVubW9kZShzdGF0aWNfY2FzdDxpbnQ+KF9fYSkgfCBzdGF0aWNfY2FzdDxpbnQ+KF9f YikpOyB9CgogIGlubGluZSBfSW9zX09wZW5tb2RlCiAgb3BlcmF0b3JeKF9Jb3NfT3Blbm1v ZGUgX19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfSW9zX09wZW5tb2RlKHN0 YXRpY19jYXN0PGludD4oX19hKSBeIHN0YXRpY19jYXN0PGludD4oX19iKSk7IH0KCiAgaW5s aW5lIF9Jb3NfT3Blbm1vZGUKICBvcGVyYXRvcn4oX0lvc19PcGVubW9kZSBfX2EpCiAgeyBy ZXR1cm4gX0lvc19PcGVubW9kZSh+c3RhdGljX2Nhc3Q8aW50PihfX2EpKTsgfQoKICBpbmxp bmUgY29uc3QgX0lvc19PcGVubW9kZSYKICBvcGVyYXRvcnw9KF9Jb3NfT3Blbm1vZGUmIF9f YSwgX0lvc19PcGVubW9kZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hIHwgX19iOyB9Cgog IGlubGluZSBjb25zdCBfSW9zX09wZW5tb2RlJgogIG9wZXJhdG9yJj0oX0lvc19PcGVubW9k ZSYgX19hLCBfSW9zX09wZW5tb2RlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgJiBfX2I7 IH0KCiAgaW5saW5lIGNvbnN0IF9Jb3NfT3Blbm1vZGUmCiAgb3BlcmF0b3JePShfSW9zX09w ZW5tb2RlJiBfX2EsIF9Jb3NfT3Blbm1vZGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSBe IF9fYjsgfQoKCiAgZW51bSBfSW9zX0lvc3RhdGUKICAgIHsKICAgICAgX1NfZ29vZGJpdCA9 IDAsCiAgICAgIF9TX2JhZGJpdCA9IDFMIDw8IDAsCiAgICAgIF9TX2VvZmJpdCA9IDFMIDw8 IDEsCiAgICAgIF9TX2ZhaWxiaXQgPSAxTCA8PCAyLAogICAgICBfU19pb3NfaW9zdGF0ZV9l bmQgPSAxTCA8PCAxNiwKICAgICAgX1NfaW9zX2lvc3RhdGVfbWF4ID0gMHg3ZmZmZmZmZiwK ICAgICAgX1NfaW9zX2lvc3RhdGVfbWluID0gfjB4N2ZmZmZmZmYKICAgIH07CgogIGlubGlu ZSBfSW9zX0lvc3RhdGUKICBvcGVyYXRvciYoX0lvc19Jb3N0YXRlIF9fYSwgX0lvc19Jb3N0 YXRlIF9fYikKICB7IHJldHVybiBfSW9zX0lvc3RhdGUoc3RhdGljX2Nhc3Q8aW50PihfX2Ep ICYgc3RhdGljX2Nhc3Q8aW50PihfX2IpKTsgfQoKICBpbmxpbmUgX0lvc19Jb3N0YXRlCiAg b3BlcmF0b3J8KF9Jb3NfSW9zdGF0ZSBfX2EsIF9Jb3NfSW9zdGF0ZSBfX2IpCiAgeyByZXR1 cm4gX0lvc19Jb3N0YXRlKHN0YXRpY19jYXN0PGludD4oX19hKSB8IHN0YXRpY19jYXN0PGlu dD4oX19iKSk7IH0KCiAgaW5saW5lIF9Jb3NfSW9zdGF0ZQogIG9wZXJhdG9yXihfSW9zX0lv c3RhdGUgX19hLCBfSW9zX0lvc3RhdGUgX19iKQogIHsgcmV0dXJuIF9Jb3NfSW9zdGF0ZShz dGF0aWNfY2FzdDxpbnQ+KF9fYSkgXiBzdGF0aWNfY2FzdDxpbnQ+KF9fYikpOyB9CgogIGlu bGluZSBfSW9zX0lvc3RhdGUKICBvcGVyYXRvcn4oX0lvc19Jb3N0YXRlIF9fYSkKICB7IHJl dHVybiBfSW9zX0lvc3RhdGUofnN0YXRpY19jYXN0PGludD4oX19hKSk7IH0KCiAgaW5saW5l IGNvbnN0IF9Jb3NfSW9zdGF0ZSYKICBvcGVyYXRvcnw9KF9Jb3NfSW9zdGF0ZSYgX19hLCBf SW9zX0lvc3RhdGUgX19iKQogIHsgcmV0dXJuIF9fYSA9IF9fYSB8IF9fYjsgfQoKICBpbmxp bmUgY29uc3QgX0lvc19Jb3N0YXRlJgogIG9wZXJhdG9yJj0oX0lvc19Jb3N0YXRlJiBfX2Es IF9Jb3NfSW9zdGF0ZSBfX2IpCiAgeyByZXR1cm4gX19hID0gX19hICYgX19iOyB9CgogIGlu bGluZSBjb25zdCBfSW9zX0lvc3RhdGUmCiAgb3BlcmF0b3JePShfSW9zX0lvc3RhdGUmIF9f YSwgX0lvc19Jb3N0YXRlIF9fYikKICB7IHJldHVybiBfX2EgPSBfX2EgXiBfX2I7IH0KCgog IGVudW0gX0lvc19TZWVrZGlyCiAgICB7CiAgICAgIF9TX2JlZyA9IDAsCiAgICAgIF9TX2N1 ciA9IDEsCiAgICAgIF9TX2VuZCA9IDIsCiAgICAgIF9TX2lvc19zZWVrZGlyX2VuZCA9IDFM IDw8IDE2CiAgICB9OwojIDIzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lv c19iYXNlLmgiIDMKICBjbGFzcyBpb3NfYmFzZQogIHsKCgoKICAgIHN0cnVjdCBzeXN0ZW1f ZXJyb3IgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IKICAgIHsKCiAgICAgIHN0cnVjdCBlcnJvcl9j b2RlCiAgICAgIHsKIGVycm9yX2NvZGUoKSB7IH0KICAgICAgcHJpdmF0ZToKIGludCBfTV92 YWx1ZTsKIGNvbnN0IHZvaWQqIF9NX2NhdDsKICAgICAgfSBfTV9jb2RlOwogICAgfTsKCgog IHB1YmxpYzoKIyAyNjAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pb3NfYmFz ZS5oIiAzCiAgICBjbGFzcyBfX2F0dHJpYnV0ZSAoKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkp IGZhaWx1cmUgOiBwdWJsaWMgc3lzdGVtX2Vycm9yCiAgICB7CiAgICBwdWJsaWM6CiAgICAg IGV4cGxpY2l0CiAgICAgIGZhaWx1cmUoY29uc3Qgc3RyaW5nJiBfX3N0cik7CiMgMjc0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgICB2aXJ0 dWFsCiAgICAgIH5mYWlsdXJlKCkgdGhyb3coKTsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hh cioKICAgICAgd2hhdCgpIGNvbnN0IHRocm93KCk7CiAgICB9OwojIDM0NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHR5cGVkZWYgX0lvc19G bXRmbGFncyBmbXRmbGFnczsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGJvb2xhbHBo YSA9IF9TX2Jvb2xhbHBoYTsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGRlYyA9IF9T X2RlYzsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIGZpeGVkID0gX1NfZml4ZWQ7CgoK ICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBoZXggPSBfU19oZXg7CgoKCgogICAgc3RhdGlj IGNvbnN0IGZtdGZsYWdzIGludGVybmFsID0gX1NfaW50ZXJuYWw7CgoKCiAgICBzdGF0aWMg Y29uc3QgZm10ZmxhZ3MgbGVmdCA9IF9TX2xlZnQ7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRm bGFncyBvY3QgPSBfU19vY3Q7CgoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgcmlnaHQg PSBfU19yaWdodDsKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHNjaWVudGlmaWMgPSBf U19zY2llbnRpZmljOwoKCgogICAgc3RhdGljIGNvbnN0IGZtdGZsYWdzIHNob3diYXNlID0g X1Nfc2hvd2Jhc2U7CgoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2hvd3BvaW50ID0g X1Nfc2hvd3BvaW50OwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3Mgc2hvd3BvcyA9IF9T X3Nob3dwb3M7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBza2lwd3MgPSBfU19za2lw d3M7CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyB1bml0YnVmID0gX1NfdW5pdGJ1ZjsK CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyB1cHBlcmNhc2UgPSBfU191cHBlcmNhc2U7 CgoKICAgIHN0YXRpYyBjb25zdCBmbXRmbGFncyBhZGp1c3RmaWVsZCA9IF9TX2FkanVzdGZp ZWxkOwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgYmFzZWZpZWxkID0gX1NfYmFzZWZp ZWxkOwoKCiAgICBzdGF0aWMgY29uc3QgZm10ZmxhZ3MgZmxvYXRmaWVsZCA9IF9TX2Zsb2F0 ZmllbGQ7CiMgNDIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvaW9zX2Jhc2Uu aCIgMwogICAgdHlwZWRlZiBfSW9zX0lvc3RhdGUgaW9zdGF0ZTsKCgoKICAgIHN0YXRpYyBj b25zdCBpb3N0YXRlIGJhZGJpdCA9IF9TX2JhZGJpdDsKCgogICAgc3RhdGljIGNvbnN0IGlv c3RhdGUgZW9mYml0ID0gX1NfZW9mYml0OwoKCgoKICAgIHN0YXRpYyBjb25zdCBpb3N0YXRl IGZhaWxiaXQgPSBfU19mYWlsYml0OwoKCiAgICBzdGF0aWMgY29uc3QgaW9zdGF0ZSBnb29k Yml0ID0gX1NfZ29vZGJpdDsKIyA0NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9pb3NfYmFzZS5oIiAzCiAgICB0eXBlZGVmIF9Jb3NfT3Blbm1vZGUgb3Blbm1vZGU7CgoK ICAgIHN0YXRpYyBjb25zdCBvcGVubW9kZSBhcHAgPSBfU19hcHA7CgoKICAgIHN0YXRpYyBj b25zdCBvcGVubW9kZSBhdGUgPSBfU19hdGU7CgoKCgogICAgc3RhdGljIGNvbnN0IG9wZW5t b2RlIGJpbmFyeSA9IF9TX2JpbjsKCgogICAgc3RhdGljIGNvbnN0IG9wZW5tb2RlIGluID0g X1NfaW47CgoKICAgIHN0YXRpYyBjb25zdCBvcGVubW9kZSBvdXQgPSBfU19vdXQ7CgoKICAg IHN0YXRpYyBjb25zdCBvcGVubW9kZSB0cnVuYyA9IF9TX3RydW5jOwoKICAgIHN0YXRpYyBj b25zdCBvcGVubW9kZSBfX25vcmVwbGFjZSA9IF9TX25vcmVwbGFjZTsKIyA0OTEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pb3NfYmFzZS5oIiAzCiAgICB0eXBlZGVmIF9J b3NfU2Vla2RpciBzZWVrZGlyOwoKCiAgICBzdGF0aWMgY29uc3Qgc2Vla2RpciBiZWcgPSBf U19iZWc7CgoKICAgIHN0YXRpYyBjb25zdCBzZWVrZGlyIGN1ciA9IF9TX2N1cjsKCgogICAg c3RhdGljIGNvbnN0IHNlZWtkaXIgZW5kID0gX1NfZW5kOwoKCgogICAgdHlwZWRlZiBpbnQg aW9fc3RhdGUKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fICgidXNlICci ICJzdGQ6Omlvc3RhdGUiICInIGluc3RlYWQiKSkpOwogICAgdHlwZWRlZiBpbnQgb3Blbl9t b2RlCiAgICAgIF9fYXR0cmlidXRlX18gKChfX2RlcHJlY2F0ZWRfXyAoInVzZSAnIiAic3Rk OjpvcGVubW9kZSIgIicgaW5zdGVhZCIpKSk7CiAgICB0eXBlZGVmIGludCBzZWVrX2Rpcgog ICAgICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18gKCJ1c2UgJyIgInN0ZDo6c2Vl a2RpciIgIicgaW5zdGVhZCIpKSk7CgogICAgdHlwZWRlZiBzdGQ6OnN0cmVhbXBvcyBzdHJl YW1wb3MKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZGVwcmVjYXRlZF9fICgidXNlICciICJz dGQ6OnN0cmVhbXBvcyIgIicgaW5zdGVhZCIpKSk7CiAgICB0eXBlZGVmIHN0ZDo6c3RyZWFt b2ZmIHN0cmVhbW9mZgogICAgICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18gKCJ1 c2UgJyIgInN0ZDo6c3RyZWFtb2ZmIiAiJyBpbnN0ZWFkIikpKTsKIyA1MjQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pb3NfYmFzZS5oIiAzCiAgICBlbnVtIGV2ZW50CiAg ICB7CiAgICAgIGVyYXNlX2V2ZW50LAogICAgICBpbWJ1ZV9ldmVudCwKICAgICAgY29weWZt dF9ldmVudAogICAgfTsKIyA1NDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9p b3NfYmFzZS5oIiAzCiAgICB0eXBlZGVmIHZvaWQgKCpldmVudF9jYWxsYmFjaykgKGV2ZW50 IF9fZSwgaW9zX2Jhc2UmIF9fYiwgaW50IF9faSk7CiMgNTUzICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgdm9pZAogICAgcmVnaXN0ZXJfY2Fs bGJhY2soZXZlbnRfY2FsbGJhY2sgX19mbiwgaW50IF9faW5kZXgpOwoKICBwcm90ZWN0ZWQ6 CiAgICBzdHJlYW1zaXplIF9NX3ByZWNpc2lvbjsKICAgIHN0cmVhbXNpemUgX01fd2lkdGg7 CiAgICBmbXRmbGFncyBfTV9mbGFnczsKICAgIGlvc3RhdGUgX01fZXhjZXB0aW9uOwogICAg aW9zdGF0ZSBfTV9zdHJlYW1idWZfc3RhdGU7CgoKCiAgICBzdHJ1Y3QgX0NhbGxiYWNrX2xp c3QKICAgIHsKCiAgICAgIF9DYWxsYmFja19saXN0KiBfTV9uZXh0OwogICAgICBpb3NfYmFz ZTo6ZXZlbnRfY2FsbGJhY2sgX01fZm47CiAgICAgIGludCBfTV9pbmRleDsKICAgICAgX0F0 b21pY193b3JkIF9NX3JlZmNvdW50OwoKICAgICAgX0NhbGxiYWNrX2xpc3QoaW9zX2Jhc2U6 OmV2ZW50X2NhbGxiYWNrIF9fZm4sIGludCBfX2luZGV4LAogICAgICAgX0NhbGxiYWNrX2xp c3QqIF9fY2IpCiAgICAgIDogX01fbmV4dChfX2NiKSwgX01fZm4oX19mbiksIF9NX2luZGV4 KF9faW5kZXgpLCBfTV9yZWZjb3VudCgwKSB7IH0KCiAgICAgIHZvaWQKICAgICAgX01fYWRk X3JlZmVyZW5jZSgpIHsgX19nbnVfY3h4OjpfX2F0b21pY19hZGRfZGlzcGF0Y2goJl9NX3Jl ZmNvdW50LCAxKTsgfQoKCiAgICAgIGludAogICAgICBfTV9yZW1vdmVfcmVmZXJlbmNlKCkK ICAgICAgewoKICAgICAgICA7CiAgICAgICAgaW50IF9fcmVzID0gX19nbnVfY3h4OjpfX2V4 Y2hhbmdlX2FuZF9hZGRfZGlzcGF0Y2goJl9NX3JlZmNvdW50LCAtMSk7CiAgICAgICAgaWYg KF9fcmVzID09IDApCiAgICAgICAgICB7CiAgICAgICAgICAgIDsKICAgICAgICAgIH0KICAg ICAgICByZXR1cm4gX19yZXM7CiAgICAgIH0KICAgIH07CgogICAgIF9DYWxsYmFja19saXN0 KiBfTV9jYWxsYmFja3M7CgogICAgdm9pZAogICAgX01fY2FsbF9jYWxsYmFja3MoZXZlbnQg X19ldikgdGhyb3coKTsKCiAgICB2b2lkCiAgICBfTV9kaXNwb3NlX2NhbGxiYWNrcyh2b2lk KSB0aHJvdygpOwoKCiAgICBzdHJ1Y3QgX1dvcmRzCiAgICB7CiAgICAgIHZvaWQqIF9NX3B3 b3JkOwogICAgICBsb25nIF9NX2l3b3JkOwogICAgICBfV29yZHMoKSA6IF9NX3B3b3JkKDAp LCBfTV9pd29yZCgwKSB7IH0KICAgIH07CgoKICAgIF9Xb3JkcyBfTV93b3JkX3plcm87CgoK CiAgICBlbnVtIHsgX1NfbG9jYWxfd29yZF9zaXplID0gOCB9OwogICAgX1dvcmRzIF9NX2xv Y2FsX3dvcmRbX1NfbG9jYWxfd29yZF9zaXplXTsKCgogICAgaW50IF9NX3dvcmRfc2l6ZTsK ICAgIF9Xb3JkcyogX01fd29yZDsKCiAgICBfV29yZHMmCiAgICBfTV9ncm93X3dvcmRzKGlu dCBfX2luZGV4LCBib29sIF9faXdvcmQpOwoKCiAgICBsb2NhbGUgX01faW9zX2xvY2FsZTsK CiAgICB2b2lkCiAgICBfTV9pbml0KCkgdGhyb3coKTsKCiAgcHVibGljOgoKCgoKCiAgICBj bGFzcyBJbml0CiAgICB7CiAgICAgIGZyaWVuZCBjbGFzcyBpb3NfYmFzZTsKICAgIHB1Ymxp YzoKICAgICAgSW5pdCgpOwogICAgICB+SW5pdCgpOwoKCgoKCgogICAgcHJpdmF0ZToKICAg ICAgc3RhdGljIF9BdG9taWNfd29yZCBfU19yZWZjb3VudDsKICAgICAgc3RhdGljIGJvb2wg X1Nfc3luY2VkX3dpdGhfc3RkaW87CiAgICB9OwoKCgoKCgogICAgZm10ZmxhZ3MKICAgIGZs YWdzKCkgY29uc3QKICAgIHsgcmV0dXJuIF9NX2ZsYWdzOyB9CiMgNjcxICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgZm10ZmxhZ3MKICAgIGZs YWdzKGZtdGZsYWdzIF9fZm10ZmwpCiAgICB7CiAgICAgIGZtdGZsYWdzIF9fb2xkID0gX01f ZmxhZ3M7CiAgICAgIF9NX2ZsYWdzID0gX19mbXRmbDsKICAgICAgcmV0dXJuIF9fb2xkOwog ICAgfQojIDY4NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNlLmgi IDMKICAgIGZtdGZsYWdzCiAgICBzZXRmKGZtdGZsYWdzIF9fZm10ZmwpCiAgICB7CiAgICAg IGZtdGZsYWdzIF9fb2xkID0gX01fZmxhZ3M7CiAgICAgIF9NX2ZsYWdzIHw9IF9fZm10Zmw7 CiAgICAgIHJldHVybiBfX29sZDsKICAgIH0KIyA3MDQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9pb3NfYmFzZS5oIiAzCiAgICBmbXRmbGFncwogICAgc2V0ZihmbXRmbGFn cyBfX2ZtdGZsLCBmbXRmbGFncyBfX21hc2spCiAgICB7CiAgICAgIGZtdGZsYWdzIF9fb2xk ID0gX01fZmxhZ3M7CiAgICAgIF9NX2ZsYWdzICY9IH5fX21hc2s7CiAgICAgIF9NX2ZsYWdz IHw9IChfX2ZtdGZsICYgX19tYXNrKTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQoKCgoK CgoKICAgIHZvaWQKICAgIHVuc2V0ZihmbXRmbGFncyBfX21hc2spCiAgICB7IF9NX2ZsYWdz ICY9IH5fX21hc2s7IH0KIyA3MzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9p b3NfYmFzZS5oIiAzCiAgICBzdHJlYW1zaXplCiAgICBwcmVjaXNpb24oKSBjb25zdAogICAg eyByZXR1cm4gX01fcHJlY2lzaW9uOyB9CgoKCgoKCiAgICBzdHJlYW1zaXplCiAgICBwcmVj aXNpb24oc3RyZWFtc2l6ZSBfX3ByZWMpCiAgICB7CiAgICAgIHN0cmVhbXNpemUgX19vbGQg PSBfTV9wcmVjaXNpb247CiAgICAgIF9NX3ByZWNpc2lvbiA9IF9fcHJlYzsKICAgICAgcmV0 dXJuIF9fb2xkOwogICAgfQoKCgoKCgoKICAgIHN0cmVhbXNpemUKICAgIHdpZHRoKCkgY29u c3QKICAgIHsgcmV0dXJuIF9NX3dpZHRoOyB9CgoKCgoKCiAgICBzdHJlYW1zaXplCiAgICB3 aWR0aChzdHJlYW1zaXplIF9fd2lkZSkKICAgIHsKICAgICAgc3RyZWFtc2l6ZSBfX29sZCA9 IF9NX3dpZHRoOwogICAgICBfTV93aWR0aCA9IF9fd2lkZTsKICAgICAgcmV0dXJuIF9fb2xk OwogICAgfQojIDc4MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNl LmgiIDMKICAgIHN0YXRpYyBib29sCiAgICBzeW5jX3dpdGhfc3RkaW8oYm9vbCBfX3N5bmMg PSB0cnVlKTsKIyA3OTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pb3NfYmFz ZS5oIiAzCiAgICBsb2NhbGUKICAgIGltYnVlKGNvbnN0IGxvY2FsZSYgX19sb2MpIHRocm93 KCk7CiMgODA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvaW9zX2Jhc2UuaCIg MwogICAgbG9jYWxlCiAgICBnZXRsb2MoKSBjb25zdAogICAgeyByZXR1cm4gX01faW9zX2xv Y2FsZTsgfQojIDgxNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNl LmgiIDMKICAgIGNvbnN0IGxvY2FsZSYKICAgIF9NX2dldGxvYygpIGNvbnN0CiAgICB7IHJl dHVybiBfTV9pb3NfbG9jYWxlOyB9CiMgODM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvaW9zX2Jhc2UuaCIgMwogICAgc3RhdGljIGludAogICAgeGFsbG9jKCkgdGhyb3co KTsKIyA4NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pb3NfYmFzZS5oIiAz CiAgICBsb25nJgogICAgaXdvcmQoaW50IF9faXgpCiAgICB7CiAgICAgIF9Xb3JkcyYgX193 b3JkID0gKCh1bnNpZ25lZClfX2l4IDwgKHVuc2lnbmVkKV9NX3dvcmRfc2l6ZSkKICAgPyBf TV93b3JkW19faXhdIDogX01fZ3Jvd193b3JkcyhfX2l4LCB0cnVlKTsKICAgICAgcmV0dXJu IF9fd29yZC5fTV9pd29yZDsKICAgIH0KIyA4NzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9pb3NfYmFzZS5oIiAzCiAgICB2b2lkKiYKICAgIHB3b3JkKGludCBfX2l4KQog ICAgewogICAgICBfV29yZHMmIF9fd29yZCA9ICgodW5zaWduZWQpX19peCA8ICh1bnNpZ25l ZClfTV93b3JkX3NpemUpCiAgID8gX01fd29yZFtfX2l4XSA6IF9NX2dyb3dfd29yZHMoX19p eCwgZmFsc2UpOwogICAgICByZXR1cm4gX193b3JkLl9NX3B3b3JkOwogICAgfQojIDg4OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lvc19iYXNlLmgiIDMKICAgIHZpcnR1 YWwgfmlvc19iYXNlKCk7CgogIHByb3RlY3RlZDoKICAgIGlvc19iYXNlKCkgdGhyb3cgKCk7 CgoKCgogIHByaXZhdGU6CiAgICBpb3NfYmFzZShjb25zdCBpb3NfYmFzZSYpOwoKICAgIGlv c19iYXNlJgogICAgb3BlcmF0b3I9KGNvbnN0IGlvc19iYXNlJik7CiMgOTE1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvaW9zX2Jhc2UuaCIgMwogIH07CgoKCiAgaW5saW5l IGlvc19iYXNlJgogIGJvb2xhbHBoYShpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFz ZS5zZXRmKGlvc19iYXNlOjpib29sYWxwaGEpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoK ICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9ib29sYWxwaGEoaW9zX2Jhc2UmIF9fYmFzZSkKICB7 CiAgICBfX2Jhc2UudW5zZXRmKGlvc19iYXNlOjpib29sYWxwaGEpOwogICAgcmV0dXJuIF9f YmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2hvd2Jhc2UoaW9zX2Jhc2UmIF9f YmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6c2hvd2Jhc2UpOwogICAgcmV0 dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgbm9zaG93YmFzZShpb3Nf YmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNob3diYXNl KTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIHNob3dw b2ludChpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpz aG93cG9pbnQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2Um CiAgbm9zaG93cG9pbnQoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2UudW5zZXRm KGlvc19iYXNlOjpzaG93cG9pbnQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxp bmUgaW9zX2Jhc2UmCiAgc2hvd3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFz ZS5zZXRmKGlvc19iYXNlOjpzaG93cG9zKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAg aW5saW5lIGlvc19iYXNlJgogIG5vc2hvd3Bvcyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAg IF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNob3dwb3MpOwogICAgcmV0dXJuIF9fYmFzZTsK ICB9CgoKICBpbmxpbmUgaW9zX2Jhc2UmCiAgc2tpcHdzKGlvc19iYXNlJiBfX2Jhc2UpCiAg ewogICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6OnNraXB3cyk7CiAgICByZXR1cm4gX19iYXNl OwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYKICBub3NraXB3cyhpb3NfYmFzZSYgX19iYXNl KQogIHsKICAgIF9fYmFzZS51bnNldGYoaW9zX2Jhc2U6OnNraXB3cyk7CiAgICByZXR1cm4g X19iYXNlOwogIH0KCgogIGlubGluZSBpb3NfYmFzZSYKICB1cHBlcmNhc2UoaW9zX2Jhc2Um IF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6dXBwZXJjYXNlKTsKICAg IHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIG5vdXBwZXJjYXNl KGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnVuc2V0Zihpb3NfYmFzZTo6dXBw ZXJjYXNlKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgog IHVuaXRidWYoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICAgX19iYXNlLnNldGYoaW9zX2Jh c2U6OnVuaXRidWYpOwogICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19i YXNlJgogIG5vdW5pdGJ1Zihpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgICBfX2Jhc2UudW5z ZXRmKGlvc19iYXNlOjp1bml0YnVmKTsKICAgICByZXR1cm4gX19iYXNlOwogIH0KCgoKICBp bmxpbmUgaW9zX2Jhc2UmCiAgaW50ZXJuYWwoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICAg X19iYXNlLnNldGYoaW9zX2Jhc2U6OmludGVybmFsLCBpb3NfYmFzZTo6YWRqdXN0ZmllbGQp OwogICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5saW5lIGlvc19iYXNlJgogIGxlZnQo aW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jhc2Uuc2V0Zihpb3NfYmFzZTo6bGVmdCwg aW9zX2Jhc2U6OmFkanVzdGZpZWxkKTsKICAgIHJldHVybiBfX2Jhc2U7CiAgfQoKCiAgaW5s aW5lIGlvc19iYXNlJgogIHJpZ2h0KGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNl LnNldGYoaW9zX2Jhc2U6OnJpZ2h0LCBpb3NfYmFzZTo6YWRqdXN0ZmllbGQpOwogICAgcmV0 dXJuIF9fYmFzZTsKICB9CgoKCiAgaW5saW5lIGlvc19iYXNlJgogIGRlYyhpb3NfYmFzZSYg X19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpkZWMsIGlvc19iYXNlOjpi YXNlZmllbGQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jhc2Um CiAgaGV4KGlvc19iYXNlJiBfX2Jhc2UpCiAgewogICAgX19iYXNlLnNldGYoaW9zX2Jhc2U6 OmhleCwgaW9zX2Jhc2U6OmJhc2VmaWVsZCk7CiAgICByZXR1cm4gX19iYXNlOwogIH0KCgog IGlubGluZSBpb3NfYmFzZSYKICBvY3QoaW9zX2Jhc2UmIF9fYmFzZSkKICB7CiAgICBfX2Jh c2Uuc2V0Zihpb3NfYmFzZTo6b2N0LCBpb3NfYmFzZTo6YmFzZWZpZWxkKTsKICAgIHJldHVy biBfX2Jhc2U7CiAgfQoKCgogIGlubGluZSBpb3NfYmFzZSYKICBmaXhlZChpb3NfYmFzZSYg X19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRmKGlvc19iYXNlOjpmaXhlZCwgaW9zX2Jhc2U6 OmZsb2F0ZmllbGQpOwogICAgcmV0dXJuIF9fYmFzZTsKICB9CgoKICBpbmxpbmUgaW9zX2Jh c2UmCiAgc2NpZW50aWZpYyhpb3NfYmFzZSYgX19iYXNlKQogIHsKICAgIF9fYmFzZS5zZXRm KGlvc19iYXNlOjpzY2llbnRpZmljLCBpb3NfYmFzZTo6ZmxvYXRmaWVsZCk7CiAgICByZXR1 cm4gX19iYXNlOwogIH0KIyAxMTE4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv aW9zX2Jhc2UuaCIgMwoKfQojIDQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lvcyIg MiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDEgMwojIDM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwojZGVmaW5lIF9HTElC WFhfU1RSRUFNQlVGIDEKCiAgICAgICAKIyAzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9zdHJlYW1idWYiIDMKIyA0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1i dWYiIDMKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJk ZWZhdWx0IikpKQp7CgoKI2RlZmluZSBfSXNVbnVzZWQgX19hdHRyaWJ1dGVfXyAoKF9fdW51 c2VkX18pKQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+ CiAgICBzdHJlYW1zaXplCiAgICBfX2NvcHlfc3RyZWFtYnVmc19lb2YoYmFzaWNfc3RyZWFt YnVmPF9DaGFyVCwgX1RyYWl0cz4qLAogICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9U cmFpdHM+KiwgYm9vbCYpOwojIDEyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJl YW1idWYiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+ CiAgICBjbGFzcyBiYXNpY19zdHJlYW1idWYKICAgIHsKICAgIHB1YmxpYzoKCgoKCgoKICAg ICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJh aXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBl IGludF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwb3NfdHlw ZSBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5 cGUgb2ZmX3R5cGU7CgoKCgogICAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyX3R5 cGUsIHRyYWl0c190eXBlPiBfX3N0cmVhbWJ1Zl90eXBlOwoKCiAgICAgIGZyaWVuZCBjbGFz cyBiYXNpY19pb3M8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47CiAgICAgIGZyaWVuZCBjbGFz cyBiYXNpY19pc3RyZWFtPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+OwogICAgICBmcmllbmQg Y2xhc3MgYmFzaWNfb3N0cmVhbTxjaGFyX3R5cGUsIHRyYWl0c190eXBlPjsKICAgICAgZnJp ZW5kIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3I8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT47 CiAgICAgIGZyaWVuZCBjbGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yPGNoYXJfdHlwZSwgdHJh aXRzX3R5cGU+OwoKICAgICAgZnJpZW5kIHN0cmVhbXNpemUKICAgICAgX19jb3B5X3N0cmVh bWJ1ZnNfZW9mPD4oYmFzaWNfc3RyZWFtYnVmKiwgYmFzaWNfc3RyZWFtYnVmKiwgYm9vbCYp OwoKICAgICAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQyPgogICAg ICAgIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxf Q2hhclQyPjo6X192YWx1ZSwKICAgICAgICAgICAgX0NoYXJUMio+OjpfX3R5cGUKICAgICAg ICBfX2NvcHlfbW92ZV9hMihpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LAogICAgICAg ICBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LCBfQ2hhclQyKik7CgogICAgICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQyPgogICAgICAgIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9j eHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgaXN0 cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiA+OjpfX3R5cGUKICAgICAgICBmaW5kKGlzdHJl YW1idWZfaXRlcmF0b3I8X0NoYXJUMj4sIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUMj4s CiAgICAgIGNvbnN0IF9DaGFyVDImKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VDIsIHR5cGVuYW1lIF9EaXN0YW5jZT4KICAgICAgICBmcmllbmQgdHlwZW5hbWUgX19nbnVf Y3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUMj46Ol9fdmFsdWUsCiAgICAgICAg ICAgIHZvaWQ+OjpfX3R5cGUKICAgICAgICBhZHZhbmNlKGlzdHJlYW1idWZfaXRlcmF0b3I8 X0NoYXJUMj4mLCBfRGlzdGFuY2UpOwoKICAgICAgZnJpZW5kIHZvaWQgX19pc3RyZWFtX2V4 dHJhY3QoaXN0cmVhbSYsIGNoYXIqLCBzdHJlYW1zaXplKTsKCiAgICAgIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVDIsIHR5cGVuYW1lIF9UcmFpdHMyLCB0eXBlbmFtZSBfQWxsb2M+CiAg ICAgICAgZnJpZW5kIGJhc2ljX2lzdHJlYW08X0NoYXJUMiwgX1RyYWl0czI+JgogICAgICAg IG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4mLAogICAgIGJh c2ljX3N0cmluZzxfQ2hhclQyLCBfVHJhaXRzMiwgX0FsbG9jPiYpOwoKICAgICAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJUMiwgdHlwZW5hbWUgX1RyYWl0czIsIHR5cGVuYW1lIF9BbGxv Yz4KICAgICAgICBmcmllbmQgYmFzaWNfaXN0cmVhbTxfQ2hhclQyLCBfVHJhaXRzMj4mCiAg ICAgICAgZ2V0bGluZShiYXNpY19pc3RyZWFtPF9DaGFyVDIsIF9UcmFpdHMyPiYsCiAgYmFz aWNfc3RyaW5nPF9DaGFyVDIsIF9UcmFpdHMyLCBfQWxsb2M+JiwgX0NoYXJUMik7CgogICAg cHJvdGVjdGVkOgoKCgoKCgoKICAgICAgY2hhcl90eXBlKiBfTV9pbl9iZWc7CiAgICAgIGNo YXJfdHlwZSogX01faW5fY3VyOwogICAgICBjaGFyX3R5cGUqIF9NX2luX2VuZDsKICAgICAg Y2hhcl90eXBlKiBfTV9vdXRfYmVnOwogICAgICBjaGFyX3R5cGUqIF9NX291dF9jdXI7CiAg ICAgIGNoYXJfdHlwZSogX01fb3V0X2VuZDsKCgogICAgICBsb2NhbGUgX01fYnVmX2xvY2Fs ZTsKCiAgcHVibGljOgoKICAgICAgdmlydHVhbAogICAgICB+YmFzaWNfc3RyZWFtYnVmKCkK ICAgICAgeyB9CiMgMjE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIg MwogICAgICBsb2NhbGUKICAgICAgcHViaW1idWUoY29uc3QgbG9jYWxlJiBfX2xvYykKICAg ICAgewogbG9jYWxlIF9fdG1wKHRoaXMtPmdldGxvYygpKTsKIHRoaXMtPmltYnVlKF9fbG9j KTsKIF9NX2J1Zl9sb2NhbGUgPSBfX2xvYzsKIHJldHVybiBfX3RtcDsKICAgICAgfQojIDIz MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgbG9jYWxl CiAgICAgIGdldGxvYygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2J1Zl9sb2NhbGU7IH0K IyAyNDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFtYnVmIiAzCiAgICAgIGJh c2ljX3N0cmVhbWJ1ZioKICAgICAgcHVic2V0YnVmKGNoYXJfdHlwZSogX19zLCBzdHJlYW1z aXplIF9fbikKICAgICAgeyByZXR1cm4gdGhpcy0+c2V0YnVmKF9fcywgX19uKTsgfQojIDI1 NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgcG9zX3R5 cGUKICAgICAgcHVic2Vla29mZihvZmZfdHlwZSBfX29mZiwgaW9zX2Jhc2U6OnNlZWtkaXIg X193YXksCiAgIGlvc19iYXNlOjpvcGVubW9kZSBfX21vZGUgPSBpb3NfYmFzZTo6aW4gfCBp b3NfYmFzZTo6b3V0KQogICAgICB7IHJldHVybiB0aGlzLT5zZWVrb2ZmKF9fb2ZmLCBfX3dh eSwgX19tb2RlKTsgfQojIDI2OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1i dWYiIDMKICAgICAgcG9zX3R5cGUKICAgICAgcHVic2Vla3Bvcyhwb3NfdHlwZSBfX3NwLAog ICBpb3NfYmFzZTo6b3Blbm1vZGUgX19tb2RlID0gaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6 Om91dCkKICAgICAgeyByZXR1cm4gdGhpcy0+c2Vla3BvcyhfX3NwLCBfX21vZGUpOyB9CgoK CgogICAgICBpbnQKICAgICAgcHVic3luYygpIHsgcmV0dXJuIHRoaXMtPnN5bmMoKTsgfQoj IDI5MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgc3Ry ZWFtc2l6ZQogICAgICBpbl9hdmFpbCgpCiAgICAgIHsKIGNvbnN0IHN0cmVhbXNpemUgX19y ZXQgPSB0aGlzLT5lZ3B0cigpIC0gdGhpcy0+Z3B0cigpOwogcmV0dXJuIF9fcmV0ID8gX19y ZXQgOiB0aGlzLT5zaG93bWFueWMoKTsKICAgICAgfQojIDMwNCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUKICAgICAgc25leHRjKCkK ICAgICAgewogaW50X3R5cGUgX19yZXQgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiBpZiAoX19i dWlsdGluX2V4cGVjdCghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKHRoaXMtPnNidW1wYygp LAogICAgICAgICAgICAgX19yZXQpLCB0cnVlKSkKICAgX19yZXQgPSB0aGlzLT5zZ2V0Yygp OwogcmV0dXJuIF9fcmV0OwogICAgICB9CiMgMzIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL3N0cmVhbWJ1ZiIgMwogICAgICBpbnRfdHlwZQogICAgICBzYnVtcGMoKQogICAgICB7 CiBpbnRfdHlwZSBfX3JldDsKIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRoaXMtPmdwdHIoKSA8 IHRoaXMtPmVncHRyKCksIHRydWUpKQogICB7CiAgICAgX19yZXQgPSB0cmFpdHNfdHlwZTo6 dG9faW50X3R5cGUoKnRoaXMtPmdwdHIoKSk7CiAgICAgdGhpcy0+Z2J1bXAoMSk7CiAgIH0K IGVsc2UKICAgX19yZXQgPSB0aGlzLT51ZmxvdygpOwogcmV0dXJuIF9fcmV0OwogICAgICB9 CiMgMzQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogICAgICBp bnRfdHlwZQogICAgICBzZ2V0YygpCiAgICAgIHsKIGludF90eXBlIF9fcmV0OwogaWYgKF9f YnVpbHRpbl9leHBlY3QodGhpcy0+Z3B0cigpIDwgdGhpcy0+ZWdwdHIoKSwgdHJ1ZSkpCiAg IF9fcmV0ID0gdHJhaXRzX3R5cGU6OnRvX2ludF90eXBlKCp0aGlzLT5ncHRyKCkpOwogZWxz ZQogICBfX3JldCA9IHRoaXMtPnVuZGVyZmxvdygpOwogcmV0dXJuIF9fcmV0OwogICAgICB9 CiMgMzYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogICAgICBz dHJlYW1zaXplCiAgICAgIHNnZXRuKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikK ICAgICAgeyByZXR1cm4gdGhpcy0+eHNnZXRuKF9fcywgX19uKTsgfQojIDM3OCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUKICAgICAg c3B1dGJhY2tjKGNoYXJfdHlwZSBfX2MpCiAgICAgIHsKIGludF90eXBlIF9fcmV0OwogY29u c3QgYm9vbCBfX3Rlc3Rwb3MgPSB0aGlzLT5lYmFjaygpIDwgdGhpcy0+Z3B0cigpOwogaWYg KF9fYnVpbHRpbl9leHBlY3QoIV9fdGVzdHBvcyB8fAogICAgICAgICF0cmFpdHNfdHlwZTo6 ZXEoX19jLCB0aGlzLT5ncHRyKClbLTFdKSwgZmFsc2UpKQogICBfX3JldCA9IHRoaXMtPnBi YWNrZmFpbCh0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19jKSk7CiBlbHNlCiAgIHsKICAg ICB0aGlzLT5nYnVtcCgtMSk7CiAgICAgX19yZXQgPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5 cGUoKnRoaXMtPmdwdHIoKSk7CiAgIH0KIHJldHVybiBfX3JldDsKICAgICAgfQojIDQwMyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUK ICAgICAgc3VuZ2V0YygpCiAgICAgIHsKIGludF90eXBlIF9fcmV0OwogaWYgKF9fYnVpbHRp bl9leHBlY3QodGhpcy0+ZWJhY2soKSA8IHRoaXMtPmdwdHIoKSwgdHJ1ZSkpCiAgIHsKICAg ICB0aGlzLT5nYnVtcCgtMSk7CiAgICAgX19yZXQgPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5 cGUoKnRoaXMtPmdwdHIoKSk7CiAgIH0KIGVsc2UKICAgX19yZXQgPSB0aGlzLT5wYmFja2Zh aWwoKTsKIHJldHVybiBfX3JldDsKICAgICAgfQojIDQzMCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgaW50X3R5cGUKICAgICAgc3B1dGMoY2hhcl90 eXBlIF9fYykKICAgICAgewogaW50X3R5cGUgX19yZXQ7CiBpZiAoX19idWlsdGluX2V4cGVj dCh0aGlzLT5wcHRyKCkgPCB0aGlzLT5lcHB0cigpLCB0cnVlKSkKICAgewogICAgICp0aGlz LT5wcHRyKCkgPSBfX2M7CiAgICAgdGhpcy0+cGJ1bXAoMSk7CiAgICAgX19yZXQgPSB0cmFp dHNfdHlwZTo6dG9faW50X3R5cGUoX19jKTsKICAgfQogZWxzZQogICBfX3JldCA9IHRoaXMt Pm92ZXJmbG93KHRyYWl0c190eXBlOjp0b19pbnRfdHlwZShfX2MpKTsKIHJldHVybiBfX3Jl dDsKICAgICAgfQojIDQ1NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYi IDMKICAgICAgc3RyZWFtc2l6ZQogICAgICBzcHV0bihjb25zdCBjaGFyX3R5cGUqIF9fcywg c3RyZWFtc2l6ZSBfX24pCiAgICAgIHsgcmV0dXJuIHRoaXMtPnhzcHV0bihfX3MsIF9fbik7 IH0KCiAgICBwcm90ZWN0ZWQ6CiMgNDcwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0 cmVhbWJ1ZiIgMwogICAgICBiYXNpY19zdHJlYW1idWYoKQogICAgICA6IF9NX2luX2JlZygw KSwgX01faW5fY3VyKDApLCBfTV9pbl9lbmQoMCksCiAgICAgIF9NX291dF9iZWcoMCksIF9N X291dF9jdXIoMCksIF9NX291dF9lbmQoMCksCiAgICAgIF9NX2J1Zl9sb2NhbGUobG9jYWxl KCkpCiAgICAgIHsgfQojIDQ4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1i dWYiIDMKICAgICAgY2hhcl90eXBlKgogICAgICBlYmFjaygpIGNvbnN0IHsgcmV0dXJuIF9N X2luX2JlZzsgfQoKICAgICAgY2hhcl90eXBlKgogICAgICBncHRyKCkgY29uc3QgeyByZXR1 cm4gX01faW5fY3VyOyB9CgogICAgICBjaGFyX3R5cGUqCiAgICAgIGVncHRyKCkgY29uc3Qg eyByZXR1cm4gX01faW5fZW5kOyB9CiMgNTA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L3N0cmVhbWJ1ZiIgMwogICAgICB2b2lkCiAgICAgIGdidW1wKGludCBfX24pIHsgX01faW5f Y3VyICs9IF9fbjsgfQojIDUxNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1i dWYiIDMKICAgICAgdm9pZAogICAgICBzZXRnKGNoYXJfdHlwZSogX19nYmVnLCBjaGFyX3R5 cGUqIF9fZ25leHQsIGNoYXJfdHlwZSogX19nZW5kKQogICAgICB7CiBfTV9pbl9iZWcgPSBf X2diZWc7CiBfTV9pbl9jdXIgPSBfX2duZXh0OwogX01faW5fZW5kID0gX19nZW5kOwogICAg ICB9CiMgNTM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogICAg ICBjaGFyX3R5cGUqCiAgICAgIHBiYXNlKCkgY29uc3QgeyByZXR1cm4gX01fb3V0X2JlZzsg fQoKICAgICAgY2hhcl90eXBlKgogICAgICBwcHRyKCkgY29uc3QgeyByZXR1cm4gX01fb3V0 X2N1cjsgfQoKICAgICAgY2hhcl90eXBlKgogICAgICBlcHB0cigpIGNvbnN0IHsgcmV0dXJu IF9NX291dF9lbmQ7IH0KIyA1NTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFt YnVmIiAzCiAgICAgIHZvaWQKICAgICAgcGJ1bXAoaW50IF9fbikgeyBfTV9vdXRfY3VyICs9 IF9fbjsgfQojIDU2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMK ICAgICAgdm9pZAogICAgICBzZXRwKGNoYXJfdHlwZSogX19wYmVnLCBjaGFyX3R5cGUqIF9f cGVuZCkKICAgICAgewogX01fb3V0X2JlZyA9IF9NX291dF9jdXIgPSBfX3BiZWc7CiBfTV9v dXRfZW5kID0gX19wZW5kOwogICAgICB9CiMgNTgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIHZvaWQKICAgICAgaW1idWUoY29uc3Qg bG9jYWxlJiBfX2xvYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpKQogICAgICB7IH0K IyA1OTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFtYnVmIiAzCiAgICAgIHZp cnR1YWwgYmFzaWNfc3RyZWFtYnVmPGNoYXJfdHlwZSxfVHJhaXRzPioKICAgICAgc2V0YnVm KGNoYXJfdHlwZSosIHN0cmVhbXNpemUpCiAgICAgIHsgcmV0dXJuIHRoaXM7IH0KIyA2MDgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFtYnVmIiAzCiAgICAgIHZpcnR1YWwg cG9zX3R5cGUKICAgICAgc2Vla29mZihvZmZfdHlwZSwgaW9zX2Jhc2U6OnNlZWtkaXIsCiAg ICAgICBpb3NfYmFzZTo6b3Blbm1vZGUgPSBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0 KQogICAgICB7IHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOyB9CiMgNjIwICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIHBvc190 eXBlCiAgICAgIHNlZWtwb3MocG9zX3R5cGUsCiAgICAgICBpb3NfYmFzZTo6b3Blbm1vZGUg PSBpb3NfYmFzZTo6aW4gfCBpb3NfYmFzZTo6b3V0KQogICAgICB7IHJldHVybiBwb3NfdHlw ZShvZmZfdHlwZSgtMSkpOyB9CiMgNjMzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0 cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIGludAogICAgICBzeW5jKCkgeyByZXR1cm4gMDsg fQojIDY1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAg dmlydHVhbCBzdHJlYW1zaXplCiAgICAgIHNob3dtYW55YygpIHsgcmV0dXJuIDA7IH0KIyA2 NzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFtYnVmIiAzCiAgICAgIHZpcnR1 YWwgc3RyZWFtc2l6ZQogICAgICB4c2dldG4oY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUg X19uKTsKIyA2OTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RyZWFtYnVmIiAzCiAg ICAgIHZpcnR1YWwgaW50X3R5cGUKICAgICAgdW5kZXJmbG93KCkKICAgICAgeyByZXR1cm4g dHJhaXRzX3R5cGU6OmVvZigpOyB9CiMgNzA2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L3N0cmVhbWJ1ZiIgMwogICAgICB2aXJ0dWFsIGludF90eXBlCiAgICAgIHVmbG93KCkKICAg ICAgewogaW50X3R5cGUgX19yZXQgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiBjb25zdCBib29s IF9fdGVzdGVvZiA9IHRyYWl0c190eXBlOjplcV9pbnRfdHlwZSh0aGlzLT51bmRlcmZsb3co KSwKICAgICAgIF9fcmV0KTsKIGlmICghX190ZXN0ZW9mKQogICB7CiAgICAgX19yZXQgPSB0 cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKnRoaXMtPmdwdHIoKSk7CiAgICAgdGhpcy0+Z2J1 bXAoMSk7CiAgIH0KIHJldHVybiBfX3JldDsKICAgICAgfQojIDczMCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBpbnRfdHlwZQogICAg ICBwYmFja2ZhaWwoaW50X3R5cGUgX19jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkg PSB0cmFpdHNfdHlwZTo6ZW9mKCkpCiAgICAgIHsgcmV0dXJuIHRyYWl0c190eXBlOjplb2Yo KTsgfQojIDc0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAg ICAgdmlydHVhbCBzdHJlYW1zaXplCiAgICAgIHhzcHV0bihjb25zdCBjaGFyX3R5cGUqIF9f cywgc3RyZWFtc2l6ZSBfX24pOwojIDc3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9z dHJlYW1idWYiIDMKICAgICAgdmlydHVhbCBpbnRfdHlwZQogICAgICBvdmVyZmxvdyhpbnRf dHlwZSBfX2MgX19hdHRyaWJ1dGVfXyAoKF9fdW51c2VkX18pKSA9IHRyYWl0c190eXBlOjpl b2YoKSkKICAgICAgeyByZXR1cm4gdHJhaXRzX3R5cGU6OmVvZigpOyB9CgoKCiAgICBwdWJs aWM6CiMgNzg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogICAg ICBfX2F0dHJpYnV0ZV9fICgoX19kZXByZWNhdGVkX18gKCJ1c2UgJyIgInN0ZDo6YmFzaWNf c3RyZWFtYnVmOjpzYnVtcGMiICInIGluc3RlYWQiKSkpCiAgICAgIHZvaWQKICAgICAgc3Rv c3NjKCkKICAgICAgewogaWYgKHRoaXMtPmdwdHIoKSA8IHRoaXMtPmVncHRyKCkpCiAgIHRo aXMtPmdidW1wKDEpOwogZWxzZQogICB0aGlzLT51ZmxvdygpOwogICAgICB9CgoKCiAgICAg IHZvaWQKICAgICAgX19zYWZlX2didW1wKHN0cmVhbXNpemUgX19uKSB7IF9NX2luX2N1ciAr PSBfX247IH0KCiAgICAgIHZvaWQKICAgICAgX19zYWZlX3BidW1wKHN0cmVhbXNpemUgX19u KSB7IF9NX291dF9jdXIgKz0gX19uOyB9CgoKICAgIHByaXZhdGU6CgoKCiAgICAgIGJhc2lj X3N0cmVhbWJ1Zihjb25zdCBiYXNpY19zdHJlYW1idWYmKTsKCiAgICAgIGJhc2ljX3N0cmVh bWJ1ZiYKICAgICAgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3N0cmVhbWJ1ZiYpOwojIDgzMCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDMKICAgIH07CiMgODQ0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL3N0cmVhbWJ1ZiIgMwogIHRlbXBsYXRlPD4KICAg IHN0cmVhbXNpemUKICAgIF9fY29weV9zdHJlYW1idWZzX2VvZihiYXNpY19zdHJlYW1idWY8 Y2hhcj4qIF9fc2JpbiwKICAgICBiYXNpY19zdHJlYW1idWY8Y2hhcj4qIF9fc2JvdXQsIGJv b2wmIF9faW5lb2YpOwoKICB0ZW1wbGF0ZTw+CiAgICBzdHJlYW1zaXplCiAgICBfX2NvcHlf c3RyZWFtYnVmc19lb2YoYmFzaWNfc3RyZWFtYnVmPHdjaGFyX3Q+KiBfX3NiaW4sCiAgICAg YmFzaWNfc3RyZWFtYnVmPHdjaGFyX3Q+KiBfX3Nib3V0LCBib29sJiBfX2luZW9mKTsKCgoj dW5kZWYgX0lzVW51c2VkCgoKfQoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvc3RyZWFtYnVmLnRjYyIgMSAzCiMgMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9zdHJlYW1idWYudGNjIiAzCiNkZWZpbmUgX1NUUkVBTUJVRl9UQ0MgMQoKICAgICAg IAojIDM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvc3RyZWFtYnVmLnRjYyIg MwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZh dWx0IikpKQp7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp dHM+CiAgICBzdHJlYW1zaXplCiAgICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRz Pjo6CiAgICB4c2dldG4oY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewog ICAgICBzdHJlYW1zaXplIF9fcmV0ID0gMDsKICAgICAgd2hpbGUgKF9fcmV0IDwgX19uKQog ewogICBjb25zdCBzdHJlYW1zaXplIF9fYnVmX2xlbiA9IHRoaXMtPmVncHRyKCkgLSB0aGlz LT5ncHRyKCk7CiAgIGlmIChfX2J1Zl9sZW4pCiAgICAgewogICAgICAgY29uc3Qgc3RyZWFt c2l6ZSBfX3JlbWFpbmluZyA9IF9fbiAtIF9fcmV0OwogICAgICAgY29uc3Qgc3RyZWFtc2l6 ZSBfX2xlbiA9IHN0ZDo6bWluKF9fYnVmX2xlbiwgX19yZW1haW5pbmcpOwogICAgICAgdHJh aXRzX3R5cGU6OmNvcHkoX19zLCB0aGlzLT5ncHRyKCksIF9fbGVuKTsKICAgICAgIF9fcmV0 ICs9IF9fbGVuOwogICAgICAgX19zICs9IF9fbGVuOwogICAgICAgdGhpcy0+X19zYWZlX2di dW1wKF9fbGVuKTsKICAgICB9CgogICBpZiAoX19yZXQgPCBfX24pCiAgICAgewogICAgICAg Y29uc3QgaW50X3R5cGUgX19jID0gdGhpcy0+dWZsb3coKTsKICAgICAgIGlmICghdHJhaXRz X3R5cGU6OmVxX2ludF90eXBlKF9fYywgdHJhaXRzX3R5cGU6OmVvZigpKSkKICB7CiAgICB0 cmFpdHNfdHlwZTo6YXNzaWduKCpfX3MrKywgdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShf X2MpKTsKICAgICsrX19yZXQ7CiAgfQogICAgICAgZWxzZQogIGJyZWFrOwogICAgIH0KIH0K ICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs IHR5cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJlYW1zaXplCiAgICBiYXNpY19zdHJlYW1idWY8 X0NoYXJULCBfVHJhaXRzPjo6CiAgICB4c3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0 cmVhbXNpemUgX19uKQogICAgewogICAgICBzdHJlYW1zaXplIF9fcmV0ID0gMDsKICAgICAg d2hpbGUgKF9fcmV0IDwgX19uKQogewogICBjb25zdCBzdHJlYW1zaXplIF9fYnVmX2xlbiA9 IHRoaXMtPmVwcHRyKCkgLSB0aGlzLT5wcHRyKCk7CiAgIGlmIChfX2J1Zl9sZW4pCiAgICAg ewogICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX3JlbWFpbmluZyA9IF9fbiAtIF9fcmV0Owog ICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX2xlbiA9IHN0ZDo6bWluKF9fYnVmX2xlbiwgX19y ZW1haW5pbmcpOwogICAgICAgdHJhaXRzX3R5cGU6OmNvcHkodGhpcy0+cHB0cigpLCBfX3Ms IF9fbGVuKTsKICAgICAgIF9fcmV0ICs9IF9fbGVuOwogICAgICAgX19zICs9IF9fbGVuOwog ICAgICAgdGhpcy0+X19zYWZlX3BidW1wKF9fbGVuKTsKICAgICB9CgogICBpZiAoX19yZXQg PCBfX24pCiAgICAgewogICAgICAgaW50X3R5cGUgX19jID0gdGhpcy0+b3ZlcmZsb3codHJh aXRzX3R5cGU6OnRvX2ludF90eXBlKCpfX3MpKTsKICAgICAgIGlmICghdHJhaXRzX3R5cGU6 OmVxX2ludF90eXBlKF9fYywgdHJhaXRzX3R5cGU6OmVvZigpKSkKICB7CiAgICArK19fcmV0 OwogICAgKytfX3M7CiAgfQogICAgICAgZWxzZQogIGJyZWFrOwogICAgIH0KIH0KICAgICAg cmV0dXJuIF9fcmV0OwogICAgfQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5 cGVuYW1lIF9UcmFpdHM+CiAgICBzdHJlYW1zaXplCiAgICBfX2NvcHlfc3RyZWFtYnVmc19l b2YoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2JpbiwKICAgICBiYXNp Y19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19zYm91dCwKICAgICBib29sJiBfX2lu ZW9mKQogICAgewogICAgICBzdHJlYW1zaXplIF9fcmV0ID0gMDsKICAgICAgX19pbmVvZiA9 IHRydWU7CiAgICAgIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIF9fYyA9IF9fc2Jpbi0+ c2dldGMoKTsKICAgICAgd2hpbGUgKCFfVHJhaXRzOjplcV9pbnRfdHlwZShfX2MsIF9UcmFp dHM6OmVvZigpKSkKIHsKICAgX19jID0gX19zYm91dC0+c3B1dGMoX1RyYWl0czo6dG9fY2hh cl90eXBlKF9fYykpOwogICBpZiAoX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfVHJhaXRz Ojplb2YoKSkpCiAgICAgewogICAgICAgX19pbmVvZiA9IGZhbHNlOwogICAgICAgYnJlYWs7 CiAgICAgfQogICArK19fcmV0OwogICBfX2MgPSBfX3NiaW4tPnNuZXh0YygpOwogfQogICAg ICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBzdHJlYW1zaXplCiAgICBfX2NvcHlfc3RyZWFt YnVmcyhiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19zYmluLAogICAgICAg IGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KiBfX3Nib3V0KQogICAgewogICAg ICBib29sIF9faW5lb2Y7CiAgICAgIHJldHVybiBfX2NvcHlfc3RyZWFtYnVmc19lb2YoX19z YmluLCBfX3Nib3V0LCBfX2luZW9mKTsKICAgIH0KCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNs YXNzIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPjsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBzdHJl YW1zaXplCiAgICBfX2NvcHlfc3RyZWFtYnVmcyhiYXNpY19zdHJlYW1idWY8Y2hhcj4qLAog ICAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyPiopOwoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNs YXNzIGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PjsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBz dHJlYW1zaXplCiAgICBfX2NvcHlfc3RyZWFtYnVmcyhiYXNpY19zdHJlYW1idWY8d2NoYXJf dD4qLAogICAgICAgIGJhc2ljX3N0cmVhbWJ1Zjx3Y2hhcl90PiopOwoKCgoKfQojIDg2MSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9zdHJlYW1idWYiIDIgMwojIDQ2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2lvcyIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2Jhc2ljX2lvcy5oIiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2Jhc2ljX2lvcy5oIiAzCiNkZWZpbmUgX0JBU0lDX0lPU19IIDEKCiAgICAg ICAKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX2lvcy5oIiAz CgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMu aCIgMSAzCiMgMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFj ZXRzLmgiIDMKI2RlZmluZSBfTE9DQUxFX0ZBQ0VUU19IIDEKCiAgICAgICAKIyAzOCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwoKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2N3Y3R5cGUiIDEgMwojIDM5ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2N3Y3R5cGUiIDMKICAgICAgIAojIDQwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2N3Y3R5cGUiIDMKIyA1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9jd2N0eXBlIiAzCiMgMSAiL3Vzci9pbmNsdWRlL3djdHlwZS5oIiAxIDMgNAojIDI0ICIv dXNyL2luY2x1ZGUvd2N0eXBlLmgiIDMgNAojZGVmaW5lIF9XQ1RZUEVfSCAxCiMgMzggIi91 c3IvaW5jbHVkZS93Y3R5cGUuaCIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvd2N0eXBl LXdjaGFyLmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9iaXRzL3djdHlwZS13Y2hhci5o IiAzIDQKI2RlZmluZSBfQklUU19XQ1RZUEVfV0NIQVJfSCAxCiMgMzggIi91c3IvaW5jbHVk ZS9iaXRzL3djdHlwZS13Y2hhci5oIiAzIDQKdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCB3 Y3R5cGVfdDsKIyA0OSAiL3Vzci9pbmNsdWRlL2JpdHMvd2N0eXBlLXdjaGFyLmgiIDMgNAoj ZGVmaW5lIF9JU3diaXQoYml0KSAoKGJpdCkgPCA4ID8gKGludCkgKCgxVUwgPDwgKGJpdCkp IDw8IDI0KSA6ICgoYml0KSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKGJpdCkpIDw8IDgpIDog KChiaXQpIDwgMjQgPyAoaW50KSAoKDFVTCA8PCAoYml0KSkgPj4gOCkgOiAoaW50KSAoKDFV TCA8PCAoYml0KSkgPj4gMjQpKSkpCgoKCgoKCmVudW0KewogIF9fSVN3dXBwZXIgPSAwLAog IF9fSVN3bG93ZXIgPSAxLAogIF9fSVN3YWxwaGEgPSAyLAogIF9fSVN3ZGlnaXQgPSAzLAog IF9fSVN3eGRpZ2l0ID0gNCwKICBfX0lTd3NwYWNlID0gNSwKICBfX0lTd3ByaW50ID0gNiwK ICBfX0lTd2dyYXBoID0gNywKICBfX0lTd2JsYW5rID0gOCwKICBfX0lTd2NudHJsID0gOSwK ICBfX0lTd3B1bmN0ID0gMTAsCiAgX19JU3dhbG51bSA9IDExLAoKICBfSVN3dXBwZXIgPSAo KF9fSVN3dXBwZXIpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3VwcGVyKSkgPDwgMjQp IDogKChfX0lTd3VwcGVyKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3dXBwZXIpKSA8 PCA4KSA6ICgoX19JU3d1cHBlcikgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3VwcGVy KSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3d1cHBlcikpID4+IDI0KSkpKSwKICBf SVN3bG93ZXIgPSAoKF9fSVN3bG93ZXIpIDwgOCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2xv d2VyKSkgPDwgMjQpIDogKChfX0lTd2xvd2VyKSA8IDE2ID8gKGludCkgKCgxVUwgPDwgKF9f SVN3bG93ZXIpKSA8PCA4KSA6ICgoX19JU3dsb3dlcikgPCAyNCA/IChpbnQpICgoMVVMIDw8 IChfX0lTd2xvd2VyKSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19JU3dsb3dlcikpID4+ IDI0KSkpKSwKICBfSVN3YWxwaGEgPSAoKF9fSVN3YWxwaGEpIDwgOCA/IChpbnQpICgoMVVM IDw8IChfX0lTd2FscGhhKSkgPDwgMjQpIDogKChfX0lTd2FscGhhKSA8IDE2ID8gKGludCkg KCgxVUwgPDwgKF9fSVN3YWxwaGEpKSA8PCA4KSA6ICgoX19JU3dhbHBoYSkgPCAyNCA/IChp bnQpICgoMVVMIDw8IChfX0lTd2FscGhhKSkgPj4gOCkgOiAoaW50KSAoKDFVTCA8PCAoX19J U3dhbHBoYSkpID4+IDI0KSkpKSwKICBfSVN3ZGlnaXQgPSAoKF9fSVN3ZGlnaXQpIDwgOCA/ IChpbnQpICgoMVVMIDw8IChfX0lTd2RpZ2l0KSkgPDwgMjQpIDogKChfX0lTd2RpZ2l0KSA8 IDE2ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3ZGlnaXQpKSA8PCA4KSA6ICgoX19JU3dkaWdp dCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd2RpZ2l0KSkgPj4gOCkgOiAoaW50KSAo KDFVTCA8PCAoX19JU3dkaWdpdCkpID4+IDI0KSkpKSwKICBfSVN3eGRpZ2l0ID0gKChfX0lT d3hkaWdpdCkgPCA4ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3eGRpZ2l0KSkgPDwgMjQpIDog KChfX0lTd3hkaWdpdCkgPCAxNiA/IChpbnQpICgoMVVMIDw8IChfX0lTd3hkaWdpdCkpIDw8 IDgpIDogKChfX0lTd3hkaWdpdCkgPCAyNCA/IChpbnQpICgoMVVMIDw8IChfX0lTd3hkaWdp dCkpID4+IDgpIDogKGludCkgKCgxVUwgPDwgKF9fSVN3eGRpZ2l0KSkgPj4gMjQpKSkpLAog IF9JU3dzcGFjZSA9ICgoX19JU3dzcGFjZSkgPCA4ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3 c3BhY2UpKSA8PCAyNCkgOiAoKF9fSVN3c3BhY2UpIDwgMTYgPyAoaW50KSAoKDFVTCA8PCAo X19JU3dzcGFjZSkpIDw8IDgpIDogKChfX0lTd3NwYWNlKSA8IDI0ID8gKGludCkgKCgxVUwg PDwgKF9fSVN3c3BhY2UpKSA+PiA4KSA6IChpbnQpICgoMVVMIDw8IChfX0lTd3NwYWNlKSkg Pj4gMjQpKSkpLAogIF9JU3dwcmludCA9ICgoX19JU3dwcmludCkgPCA4ID8gKGludCkgKCgx VUwgPDwgKF9fSVN3cHJpbnQpKSA8PCAyNCkgOiAoKF9fSVN3cHJpbnQpIDwgMTYgPyAoaW50 KSAoKDFVTCA8PCAoX19JU3dwcmludCkpIDw8IDgpIDogKChfX0lTd3ByaW50KSA8IDI0ID8g KGludCkgKCgxVUwgPDwgKF9fSVN3cHJpbnQpKSA+PiA4KSA6IChpbnQpICgoMVVMIDw8IChf X0lTd3ByaW50KSkgPj4gMjQpKSkpLAogIF9JU3dncmFwaCA9ICgoX19JU3dncmFwaCkgPCA4 ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Z3JhcGgpKSA8PCAyNCkgOiAoKF9fSVN3Z3JhcGgp IDwgMTYgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dncmFwaCkpIDw8IDgpIDogKChfX0lTd2dy YXBoKSA8IDI0ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Z3JhcGgpKSA+PiA4KSA6IChpbnQp ICgoMVVMIDw8IChfX0lTd2dyYXBoKSkgPj4gMjQpKSkpLAogIF9JU3dibGFuayA9ICgoX19J U3dibGFuaykgPCA4ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3YmxhbmspKSA8PCAyNCkgOiAo KF9fSVN3YmxhbmspIDwgMTYgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dibGFuaykpIDw8IDgp IDogKChfX0lTd2JsYW5rKSA8IDI0ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3YmxhbmspKSA+ PiA4KSA6IChpbnQpICgoMVVMIDw8IChfX0lTd2JsYW5rKSkgPj4gMjQpKSkpLAogIF9JU3dj bnRybCA9ICgoX19JU3djbnRybCkgPCA4ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3Y250cmwp KSA8PCAyNCkgOiAoKF9fSVN3Y250cmwpIDwgMTYgPyAoaW50KSAoKDFVTCA8PCAoX19JU3dj bnRybCkpIDw8IDgpIDogKChfX0lTd2NudHJsKSA8IDI0ID8gKGludCkgKCgxVUwgPDwgKF9f SVN3Y250cmwpKSA+PiA4KSA6IChpbnQpICgoMVVMIDw8IChfX0lTd2NudHJsKSkgPj4gMjQp KSkpLAogIF9JU3dwdW5jdCA9ICgoX19JU3dwdW5jdCkgPCA4ID8gKGludCkgKCgxVUwgPDwg KF9fSVN3cHVuY3QpKSA8PCAyNCkgOiAoKF9fSVN3cHVuY3QpIDwgMTYgPyAoaW50KSAoKDFV TCA8PCAoX19JU3dwdW5jdCkpIDw8IDgpIDogKChfX0lTd3B1bmN0KSA8IDI0ID8gKGludCkg KCgxVUwgPDwgKF9fSVN3cHVuY3QpKSA+PiA4KSA6IChpbnQpICgoMVVMIDw8IChfX0lTd3B1 bmN0KSkgPj4gMjQpKSkpLAogIF9JU3dhbG51bSA9ICgoX19JU3dhbG51bSkgPCA4ID8gKGlu dCkgKCgxVUwgPDwgKF9fSVN3YWxudW0pKSA8PCAyNCkgOiAoKF9fSVN3YWxudW0pIDwgMTYg PyAoaW50KSAoKDFVTCA8PCAoX19JU3dhbG51bSkpIDw8IDgpIDogKChfX0lTd2FsbnVtKSA8 IDI0ID8gKGludCkgKCgxVUwgPDwgKF9fSVN3YWxudW0pKSA+PiA4KSA6IChpbnQpICgoMVVM IDw8IChfX0lTd2FsbnVtKSkgPj4gMjQpKSkpCn07CgoKCmV4dGVybiAiQyIgewoKCgoKCgoK ZXh0ZXJuIGludCBpc3dhbG51bSAod2ludF90IF9fd2MpIHRocm93ICgpOwoKCgoKCmV4dGVy biBpbnQgaXN3YWxwaGEgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGlz d2NudHJsICh3aW50X3QgX193YykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXN3ZGlnaXQg KHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpc3dncmFwaCAod2ludF90 IF9fd2MpIHRocm93ICgpOwoKCgoKZXh0ZXJuIGludCBpc3dsb3dlciAod2ludF90IF9fd2Mp IHRocm93ICgpOwoKCmV4dGVybiBpbnQgaXN3cHJpbnQgKHdpbnRfdCBfX3djKSB0aHJvdyAo KTsKCgoKCmV4dGVybiBpbnQgaXN3cHVuY3QgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoK CmV4dGVybiBpbnQgaXN3c3BhY2UgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoKCmV4dGVy biBpbnQgaXN3dXBwZXIgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQg aXN3eGRpZ2l0ICh3aW50X3QgX193YykgdGhyb3cgKCk7CgoKCgoKZXh0ZXJuIGludCBpc3di bGFuayAod2ludF90IF9fd2MpIHRocm93ICgpOwojIDE1NSAiL3Vzci9pbmNsdWRlL2JpdHMv d2N0eXBlLXdjaGFyLmgiIDMgNApleHRlcm4gd2N0eXBlX3Qgd2N0eXBlIChjb25zdCBjaGFy ICpfX3Byb3BlcnR5KSB0aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBpc3djdHlwZSAod2ludF90 IF9fd2MsIHdjdHlwZV90IF9fZGVzYykgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB3aW50X3Qg dG93bG93ZXIgKHdpbnRfdCBfX3djKSB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IHRvd3Vw cGVyICh3aW50X3QgX193YykgdGhyb3cgKCk7Cgp9CiMgMzkgIi91c3IvaW5jbHVkZS93Y3R5 cGUuaCIgMiAzIDQKCgoKCgpleHRlcm4gIkMiIHsKCgoKdHlwZWRlZiBjb25zdCBfX2ludDMy X3QgKndjdHJhbnNfdDsKCgoKZXh0ZXJuIHdjdHJhbnNfdCB3Y3RyYW5zIChjb25zdCBjaGFy ICpfX3Byb3BlcnR5KSB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IHRvd2N0cmFucyAod2lu dF90IF9fd2MsIHdjdHJhbnNfdCBfX2Rlc2MpIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGlu dCBpc3dhbG51bV9sICh3aW50X3QgX193YywgbG9jYWxlX3QgX19sb2NhbGUpIHRocm93ICgp OwoKCgoKCmV4dGVybiBpbnQgaXN3YWxwaGFfbCAod2ludF90IF9fd2MsIGxvY2FsZV90IF9f bG9jYWxlKSB0aHJvdyAoKTsKCgpleHRlcm4gaW50IGlzd2NudHJsX2wgKHdpbnRfdCBfX3dj LCBsb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXN3ZGlnaXRf bCAod2ludF90IF9fd2MsIGxvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKZXh0ZXJu IGludCBpc3dncmFwaF9sICh3aW50X3QgX193YywgbG9jYWxlX3QgX19sb2NhbGUpIHRocm93 ICgpOwoKCgoKZXh0ZXJuIGludCBpc3dsb3dlcl9sICh3aW50X3QgX193YywgbG9jYWxlX3Qg X19sb2NhbGUpIHRocm93ICgpOwoKCmV4dGVybiBpbnQgaXN3cHJpbnRfbCAod2ludF90IF9f d2MsIGxvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgaXN3cHVu Y3RfbCAod2ludF90IF9fd2MsIGxvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKCmV4 dGVybiBpbnQgaXN3c3BhY2VfbCAod2ludF90IF9fd2MsIGxvY2FsZV90IF9fbG9jYWxlKSB0 aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgaXN3dXBwZXJfbCAod2ludF90IF9fd2MsIGxvY2Fs ZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgoKCmV4dGVybiBpbnQgaXN3eGRpZ2l0X2wgKHdp bnRfdCBfX3djLCBsb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoKCgpleHRlcm4gaW50 IGlzd2JsYW5rX2wgKHdpbnRfdCBfX3djLCBsb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7 CgoKCmV4dGVybiB3Y3R5cGVfdCB3Y3R5cGVfbCAoY29uc3QgY2hhciAqX19wcm9wZXJ0eSwg bG9jYWxlX3QgX19sb2NhbGUpCiAgICAgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgaXN3Y3R5 cGVfbCAod2ludF90IF9fd2MsIHdjdHlwZV90IF9fZGVzYywgbG9jYWxlX3QgX19sb2NhbGUp CiAgICAgdGhyb3cgKCk7CgoKCgoKCmV4dGVybiB3aW50X3QgdG93bG93ZXJfbCAod2ludF90 IF9fd2MsIGxvY2FsZV90IF9fbG9jYWxlKSB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IHRv d3VwcGVyX2wgKHdpbnRfdCBfX3djLCBsb2NhbGVfdCBfX2xvY2FsZSkgdGhyb3cgKCk7CgoK CmV4dGVybiB3Y3RyYW5zX3Qgd2N0cmFuc19sIChjb25zdCBjaGFyICpfX3Byb3BlcnR5LCBs b2NhbGVfdCBfX2xvY2FsZSkKICAgICB0aHJvdyAoKTsKCgpleHRlcm4gd2ludF90IHRvd2N0 cmFuc19sICh3aW50X3QgX193Yywgd2N0cmFuc190IF9fZGVzYywKICAgICAgbG9jYWxlX3Qg X19sb2NhbGUpIHRocm93ICgpOwoKCgp9CiMgNTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvY3djdHlwZSIgMiAzCgoKCiNkZWZpbmUgX0dMSUJDWFhfQ1dDVFlQRSAxCgoKI3VuZGVm IGlzd2FsbnVtCiN1bmRlZiBpc3dhbHBoYQoKI3VuZGVmIGlzd2JsYW5rCgojdW5kZWYgaXN3 Y250cmwKI3VuZGVmIGlzd2N0eXBlCiN1bmRlZiBpc3dkaWdpdAojdW5kZWYgaXN3Z3JhcGgK I3VuZGVmIGlzd2xvd2VyCiN1bmRlZiBpc3dwcmludAojdW5kZWYgaXN3cHVuY3QKI3VuZGVm IGlzd3NwYWNlCiN1bmRlZiBpc3d1cHBlcgojdW5kZWYgaXN3eGRpZ2l0CiN1bmRlZiB0b3dj dHJhbnMKI3VuZGVmIHRvd2xvd2VyCiN1bmRlZiB0b3d1cHBlcgojdW5kZWYgd2N0cmFucwoj dW5kZWYgd2N0eXBlCgoKCm5hbWVzcGFjZSBzdGQKewogIHVzaW5nIDo6d2N0cmFuc190Owog IHVzaW5nIDo6d2N0eXBlX3Q7CiAgdXNpbmcgOjp3aW50X3Q7CgogIHVzaW5nIDo6aXN3YWxu dW07CiAgdXNpbmcgOjppc3dhbHBoYTsKCiAgdXNpbmcgOjppc3dibGFuazsKCiAgdXNpbmcg Ojppc3djbnRybDsKICB1c2luZyA6Omlzd2N0eXBlOwogIHVzaW5nIDo6aXN3ZGlnaXQ7CiAg dXNpbmcgOjppc3dncmFwaDsKICB1c2luZyA6Omlzd2xvd2VyOwogIHVzaW5nIDo6aXN3cHJp bnQ7CiAgdXNpbmcgOjppc3dwdW5jdDsKICB1c2luZyA6Omlzd3NwYWNlOwogIHVzaW5nIDo6 aXN3dXBwZXI7CiAgdXNpbmcgOjppc3d4ZGlnaXQ7CiAgdXNpbmcgOjp0b3djdHJhbnM7CiAg dXNpbmcgOjp0b3dsb3dlcjsKICB1c2luZyA6OnRvd3VwcGVyOwogIHVzaW5nIDo6d2N0cmFu czsKICB1c2luZyA6OndjdHlwZTsKfQojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAyIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2NjdHlwZSIgMSAzCiMgMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY2N0eXBl IiAzCiAgICAgICAKIyA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jY3R5cGUiIDMK IyA0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIg MiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1n bnUvYml0cy9jdHlwZV9iYXNlLmgiIDEgMwojIDM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2N0eXBlX2Jhc2UuaCIgMwpuYW1lc3Bh Y2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsK CgoKICBzdHJ1Y3QgY3R5cGVfYmFzZQogIHsKCiAgICB0eXBlZGVmIGNvbnN0IGludCogX190 b190eXBlOwoKCgogICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBtYXNrOwogICAgc3RhdGlj IGNvbnN0IG1hc2sgdXBwZXIgPSBfSVN1cHBlcjsKICAgIHN0YXRpYyBjb25zdCBtYXNrIGxv d2VyID0gX0lTbG93ZXI7CiAgICBzdGF0aWMgY29uc3QgbWFzayBhbHBoYSA9IF9JU2FscGhh OwogICAgc3RhdGljIGNvbnN0IG1hc2sgZGlnaXQgPSBfSVNkaWdpdDsKICAgIHN0YXRpYyBj b25zdCBtYXNrIHhkaWdpdCA9IF9JU3hkaWdpdDsKICAgIHN0YXRpYyBjb25zdCBtYXNrIHNw YWNlID0gX0lTc3BhY2U7CiAgICBzdGF0aWMgY29uc3QgbWFzayBwcmludCA9IF9JU3ByaW50 OwogICAgc3RhdGljIGNvbnN0IG1hc2sgZ3JhcGggPSBfSVNhbHBoYSB8IF9JU2RpZ2l0IHwg X0lTcHVuY3Q7CiAgICBzdGF0aWMgY29uc3QgbWFzayBjbnRybCA9IF9JU2NudHJsOwogICAg c3RhdGljIGNvbnN0IG1hc2sgcHVuY3QgPSBfSVNwdW5jdDsKICAgIHN0YXRpYyBjb25zdCBt YXNrIGFsbnVtID0gX0lTYWxwaGEgfCBfSVNkaWdpdDsKCgoKICB9OwoKCn0KIyA0MiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCgoKCgoK CiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRv ci5oIiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmVhbWJ1 Zl9pdGVyYXRvci5oIiAzCiNkZWZpbmUgX1NUUkVBTUJVRl9JVEVSQVRPUl9IIDEKCiAgICAg ICAKIyAzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmVhbWJ1Zl9pdGVy YXRvci5oIiAzCgoKCgoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmls aXR5X18gKCJkZWZhdWx0IikpKQp7CgoKCgoKCgoKIAojIDQ5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvc3RyZWFtYnVmX2l0ZXJhdG9yLmgiIDMKI3ByYWdtYSBHQ0MgZGlh Z25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh dGVkLWRlY2xhcmF0aW9ucyIKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cz4KICAgIGNsYXNzIGlzdHJlYW1idWZfaXRlcmF0b3IKICAgIDogcHVibGlj IGl0ZXJhdG9yPGlucHV0X2l0ZXJhdG9yX3RhZywgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz OjpvZmZfdHlwZSwKICAgICAgICBfQ2hhclQqLCBfQ2hhclQ+CiAgICB7CiAgICBwdWJsaWM6 CgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCYgcmVmZXJlbmNlOwoKCgoKCgogICAgICB0eXBl ZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlw ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBpbnRfdHlwZTsK ICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiBzdHJlYW1i dWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4g aXN0cmVhbV90eXBlOwoKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVDI+CiBmcmll bmQgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUMj46 Ol9fdmFsdWUsCiAgICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiA+OjpfX3R5 cGUKIGNvcHkoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwgaXN0cmVhbWJ1Zl9pdGVy YXRvcjxfQ2hhclQyPiwKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPik7Cgog ICAgICB0ZW1wbGF0ZTxib29sIF9Jc01vdmUsIHR5cGVuYW1lIF9DaGFyVDI+CiBmcmllbmQg dHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUMj46Ol9f dmFsdWUsCiAgICAgICAgICAgIF9DaGFyVDIqPjo6X190eXBlCiBfX2NvcHlfbW92ZV9hMihp c3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVDI+LAogICAgICAgICBpc3RyZWFtYnVmX2l0ZXJh dG9yPF9DaGFyVDI+LCBfQ2hhclQyKik7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQyLCB0eXBlbmFtZSBfU2l6ZT4KIGZyaWVuZCB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5h YmxlX2lmPF9faXNfY2hhcjxfQ2hhclQyPjo6X192YWx1ZSwKICAgICAgICAgICAgX0NoYXJU Mio+OjpfX3R5cGUKIF9fY29weV9uX2EoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwg X1NpemUsIF9DaGFyVDIqLCBib29sKTsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VDI+CiBmcmllbmQgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8 X0NoYXJUMj46Ol9fdmFsdWUsCiAgICAgICAgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQy PiA+OjpfX3R5cGUKIGZpbmQoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwgaXN0cmVh bWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICAgY29uc3QgX0NoYXJUMiYpOwoKICAgICAg dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUMiwgdHlwZW5hbWUgX0Rpc3RhbmNlPgogZnJpZW5k IHR5cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVDI+Ojpf X3ZhbHVlLAogICAgICAgICAgICB2b2lkPjo6X190eXBlCiBhZHZhbmNlKGlzdHJlYW1idWZf aXRlcmF0b3I8X0NoYXJUMj4mLCBfRGlzdGFuY2UpOwoKICAgIHByaXZhdGU6CgoKCgoKCgog ICAgICBtdXRhYmxlIHN0cmVhbWJ1Zl90eXBlKiBfTV9zYnVmOwogICAgICBpbnRfdHlwZSBf TV9jOwoKICAgIHB1YmxpYzoKCiAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3IoKSB0aHJvdygp CiAgICAgIDogX01fc2J1ZigwKSwgX01fYyh0cmFpdHNfdHlwZTo6ZW9mKCkpIHsgfQojIDEz MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmVhbWJ1Zl9pdGVyYXRvci5o IiAzCiAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3IoaXN0cmVhbV90eXBlJiBfX3MpIHRocm93 KCkKICAgICAgOiBfTV9zYnVmKF9fcy5yZGJ1ZigpKSwgX01fYyh0cmFpdHNfdHlwZTo6ZW9m KCkpIHsgfQoKCiAgICAgIGlzdHJlYW1idWZfaXRlcmF0b3Ioc3RyZWFtYnVmX3R5cGUqIF9f cykgdGhyb3coKQogICAgICA6IF9NX3NidWYoX19zKSwgX01fYyh0cmFpdHNfdHlwZTo6ZW9m KCkpIHsgfQojIDE0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3N0cmVhbWJ1 Zl9pdGVyYXRvci5oIiAzCiAgICAgCiAgICAgIGNoYXJfdHlwZQogICAgICBvcGVyYXRvcioo KSBjb25zdAogICAgICB7CiBpbnRfdHlwZSBfX2MgPSBfTV9nZXQoKTsKIyAxNjEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdHJlYW1idWZfaXRlcmF0b3IuaCIgMwogcmV0 dXJuIHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICAgfQoKCiAgICAgIGlz dHJlYW1idWZfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yKysoKQogICAgICB7CgoKCiAgICAg ICAgICAgICAgICAgICAgICAgIDsKCiBfTV9zYnVmLT5zYnVtcGMoKTsKIF9NX2MgPSB0cmFp dHNfdHlwZTo6ZW9mKCk7CiByZXR1cm4gKnRoaXM7CiAgICAgIH0KCgogICAgICBpc3RyZWFt YnVmX2l0ZXJhdG9yCiAgICAgIG9wZXJhdG9yKysoaW50KQogICAgICB7CgoKCiAgICAgICAg ICAgICAgICAgICAgICAgIDsKCiBpc3RyZWFtYnVmX2l0ZXJhdG9yIF9fb2xkID0gKnRoaXM7 CiBfX29sZC5fTV9jID0gX01fc2J1Zi0+c2J1bXBjKCk7CiBfTV9jID0gdHJhaXRzX3R5cGU6 OmVvZigpOwogcmV0dXJuIF9fb2xkOwogICAgICB9CgoKCgoKICAgICAKICAgICAgYm9vbAog ICAgICBlcXVhbChjb25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yJiBfX2IpIGNvbnN0CiAgICAg IHsgcmV0dXJuIF9NX2F0X2VvZigpID09IF9fYi5fTV9hdF9lb2YoKTsgfQoKICAgIHByaXZh dGU6CiAgICAgIGludF90eXBlCiAgICAgIF9NX2dldCgpIGNvbnN0CiAgICAgIHsKIGludF90 eXBlIF9fcmV0ID0gX01fYzsKIGlmIChfTV9zYnVmICYmIF9TX2lzX2VvZihfX3JldCkgJiYg X1NfaXNfZW9mKF9fcmV0ID0gX01fc2J1Zi0+c2dldGMoKSkpCiAgIF9NX3NidWYgPSAwOwog cmV0dXJuIF9fcmV0OwogICAgICB9CgogICAgICBib29sCiAgICAgIF9NX2F0X2VvZigpIGNv bnN0CiAgICAgIHsgcmV0dXJuIF9TX2lzX2VvZihfTV9nZXQoKSk7IH0KCiAgICAgIHN0YXRp YyBib29sCiAgICAgIF9TX2lzX2VvZihpbnRfdHlwZSBfX2MpCiAgICAgIHsKIGNvbnN0IGlu dF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwogcmV0dXJuIHRyYWl0c190eXBl OjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKTsKICAgICAgfQoKCgoKCgoKICAgIH07CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgCiAgICBpbmxp bmUgYm9vbAogICAgb3BlcmF0b3I9PShjb25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy VCwgX1RyYWl0cz4mIF9fYSwKICAgICAgICBjb25zdCBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9D aGFyVCwgX1RyYWl0cz4mIF9fYikKICAgIHsgcmV0dXJuIF9fYS5lcXVhbChfX2IpOyB9CgoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgIAogICAg aW5saW5lIGJvb2wKICAgIG9wZXJhdG9yIT0oY29uc3QgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxf Q2hhclQsIF9UcmFpdHM+JiBfX2EsCiAgICAgICAgY29uc3QgaXN0cmVhbWJ1Zl9pdGVyYXRv cjxfQ2hhclQsIF9UcmFpdHM+JiBfX2IpCiAgICB7IHJldHVybiAhX19hLmVxdWFsKF9fYik7 IH0KCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg ICBjbGFzcyBvc3RyZWFtYnVmX2l0ZXJhdG9yCiAgICA6IHB1YmxpYyBpdGVyYXRvcjxvdXRw dXRfaXRlcmF0b3JfdGFnLCB2b2lkLCB2b2lkLCB2b2lkLCB2b2lkPgogICAgewogICAgcHVi bGljOgoKCgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVk ZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJlYW1idWY8 X0NoYXJULCBfVHJhaXRzPiBzdHJlYW1idWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19v c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gb3N0cmVhbV90eXBlOwoKCiAgICAgIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVDI+CiBmcmllbmQgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJs ZV9pZjxfX2lzX2NoYXI8X0NoYXJUMj46Ol9fdmFsdWUsCiAgICAgICAgb3N0cmVhbWJ1Zl9p dGVyYXRvcjxfQ2hhclQyPiA+OjpfX3R5cGUKIGNvcHkoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxf Q2hhclQyPiwgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQyPiwKICAgICAgb3N0cmVhbWJ1 Zl9pdGVyYXRvcjxfQ2hhclQyPik7CgogICAgcHJpdmF0ZToKICAgICAgc3RyZWFtYnVmX3R5 cGUqIF9NX3NidWY7CiAgICAgIGJvb2wgX01fZmFpbGVkOwoKICAgIHB1YmxpYzoKIyAyODQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9zdHJlYW1idWZfaXRlcmF0b3IuaCIg MwogICAgICBvc3RyZWFtYnVmX2l0ZXJhdG9yKG9zdHJlYW1fdHlwZSYgX19zKSB0aHJvdygp CiAgICAgIDogX01fc2J1ZihfX3MucmRidWYoKSksIF9NX2ZhaWxlZCghX01fc2J1ZikgeyB9 CgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcihzdHJlYW1idWZfdHlwZSogX19zKSB0aHJv dygpCiAgICAgIDogX01fc2J1ZihfX3MpLCBfTV9mYWlsZWQoIV9NX3NidWYpIHsgfQoKCiAg ICAgIG9zdHJlYW1idWZfaXRlcmF0b3ImCiAgICAgIG9wZXJhdG9yPShfQ2hhclQgX19jKQog ICAgICB7CiBpZiAoIV9NX2ZhaWxlZCAmJgogICAgIF9UcmFpdHM6OmVxX2ludF90eXBlKF9N X3NidWYtPnNwdXRjKF9fYyksIF9UcmFpdHM6OmVvZigpKSkKICAgX01fZmFpbGVkID0gdHJ1 ZTsKIHJldHVybiAqdGhpczsKICAgICAgfQoKCiAgICAgCiAgICAgIG9zdHJlYW1idWZfaXRl cmF0b3ImCiAgICAgIG9wZXJhdG9yKigpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAg ICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgb3BlcmF0b3IrKyhpbnQpCiAgICAgIHsg cmV0dXJuICp0aGlzOyB9CgoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgb3Bl cmF0b3IrKygpCiAgICAgIHsgcmV0dXJuICp0aGlzOyB9CgoKICAgICAKICAgICAgYm9vbAog ICAgICBmYWlsZWQoKSBjb25zdCB0aHJvdygpCiAgICAgIHsgcmV0dXJuIF9NX2ZhaWxlZDsg fQoKICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvciYKICAgICAgX01fcHV0KGNvbnN0IF9DaGFy VCogX193cywgc3RyZWFtc2l6ZSBfX2xlbikKICAgICAgewogaWYgKF9fYnVpbHRpbl9leHBl Y3QoIV9NX2ZhaWxlZCwgdHJ1ZSkKICAgICAmJiBfX2J1aWx0aW5fZXhwZWN0KHRoaXMtPl9N X3NidWYtPnNwdXRuKF9fd3MsIF9fbGVuKSAhPSBfX2xlbiwKICAgIGZhbHNlKSkKICAgX01f ZmFpbGVkID0gdHJ1ZTsKIHJldHVybiAqdGhpczsKICAgICAgfQogICAgfTsKI3ByYWdtYSBH Q0MgZGlhZ25vc3RpYyBwb3AKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5 cGVuYW1lIF9fZ251X2N4eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFs dWUsCiAgICAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+ID46Ol9fdHlwZQogICAg Y29weShpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gX19maXJzdCwKICBpc3RyZWFtYnVm X2l0ZXJhdG9yPF9DaGFyVD4gX19sYXN0LAogIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJU PiBfX3Jlc3VsdCkKICAgIHsKICAgICAgaWYgKF9fZmlyc3QuX01fc2J1ZiAmJiAhX19sYXN0 Ll9NX3NidWYgJiYgIV9fcmVzdWx0Ll9NX2ZhaWxlZCkKIHsKICAgYm9vbCBfX2luZW9mOwog ICBfX2NvcHlfc3RyZWFtYnVmc19lb2YoX19maXJzdC5fTV9zYnVmLCBfX3Jlc3VsdC5fTV9z YnVmLCBfX2luZW9mKTsKICAgaWYgKCFfX2luZW9mKQogICAgIF9fcmVzdWx0Ll9NX2ZhaWxl ZCA9IHRydWU7CiB9CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8 Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6 Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAgICAgIG9zdHJl YW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5cGUKICAgIF9fY29weV9tb3ZlX2EyKF9D aGFyVCogX19maXJzdCwgX0NoYXJUKiBfX2xhc3QsCiAgICAgb3N0cmVhbWJ1Zl9pdGVyYXRv cjxfQ2hhclQ+IF9fcmVzdWx0KQogICAgewogICAgICBjb25zdCBzdHJlYW1zaXplIF9fbnVt ID0gX19sYXN0IC0gX19maXJzdDsKICAgICAgaWYgKF9fbnVtID4gMCkKIF9fcmVzdWx0Ll9N X3B1dChfX2ZpcnN0LCBfX251bSk7CiAgICAgIHJldHVybiBfX3Jlc3VsdDsKICAgIH0KCiAg dGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBfQ2hhclQ+CiAgICB0eXBlbmFtZSBf X2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAg ICAgIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiA+OjpfX3R5cGUKICAgIF9fY29weV9t b3ZlX2EyKGNvbnN0IF9DaGFyVCogX19maXJzdCwgY29uc3QgX0NoYXJUKiBfX2xhc3QsCiAg ICAgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9fcmVzdWx0KQogICAgewogICAgICBj b25zdCBzdHJlYW1zaXplIF9fbnVtID0gX19sYXN0IC0gX19maXJzdDsKICAgICAgaWYgKF9f bnVtID4gMCkKIF9fcmVzdWx0Ll9NX3B1dChfX2ZpcnN0LCBfX251bSk7CiAgICAgIHJldHVy biBfX3Jlc3VsdDsKICAgIH0KCiAgdGVtcGxhdGU8Ym9vbCBfSXNNb3ZlLCB0eXBlbmFtZSBf Q2hhclQ+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPF9faXNfY2hhcjxf Q2hhclQ+OjpfX3ZhbHVlLAogICAgICAgIF9DaGFyVCo+OjpfX3R5cGUKICAgIF9fY29weV9t b3ZlX2EyKGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2ZpcnN0LAogICAgIGlzdHJl YW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2xhc3QsIF9DaGFyVCogX19yZXN1bHQpCiAgICB7 CiAgICAgIHR5cGVkZWYgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9faXNfaXRlcmF0 b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6OnRy YWl0c190eXBlIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXNfaXRl cmF0b3JfdHlwZTo6c3RyZWFtYnVmX3R5cGUgc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVk ZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBlIGludF90eXBlOwoKICAgICAgaWYg KF9fZmlyc3QuX01fc2J1ZiAmJiAhX19sYXN0Ll9NX3NidWYpCiB7CiAgIHN0cmVhbWJ1Zl90 eXBlKiBfX3NiID0gX19maXJzdC5fTV9zYnVmOwogICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5z Z2V0YygpOwogICB3aGlsZSAoIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIHRyYWl0 c190eXBlOjplb2YoKSkpCiAgICAgewogICAgICAgY29uc3Qgc3RyZWFtc2l6ZSBfX24gPSBf X3NiLT5lZ3B0cigpIC0gX19zYi0+Z3B0cigpOwogICAgICAgaWYgKF9fbiA+IDEpCiAgewog ICAgdHJhaXRzX3R5cGU6OmNvcHkoX19yZXN1bHQsIF9fc2ItPmdwdHIoKSwgX19uKTsKICAg IF9fc2ItPl9fc2FmZV9nYnVtcChfX24pOwogICAgX19yZXN1bHQgKz0gX19uOwogICAgX19j ID0gX19zYi0+dW5kZXJmbG93KCk7CiAgfQogICAgICAgZWxzZQogIHsKICAgICpfX3Jlc3Vs dCsrID0gdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpOwogICAgX19jID0gX19zYi0+ c25leHRjKCk7CiAgfQogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fcmVzdWx0OwogICAgfQoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9TaXplPgogICAgdHlwZW5h bWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8X0NoYXJUPjo6X192YWx1ZSwK ICAgICAgICBfQ2hhclQqPjo6X190eXBlCiAgICBfX2NvcHlfbl9hKGlzdHJlYW1idWZfaXRl cmF0b3I8X0NoYXJUPiBfX2l0LCBfU2l6ZSBfX24sIF9DaGFyVCogX19yZXN1bHQsCiAgICAg ICAgYm9vbCBfX3N0cmljdCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkpCiAgICB7CiAg ICAgIGlmIChfX24gPT0gMCkKIHJldHVybiBfX3Jlc3VsdDsKCiAgICAgCgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwogICAgICBfQ2hhclQqIF9fYmVnID0gX19yZXN1bHQ7CiAg ICAgIF9fcmVzdWx0ICs9IF9faXQuX01fc2J1Zi0+c2dldG4oX19iZWcsIF9fbik7CiAgICAg CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gX19yZXN1bHQ7 CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIHR5cGVuYW1lIF9fZ251 X2N4eDo6X19lbmFibGVfaWY8X19pc19jaGFyPF9DaGFyVD46Ol9fdmFsdWUsCiAgICAgICAg ICBpc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFyVD4gPjo6X190eXBlCiAgICBmaW5kKGlzdHJl YW1idWZfaXRlcmF0b3I8X0NoYXJUPiBfX2ZpcnN0LAogIGlzdHJlYW1idWZfaXRlcmF0b3I8 X0NoYXJUPiBfX2xhc3QsIGNvbnN0IF9DaGFyVCYgX192YWwpCiAgICB7CiAgICAgIHR5cGVk ZWYgaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+IF9faXNfaXRlcmF0b3JfdHlwZTsKICAg ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6OnRyYWl0c190eXBlIHRy YWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXNfaXRlcmF0b3JfdHlwZTo6 c3RyZWFtYnVmX3R5cGUgc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUg dHJhaXRzX3R5cGU6OmludF90eXBlIGludF90eXBlOwogICAgICBjb25zdCBpbnRfdHlwZSBf X2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKCiAgICAgIGlmIChfX2ZpcnN0Ll9NX3NidWYg JiYgIV9fbGFzdC5fTV9zYnVmKQogewogICBjb25zdCBpbnRfdHlwZSBfX2l2YWwgPSB0cmFp dHNfdHlwZTo6dG9faW50X3R5cGUoX192YWwpOwogICBzdHJlYW1idWZfdHlwZSogX19zYiA9 IF9fZmlyc3QuX01fc2J1ZjsKICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsKICAg d2hpbGUgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikKICAgJiYgIXRy YWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faXZhbCkpCiAgICAgewogICAgICAgc3Ry ZWFtc2l6ZSBfX24gPSBfX3NiLT5lZ3B0cigpIC0gX19zYi0+Z3B0cigpOwogICAgICAgaWYg KF9fbiA+IDEpCiAgewogICAgY29uc3QgX0NoYXJUKiBfX3AgPSB0cmFpdHNfdHlwZTo6Zmlu ZChfX3NiLT5ncHRyKCksCiAgICAgICBfX24sIF9fdmFsKTsKICAgIGlmIChfX3ApCiAgICAg IF9fbiA9IF9fcCAtIF9fc2ItPmdwdHIoKTsKICAgIF9fc2ItPl9fc2FmZV9nYnVtcChfX24p OwogICAgX19jID0gX19zYi0+c2dldGMoKTsKICB9CiAgICAgICBlbHNlCiAgX19jID0gX19z Yi0+c25leHRjKCk7CiAgICAgfQoKICAgX19maXJzdC5fTV9jID0gX19lb2Y7CiB9CgogICAg ICByZXR1cm4gX19maXJzdDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0 eXBlbmFtZSBfRGlzdGFuY2U+CiAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lm PF9faXNfY2hhcjxfQ2hhclQ+OjpfX3ZhbHVlLAogICAgICAgIHZvaWQ+OjpfX3R5cGUKICAg IGFkdmFuY2UoaXN0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hhclQ+JiBfX2ksIF9EaXN0YW5jZSBf X24pCiAgICB7CiAgICAgIGlmIChfX24gPT0gMCkKIHJldHVybjsKCiAgICAgIDsKICAgICAK CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgIHR5cGVkZWYgaXN0cmVhbWJ1 Zl9pdGVyYXRvcjxfQ2hhclQ+IF9faXNfaXRlcmF0b3JfdHlwZTsKICAgICAgdHlwZWRlZiB0 eXBlbmFtZSBfX2lzX2l0ZXJhdG9yX3R5cGU6OnRyYWl0c190eXBlIHRyYWl0c190eXBlOwog ICAgICB0eXBlZGVmIHR5cGVuYW1lIF9faXNfaXRlcmF0b3JfdHlwZTo6c3RyZWFtYnVmX3R5 cGUgc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6 OmludF90eXBlIGludF90eXBlOwogICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0 c190eXBlOjplb2YoKTsKCiAgICAgIHN0cmVhbWJ1Zl90eXBlKiBfX3NiID0gX19pLl9NX3Ni dWY7CiAgICAgIHdoaWxlIChfX24gPiAwKQogewogICBzdHJlYW1zaXplIF9fc2l6ZSA9IF9f c2ItPmVncHRyKCkgLSBfX3NiLT5ncHRyKCk7CiAgIGlmIChfX3NpemUgPiBfX24pCiAgICAg ewogICAgICAgX19zYi0+X19zYWZlX2didW1wKF9fbik7CiAgICAgICBicmVhazsKICAgICB9 CgogICBfX3NiLT5fX3NhZmVfZ2J1bXAoX19zaXplKTsKICAgX19uIC09IF9fc2l6ZTsKICAg aWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3NiLT51bmRlcmZsb3coKSwgX19lb2Yp KQogICAgIHsKICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgYnJlYWs7 CiAgICAgfQogfQoKICAgICAgX19pLl9NX2MgPSBfX2VvZjsKICAgIH0KCgoKCn0KIyA0OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMiAzCgpu YW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQi KSkpCnsKCgoKI2RlZmluZSBfR0xJQkNYWF9OVU1fRkFDRVRTIDE0CgoKI2RlZmluZSBfR0xJ QkNYWF9OVU1fQ1hYMTFfRkFDRVRTIChfR0xJQkNYWF9VU0VfRFVBTF9BQkkgPyA4IDogMCkK CgoKCgojZGVmaW5lIF9HTElCQ1hYX05VTV9VTklDT0RFX0ZBQ0VUUyAyCgoKCgojZGVmaW5l IF9HTElCQ1hYX05VTV9MQkRMX0FMVDEyOF9GQUNFVFMgKDQgKyAoX0dMSUJDWFhfVVNFX0RV QUxfQUJJID8gMiA6IDApKQoKCgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHA+CiAgICB2b2lk CiAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiwgX1RwJiwgaW9zX2Jhc2U6Omlvc3Rh dGUmLAogICAgIGNvbnN0IF9fY19sb2NhbGUmKSB0aHJvdygpOwoKCiAgdGVtcGxhdGU8Pgog ICAgdm9pZAogICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciosIGZsb2F0JiwgaW9zX2Jh c2U6Omlvc3RhdGUmLAogICAgIGNvbnN0IF9fY19sb2NhbGUmKSB0aHJvdygpOwoKICB0ZW1w bGF0ZTw+CiAgICB2b2lkCiAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiwgZG91Ymxl JiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgIGNvbnN0IF9fY19sb2NhbGUmKSB0aHJvdygp OwoKICB0ZW1wbGF0ZTw+CiAgICB2b2lkCiAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFy KiwgbG9uZyBkb3VibGUmLCBpb3NfYmFzZTo6aW9zdGF0ZSYsCiAgICAgY29uc3QgX19jX2xv Y2FsZSYpIHRocm93KCk7CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzPgogICAgc3RydWN0IF9fcGFkCiAgICB7CiAgICAgIHN0YXRpYyB2b2lkCiAg ICAgIF9TX3BhZChpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmlsbCwgX0NoYXJUKiBfX25l d3MsCiAgICAgIGNvbnN0IF9DaGFyVCogX19vbGRzLCBzdHJlYW1zaXplIF9fbmV3bGVuLCBz dHJlYW1zaXplIF9fb2xkbGVuKTsKICAgIH07CgoKCgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0NoYXJUPgogICAgX0NoYXJUKgogICAgX19hZGRfZ3JvdXBpbmcoX0NoYXJUKiBfX3MsIF9D aGFyVCBfX3NlcCwKICAgICBjb25zdCBjaGFyKiBfX2diZWcsIHNpemVfdCBfX2dzaXplLAog ICAgIGNvbnN0IF9DaGFyVCogX19maXJzdCwgY29uc3QgX0NoYXJUKiBfX2xhc3QpOwoKCgoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUKICAgIG9zdHJlYW1idWZf aXRlcmF0b3I8X0NoYXJUPgogICAgX193cml0ZShvc3RyZWFtYnVmX2l0ZXJhdG9yPF9DaGFy VD4gX19zLCBjb25zdCBfQ2hhclQqIF9fd3MsIGludCBfX2xlbikKICAgIHsKICAgICAgX19z Ll9NX3B1dChfX3dzLCBfX2xlbik7CiAgICAgIHJldHVybiBfX3M7CiAgICB9CgoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgaW5saW5lCiAg ICBfT3V0SXRlcgogICAgX193cml0ZShfT3V0SXRlciBfX3MsIGNvbnN0IF9DaGFyVCogX193 cywgaW50IF9fbGVuKQogICAgewogICAgICBmb3IgKGludCBfX2ogPSAwOyBfX2ogPCBfX2xl bjsgX19qKyssICsrX19zKQogKl9fcyA9IF9fd3NbX19qXTsKICAgICAgcmV0dXJuIF9fczsK ICAgIH0KIyAxNTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFj ZXRzLmgiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBjbGFzcyBfX2N0eXBl X2Fic3RyYWN0X2Jhc2UgOiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIGN0eXBlX2Jh c2UKICAgIHsKICAgIHB1YmxpYzoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7 CiMgMTcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5o IiAzCiAgICAgIGJvb2wKICAgICAgaXMobWFzayBfX20sIGNoYXJfdHlwZSBfX2MpIGNvbnN0 CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2lzKF9fbSwgX19jKTsgfQojIDE4OCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjb25z dCBjaGFyX3R5cGUqCiAgICAgIGlzKGNvbnN0IGNoYXJfdHlwZSAqX19sbywgY29uc3QgY2hh cl90eXBlICpfX2hpLCBtYXNrICpfX3ZlYykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ ZG9faXMoX19sbywgX19oaSwgX192ZWMpOyB9CiMgMjA0ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXJfdHlwZSoK ICAgICAgc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBj aGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3NjYW5faXMo X19tLCBfX2xvLCBfX2hpKTsgfQojIDIyMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHNj YW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlw ZSogX19oaSkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fc2Nhbl9ub3QoX19tLCBf X2xvLCBfX2hpKTsgfQojIDIzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xv Y2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFyX3R5cGUKICAgICAgdG91cHBlcihjaGFyX3R5 cGUgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb190b3VwcGVyKF9fYyk7IH0K IyAyNDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgi IDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAgICB0b3VwcGVyKGNoYXJfdHlwZSAqX19s bywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5k b190b3VwcGVyKF9fbG8sIF9faGkpOyB9CiMgMjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNoYXJfdHlwZQogICAgICB0b2xv d2VyKGNoYXJfdHlwZSBfX2MpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3RvbG93 ZXIoX19jKTsgfQojIDI3OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2Fs ZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFyX3R5cGUqCiAgICAgIHRvbG93ZXIoY2hh cl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0CiAgICAgIHsgcmV0 dXJuIHRoaXMtPmRvX3RvbG93ZXIoX19sbywgX19oaSk7IH0KIyAyOTUgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY2hhcl90eXBl CiAgICAgIHdpZGVuKGNoYXIgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb193 aWRlbihfX2MpOyB9CiMgMzE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9j YWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXIqCiAgICAgIHdpZGVuKGNvbnN0IGNo YXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIGNoYXJfdHlwZSogX190bykgY29uc3QKICAg ICAgeyByZXR1cm4gdGhpcy0+ZG9fd2lkZW4oX19sbywgX19oaSwgX190byk7IH0KIyAzMzMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAg ICAgY2hhcgogICAgICBuYXJyb3coY2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVsdCkgY29u c3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fYywgX19kZmF1bHQpOyB9CiMg MzU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAz CiAgICAgIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgbmFycm93KGNvbnN0IGNoYXJfdHlwZSog X19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogICAgICAgY2hhciBfX2RmYXVsdCwgY2hh ciogX190bykgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fbmFycm93KF9fbG8sIF9f aGksIF9fZGZhdWx0LCBfX3RvKTsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgZXhwbGljaXQK ICAgICAgX19jdHlwZV9hYnN0cmFjdF9iYXNlKHNpemVfdCBfX3JlZnMgPSAwKTogZmFjZXQo X19yZWZzKSB7IH0KCiAgICAgIHZpcnR1YWwKICAgICAgfl9fY3R5cGVfYWJzdHJhY3RfYmFz ZSgpIHsgfQojIDM4MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9m YWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGJvb2wKICAgICAgZG9faXMobWFzayBfX20sIGNo YXJfdHlwZSBfX2MpIGNvbnN0ID0gMDsKIyAzOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5 cGUqCiAgICAgIGRvX2lzKGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBl KiBfX2hpLAogICAgIG1hc2sqIF9fdmVjKSBjb25zdCA9IDA7CiMgNDE4ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwg Y29uc3QgY2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFy X3R5cGUqIF9fbG8sCiAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QgPSAwOwojIDQz NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBf X20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkg Y29uc3QgPSAwOwojIDQ1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2Fs ZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190b3VwcGVy KGNoYXJfdHlwZSBfX2MpIGNvbnN0ID0gMDsKIyA0NzIgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFy X3R5cGUqCiAgICAgIGRvX3RvdXBwZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5 cGUqIF9faGkpIGNvbnN0ID0gMDsKIyA0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAg ZG9fdG9sb3dlcihjaGFyX3R5cGUgX19jKSBjb25zdCA9IDA7CiMgNTA1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwg Y29uc3QgY2hhcl90eXBlKgogICAgICBkb190b2xvd2VyKGNoYXJfdHlwZSogX19sbywgY29u c3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdCA9IDA7CiMgNTI0ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90 eXBlCiAgICAgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdCA9IDA7CiMgNTQ1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1 YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lkZW4oY29uc3QgY2hhciogX19sbywgY29uc3Qg Y2hhciogX19oaSwgY2hhcl90eXBlKiBfX3RvKSBjb25zdCA9IDA7CiMgNTY2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1 YWwgY2hhcgogICAgICBkb19uYXJyb3coY2hhcl90eXBlIF9fYywgY2hhciBfX2RmYXVsdCkg Y29uc3QgPSAwOwojIDU5MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2Fs ZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9f bmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAog IGNoYXIgX19kZmF1bHQsIGNoYXIqIF9fdG8pIGNvbnN0ID0gMDsKICAgIH07CiMgNjE0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgY2xhc3MgY3R5cGUgOiBwdWJsaWMgX19jdHlw ZV9hYnN0cmFjdF9iYXNlPF9DaGFyVD4KICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVk ZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfX2N0eXBlX2Fi c3RyYWN0X2Jhc2U8X0NoYXJUPjo6bWFzayBtYXNrOwoKCiAgICAgIHN0YXRpYyBsb2NhbGU6 OmlkIGlkOwoKICAgICAgZXhwbGljaXQKICAgICAgY3R5cGUoc2l6ZV90IF9fcmVmcyA9IDAp IDogX19jdHlwZV9hYnN0cmFjdF9iYXNlPF9DaGFyVD4oX19yZWZzKSB7IH0KCiAgIHByb3Rl Y3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y3R5cGUoKTsKCiAgICAgIHZpcnR1YWwgYm9v bAogICAgICBkb19pcyhtYXNrIF9fbSwgY2hhcl90eXBlIF9fYykgY29uc3Q7CgogICAgICB2 aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBf X2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdDsKCiAgICAg IHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBj b25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7Cgog ICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBf X20sIGNvbnN0IGNoYXJfdHlwZSogX19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkg Y29uc3Q7CgogICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190b3VwcGVyKGNoYXJf dHlwZSBfX2MpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAg IGRvX3RvdXBwZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNv bnN0OwoKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fdG9sb3dlcihjaGFyX3R5 cGUgX19jKSBjb25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBk b190b2xvd2VyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25z dDsKCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3dpZGVuKGNoYXIgX19jKSBj b25zdDsKCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lkZW4oY29uc3Qg Y2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX2Rlc3QpIGNvbnN0 OwoKICAgICAgdmlydHVhbCBjaGFyCiAgICAgIGRvX25hcnJvdyhjaGFyX3R5cGUsIGNoYXIg X19kZmF1bHQpIGNvbnN0OwoKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAg IGRvX25hcnJvdyhjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19o aSwKICBjaGFyIF9fZGZhdWx0LCBjaGFyKiBfX3RvKSBjb25zdDsKICAgIH07CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGxvY2FsZTo6aWQgY3R5cGU8X0NoYXJUPjo6aWQ7 CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzLCB0eXBl bmFtZSBfQWxsb2M+CiAgICBjbGFzcyBjdHlwZTxiYXNpY19zdHJpbmc8X0NoYXJULCBfVHJh aXRzLCBfQWxsb2M+ID47CiMgNjg4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv bG9jYWxlX2ZhY2V0cy5oIiAzCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGU8Y2hhcj4g OiBwdWJsaWMgbG9jYWxlOjpmYWNldCwgcHVibGljIGN0eXBlX2Jhc2UKICAgIHsKICAgIHB1 YmxpYzoKCgogICAgICB0eXBlZGVmIGNoYXIgY2hhcl90eXBlOwoKICAgIHByb3RlY3RlZDoK CiAgICAgIF9fY19sb2NhbGUgX01fY19sb2NhbGVfY3R5cGU7CiAgICAgIGJvb2wgX01fZGVs OwogICAgICBfX3RvX3R5cGUgX01fdG91cHBlcjsKICAgICAgX190b190eXBlIF9NX3RvbG93 ZXI7CiAgICAgIGNvbnN0IG1hc2sqIF9NX3RhYmxlOwogICAgICBtdXRhYmxlIGNoYXIgX01f d2lkZW5fb2s7CiAgICAgIG11dGFibGUgY2hhciBfTV93aWRlblsxICsgc3RhdGljX2Nhc3Q8 dW5zaWduZWQgY2hhcj4oLTEpXTsKICAgICAgbXV0YWJsZSBjaGFyIF9NX25hcnJvd1sxICsg c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oLTEpXTsKICAgICAgbXV0YWJsZSBjaGFyIF9N X25hcnJvd19vazsKCgogICAgcHVibGljOgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7 CgogICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHRhYmxlX3NpemUgPSAxICsgc3RhdGljX2Nh c3Q8dW5zaWduZWQgY2hhcj4oLTEpOwojIDcyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBjdHlwZShj b25zdCBtYXNrKiBfX3RhYmxlID0gMCwgYm9vbCBfX2RlbCA9IGZhbHNlLCBzaXplX3QgX19y ZWZzID0gMCk7CiMgNzM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxl X2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIGN0eXBlKF9fY19sb2NhbGUgX19j bG9jLCBjb25zdCBtYXNrKiBfX3RhYmxlID0gMCwgYm9vbCBfX2RlbCA9IGZhbHNlLAogICAg IHNpemVfdCBfX3JlZnMgPSAwKTsKIyA3NTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGJvb2wKICAgICAgaXMobWFz ayBfX20sIGNoYXIgX19jKSBjb25zdDsKIyA3NjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGNvbnN0IGNoYXIqCiAg ICAgIGlzKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIG1hc2sqIF9fdmVj KSBjb25zdDsKIyA3ODAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVf ZmFjZXRzLmgiIDMKICAgICAgaW5saW5lIGNvbnN0IGNoYXIqCiAgICAgIHNjYW5faXMobWFz ayBfX20sIGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGkpIGNvbnN0OwojIDc5 NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog ICAgICBpbmxpbmUgY29uc3QgY2hhcioKICAgICAgc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0 IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGkpIGNvbnN0OwojIDgwOSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFyX3R5 cGUKICAgICAgdG91cHBlcihjaGFyX3R5cGUgX19jKSBjb25zdAogICAgICB7IHJldHVybiB0 aGlzLT5kb190b3VwcGVyKF9fYyk7IH0KIyA4MjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgY29uc3QgY2hhcl90eXBlKgogICAg ICB0b3VwcGVyKGNoYXJfdHlwZSAqX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25z dAogICAgICB7IHJldHVybiB0aGlzLT5kb190b3VwcGVyKF9fbG8sIF9faGkpOyB9CiMgODQy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg ICAgIGNoYXJfdHlwZQogICAgICB0b2xvd2VyKGNoYXJfdHlwZSBfX2MpIGNvbnN0CiAgICAg IHsgcmV0dXJuIHRoaXMtPmRvX3RvbG93ZXIoX19jKTsgfQojIDg1OSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjb25zdCBjaGFy X3R5cGUqCiAgICAgIHRvbG93ZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUq IF9faGkpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX3RvbG93ZXIoX19sbywgX19o aSk7IH0KIyA4NzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFj ZXRzLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHdpZGVuKGNoYXIgX19jKSBjb25zdAog ICAgICB7CiBpZiAoX01fd2lkZW5fb2spCiAgIHJldHVybiBfTV93aWRlbltzdGF0aWNfY2Fz dDx1bnNpZ25lZCBjaGFyPihfX2MpXTsKIHRoaXMtPl9NX3dpZGVuX2luaXQoKTsKIHJldHVy biB0aGlzLT5kb193aWRlbihfX2MpOwogICAgICB9CiMgOTA2ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXIqCiAg ICAgIHdpZGVuKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIGNoYXJfdHlw ZSogX190bykgY29uc3QKICAgICAgewogaWYgKF9NX3dpZGVuX29rID09IDEpCiAgIHsKICAg ICBpZiAoX19idWlsdGluX2V4cGVjdChfX2hpICE9IF9fbG8sIHRydWUpKQogICAgICAgX19i dWlsdGluX21lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7CiAgICAgcmV0dXJuIF9f aGk7CiAgIH0KIGlmICghX01fd2lkZW5fb2spCiAgIF9NX3dpZGVuX2luaXQoKTsKIHJldHVy biB0aGlzLT5kb193aWRlbihfX2xvLCBfX2hpLCBfX3RvKTsKICAgICAgfQojIDkzOCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBj aGFyCiAgICAgIG5hcnJvdyhjaGFyX3R5cGUgX19jLCBjaGFyIF9fZGZhdWx0KSBjb25zdAog ICAgICB7CiBpZiAoX01fbmFycm93W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyld KQogICByZXR1cm4gX01fbmFycm93W3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyld OwogY29uc3QgY2hhciBfX3QgPSBkb19uYXJyb3coX19jLCBfX2RmYXVsdCk7CiBpZiAoX190 ICE9IF9fZGZhdWx0KQogICBfTV9uYXJyb3dbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o X19jKV0gPSBfX3Q7CiByZXR1cm4gX190OwogICAgICB9CiMgOTcxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGNvbnN0IGNoYXJf dHlwZSoKICAgICAgbmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90 eXBlKiBfX2hpLAogICAgICBjaGFyIF9fZGZhdWx0LCBjaGFyKiBfX3RvKSBjb25zdAogICAg ICB7CiBpZiAoX19idWlsdGluX2V4cGVjdChfTV9uYXJyb3dfb2sgPT0gMSwgdHJ1ZSkpCiAg IHsKICAgICBpZiAoX19idWlsdGluX2V4cGVjdChfX2hpICE9IF9fbG8sIHRydWUpKQogICAg ICAgX19idWlsdGluX21lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7CiAgICAgcmV0 dXJuIF9faGk7CiAgIH0KIGlmICghX01fbmFycm93X29rKQogICBfTV9uYXJyb3dfaW5pdCgp OwogcmV0dXJuIHRoaXMtPmRvX25hcnJvdyhfX2xvLCBfX2hpLCBfX2RmYXVsdCwgX190byk7 CiAgICAgIH0KCgoKCgogICAgICBjb25zdCBtYXNrKgogICAgICB0YWJsZSgpIGNvbnN0IHRo cm93KCkKICAgICAgeyByZXR1cm4gX01fdGFibGU7IH0KCgogICAgICBzdGF0aWMgY29uc3Qg bWFzayoKICAgICAgY2xhc3NpY190YWJsZSgpIHRocm93KCk7CiAgICBwcm90ZWN0ZWQ6CgoK CgoKCgogICAgICB2aXJ0dWFsCiAgICAgIH5jdHlwZSgpOwojIDEwMjEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBj aGFyX3R5cGUKICAgICAgZG9fdG91cHBlcihjaGFyX3R5cGUgX19jKSBjb25zdDsKIyAxMDM4 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg ICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBkb190b3VwcGVyKGNoYXJfdHlw ZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25zdDsKIyAxMDU0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1 YWwgY2hhcl90eXBlCiAgICAgIGRvX3RvbG93ZXIoY2hhcl90eXBlIF9fYykgY29uc3Q7CiMg MTA3MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIg MwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fdG9sb3dlcihjaGFy X3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTA5MSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2 aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb193aWRlbihjaGFyIF9fYykgY29uc3QKICAgICAg eyByZXR1cm4gX19jOyB9CiMgMTExNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqCiAgICAgIGRv X3dpZGVuKGNvbnN0IGNoYXIqIF9fbG8sIGNvbnN0IGNoYXIqIF9faGksIGNoYXJfdHlwZSog X190bykgY29uc3QKICAgICAgewogaWYgKF9fYnVpbHRpbl9leHBlY3QoX19oaSAhPSBfX2xv LCB0cnVlKSkKICAgX19idWlsdGluX21lbWNweShfX3RvLCBfX2xvLCBfX2hpIC0gX19sbyk7 CiByZXR1cm4gX19oaTsKICAgICAgfQojIDExNDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyCiAgICAgIGRv X25hcnJvdyhjaGFyX3R5cGUgX19jLCBjaGFyIF9fZGZhdWx0IF9fYXR0cmlidXRlX18oKF9f dW51c2VkX18pKSkgY29uc3QKICAgICAgeyByZXR1cm4gX19jOyB9CiMgMTE2NyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0 dWFsIGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fbmFycm93KGNvbnN0IGNoYXJfdHlwZSog X19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpLAogIGNoYXIgX19kZmF1bHQgX19hdHRyaWJ1 dGVfXygoX191bnVzZWRfXykpLCBjaGFyKiBfX3RvKSBjb25zdAogICAgICB7CiBpZiAoX19i dWlsdGluX2V4cGVjdChfX2hpICE9IF9fbG8sIHRydWUpKQogICBfX2J1aWx0aW5fbWVtY3B5 KF9fdG8sIF9fbG8sIF9faGkgLSBfX2xvKTsKIHJldHVybiBfX2hpOwogICAgICB9CgogICAg cHJpdmF0ZToKICAgICAgdm9pZCBfTV9uYXJyb3dfaW5pdCgpIGNvbnN0OwogICAgICB2b2lk IF9NX3dpZGVuX2luaXQoKSBjb25zdDsKICAgIH07CiMgMTE5MyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPD4KICAgIGNs YXNzIGN0eXBlPHdjaGFyX3Q+IDogcHVibGljIF9fY3R5cGVfYWJzdHJhY3RfYmFzZTx3Y2hh cl90PgogICAgewogICAgcHVibGljOgoKCiAgICAgIHR5cGVkZWYgd2NoYXJfdCBjaGFyX3R5 cGU7CiAgICAgIHR5cGVkZWYgd2N0eXBlX3QgX193bWFza190eXBlOwoKICAgIHByb3RlY3Rl ZDoKICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jdHlwZTsKCgogICAgICBib29sIF9N X25hcnJvd19vazsKICAgICAgY2hhciBfTV9uYXJyb3dbMTI4XTsKICAgICAgd2ludF90IF9N X3dpZGVuWzEgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigtMSldOwoKCiAgICAgIG1h c2sgX01fYml0WzE2XTsKICAgICAgX193bWFza190eXBlIF9NX3dtYXNrWzE2XTsKCiAgICBw dWJsaWM6CgoKICAgICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CiMgMTIyNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNp dAogICAgICBjdHlwZShzaXplX3QgX19yZWZzID0gMCk7CiMgMTIzNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAog ICAgICBjdHlwZShfX2NfbG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApOwoKICAg IHByb3RlY3RlZDoKICAgICAgX193bWFza190eXBlCiAgICAgIF9NX2NvbnZlcnRfdG9fd21h c2soY29uc3QgbWFzayBfX20pIGNvbnN0IHRocm93KCk7CgoKICAgICAgdmlydHVhbAogICAg ICB+Y3R5cGUoKTsKIyAxMjYxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9j YWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgYm9vbAogICAgICBkb19pcyhtYXNrIF9f bSwgY2hhcl90eXBlIF9fYykgY29uc3Q7CiMgMTI4MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNoYXJf dHlwZSoKICAgICAgZG9faXMoY29uc3QgY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5 cGUqIF9faGksIG1hc2sqIF9fdmVjKSBjb25zdDsKIyAxMjk4ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3Qg Y2hhcl90eXBlKgogICAgICBkb19zY2FuX2lzKG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUq IF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTMxNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFs IGNvbnN0IGNoYXJfdHlwZSoKICAgICAgZG9fc2Nhbl9ub3QobWFzayBfX20sIGNvbnN0IGNo YXJfdHlwZSogX19sbywKICAgIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3Q7CiMgMTMz MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwog ICAgICB2aXJ0dWFsIGNoYXJfdHlwZQogICAgICBkb190b3VwcGVyKGNoYXJfdHlwZSBfX2Mp IGNvbnN0OwojIDEzNTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVf ZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjb25zdCBjaGFyX3R5cGUqCiAgICAgIGRvX3Rv dXBwZXIoY2hhcl90eXBlKiBfX2xvLCBjb25zdCBjaGFyX3R5cGUqIF9faGkpIGNvbnN0Owoj IDEzNjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgi IDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fdG9sb3dlcihjaGFyX3R5cGUg X19jKSBjb25zdDsKIyAxMzgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9j YWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcl90eXBlKgogICAgICBk b190b2xvd2VyKGNoYXJfdHlwZSogX19sbywgY29uc3QgY2hhcl90eXBlKiBfX2hpKSBjb25z dDsKIyAxNDAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0 cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3dpZGVuKGNoYXIgX19j KSBjb25zdDsKIyAxNDI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxl X2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY29uc3QgY2hhcioKICAgICAgZG9fd2lkZW4o Y29uc3QgY2hhciogX19sbywgY29uc3QgY2hhciogX19oaSwgY2hhcl90eXBlKiBfX3RvKSBj b25zdDsKIyAxNDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2Zh Y2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcgogICAgICBkb19uYXJyb3coY2hhcl90eXBl IF9fYywgY2hhciBfX2RmYXVsdCkgY29uc3Q7CiMgMTQ3NCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFsIGNvbnN0IGNo YXJfdHlwZSoKICAgICAgZG9fbmFycm93KGNvbnN0IGNoYXJfdHlwZSogX19sbywgY29uc3Qg Y2hhcl90eXBlKiBfX2hpLAogIGNoYXIgX19kZmF1bHQsIGNoYXIqIF9fdG8pIGNvbnN0OwoK CiAgICAgIHZvaWQKICAgICAgX01faW5pdGlhbGl6ZV9jdHlwZSgpIHRocm93KCk7CiAgICB9 OwoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIGN0eXBlX2J5bmFt ZSA6IHB1YmxpYyBjdHlwZTxfQ2hhclQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVk ZWYgdHlwZW5hbWUgY3R5cGU8X0NoYXJUPjo6bWFzayBtYXNrOwoKICAgICAgZXhwbGljaXQK ICAgICAgY3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDAp OwoKCgoKCgoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y3R5cGVfYnlu YW1lKCkgeyB9CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGVfYnluYW1l PGNoYXI+IDogcHVibGljIGN0eXBlPGNoYXI+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4 cGxpY2l0CiAgICAgIGN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3Jl ZnMgPSAwKTsKCgoKCgoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y3R5 cGVfYnluYW1lKCk7CiAgICB9OwoKCiAgdGVtcGxhdGU8PgogICAgY2xhc3MgY3R5cGVfYnlu YW1lPHdjaGFyX3Q+IDogcHVibGljIGN0eXBlPHdjaGFyX3Q+CiAgICB7CiAgICBwdWJsaWM6 CiAgICAgIGV4cGxpY2l0CiAgICAgIGN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNp emVfdCBfX3JlZnMgPSAwKTsKCgoKCgoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAog ICAgICB+Y3R5cGVfYnluYW1lKCk7CiAgICB9OwoKCgp9CgoKIyAxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2N0eXBlX2lubGluZS5o IiAxIDMKIyAzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9sb29uZ2FyY2g2NC1saW51 eC1nbnUvYml0cy9jdHlwZV9pbmxpbmUuaCIgMwpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRl X18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIGJvb2wKICBjdHlwZTxj aGFyPjo6CiAgaXMobWFzayBfX20sIGNoYXIgX19jKSBjb25zdAogIHsgcmV0dXJuIF9NX3Rh YmxlW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KF9fYyldICYgX19tOyB9CgogIGNvbnN0 IGNoYXIqCiAgY3R5cGU8Y2hhcj46OgogIGlzKGNvbnN0IGNoYXIqIF9fbG93LCBjb25zdCBj aGFyKiBfX2hpZ2gsIG1hc2sqIF9fdmVjKSBjb25zdAogIHsKICAgIHdoaWxlIChfX2xvdyA8 IF9faGlnaCkKICAgICAgKl9fdmVjKysgPSBfTV90YWJsZVtzdGF0aWNfY2FzdDx1bnNpZ25l ZCBjaGFyPigqX19sb3crKyldOwogICAgcmV0dXJuIF9faGlnaDsKICB9CgogIGNvbnN0IGNo YXIqCiAgY3R5cGU8Y2hhcj46OgogIHNjYW5faXMobWFzayBfX20sIGNvbnN0IGNoYXIqIF9f bG93LCBjb25zdCBjaGFyKiBfX2hpZ2gpIGNvbnN0CiAgewogICAgd2hpbGUgKF9fbG93IDwg X19oaWdoCiAgICAmJiAhKF9NX3RhYmxlW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCpf X2xvdyldICYgX19tKSkKICAgICAgKytfX2xvdzsKICAgIHJldHVybiBfX2xvdzsKICB9Cgog IGNvbnN0IGNoYXIqCiAgY3R5cGU8Y2hhcj46OgogIHNjYW5fbm90KG1hc2sgX19tLCBjb25z dCBjaGFyKiBfX2xvdywgY29uc3QgY2hhciogX19oaWdoKSBjb25zdAogIHsKICAgIHdoaWxl IChfX2xvdyA8IF9faGlnaAogICAgJiYgKF9NX3RhYmxlW3N0YXRpY19jYXN0PHVuc2lnbmVk IGNoYXI+KCpfX2xvdyldICYgX19tKSAhPSAwKQogICAgICArK19fbG93OwogICAgcmV0dXJu IF9fbG93OwogIH0KCgp9CiMgMTU0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2xvY2FsZV9mYWNldHMuaCIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChf X3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgoKICBjbGFzcyBfX251bV9iYXNlCiAg ewogIHB1YmxpYzoKCgogICAgZW51bQogICAgICB7CiBfU19vbWludXMsCiBfU19vcGx1cywK IF9TX294LAogX1Nfb1gsCiBfU19vZGlnaXRzLAogX1Nfb2RpZ2l0c19lbmQgPSBfU19vZGln aXRzICsgMTYsCiBfU19vdWRpZ2l0cyA9IF9TX29kaWdpdHNfZW5kLAogX1Nfb3VkaWdpdHNf ZW5kID0gX1Nfb3VkaWdpdHMgKyAxNiwKIF9TX29lID0gX1Nfb2RpZ2l0cyArIDE0LAogX1Nf b0UgPSBfU19vdWRpZ2l0cyArIDE0LAogX1Nfb2VuZCA9IF9TX291ZGlnaXRzX2VuZAogICAg ICB9OwoKCgoKCgogICAgc3RhdGljIGNvbnN0IGNoYXIqIF9TX2F0b21zX291dDsKCgoKICAg IHN0YXRpYyBjb25zdCBjaGFyKiBfU19hdG9tc19pbjsKCiAgICBlbnVtCiAgICB7CiAgICAg IF9TX2ltaW51cywKICAgICAgX1NfaXBsdXMsCiAgICAgIF9TX2l4LAogICAgICBfU19pWCwK ICAgICAgX1NfaXplcm8sCiAgICAgIF9TX2llID0gX1NfaXplcm8gKyAxNCwKICAgICAgX1Nf aUUgPSBfU19pemVybyArIDIwLAogICAgICBfU19pZW5kID0gMjYKICAgIH07CgoKCiAgICBz dGF0aWMgdm9pZAogICAgX1NfZm9ybWF0X2Zsb2F0KGNvbnN0IGlvc19iYXNlJiBfX2lvLCBj aGFyKiBfX2ZwdHIsIGNoYXIgX19tb2QpIHRocm93KCk7CiAgfTsKCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJUPgogICAgc3RydWN0IF9fbnVtcHVuY3RfY2FjaGUgOiBwdWJsaWMgbG9j YWxlOjpmYWNldAogICAgewogICAgICBjb25zdCBjaGFyKiBfTV9ncm91cGluZzsKICAgICAg c2l6ZV90IF9NX2dyb3VwaW5nX3NpemU7CiAgICAgIGJvb2wgX01fdXNlX2dyb3VwaW5nOwog ICAgICBjb25zdCBfQ2hhclQqIF9NX3RydWVuYW1lOwogICAgICBzaXplX3QgX01fdHJ1ZW5h bWVfc2l6ZTsKICAgICAgY29uc3QgX0NoYXJUKiBfTV9mYWxzZW5hbWU7CiAgICAgIHNpemVf dCBfTV9mYWxzZW5hbWVfc2l6ZTsKICAgICAgX0NoYXJUIF9NX2RlY2ltYWxfcG9pbnQ7CiAg ICAgIF9DaGFyVCBfTV90aG91c2FuZHNfc2VwOwoKCgoKCiAgICAgIF9DaGFyVCBfTV9hdG9t c19vdXRbX19udW1fYmFzZTo6X1Nfb2VuZF07CgoKCgoKICAgICAgX0NoYXJUIF9NX2F0b21z X2luW19fbnVtX2Jhc2U6Ol9TX2llbmRdOwoKICAgICAgYm9vbCBfTV9hbGxvY2F0ZWQ7Cgog ICAgICBfX251bXB1bmN0X2NhY2hlKHNpemVfdCBfX3JlZnMgPSAwKQogICAgICA6IGZhY2V0 KF9fcmVmcyksIF9NX2dyb3VwaW5nKDApLCBfTV9ncm91cGluZ19zaXplKDApLAogX01fdXNl X2dyb3VwaW5nKGZhbHNlKSwKIF9NX3RydWVuYW1lKDApLCBfTV90cnVlbmFtZV9zaXplKDAp LCBfTV9mYWxzZW5hbWUoMCksCiBfTV9mYWxzZW5hbWVfc2l6ZSgwKSwgX01fZGVjaW1hbF9w b2ludChfQ2hhclQoKSksCiBfTV90aG91c2FuZHNfc2VwKF9DaGFyVCgpKSwgX01fYWxsb2Nh dGVkKGZhbHNlKQogeyB9CgogICAgICB+X19udW1wdW5jdF9jYWNoZSgpOwoKICAgICAgdm9p ZAogICAgICBfTV9jYWNoZShjb25zdCBsb2NhbGUmIF9fbG9jKTsKCiAgICBwcml2YXRlOgog ICAgICBfX251bXB1bmN0X2NhY2hlJgogICAgICBvcGVyYXRvcj0oY29uc3QgX19udW1wdW5j dF9jYWNoZSYpOwoKICAgICAgZXhwbGljaXQKICAgICAgX19udW1wdW5jdF9jYWNoZShjb25z dCBfX251bXB1bmN0X2NhY2hlJik7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQ+CiAgICBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD46On5fX251bXB1bmN0X2NhY2hlKCkK ICAgIHsKICAgICAgaWYgKF9NX2FsbG9jYXRlZCkKIHsKICAgZGVsZXRlIFtdIF9NX2dyb3Vw aW5nOwogICBkZWxldGUgW10gX01fdHJ1ZW5hbWU7CiAgIGRlbGV0ZSBbXSBfTV9mYWxzZW5h bWU7CiB9CiAgICB9CgpuYW1lc3BhY2UgX19jeHgxMSB7CiMgMTY3NyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVD4KICAgIGNsYXNzIG51bXB1bmN0IDogcHVibGljIGxvY2FsZTo6ZmFjZXQK ICAgIHsKICAgIHB1YmxpYzoKCgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwog ICAgICB0eXBlZGVmIGJhc2ljX3N0cmluZzxfQ2hhclQ+IHN0cmluZ190eXBlOwoKICAgICAg dHlwZWRlZiBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwoKICAgIHBy b3RlY3RlZDoKICAgICAgX19jYWNoZV90eXBlKiBfTV9kYXRhOwoKICAgIHB1YmxpYzoKCiAg ICAgIHN0YXRpYyBsb2NhbGU6OmlkIGlkOwoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBu dW1wdW5jdChzaXplX3QgX19yZWZzID0gMCkKICAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9k YXRhKDApCiAgICAgIHsgX01faW5pdGlhbGl6ZV9udW1wdW5jdCgpOyB9CiMgMTcxNSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBl eHBsaWNpdAogICAgICBudW1wdW5jdChfX2NhY2hlX3R5cGUqIF9fY2FjaGUsIHNpemVfdCBf X3JlZnMgPSAwKQogICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19jYWNoZSkKICAg ICAgeyBfTV9pbml0aWFsaXplX251bXB1bmN0KCk7IH0KIyAxNzI5ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGV4cGxpY2l0CiAg ICAgIG51bXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBzaXplX3QgX19yZWZzID0gMCkKICAg ICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKDApCiAgICAgIHsgX01faW5pdGlhbGl6ZV9u dW1wdW5jdChfX2Nsb2MpOyB9CiMgMTc0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBjaGFyX3R5cGUKICAgICAgZGVjaW1hbF9w b2ludCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2RlY2ltYWxfcG9pbnQoKTsg fQojIDE3NTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRz LmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIHRob3VzYW5kc19zZXAoKSBjb25zdAogICAg ICB7IHJldHVybiB0aGlzLT5kb190aG91c2FuZHNfc2VwKCk7IH0KIyAxNzg3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHN0cmlu ZwogICAgICBncm91cGluZygpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dyb3Vw aW5nKCk7IH0KIyAxODAwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxl X2ZhY2V0cy5oIiAzCiAgICAgIHN0cmluZ190eXBlCiAgICAgIHRydWVuYW1lKCkgY29uc3QK ICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdHJ1ZW5hbWUoKTsgfQojIDE4MTMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgc3RyaW5n X3R5cGUKICAgICAgZmFsc2VuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f ZmFsc2VuYW1lKCk7IH0KCiAgICBwcm90ZWN0ZWQ6CgogICAgICB2aXJ0dWFsCiAgICAgIH5u dW1wdW5jdCgpOwojIDE4MzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2Nh bGVfZmFjZXRzLmgiIDMKICAgICAgdmlydHVhbCBjaGFyX3R5cGUKICAgICAgZG9fZGVjaW1h bF9wb2ludCgpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9p bnQ7IH0KIyAxODQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2Zh Y2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgY2hhcl90eXBlCiAgICAgIGRvX3Rob3VzYW5kc19z ZXAoKSBjb25zdAogICAgICB7IHJldHVybiBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwOyB9 CiMgMTg1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMu aCIgMwogICAgICB2aXJ0dWFsIHN0cmluZwogICAgICBkb19ncm91cGluZygpIGNvbnN0CiAg ICAgIHsgcmV0dXJuIF9NX2RhdGEtPl9NX2dyb3VwaW5nOyB9CiMgMTg2OCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICB2aXJ0dWFs IHN0cmluZ190eXBlCiAgICAgIGRvX3RydWVuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4g X01fZGF0YS0+X01fdHJ1ZW5hbWU7IH0KIyAxODgxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgc3RyaW5nX3R5cGUK ICAgICAgZG9fZmFsc2VuYW1lKCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZGF0YS0+X01f ZmFsc2VuYW1lOyB9CgoKICAgICAgdm9pZAogICAgICBfTV9pbml0aWFsaXplX251bXB1bmN0 KF9fY19sb2NhbGUgX19jbG9jID0gMCk7CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQ+CiAgICBsb2NhbGU6OmlkIG51bXB1bmN0PF9DaGFyVD46OmlkOwoKICB0ZW1wbGF0 ZTw+CiAgICBudW1wdW5jdDxjaGFyPjo6fm51bXB1bmN0KCk7CgogIHRlbXBsYXRlPD4KICAg IHZvaWQKICAgIG51bXB1bmN0PGNoYXI+OjpfTV9pbml0aWFsaXplX251bXB1bmN0KF9fY19s b2NhbGUgX19jbG9jKTsKCgogIHRlbXBsYXRlPD4KICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojp+ bnVtcHVuY3QoKTsKCiAgdGVtcGxhdGU8PgogICAgdm9pZAogICAgbnVtcHVuY3Q8d2NoYXJf dD46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpOwoKCgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIG51bXB1bmN0X2J5bmFtZSA6IHB1 YmxpYyBudW1wdW5jdDxfQ2hhclQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIHR5cGVkZWYg X0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19zdHJpbmc8X0NoYXJUPiBz dHJpbmdfdHlwZTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIG51bXB1bmN0X2J5bmFtZShjb25z dCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMgPSAwKQogICAgICA6IG51bXB1bmN0PF9DaGFy VD4oX19yZWZzKQogICAgICB7CiBpZiAoX19idWlsdGluX3N0cmNtcChfX3MsICJDIikgIT0g MAogICAgICYmIF9fYnVpbHRpbl9zdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQogICB7CiAg ICAgX19jX2xvY2FsZSBfX3RtcDsKICAgICB0aGlzLT5fU19jcmVhdGVfY19sb2NhbGUoX190 bXAsIF9fcyk7CiAgICAgdGhpcy0+X01faW5pdGlhbGl6ZV9udW1wdW5jdChfX3RtcCk7CiAg ICAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZShfX3RtcCk7CiAgIH0KICAgICAgfQoKCgoK CgoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+bnVtcHVuY3RfYnluYW1l KCkgeyB9CiAgICB9OwoKfQoKCiMgMTk1OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX0luSXRlcj4KICAgIGNsYXNzIG51bV9nZXQgOiBwdWJsaWMgbG9jYWxlOjpmYWNl dAogICAgewogICAgcHVibGljOgoKCgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7 CiAgICAgIHR5cGVkZWYgX0luSXRlciBpdGVyX3R5cGU7CgoKCiAgICAgIHN0YXRpYyBsb2Nh bGU6OmlkIGlkOwojIDE5ODAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2Nh bGVfZmFjZXRzLmgiIDMKICAgICAgZXhwbGljaXQKICAgICAgbnVtX2dldChzaXplX3QgX19y ZWZzID0gMCkgOiBmYWNldChfX3JlZnMpIHsgfQojIDIwMDYgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAg IGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywK ICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBib29sJiBfX3YpIGNvbnN0CiAgICAgIHsg cmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0K IyAyMDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5o IiAzCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlw ZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwg bG9uZyYgX192KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19l bmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0KGl0 ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBpb3Nf YmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVkIHNob3J0JiBfX3YpIGNvbnN0CiAgICAg IHsgcmV0dXJuIHRoaXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7 IH0KCiAgICAgIGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlw ZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwg dW5zaWduZWQgaW50JiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2dldChf X2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgICAgIGl0ZXJfdHlwZQogICAg ICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8s CiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5zaWduZWQgbG9uZyYgX192KSBjb25z dAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJy LCBfX3YpOyB9CgoKICAgICAgaXRlcl90eXBlCiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwg aXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUm IF9fZXJyLCBsb25nIGxvbmcmIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9f Z2V0KF9faW4sIF9fZW5kLCBfX2lvLCBfX2VyciwgX192KTsgfQoKICAgICAgaXRlcl90eXBl CiAgICAgIGdldChpdGVyX3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYg X19pbywKICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBsb25nIGxvbmcm IF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBf X2lvLCBfX2VyciwgX192KTsgfQojIDIxMDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgICAgaXRlcl90eXBlCiAgICAgIGdldChpdGVy X3R5cGUgX19pbiwgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgaW9zX2Jh c2U6Omlvc3RhdGUmIF9fZXJyLCBmbG9hdCYgX192KSBjb25zdAogICAgICB7IHJldHVybiB0 aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICBp dGVyX3R5cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBfX2luLCBpdGVyX3R5cGUgX19lbmQsIGlv c19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIGRvdWJsZSYgX192 KSBjb25zdAogICAgICB7IHJldHVybiB0aGlzLT5kb19nZXQoX19pbiwgX19lbmQsIF9faW8s IF9fZXJyLCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAgZ2V0KGl0ZXJfdHlwZSBf X2luLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICBpb3NfYmFzZTo6aW9z dGF0ZSYgX19lcnIsIGxvbmcgZG91YmxlJiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIHRo aXMtPmRvX2dldChfX2luLCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KIyAyMTQ2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAg IGl0ZXJfdHlwZQogICAgICBnZXQoaXRlcl90eXBlIF9faW4sIGl0ZXJfdHlwZSBfX2VuZCwg aW9zX2Jhc2UmIF9faW8sCiAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2Vyciwgdm9pZComIF9f dikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fZ2V0KF9faW4sIF9fZW5kLCBfX2lv LCBfX2VyciwgX192KTsgfQoKICAgIHByb3RlY3RlZDoKCiAgICAgIHZpcnR1YWwgfm51bV9n ZXQoKSB7IH0KCiAgICAgIF9fYXR0cmlidXRlICgoX19hYmlfdGFnX18gKCJjeHgxMSIpKSkK ICAgICAgaXRlcl90eXBlCiAgICAgIF9NX2V4dHJhY3RfZmxvYXQoaXRlcl90eXBlLCBpdGVy X3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgICAgICBzdHJpbmcm KSBjb25zdDsKCiAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIF9WYWx1ZVQ+CiBfX2F0dHJpYnV0 ZSAoKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpCiBpdGVyX3R5cGUKIF9NX2V4dHJhY3RfaW50 KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNlOjppb3N0YXRlJiwK ICAgICAgICAgX1ZhbHVlVCYpIGNvbnN0OwoKICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJUMj4KICAgICAgdHlwZW5hbWUgX19nbnVfY3h4OjpfX2VuYWJsZV9pZjxfX2lzX2NoYXI8 X0NoYXJUMj46Ol9fdmFsdWUsIGludD46Ol9fdHlwZQogX01fZmluZChjb25zdCBfQ2hhclQy Kiwgc2l6ZV90IF9fbGVuLCBfQ2hhclQyIF9fYykgY29uc3QKIHsKICAgaW50IF9fcmV0ID0g LTE7CiAgIGlmIChfX2xlbiA8PSAxMCkKICAgICB7CiAgICAgICBpZiAoX19jID49IF9DaGFy VDIoJzAnKSAmJiBfX2MgPCBfQ2hhclQyKF9DaGFyVDIoJzAnKSArIF9fbGVuKSkKICBfX3Jl dCA9IF9fYyAtIF9DaGFyVDIoJzAnKTsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBp ZiAoX19jID49IF9DaGFyVDIoJzAnKSAmJiBfX2MgPD0gX0NoYXJUMignOScpKQogIF9fcmV0 ID0gX19jIC0gX0NoYXJUMignMCcpOwogICAgICAgZWxzZSBpZiAoX19jID49IF9DaGFyVDIo J2EnKSAmJiBfX2MgPD0gX0NoYXJUMignZicpKQogIF9fcmV0ID0gMTAgKyAoX19jIC0gX0No YXJUMignYScpKTsKICAgICAgIGVsc2UgaWYgKF9fYyA+PSBfQ2hhclQyKCdBJykgJiYgX19j IDw9IF9DaGFyVDIoJ0YnKSkKICBfX3JldCA9IDEwICsgKF9fYyAtIF9DaGFyVDIoJ0EnKSk7 CiAgICAgfQogICByZXR1cm4gX19yZXQ7CiB9CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBf Q2hhclQyPgogICAgICB0eXBlbmFtZSBfX2dudV9jeHg6Ol9fZW5hYmxlX2lmPCFfX2lzX2No YXI8X0NoYXJUMj46Ol9fdmFsdWUsCiAgICAgICAgICBpbnQ+OjpfX3R5cGUKIF9NX2ZpbmQo Y29uc3QgX0NoYXJUMiogX196ZXJvLCBzaXplX3QgX19sZW4sIF9DaGFyVDIgX19jKSBjb25z dAogewogICBpbnQgX19yZXQgPSAtMTsKICAgY29uc3QgY2hhcl90eXBlKiBfX3EgPSBjaGFy X3RyYWl0czxfQ2hhclQyPjo6ZmluZChfX3plcm8sIF9fbGVuLCBfX2MpOwogICBpZiAoX19x KQogICAgIHsKICAgICAgIF9fcmV0ID0gX19xIC0gX196ZXJvOwogICAgICAgaWYgKF9fcmV0 ID4gMTUpCiAgX19yZXQgLT0gNjsKICAgICB9CiAgIHJldHVybiBfX3JldDsKIH0KIyAyMjE5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAg ICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldChpdGVyX3R5cGUsIGl0ZXJfdHlw ZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYsIGJvb2wmKSBjb25zdDsKCiAgICAg IHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJf dHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBf X2VyciwgbG9uZyYgX192KSBjb25zdAogICAgICB7IHJldHVybiBfTV9leHRyYWN0X2ludChf X2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3YpOyB9CgogICAgICB2aXJ0dWFsIGl0ZXJf dHlwZQogICAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlv c19iYXNlJiBfX2lvLAogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIHVuc2lnbmVk IHNob3J0JiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3RfaW50KF9fYmVn LCBfX2VuZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgICAgIHZpcnR1YWwgaXRlcl90eXBl CiAgICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jh c2UmIF9faW8sCiAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5zaWduZWQgaW50 JiBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3RfaW50KF9fYmVnLCBfX2Vu ZCwgX19pbywgX19lcnIsIF9fdik7IH0KCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAg IGRvX2dldChpdGVyX3R5cGUgX19iZWcsIGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9f aW8sCiAgICAgIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwgdW5zaWduZWQgbG9uZyYgX192 KSBjb25zdAogICAgICB7IHJldHVybiBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9f aW8sIF9fZXJyLCBfX3YpOyB9CgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9f Z2V0KGl0ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywK ICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCBsb25nIGxvbmcmIF9fdikgY29uc3QK ICAgICAgeyByZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2Vy ciwgX192KTsgfQoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fZ2V0KGl0ZXJf dHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgaW9z X2Jhc2U6Omlvc3RhdGUmIF9fZXJyLCB1bnNpZ25lZCBsb25nIGxvbmcmIF9fdikgY29uc3QK ICAgICAgeyByZXR1cm4gX01fZXh0cmFjdF9pbnQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2Vy ciwgX192KTsgfQoKCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dldChpdGVy X3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYsIGZsb2F0 JikgY29uc3Q7CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19nZXQoaXRlcl90 eXBlLCBpdGVyX3R5cGUsIGlvc19iYXNlJiwgaW9zX2Jhc2U6Omlvc3RhdGUmLAogICAgICBk b3VibGUmKSBjb25zdDsKIyAyMjcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv bG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIHZpcnR1YWwgaXRlcl90eXBlCiAgICAgIGRvX2dl dChpdGVyX3R5cGUsIGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBpb3NfYmFzZTo6aW9zdGF0ZSYs CiAgICAgIGxvbmcgZG91YmxlJikgY29uc3Q7CgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUK ICAgICAgZG9fZ2V0KGl0ZXJfdHlwZSwgaXRlcl90eXBlLCBpb3NfYmFzZSYsIGlvc19iYXNl Ojppb3N0YXRlJiwgdm9pZComKSBjb25zdDsKIyAyMjk5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBsb2NhbGU6OmlkIG51bV9nZXQ8 X0NoYXJULCBfSW5JdGVyPjo6aWQ7CiMgMjMxNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg dHlwZW5hbWUgX091dEl0ZXI+CiAgICBjbGFzcyBudW1fcHV0IDogcHVibGljIGxvY2FsZTo6 ZmFjZXQKICAgIHsKICAgIHB1YmxpYzoKCgoKICAgICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90 eXBlOwogICAgICB0eXBlZGVmIF9PdXRJdGVyIGl0ZXJfdHlwZTsKCgoKICAgICAgc3RhdGlj IGxvY2FsZTo6aWQgaWQ7CiMgMjMzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBleHBsaWNpdAogICAgICBudW1fcHV0KHNpemVf dCBfX3JlZnMgPSAwKSA6IGZhY2V0KF9fcmVmcykgeyB9CiMgMjM1NiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUK ICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19m aWxsLCBib29sIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywg X19pbywgX19maWxsLCBfX3YpOyB9CiMgMjM5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2xvY2FsZV9mYWNldHMuaCIgMwogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0 ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBsb25nIF9f dikgY29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxs LCBfX3YpOyB9CgogICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlv c19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAogICB1bnNpZ25lZCBsb25nIF9fdikg Y29uc3QKICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxsLCBf X3YpOyB9CgoKICAgICAgaXRlcl90eXBlCiAgICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3Nf YmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwgbG9uZyBsb25nIF9fdikgY29uc3QKICAg ICAgeyByZXR1cm4gdGhpcy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9Cgog ICAgICBpdGVyX3R5cGUKICAgICAgcHV0KGl0ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lv LCBjaGFyX3R5cGUgX19maWxsLAogICB1bnNpZ25lZCBsb25nIGxvbmcgX192KSBjb25zdAog ICAgICB7IHJldHVybiB0aGlzLT5kb19wdXQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0K IyAyNDYxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5o IiAzCiAgICAgIGl0ZXJfdHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2Um IF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGRvdWJsZSBfX3YpIGNvbnN0CiAgICAgIHsgcmV0 dXJuIHRoaXMtPmRvX3B1dChfX3MsIF9faW8sIF9fZmlsbCwgX192KTsgfQoKICAgICAgaXRl cl90eXBlCiAgICAgIHB1dChpdGVyX3R5cGUgX19zLCBpb3NfYmFzZSYgX19pbywgY2hhcl90 eXBlIF9fZmlsbCwKICAgbG9uZyBkb3VibGUgX192KSBjb25zdAogICAgICB7IHJldHVybiB0 aGlzLT5kb19wdXQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KIyAyNDg2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy5oIiAzCiAgICAgIGl0ZXJf dHlwZQogICAgICBwdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlw ZSBfX2ZpbGwsCiAgIGNvbnN0IHZvaWQqIF9fdikgY29uc3QKICAgICAgeyByZXR1cm4gdGhp cy0+ZG9fcHV0KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9CgogICAgcHJvdGVjdGVkOgog ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogaXRlcl90eXBlCiBfTV9pbnNlcnRf ZmxvYXQoaXRlcl90eXBlLCBpb3NfYmFzZSYgX19pbywgY2hhcl90eXBlIF9fZmlsbCwKICAg Y2hhciBfX21vZCwgX1ZhbHVlVCBfX3YpIGNvbnN0OwoKICAgICAgdm9pZAogICAgICBfTV9n cm91cF9mbG9hdChjb25zdCBjaGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGluZ19z aXplLAogICAgICAgY2hhcl90eXBlIF9fc2VwLCBjb25zdCBjaGFyX3R5cGUqIF9fcCwgY2hh cl90eXBlKiBfX25ldywKICAgICAgIGNoYXJfdHlwZSogX19jcywgaW50JiBfX2xlbikgY29u c3Q7CgogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogaXRlcl90eXBlCiBfTV9p bnNlcnRfaW50KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGws CiAgICAgICAgX1ZhbHVlVCBfX3YpIGNvbnN0OwoKICAgICAgdm9pZAogICAgICBfTV9ncm91 cF9pbnQoY29uc3QgY2hhciogX19ncm91cGluZywgc2l6ZV90IF9fZ3JvdXBpbmdfc2l6ZSwK ICAgICBjaGFyX3R5cGUgX19zZXAsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUqIF9fbmV3 LAogICAgIGNoYXJfdHlwZSogX19jcywgaW50JiBfX2xlbikgY29uc3Q7CgogICAgICB2b2lk CiAgICAgIF9NX3BhZChjaGFyX3R5cGUgX19maWxsLCBzdHJlYW1zaXplIF9fdywgaW9zX2Jh c2UmIF9faW8sCiAgICAgIGNoYXJfdHlwZSogX19uZXcsIGNvbnN0IGNoYXJfdHlwZSogX19j cywgaW50JiBfX2xlbikgY29uc3Q7CgoKICAgICAgdmlydHVhbAogICAgICB+bnVtX3B1dCgp IHsgfQojIDI1MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFj ZXRzLmgiIDMKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fcHV0KGl0ZXJfdHlw ZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLCBib29sIF9fdikgY29u c3Q7CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9f cywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGxvbmcgX192KSBjb25zdAog ICAgICB7IHJldHVybiBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19maWxsLCBfX3YpOyB9 CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlIF9fcywg aW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgICAgIHVuc2lnbmVkIGxvbmcg X192KSBjb25zdAogICAgICB7IHJldHVybiBfTV9pbnNlcnRfaW50KF9fcywgX19pbywgX19m aWxsLCBfX3YpOyB9CgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAgZG9fcHV0KGl0 ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAogICAgICBs b25nIGxvbmcgX192KSBjb25zdAogICAgICB7IHJldHVybiBfTV9pbnNlcnRfaW50KF9fcywg X19pbywgX19maWxsLCBfX3YpOyB9CgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBk b19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGws CiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3YpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9N X2luc2VydF9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fdik7IH0KCgogICAgICB2aXJ0dWFs IGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBlLCBpb3NfYmFzZSYsIGNoYXJfdHlw ZSwgZG91YmxlKSBjb25zdDsKCgoKCgoKICAgICAgdmlydHVhbCBpdGVyX3R5cGUKICAgICAg ZG9fcHV0KGl0ZXJfdHlwZSwgaW9zX2Jhc2UmLCBjaGFyX3R5cGUsIGxvbmcgZG91YmxlKSBj b25zdDsKCgogICAgICB2aXJ0dWFsIGl0ZXJfdHlwZQogICAgICBkb19wdXQoaXRlcl90eXBl LCBpb3NfYmFzZSYsIGNoYXJfdHlwZSwgY29uc3Qgdm9pZCopIGNvbnN0OwojIDI1ODYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDMKICAgIH07 CgogIHRlbXBsYXRlIDx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAg bG9jYWxlOjppZCBudW1fcHV0PF9DaGFyVCwgX091dEl0ZXI+OjppZDsKCgoKCgoKCgoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9vbAogICAgaXNzcGFjZShf Q2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0 PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVfYmFzZTo6c3BhY2UsIF9fYyk7IH0K CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3By aW50KF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2Vf ZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjpwcmludCwgX19j KTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAg IGlzY250cmwoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJu IHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jhc2U6OmNudHJs LCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgYm9v bAogICAgaXN1cHBlcihfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyBy ZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYykuaXMoY3R5cGVfYmFzZTo6 dXBwZXIsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGlu ZSBib29sCiAgICBpc2xvd2VyKF9DaGFyVCBfX2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAg ICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9i YXNlOjpsb3dlciwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAg aW5saW5lIGJvb2wKICAgIGlzYWxwaGEoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xv YykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0 eXBlX2Jhc2U6OmFscGhhLCBfX2MpOyB9CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+ CiAgICBpbmxpbmUgYm9vbAogICAgaXNkaWdpdChfQ2hhclQgX19jLCBjb25zdCBsb2NhbGUm IF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyku aXMoY3R5cGVfYmFzZTo6ZGlnaXQsIF9fYyk7IH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc3B1bmN0KF9DaGFyVCBfX2MsIGNvbnN0IGxv Y2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9f bG9jKS5pcyhjdHlwZV9iYXNlOjpwdW5jdCwgX19jKTsgfQoKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlzeGRpZ2l0KF9DaGFyVCBfX2MsIGNv bnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJU PiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjp4ZGlnaXQsIF9fYyk7IH0KCgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBib29sCiAgICBpc2FsbnVtKF9DaGFyVCBf X2MsIGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7IHJldHVybiB1c2VfZmFjZXQ8Y3R5cGU8 X0NoYXJUPiA+KF9fbG9jKS5pcyhjdHlwZV9iYXNlOjphbG51bSwgX19jKTsgfQoKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIGJvb2wKICAgIGlzZ3JhcGgoX0No YXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVzZV9mYWNldDxj dHlwZTxfQ2hhclQ+ID4oX19sb2MpLmlzKGN0eXBlX2Jhc2U6OmdyYXBoLCBfX2MpOyB9CiMg MjY3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMuaCIg MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGlubGluZSBfQ2hhclQKICAgIHRv dXBwZXIoX0NoYXJUIF9fYywgY29uc3QgbG9jYWxlJiBfX2xvYykKICAgIHsgcmV0dXJuIHVz ZV9mYWNldDxjdHlwZTxfQ2hhclQ+ID4oX19sb2MpLnRvdXBwZXIoX19jKTsgfQoKCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgaW5saW5lIF9DaGFyVAogICAgdG9sb3dlcihf Q2hhclQgX19jLCBjb25zdCBsb2NhbGUmIF9fbG9jKQogICAgeyByZXR1cm4gdXNlX2ZhY2V0 PGN0eXBlPF9DaGFyVD4gPihfX2xvYykudG9sb3dlcihfX2MpOyB9CgoKfQoKIyAxICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDEgMwojIDMx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMK I2RlZmluZSBfTE9DQUxFX0ZBQ0VUU19UQ0MgMQoKICAgICAgIAojIDM0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMKCm5hbWVzcGFjZSBz dGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfRmFjZXQ+CiAgICBzdHJ1Y3QgX191c2VfY2FjaGUKICAg IHsKICAgICAgY29uc3QgX0ZhY2V0KgogICAgICBvcGVyYXRvcigpIChjb25zdCBsb2NhbGUm IF9fbG9jKSBjb25zdDsKICAgIH07CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAg ICBzdHJ1Y3QgX191c2VfY2FjaGU8X19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+ID4KICAgIHsK ICAgICAgY29uc3QgX19udW1wdW5jdF9jYWNoZTxfQ2hhclQ+KgogICAgICBvcGVyYXRvcigp IChjb25zdCBsb2NhbGUmIF9fbG9jKSBjb25zdAogICAgICB7CiBjb25zdCBzaXplX3QgX19p ID0gbnVtcHVuY3Q8X0NoYXJUPjo6aWQuX01faWQoKTsKIGNvbnN0IGxvY2FsZTo6ZmFjZXQq KiBfX2NhY2hlcyA9IF9fbG9jLl9NX2ltcGwtPl9NX2NhY2hlczsKIGlmICghX19jYWNoZXNb X19pXSkKICAgewogICAgIF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPiogX190bXAgPSAwOwog ICAgIHRyeQogICAgICAgewogIF9fdG1wID0gbmV3IF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJU PjsKICBfX3RtcC0+X01fY2FjaGUoX19sb2MpOwogICAgICAgfQogICAgIGNhdGNoKC4uLikK ICAgICAgIHsKICBkZWxldGUgX190bXA7CiAgdGhyb3c7CiAgICAgICB9CiAgICAgX19sb2Mu X01faW1wbC0+X01faW5zdGFsbF9jYWNoZShfX3RtcCwgX19pKTsKICAgfQogcmV0dXJuIHN0 YXRpY19jYXN0PGNvbnN0IF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPio+KF9fY2FjaGVzW19f aV0pOwogICAgICB9CiAgICB9OwoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICB2 b2lkCiAgICBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD46Ol9NX2NhY2hlKGNvbnN0IGxvY2Fs ZSYgX19sb2MpCiAgICB7CiAgICAgIGNvbnN0IG51bXB1bmN0PF9DaGFyVD4mIF9fbnAgPSB1 c2VfZmFjZXQ8bnVtcHVuY3Q8X0NoYXJUPiA+KF9fbG9jKTsKCiAgICAgIGNoYXIqIF9fZ3Jv dXBpbmcgPSAwOwogICAgICBfQ2hhclQqIF9fdHJ1ZW5hbWUgPSAwOwogICAgICBfQ2hhclQq IF9fZmFsc2VuYW1lID0gMDsKICAgICAgdHJ5CiB7CiAgIGNvbnN0IHN0cmluZyYgX19nID0g X19ucC5ncm91cGluZygpOwogICBfTV9ncm91cGluZ19zaXplID0gX19nLnNpemUoKTsKICAg X19ncm91cGluZyA9IG5ldyBjaGFyW19NX2dyb3VwaW5nX3NpemVdOwogICBfX2cuY29weShf X2dyb3VwaW5nLCBfTV9ncm91cGluZ19zaXplKTsKICAgX01fdXNlX2dyb3VwaW5nID0gKF9N X2dyb3VwaW5nX3NpemUKICAgICAgICAmJiBzdGF0aWNfY2FzdDxzaWduZWQgY2hhcj4oX19n cm91cGluZ1swXSkgPiAwCiAgICAgICAgJiYgKF9fZ3JvdXBpbmdbMF0KICAgICAhPSBfX2du dV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8Y2hhcj46Ol9fbWF4KSk7CgogICBjb25zdCBiYXNp Y19zdHJpbmc8X0NoYXJUPiYgX190biA9IF9fbnAudHJ1ZW5hbWUoKTsKICAgX01fdHJ1ZW5h bWVfc2l6ZSA9IF9fdG4uc2l6ZSgpOwogICBfX3RydWVuYW1lID0gbmV3IF9DaGFyVFtfTV90 cnVlbmFtZV9zaXplXTsKICAgX190bi5jb3B5KF9fdHJ1ZW5hbWUsIF9NX3RydWVuYW1lX3Np emUpOwoKICAgY29uc3QgYmFzaWNfc3RyaW5nPF9DaGFyVD4mIF9fZm4gPSBfX25wLmZhbHNl bmFtZSgpOwogICBfTV9mYWxzZW5hbWVfc2l6ZSA9IF9fZm4uc2l6ZSgpOwogICBfX2ZhbHNl bmFtZSA9IG5ldyBfQ2hhclRbX01fZmFsc2VuYW1lX3NpemVdOwogICBfX2ZuLmNvcHkoX19m YWxzZW5hbWUsIF9NX2ZhbHNlbmFtZV9zaXplKTsKCiAgIF9NX2RlY2ltYWxfcG9pbnQgPSBf X25wLmRlY2ltYWxfcG9pbnQoKTsKICAgX01fdGhvdXNhbmRzX3NlcCA9IF9fbnAudGhvdXNh bmRzX3NlcCgpOwoKICAgY29uc3QgY3R5cGU8X0NoYXJUPiYgX19jdCA9IHVzZV9mYWNldDxj dHlwZTxfQ2hhclQ+ID4oX19sb2MpOwogICBfX2N0LndpZGVuKF9fbnVtX2Jhc2U6Ol9TX2F0 b21zX291dCwKICAgICAgIF9fbnVtX2Jhc2U6Ol9TX2F0b21zX291dAogICAgICAgKyBfX251 bV9iYXNlOjpfU19vZW5kLCBfTV9hdG9tc19vdXQpOwogICBfX2N0LndpZGVuKF9fbnVtX2Jh c2U6Ol9TX2F0b21zX2luLAogICAgICAgX19udW1fYmFzZTo6X1NfYXRvbXNfaW4KICAgICAg ICsgX19udW1fYmFzZTo6X1NfaWVuZCwgX01fYXRvbXNfaW4pOwoKICAgX01fZ3JvdXBpbmcg PSBfX2dyb3VwaW5nOwogICBfTV90cnVlbmFtZSA9IF9fdHJ1ZW5hbWU7CiAgIF9NX2ZhbHNl bmFtZSA9IF9fZmFsc2VuYW1lOwogICBfTV9hbGxvY2F0ZWQgPSB0cnVlOwogfQogICAgICBj YXRjaCguLi4pCiB7CiAgIGRlbGV0ZSBbXSBfX2dyb3VwaW5nOwogICBkZWxldGUgW10gX190 cnVlbmFtZTsKICAgZGVsZXRlIFtdIF9fZmFsc2VuYW1lOwogICB0aHJvdzsKIH0KICAgIH0K IyAxMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLnRj YyIgMwogIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIGJvb2wKICBfX3ZlcmlmeV9ncm91 cGluZyhjb25zdCBjaGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGluZ19zaXplLAog ICAgICBjb25zdCBzdHJpbmcmIF9fZ3JvdXBpbmdfdG1wKSB0aHJvdyAoKTsKCgoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICBfX2F0dHJpYnV0 ZSAoKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpCiAgICBfSW5JdGVyCiAgICBudW1fZ2V0PF9D aGFyVCwgX0luSXRlcj46OgogICAgX01fZXh0cmFjdF9mbG9hdChfSW5JdGVyIF9fYmVnLCBf SW5JdGVyIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgICAgIGlvc19iYXNlOjppb3N0YXRl JiBfX2Vyciwgc3RyaW5nJiBfX3h0cmMpIGNvbnN0CiAgICB7CiAgICAgIHR5cGVkZWYgY2hh cl90cmFpdHM8X0NoYXJUPiBfX3RyYWl0c190eXBlOwogICAgICB0eXBlZGVmIF9fbnVtcHVu Y3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5cGU7CiAgICAgIF9fdXNlX2NhY2hlPF9fY2Fj aGVfdHlwZT4gX191YzsKICAgICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0 bG9jKCk7CiAgICAgIGNvbnN0IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwog ICAgICBjb25zdCBfQ2hhclQqIF9fbGl0ID0gX19sYy0+X01fYXRvbXNfaW47CiAgICAgIGNo YXJfdHlwZSBfX2MgPSBjaGFyX3R5cGUoKTsKCgogICAgICBib29sIF9fdGVzdGVvZiA9IF9f YmVnID09IF9fZW5kOwoKCiAgICAgIGlmICghX190ZXN0ZW9mKQogewogICBfX2MgPSAqX19i ZWc7CiAgIGNvbnN0IGJvb2wgX19wbHVzID0gX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9T X2lwbHVzXTsKICAgaWYgKChfX3BsdXMgfHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9T X2ltaW51c10pCiAgICAgICAmJiAhKF9fbGMtPl9NX3VzZV9ncm91cGluZyAmJiBfX2MgPT0g X19sYy0+X01fdGhvdXNhbmRzX3NlcCkKICAgICAgICYmICEoX19jID09IF9fbGMtPl9NX2Rl Y2ltYWxfcG9pbnQpKQogICAgIHsKICAgICAgIF9feHRyYyArPSBfX3BsdXMgPyAnKycgOiAn LSc7CiAgICAgICBpZiAoKytfX2JlZyAhPSBfX2VuZCkKICBfX2MgPSAqX19iZWc7CiAgICAg ICBlbHNlCiAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgICB9CiB9CgoKICAgICAgYm9vbCBfX2Zv dW5kX21hbnRpc3NhID0gZmFsc2U7CiAgICAgIGludCBfX3NlcF9wb3MgPSAwOwogICAgICB3 aGlsZSAoIV9fdGVzdGVvZikKIHsKICAgaWYgKChfX2xjLT5fTV91c2VfZ3JvdXBpbmcgJiYg X19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAgICAgICB8fCBfX2MgPT0gX19sYy0+ X01fZGVjaW1hbF9wb2ludCkKICAgICBicmVhazsKICAgZWxzZSBpZiAoX19jID09IF9fbGl0 W19fbnVtX2Jhc2U6Ol9TX2l6ZXJvXSkKICAgICB7CiAgICAgICBpZiAoIV9fZm91bmRfbWFu dGlzc2EpCiAgewogICAgX194dHJjICs9ICcwJzsKICAgIF9fZm91bmRfbWFudGlzc2EgPSB0 cnVlOwogIH0KICAgICAgICsrX19zZXBfcG9zOwoKICAgICAgIGlmICgrK19fYmVnICE9IF9f ZW5kKQogIF9fYyA9ICpfX2JlZzsKICAgICAgIGVsc2UKICBfX3Rlc3Rlb2YgPSB0cnVlOwog ICAgIH0KICAgZWxzZQogICAgIGJyZWFrOwogfQoKCiAgICAgIGJvb2wgX19mb3VuZF9kZWMg PSBmYWxzZTsKICAgICAgYm9vbCBfX2ZvdW5kX3NjaSA9IGZhbHNlOwogICAgICBzdHJpbmcg X19mb3VuZF9ncm91cGluZzsKICAgICAgaWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZykKIF9f Zm91bmRfZ3JvdXBpbmcucmVzZXJ2ZSgzMik7CiAgICAgIGNvbnN0IGNoYXJfdHlwZSogX19s aXRfemVybyA9IF9fbGl0ICsgX19udW1fYmFzZTo6X1NfaXplcm87CgogICAgICBpZiAoIV9f bGMtPl9NX2FsbG9jYXRlZCkKCiB3aGlsZSAoIV9fdGVzdGVvZikKICAgewogICAgIGNvbnN0 IGludCBfX2RpZ2l0ID0gX01fZmluZChfX2xpdF96ZXJvLCAxMCwgX19jKTsKICAgICBpZiAo X19kaWdpdCAhPSAtMSkKICAgICAgIHsKICBfX3h0cmMgKz0gJzAnICsgX19kaWdpdDsKICBf X2ZvdW5kX21hbnRpc3NhID0gdHJ1ZTsKICAgICAgIH0KICAgICBlbHNlIGlmIChfX2MgPT0g X19sYy0+X01fZGVjaW1hbF9wb2ludAogICAgICAgJiYgIV9fZm91bmRfZGVjICYmICFfX2Zv dW5kX3NjaSkKICAgICAgIHsKICBfX3h0cmMgKz0gJy4nOwogIF9fZm91bmRfZGVjID0gdHJ1 ZTsKICAgICAgIH0KICAgICBlbHNlIGlmICgoX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9T X2llXQogICAgICAgIHx8IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpfU19pRV0pCiAgICAg ICAmJiAhX19mb3VuZF9zY2kgJiYgX19mb3VuZF9tYW50aXNzYSkKICAgICAgIHsKCiAgX194 dHJjICs9ICdlJzsKICBfX2ZvdW5kX3NjaSA9IHRydWU7CgoKICBpZiAoKytfX2JlZyAhPSBf X2VuZCkKICAgIHsKICAgICAgX19jID0gKl9fYmVnOwogICAgICBjb25zdCBib29sIF9fcGx1 cyA9IF9fYyA9PSBfX2xpdFtfX251bV9iYXNlOjpfU19pcGx1c107CiAgICAgIGlmIChfX3Bs dXMgfHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2ltaW51c10pCiAgICAgICAgX194 dHJjICs9IF9fcGx1cyA/ICcrJyA6ICctJzsKICAgICAgZWxzZQogICAgICAgIGNvbnRpbnVl OwogICAgfQogIGVsc2UKICAgIHsKICAgICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgICAgYnJl YWs7CiAgICB9CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgYnJlYWs7CgogICAgIGlmICgr K19fYmVnICE9IF9fZW5kKQogICAgICAgX19jID0gKl9fYmVnOwogICAgIGVsc2UKICAgICAg IF9fdGVzdGVvZiA9IHRydWU7CiAgIH0KICAgICAgZWxzZQogd2hpbGUgKCFfX3Rlc3Rlb2Yp CiAgIHsKCgogICAgIGlmIChfX2xjLT5fTV91c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMt Pl9NX3Rob3VzYW5kc19zZXApCiAgICAgICB7CiAgaWYgKCFfX2ZvdW5kX2RlYyAmJiAhX19m b3VuZF9zY2kpCiAgICB7CgoKICAgICAgaWYgKF9fc2VwX3BvcykKICAgICAgICB7CiAgIF9f Zm91bmRfZ3JvdXBpbmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBfcG9zKTsKICAgX19z ZXBfcG9zID0gMDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CgoKICAgX194dHJj LmNsZWFyKCk7CiAgIGJyZWFrOwogICAgICAgIH0KICAgIH0KICBlbHNlCiAgICBicmVhazsK ICAgICAgIH0KICAgICBlbHNlIGlmIChfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludCkK ICAgICAgIHsKICBpZiAoIV9fZm91bmRfZGVjICYmICFfX2ZvdW5kX3NjaSkKICAgIHsKCgoK ICAgICAgaWYgKF9fZm91bmRfZ3JvdXBpbmcuc2l6ZSgpKQogICAgICAgIF9fZm91bmRfZ3Jv dXBpbmcgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4oX19zZXBfcG9zKTsKICAgICAgX194dHJjICs9 ICcuJzsKICAgICAgX19mb3VuZF9kZWMgPSB0cnVlOwogICAgfQogIGVsc2UKICAgIGJyZWFr OwogICAgICAgfQogICAgIGVsc2UKICAgICAgIHsKICBjb25zdCBjaGFyX3R5cGUqIF9fcSA9 CiAgICBfX3RyYWl0c190eXBlOjpmaW5kKF9fbGl0X3plcm8sIDEwLCBfX2MpOwogIGlmIChf X3EpCiAgICB7CiAgICAgIF9feHRyYyArPSAnMCcgKyAoX19xIC0gX19saXRfemVybyk7CiAg ICAgIF9fZm91bmRfbWFudGlzc2EgPSB0cnVlOwogICAgICArK19fc2VwX3BvczsKICAgIH0K ICBlbHNlIGlmICgoX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2llXQogICAgIHx8IF9f YyA9PSBfX2xpdFtfX251bV9iYXNlOjpfU19pRV0pCiAgICAmJiAhX19mb3VuZF9zY2kgJiYg X19mb3VuZF9tYW50aXNzYSkKICAgIHsKCiAgICAgIGlmIChfX2ZvdW5kX2dyb3VwaW5nLnNp emUoKSAmJiAhX19mb3VuZF9kZWMpCiAgICAgICAgX19mb3VuZF9ncm91cGluZyArPSBzdGF0 aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwogICAgICBfX3h0cmMgKz0gJ2UnOwogICAgICBf X2ZvdW5kX3NjaSA9IHRydWU7CgoKICAgICAgaWYgKCsrX19iZWcgIT0gX19lbmQpCiAgICAg ICAgewogICBfX2MgPSAqX19iZWc7CiAgIGNvbnN0IGJvb2wgX19wbHVzID0gX19jID09IF9f bGl0W19fbnVtX2Jhc2U6Ol9TX2lwbHVzXTsKICAgaWYgKChfX3BsdXMgfHwgX19jID09IF9f bGl0W19fbnVtX2Jhc2U6Ol9TX2ltaW51c10pCiAgICAgICAmJiAhKF9fbGMtPl9NX3VzZV9n cm91cGluZwogICAgICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwKQogICAgICAg JiYgIShfX2MgPT0gX19sYy0+X01fZGVjaW1hbF9wb2ludCkpCiAgICAgICAgX194dHJjICs9 IF9fcGx1cyA/ICcrJyA6ICctJzsKICAgZWxzZQogICAgIGNvbnRpbnVlOwogICAgICAgIH0K ICAgICAgZWxzZQogICAgICAgIHsKICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgYnJlYWs7CiAg ICAgICAgfQogICAgfQogIGVsc2UKICAgIGJyZWFrOwogICAgICAgfQoKICAgICBpZiAoKytf X2JlZyAhPSBfX2VuZCkKICAgICAgIF9fYyA9ICpfX2JlZzsKICAgICBlbHNlCiAgICAgICBf X3Rlc3Rlb2YgPSB0cnVlOwogICB9CgoKCiAgICAgIGlmIChfX2ZvdW5kX2dyb3VwaW5nLnNp emUoKSkKICAgICAgICB7CgogICBpZiAoIV9fZm91bmRfZGVjICYmICFfX2ZvdW5kX3NjaSkK ICAgICBfX2ZvdW5kX2dyb3VwaW5nICs9IHN0YXRpY19jYXN0PGNoYXI+KF9fc2VwX3Bvcyk7 CgogICAgICAgICAgaWYgKCFzdGQ6Ol9fdmVyaWZ5X2dyb3VwaW5nKF9fbGMtPl9NX2dyb3Vw aW5nLAogICAgICAgICAgX19sYy0+X01fZ3JvdXBpbmdfc2l6ZSwKICAgICAgICAgIF9fZm91 bmRfZ3JvdXBpbmcpKQogICAgIF9fZXJyID0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgICAg fQoKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgog ICAgICBfX2F0dHJpYnV0ZSAoKF9fYWJpX3RhZ19fICgiY3h4MTEiKSkpCiAgICAgIF9Jbkl0 ZXIKICAgICAgbnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgICAgX01fZXh0cmFjdF9p bnQoX0luSXRlciBfX2JlZywgX0luSXRlciBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAg ICBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsIF9WYWx1ZVQmIF9fdikgY29uc3QKICAgICAg ewogICAgICAgIHR5cGVkZWYgY2hhcl90cmFpdHM8X0NoYXJUPiBfX3RyYWl0c190eXBlOwog dXNpbmcgX19nbnVfY3h4OjpfX2FkZF91bnNpZ25lZDsKIHR5cGVkZWYgdHlwZW5hbWUgX19h ZGRfdW5zaWduZWQ8X1ZhbHVlVD46Ol9fdHlwZSBfX3Vuc2lnbmVkX3R5cGU7CiB0eXBlZGVm IF9fbnVtcHVuY3RfY2FjaGU8X0NoYXJUPiBfX2NhY2hlX3R5cGU7CiBfX3VzZV9jYWNoZTxf X2NhY2hlX3R5cGU+IF9fdWM7CiBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRs b2MoKTsKIGNvbnN0IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwogY29uc3Qg X0NoYXJUKiBfX2xpdCA9IF9fbGMtPl9NX2F0b21zX2luOwogY2hhcl90eXBlIF9fYyA9IGNo YXJfdHlwZSgpOwoKCiBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19iYXNlZmllbGQgPSBf X2lvLmZsYWdzKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYg aW9zX2Jhc2U6OmJhc2VmaWVsZDsKIGNvbnN0IGJvb2wgX19vY3QgPSBfX2Jhc2VmaWVsZCA9 PSBpb3NfYmFzZTo6b2N0OwogaW50IF9fYmFzZSA9IF9fb2N0ID8gOCA6IChfX2Jhc2VmaWVs ZCA9PSBpb3NfYmFzZTo6aGV4ID8gMTYgOiAxMCk7CgoKIGJvb2wgX190ZXN0ZW9mID0gX19i ZWcgPT0gX19lbmQ7CgoKIGJvb2wgX19uZWdhdGl2ZSA9IGZhbHNlOwogaWYgKCFfX3Rlc3Rl b2YpCiAgIHsKICAgICBfX2MgPSAqX19iZWc7CiAgICAgX19uZWdhdGl2ZSA9IF9fYyA9PSBf X2xpdFtfX251bV9iYXNlOjpfU19pbWludXNdOwogICAgIGlmICgoX19uZWdhdGl2ZSB8fCBf X2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaXBsdXNdKQogICYmICEoX19sYy0+X01fdXNl X2dyb3VwaW5nICYmIF9fYyA9PSBfX2xjLT5fTV90aG91c2FuZHNfc2VwKQogICYmICEoX19j ID09IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpKQogICAgICAgewogIGlmICgrK19fYmVnICE9 IF9fZW5kKQogICAgX19jID0gKl9fYmVnOwogIGVsc2UKICAgIF9fdGVzdGVvZiA9IHRydWU7 CiAgICAgICB9CiAgIH0KCgoKIGJvb2wgX19mb3VuZF96ZXJvID0gZmFsc2U7CiBpbnQgX19z ZXBfcG9zID0gMDsKIHdoaWxlICghX190ZXN0ZW9mKQogICB7CiAgICAgaWYgKChfX2xjLT5f TV91c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMtPl9NX3Rob3VzYW5kc19zZXApCiAgfHwg X19jID09IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpCiAgICAgICBicmVhazsKICAgICBlbHNl IGlmIChfX2MgPT0gX19saXRbX19udW1fYmFzZTo6X1NfaXplcm9dCiAgICAgICAmJiAoIV9f Zm91bmRfemVybyB8fCBfX2Jhc2UgPT0gMTApKQogICAgICAgewogIF9fZm91bmRfemVybyA9 IHRydWU7CiAgKytfX3NlcF9wb3M7CiAgaWYgKF9fYmFzZWZpZWxkID09IDApCiAgICBfX2Jh c2UgPSA4OwogIGlmIChfX2Jhc2UgPT0gOCkKICAgIF9fc2VwX3BvcyA9IDA7CiAgICAgICB9 CiAgICAgZWxzZSBpZiAoX19mb3VuZF96ZXJvCiAgICAgICAmJiAoX19jID09IF9fbGl0W19f bnVtX2Jhc2U6Ol9TX2l4XQogICAgfHwgX19jID09IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX2lY XSkpCiAgICAgICB7CiAgaWYgKF9fYmFzZWZpZWxkID09IDApCiAgICBfX2Jhc2UgPSAxNjsK ICBpZiAoX19iYXNlID09IDE2KQogICAgewogICAgICBfX2ZvdW5kX3plcm8gPSBmYWxzZTsK ICAgICAgX19zZXBfcG9zID0gMDsKICAgIH0KICBlbHNlCiAgICBicmVhazsKICAgICAgIH0K ICAgICBlbHNlCiAgICAgICBicmVhazsKCiAgICAgaWYgKCsrX19iZWcgIT0gX19lbmQpCiAg ICAgICB7CiAgX19jID0gKl9fYmVnOwogIGlmICghX19mb3VuZF96ZXJvKQogICAgYnJlYWs7 CiAgICAgICB9CiAgICAgZWxzZQogICAgICAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgfQoKCgog Y29uc3Qgc2l6ZV90IF9fbGVuID0gKF9fYmFzZSA9PSAxNiA/IF9fbnVtX2Jhc2U6Ol9TX2ll bmQKICAgICAgICAgLSBfX251bV9iYXNlOjpfU19pemVybyA6IF9fYmFzZSk7CgoKIHR5cGVk ZWYgX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+IF9fbnVtX3RyYWl0czsK IHN0cmluZyBfX2ZvdW5kX2dyb3VwaW5nOwogaWYgKF9fbGMtPl9NX3VzZV9ncm91cGluZykK ICAgX19mb3VuZF9ncm91cGluZy5yZXNlcnZlKDMyKTsKIGJvb2wgX190ZXN0ZmFpbCA9IGZh bHNlOwogYm9vbCBfX3Rlc3RvdmVyZmxvdyA9IGZhbHNlOwogY29uc3QgX191bnNpZ25lZF90 eXBlIF9fbWF4ID0KICAgKF9fbmVnYXRpdmUgJiYgX19udW1fdHJhaXRzOjpfX2lzX3NpZ25l ZCkKICAgPyAtc3RhdGljX2Nhc3Q8X191bnNpZ25lZF90eXBlPihfX251bV90cmFpdHM6Ol9f bWluKQogICA6IF9fbnVtX3RyYWl0czo6X19tYXg7CiBjb25zdCBfX3Vuc2lnbmVkX3R5cGUg X19zbWF4ID0gX19tYXggLyBfX2Jhc2U7CiBfX3Vuc2lnbmVkX3R5cGUgX19yZXN1bHQgPSAw OwogaW50IF9fZGlnaXQgPSAwOwogY29uc3QgY2hhcl90eXBlKiBfX2xpdF96ZXJvID0gX19s aXQgKyBfX251bV9iYXNlOjpfU19pemVybzsKCiBpZiAoIV9fbGMtPl9NX2FsbG9jYXRlZCkK CiAgIHdoaWxlICghX190ZXN0ZW9mKQogICAgIHsKICAgICAgIF9fZGlnaXQgPSBfTV9maW5k KF9fbGl0X3plcm8sIF9fbGVuLCBfX2MpOwogICAgICAgaWYgKF9fZGlnaXQgPT0gLTEpCiAg YnJlYWs7CgogICAgICAgaWYgKF9fcmVzdWx0ID4gX19zbWF4KQogIF9fdGVzdG92ZXJmbG93 ID0gdHJ1ZTsKICAgICAgIGVsc2UKICB7CiAgICBfX3Jlc3VsdCAqPSBfX2Jhc2U7CiAgICBf X3Rlc3RvdmVyZmxvdyB8PSBfX3Jlc3VsdCA+IF9fbWF4IC0gX19kaWdpdDsKICAgIF9fcmVz dWx0ICs9IF9fZGlnaXQ7CiAgICArK19fc2VwX3BvczsKICB9CgogICAgICAgaWYgKCsrX19i ZWcgIT0gX19lbmQpCiAgX19jID0gKl9fYmVnOwogICAgICAgZWxzZQogIF9fdGVzdGVvZiA9 IHRydWU7CiAgICAgfQogZWxzZQogICB3aGlsZSAoIV9fdGVzdGVvZikKICAgICB7CgoKICAg ICAgIGlmIChfX2xjLT5fTV91c2VfZ3JvdXBpbmcgJiYgX19jID09IF9fbGMtPl9NX3Rob3Vz YW5kc19zZXApCiAgewoKCiAgICBpZiAoX19zZXBfcG9zKQogICAgICB7CiAgICAgICAgX19m b3VuZF9ncm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwogICAgICAg IF9fc2VwX3BvcyA9IDA7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIF9fdGVz dGZhaWwgPSB0cnVlOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgfQogICAgICAgZWxzZSBp ZiAoX19jID09IF9fbGMtPl9NX2RlY2ltYWxfcG9pbnQpCiAgYnJlYWs7CiAgICAgICBlbHNl CiAgewogICAgY29uc3QgY2hhcl90eXBlKiBfX3EgPQogICAgICBfX3RyYWl0c190eXBlOjpm aW5kKF9fbGl0X3plcm8sIF9fbGVuLCBfX2MpOwogICAgaWYgKCFfX3EpCiAgICAgIGJyZWFr OwoKICAgIF9fZGlnaXQgPSBfX3EgLSBfX2xpdF96ZXJvOwogICAgaWYgKF9fZGlnaXQgPiAx NSkKICAgICAgX19kaWdpdCAtPSA2OwogICAgaWYgKF9fcmVzdWx0ID4gX19zbWF4KQogICAg ICBfX3Rlc3RvdmVyZmxvdyA9IHRydWU7CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBfX3Jl c3VsdCAqPSBfX2Jhc2U7CiAgICAgICAgX190ZXN0b3ZlcmZsb3cgfD0gX19yZXN1bHQgPiBf X21heCAtIF9fZGlnaXQ7CiAgICAgICAgX19yZXN1bHQgKz0gX19kaWdpdDsKICAgICAgICAr K19fc2VwX3BvczsKICAgICAgfQogIH0KCiAgICAgICBpZiAoKytfX2JlZyAhPSBfX2VuZCkK ICBfX2MgPSAqX19iZWc7CiAgICAgICBlbHNlCiAgX190ZXN0ZW9mID0gdHJ1ZTsKICAgICB9 CgoKCiBpZiAoX19mb3VuZF9ncm91cGluZy5zaXplKCkpCiAgIHsKCiAgICAgX19mb3VuZF9n cm91cGluZyArPSBzdGF0aWNfY2FzdDxjaGFyPihfX3NlcF9wb3MpOwoKICAgICBpZiAoIXN0 ZDo6X192ZXJpZnlfZ3JvdXBpbmcoX19sYy0+X01fZ3JvdXBpbmcsCiAgICAgX19sYy0+X01f Z3JvdXBpbmdfc2l6ZSwKICAgICBfX2ZvdW5kX2dyb3VwaW5nKSkKICAgICAgIF9fZXJyID0g aW9zX2Jhc2U6OmZhaWxiaXQ7CiAgIH0KCgoKIGlmICgoIV9fc2VwX3BvcyAmJiAhX19mb3Vu ZF96ZXJvICYmICFfX2ZvdW5kX2dyb3VwaW5nLnNpemUoKSkKICAgICB8fCBfX3Rlc3RmYWls KQogICB7CiAgICAgX192ID0gMDsKICAgICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0Owog ICB9CiBlbHNlIGlmIChfX3Rlc3RvdmVyZmxvdykKICAgewogICAgIGlmIChfX25lZ2F0aXZl ICYmIF9fbnVtX3RyYWl0czo6X19pc19zaWduZWQpCiAgICAgICBfX3YgPSBfX251bV90cmFp dHM6Ol9fbWluOwogICAgIGVsc2UKICAgICAgIF9fdiA9IF9fbnVtX3RyYWl0czo6X19tYXg7 CiAgICAgX19lcnIgPSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgfQogZWxzZQogICBfX3YgPSBf X25lZ2F0aXZlID8gLV9fcmVzdWx0IDogX19yZXN1bHQ7CgogaWYgKF9fdGVzdGVvZikKICAg X19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKIHJldHVybiBfX2JlZzsKICAgICAgfQoKCgog IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0 ZXIKICAgIG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBl IF9fYmVnLCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgICAgIGlv c19iYXNlOjppb3N0YXRlJiBfX2VyciwgYm9vbCYgX192KSBjb25zdAogICAgewogICAgICBp ZiAoIShfX2lvLmZsYWdzKCkgJiBpb3NfYmFzZTo6Ym9vbGFscGhhKSkKICAgICAgICB7CgoK CiAgIGxvbmcgX19sID0gLTE7CiAgICAgICAgICBfX2JlZyA9IF9NX2V4dHJhY3RfaW50KF9f YmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9fbCk7CiAgIGlmIChfX2wgPT0gMCB8fCBfX2wg PT0gMSkKICAgICBfX3YgPSBib29sKF9fbCk7CiAgIGVsc2UKICAgICB7CgoKICAgICAgIF9f diA9IHRydWU7CiAgICAgICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgaWYg KF9fYmVnID09IF9fZW5kKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgfQog ICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKCiAgIHR5cGVkZWYgX19udW1wdW5jdF9j YWNoZTxfQ2hhclQ+IF9fY2FjaGVfdHlwZTsKICAgX191c2VfY2FjaGU8X19jYWNoZV90eXBl PiBfX3VjOwogICBjb25zdCBsb2NhbGUmIF9fbG9jID0gX19pby5fTV9nZXRsb2MoKTsKICAg Y29uc3QgX19jYWNoZV90eXBlKiBfX2xjID0gX191YyhfX2xvYyk7CgogICBib29sIF9fdGVz dGYgPSB0cnVlOwogICBib29sIF9fdGVzdHQgPSB0cnVlOwogICBib29sIF9fZG9uZWYgPSBf X2xjLT5fTV9mYWxzZW5hbWVfc2l6ZSA9PSAwOwogICBib29sIF9fZG9uZXQgPSBfX2xjLT5f TV90cnVlbmFtZV9zaXplID09IDA7CiAgIGJvb2wgX190ZXN0ZW9mID0gZmFsc2U7CiAgIHNp emVfdCBfX24gPSAwOwogICB3aGlsZSAoIV9fZG9uZWYgfHwgIV9fZG9uZXQpCiAgICAgewog ICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQogIHsKICAgIF9fdGVzdGVvZiA9IHRydWU7CiAg ICBicmVhazsKICB9CgogICAgICAgY29uc3QgY2hhcl90eXBlIF9fYyA9ICpfX2JlZzsKCiAg ICAgICBpZiAoIV9fZG9uZWYpCiAgX190ZXN0ZiA9IF9fYyA9PSBfX2xjLT5fTV9mYWxzZW5h bWVbX19uXTsKCiAgICAgICBpZiAoIV9fdGVzdGYgJiYgX19kb25ldCkKICBicmVhazsKCiAg ICAgICBpZiAoIV9fZG9uZXQpCiAgX190ZXN0dCA9IF9fYyA9PSBfX2xjLT5fTV90cnVlbmFt ZVtfX25dOwoKICAgICAgIGlmICghX190ZXN0dCAmJiBfX2RvbmVmKQogIGJyZWFrOwoKICAg ICAgIGlmICghX190ZXN0dCAmJiAhX190ZXN0ZikKICBicmVhazsKCiAgICAgICArK19fbjsK ICAgICAgICsrX19iZWc7CgogICAgICAgX19kb25lZiA9ICFfX3Rlc3RmIHx8IF9fbiA+PSBf X2xjLT5fTV9mYWxzZW5hbWVfc2l6ZTsKICAgICAgIF9fZG9uZXQgPSAhX190ZXN0dCB8fCBf X24gPj0gX19sYy0+X01fdHJ1ZW5hbWVfc2l6ZTsKICAgICB9CiAgIGlmIChfX3Rlc3RmICYm IF9fbiA9PSBfX2xjLT5fTV9mYWxzZW5hbWVfc2l6ZSAmJiBfX24pCiAgICAgewogICAgICAg X192ID0gZmFsc2U7CiAgICAgICBpZiAoX190ZXN0dCAmJiBfX24gPT0gX19sYy0+X01fdHJ1 ZW5hbWVfc2l6ZSkKICBfX2VyciA9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgZWxzZQog IF9fZXJyID0gX190ZXN0ZW9mID8gaW9zX2Jhc2U6OmVvZmJpdCA6IGlvc19iYXNlOjpnb29k Yml0OwogICAgIH0KICAgZWxzZSBpZiAoX190ZXN0dCAmJiBfX24gPT0gX19sYy0+X01fdHJ1 ZW5hbWVfc2l6ZSAmJiBfX24pCiAgICAgewogICAgICAgX192ID0gdHJ1ZTsKICAgICAgIF9f ZXJyID0gX190ZXN0ZW9mID8gaW9zX2Jhc2U6OmVvZmJpdCA6IGlvc19iYXNlOjpnb29kYml0 OwogICAgIH0KICAgZWxzZQogICAgIHsKCgogICAgICAgX192ID0gZmFsc2U7CiAgICAgICBf X2VyciA9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgaWYgKF9fdGVzdGVvZikKICBfX2Vy ciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fYmVnOwog ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9Jbkl0ZXI+CiAg ICBfSW5JdGVyCiAgICBudW1fZ2V0PF9DaGFyVCwgX0luSXRlcj46OgogICAgZG9fZ2V0KGl0 ZXJfdHlwZSBfX2JlZywgaXRlcl90eXBlIF9fZW5kLCBpb3NfYmFzZSYgX19pbywKICAgIGlv c19iYXNlOjppb3N0YXRlJiBfX2VyciwgZmxvYXQmIF9fdikgY29uc3QKICAgIHsKICAgICAg c3RyaW5nIF9feHRyYzsKICAgICAgX194dHJjLnJlc2VydmUoMzIpOwogICAgICBfX2JlZyA9 IF9NX2V4dHJhY3RfZmxvYXQoX19iZWcsIF9fZW5kLCBfX2lvLCBfX2VyciwgX194dHJjKTsK ICAgICAgc3RkOjpfX2NvbnZlcnRfdG9fdihfX3h0cmMuY19zdHIoKSwgX192LCBfX2Vyciwg X1NfZ2V0X2NfbG9jYWxlKCkpOwogICAgICBpZiAoX19iZWcgPT0gX19lbmQpCiBfX2VyciB8 PSBpb3NfYmFzZTo6ZW9mYml0OwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX0luSXRlcj4KICAgIF9Jbkl0ZXIKICAg IG51bV9nZXQ8X0NoYXJULCBfSW5JdGVyPjo6CiAgICBkb19nZXQoaXRlcl90eXBlIF9fYmVn LCBpdGVyX3R5cGUgX19lbmQsIGlvc19iYXNlJiBfX2lvLAogICAgICAgICAgIGlvc19iYXNl Ojppb3N0YXRlJiBfX2VyciwgZG91YmxlJiBfX3YpIGNvbnN0CiAgICB7CiAgICAgIHN0cmlu ZyBfX3h0cmM7CiAgICAgIF9feHRyYy5yZXNlcnZlKDMyKTsKICAgICAgX19iZWcgPSBfTV9l eHRyYWN0X2Zsb2F0KF9fYmVnLCBfX2VuZCwgX19pbywgX19lcnIsIF9feHRyYyk7CiAgICAg IHN0ZDo6X19jb252ZXJ0X3RvX3YoX194dHJjLmNfc3RyKCksIF9fdiwgX19lcnIsIF9TX2dl dF9jX2xvY2FsZSgpKTsKICAgICAgaWYgKF9fYmVnID09IF9fZW5kKQogX19lcnIgfD0gaW9z X2Jhc2U6OmVvZmJpdDsKICAgICAgcmV0dXJuIF9fYmVnOwogICAgfQojIDczNSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xvY2FsZV9mYWNldHMudGNjIiAzCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAg bnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcs IGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jhc2U6 Omlvc3RhdGUmIF9fZXJyLCBsb25nIGRvdWJsZSYgX192KSBjb25zdAogICAgewogICAgICBz dHJpbmcgX194dHJjOwogICAgICBfX3h0cmMucmVzZXJ2ZSgzMik7CiAgICAgIF9fYmVnID0g X01fZXh0cmFjdF9mbG9hdChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBfX3h0cmMpOwog ICAgICBzdGQ6Ol9fY29udmVydF90b192KF9feHRyYy5jX3N0cigpLCBfX3YsIF9fZXJyLCBf U19nZXRfY19sb2NhbGUoKSk7CiAgICAgIGlmIChfX2JlZyA9PSBfX2VuZCkKIF9fZXJyIHw9 IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgIHJldHVybiBfX2JlZzsKICAgIH0KCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfSW5JdGVyPgogICAgX0luSXRlcgogICAg bnVtX2dldDxfQ2hhclQsIF9Jbkl0ZXI+OjoKICAgIGRvX2dldChpdGVyX3R5cGUgX19iZWcs IGl0ZXJfdHlwZSBfX2VuZCwgaW9zX2Jhc2UmIF9faW8sCiAgICAgICAgICAgaW9zX2Jhc2U6 Omlvc3RhdGUmIF9fZXJyLCB2b2lkKiYgX192KSBjb25zdAogICAgewoKICAgICAgdHlwZWRl ZiBpb3NfYmFzZTo6Zm10ZmxhZ3MgZm10ZmxhZ3M7CiAgICAgIGNvbnN0IGZtdGZsYWdzIF9f Zm10ID0gX19pby5mbGFncygpOwogICAgICBfX2lvLmZsYWdzKChfX2ZtdCAmIH5pb3NfYmFz ZTo6YmFzZWZpZWxkKSB8IGlvc19iYXNlOjpoZXgpOwoKICAgICAgdHlwZWRlZiBfX2dudV9j eHg6Ol9fY29uZGl0aW9uYWxfdHlwZTwoc2l6ZW9mKHZvaWQqKQogICAgICAgICAgPD0gc2l6 ZW9mKHVuc2lnbmVkIGxvbmcpKSwKIHVuc2lnbmVkIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9u Zz46Ol9fdHlwZSBfVUludFB0clR5cGU7CgogICAgICBfVUludFB0clR5cGUgX191bDsKICAg ICAgX19iZWcgPSBfTV9leHRyYWN0X2ludChfX2JlZywgX19lbmQsIF9faW8sIF9fZXJyLCBf X3VsKTsKCgogICAgICBfX2lvLmZsYWdzKF9fZm10KTsKCiAgICAgIF9fdiA9IHJlaW50ZXJw cmV0X2Nhc3Q8dm9pZCo+KF9fdWwpOwogICAgICByZXR1cm4gX19iZWc7CiAgICB9CiMgNzk1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxlX2ZhY2V0cy50Y2MiIDMK ICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdm9p ZAogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBfTV9wYWQoX0NoYXJUIF9f ZmlsbCwgc3RyZWFtc2l6ZSBfX3csIGlvc19iYXNlJiBfX2lvLAogICAgX0NoYXJUKiBfX25l dywgY29uc3QgX0NoYXJUKiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdAogICAgewoKCiAgICAg IF9fcGFkPF9DaGFyVCwgY2hhcl90cmFpdHM8X0NoYXJUPiA+OjpfU19wYWQoX19pbywgX19m aWxsLCBfX25ldywKICAgICAgICBfX2NzLCBfX3csIF9fbGVuKTsKICAgICAgX19sZW4gPSBz dGF0aWNfY2FzdDxpbnQ+KF9fdyk7CiAgICB9CgoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJULCB0eXBlbmFtZSBfVmFsdWVUPgogICAgaW50CiAgICBfX2ludF90b19jaGFyKF9DaGFy VCogX19idWZlbmQsIF9WYWx1ZVQgX192LCBjb25zdCBfQ2hhclQqIF9fbGl0LAogICAgaW9z X2Jhc2U6OmZtdGZsYWdzIF9fZmxhZ3MsIGJvb2wgX19kZWMpCiAgICB7CiAgICAgIF9DaGFy VCogX19idWYgPSBfX2J1ZmVuZDsKICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QoX19kZWMs IHRydWUpKQogewoKICAgZG8KICAgICB7CiAgICAgICAqLS1fX2J1ZiA9IF9fbGl0WyhfX3Yg JSAxMCkgKyBfX251bV9iYXNlOjpfU19vZGlnaXRzXTsKICAgICAgIF9fdiAvPSAxMDsKICAg ICB9CiAgIHdoaWxlIChfX3YgIT0gMCk7CiB9CiAgICAgIGVsc2UgaWYgKChfX2ZsYWdzICYg aW9zX2Jhc2U6OmJhc2VmaWVsZCkgPT0gaW9zX2Jhc2U6Om9jdCkKIHsKCiAgIGRvCiAgICAg ewogICAgICAgKi0tX19idWYgPSBfX2xpdFsoX192ICYgMHg3KSArIF9fbnVtX2Jhc2U6Ol9T X29kaWdpdHNdOwogICAgICAgX192ID4+PSAzOwogICAgIH0KICAgd2hpbGUgKF9fdiAhPSAw KTsKIH0KICAgICAgZWxzZQogewoKICAgY29uc3QgYm9vbCBfX3VwcGVyY2FzZSA9IF9fZmxh Z3MgJiBpb3NfYmFzZTo6dXBwZXJjYXNlOwogICBjb25zdCBpbnQgX19jYXNlX29mZnNldCA9 IF9fdXBwZXJjYXNlID8gX19udW1fYmFzZTo6X1Nfb3VkaWdpdHMKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9fbnVtX2Jhc2U6Ol9TX29kaWdpdHM7CiAg IGRvCiAgICAgewogICAgICAgKi0tX19idWYgPSBfX2xpdFsoX192ICYgMHhmKSArIF9fY2Fz ZV9vZmZzZXRdOwogICAgICAgX192ID4+PSA0OwogICAgIH0KICAgd2hpbGUgKF9fdiAhPSAw KTsKIH0KICAgICAgcmV0dXJuIF9fYnVmZW5kIC0gX19idWY7CiAgICB9CgoKCiAgdGVtcGxh dGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfT3V0SXRlcj4KICAgIHZvaWQKICAgIG51 bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgX01fZ3JvdXBfaW50KGNvbnN0IGNoYXIq IF9fZ3JvdXBpbmcsIHNpemVfdCBfX2dyb3VwaW5nX3NpemUsIF9DaGFyVCBfX3NlcCwKICAg aW9zX2Jhc2UmLCBfQ2hhclQqIF9fbmV3LCBfQ2hhclQqIF9fY3MsIGludCYgX19sZW4pIGNv bnN0CiAgICB7CiAgICAgIF9DaGFyVCogX19wID0gc3RkOjpfX2FkZF9ncm91cGluZyhfX25l dywgX19zZXAsIF9fZ3JvdXBpbmcsCiAgICAgX19ncm91cGluZ19zaXplLCBfX2NzLCBfX2Nz ICsgX19sZW4pOwogICAgICBfX2xlbiA9IF9fcCAtIF9fbmV3OwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdGVtcGxhdGU8dHlw ZW5hbWUgX1ZhbHVlVD4KICAgICAgX091dEl0ZXIKICAgICAgbnVtX3B1dDxfQ2hhclQsIF9P dXRJdGVyPjo6CiAgICAgIF9NX2luc2VydF9pbnQoX091dEl0ZXIgX19zLCBpb3NfYmFzZSYg X19pbywgX0NoYXJUIF9fZmlsbCwKICAgICAgX1ZhbHVlVCBfX3YpIGNvbnN0CiAgICAgIHsK IHVzaW5nIF9fZ251X2N4eDo6X19hZGRfdW5zaWduZWQ7CiB0eXBlZGVmIHR5cGVuYW1lIF9f YWRkX3Vuc2lnbmVkPF9WYWx1ZVQ+OjpfX3R5cGUgX191bnNpZ25lZF90eXBlOwogdHlwZWRl ZiBfX251bXB1bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwogX191c2VfY2FjaGU8 X19jYWNoZV90eXBlPiBfX3VjOwogY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0 bG9jKCk7CiBjb25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9jKTsKIGNvbnN0 IF9DaGFyVCogX19saXQgPSBfX2xjLT5fTV9hdG9tc19vdXQ7CiBjb25zdCBpb3NfYmFzZTo6 Zm10ZmxhZ3MgX19mbGFncyA9IF9faW8uZmxhZ3MoKTsKCgogY29uc3QgaW50IF9faWxlbiA9 IDUgKiBzaXplb2YoX1ZhbHVlVCk7CiBfQ2hhclQqIF9fY3MgPSBzdGF0aWNfY2FzdDxfQ2hh clQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpCiAgICAgICAgICAgICogX19p bGVuKSk7CgoKCiBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19iYXNlZmllbGQgPSBfX2Zs YWdzICYgaW9zX2Jhc2U6OmJhc2VmaWVsZDsKIGNvbnN0IGJvb2wgX19kZWMgPSAoX19iYXNl ZmllbGQgIT0gaW9zX2Jhc2U6Om9jdAogICAgICAgJiYgX19iYXNlZmllbGQgIT0gaW9zX2Jh c2U6OmhleCk7CiBjb25zdCBfX3Vuc2lnbmVkX3R5cGUgX191ID0gKChfX3YgPiAwIHx8ICFf X2RlYykKICAgICAgICAgPyBfX3Vuc2lnbmVkX3R5cGUoX192KQogICAgICAgICA6IC1fX3Vu c2lnbmVkX3R5cGUoX192KSk7CiAgaW50IF9fbGVuID0gX19pbnRfdG9fY2hhcihfX2NzICsg X19pbGVuLCBfX3UsIF9fbGl0LCBfX2ZsYWdzLCBfX2RlYyk7CiBfX2NzICs9IF9faWxlbiAt IF9fbGVuOwoKCiBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nKQogICB7CgoKICAgICBfQ2hh clQqIF9fY3MyID0gc3RhdGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXpl b2YoX0NoYXJUKQogICAgICAgICAgKiAoX19sZW4gKyAxKQogICAgICAgICAgKiAyKSk7CiAg ICAgX01fZ3JvdXBfaW50KF9fbGMtPl9NX2dyb3VwaW5nLCBfX2xjLT5fTV9ncm91cGluZ19z aXplLAogICAgX19sYy0+X01fdGhvdXNhbmRzX3NlcCwgX19pbywgX19jczIgKyAyLCBfX2Nz LCBfX2xlbik7CiAgICAgX19jcyA9IF9fY3MyICsgMjsKICAgfQoKCiBpZiAoX19idWlsdGlu X2V4cGVjdChfX2RlYywgdHJ1ZSkpCiAgIHsKCiAgICAgaWYgKF9fdiA+PSAwKQogICAgICAg ewogIGlmIChib29sKF9fZmxhZ3MgJiBpb3NfYmFzZTo6c2hvd3BvcykKICAgICAgJiYgX19n bnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPF9WYWx1ZVQ+OjpfX2lzX3NpZ25lZCkKICAgICot LV9fY3MgPSBfX2xpdFtfX251bV9iYXNlOjpfU19vcGx1c10sICsrX19sZW47CiAgICAgICB9 CiAgICAgZWxzZQogICAgICAgKi0tX19jcyA9IF9fbGl0W19fbnVtX2Jhc2U6Ol9TX29taW51 c10sICsrX19sZW47CiAgIH0KIGVsc2UgaWYgKGJvb2woX19mbGFncyAmIGlvc19iYXNlOjpz aG93YmFzZSkgJiYgX192KQogICB7CiAgICAgaWYgKF9fYmFzZWZpZWxkID09IGlvc19iYXNl OjpvY3QpCiAgICAgICAqLS1fX2NzID0gX19saXRbX19udW1fYmFzZTo6X1Nfb2RpZ2l0c10s ICsrX19sZW47CiAgICAgZWxzZQogICAgICAgewoKICBjb25zdCBib29sIF9fdXBwZXJjYXNl ID0gX19mbGFncyAmIGlvc19iYXNlOjp1cHBlcmNhc2U7CiAgKi0tX19jcyA9IF9fbGl0W19f bnVtX2Jhc2U6Ol9TX294ICsgX191cHBlcmNhc2VdOwoKICAqLS1fX2NzID0gX19saXRbX19u dW1fYmFzZTo6X1Nfb2RpZ2l0c107CiAgX19sZW4gKz0gMjsKICAgICAgIH0KICAgfQoKCiBj b25zdCBzdHJlYW1zaXplIF9fdyA9IF9faW8ud2lkdGgoKTsKIGlmIChfX3cgPiBzdGF0aWNf Y2FzdDxzdHJlYW1zaXplPihfX2xlbikpCiAgIHsKICAgICBfQ2hhclQqIF9fY3MzID0gc3Rh dGljX2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0NoYXJUKQogICAg ICAgICAgKiBfX3cpKTsKICAgICBfTV9wYWQoX19maWxsLCBfX3csIF9faW8sIF9fY3MzLCBf X2NzLCBfX2xlbik7CiAgICAgX19jcyA9IF9fY3MzOwogICB9CiBfX2lvLndpZHRoKDApOwoK CgogcmV0dXJuIHN0ZDo6X193cml0ZShfX3MsIF9fY3MsIF9fbGVuKTsKICAgICAgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAgdm9pZAog ICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBfTV9ncm91cF9mbG9hdChjb25z dCBjaGFyKiBfX2dyb3VwaW5nLCBzaXplX3QgX19ncm91cGluZ19zaXplLAogICAgIF9DaGFy VCBfX3NlcCwgY29uc3QgX0NoYXJUKiBfX3AsIF9DaGFyVCogX19uZXcsCiAgICAgX0NoYXJU KiBfX2NzLCBpbnQmIF9fbGVuKSBjb25zdAogICAgewoKCgogICAgICBjb25zdCBpbnQgX19k ZWNsZW4gPSBfX3AgPyBfX3AgLSBfX2NzIDogX19sZW47CiAgICAgIF9DaGFyVCogX19wMiA9 IHN0ZDo6X19hZGRfZ3JvdXBpbmcoX19uZXcsIF9fc2VwLCBfX2dyb3VwaW5nLAogICAgICBf X2dyb3VwaW5nX3NpemUsCiAgICAgIF9fY3MsIF9fY3MgKyBfX2RlY2xlbik7CgoKICAgICAg aW50IF9fbmV3bGVuID0gX19wMiAtIF9fbmV3OwogICAgICBpZiAoX19wKQogewogICBjaGFy X3RyYWl0czxfQ2hhclQ+Ojpjb3B5KF9fcDIsIF9fcCwgX19sZW4gLSBfX2RlY2xlbik7CiAg IF9fbmV3bGVuICs9IF9fbGVuIC0gX19kZWNsZW47CiB9CiAgICAgIF9fbGVuID0gX19uZXds ZW47CiAgICB9CiMgOTg5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvbG9jYWxl X2ZhY2V0cy50Y2MiIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9P dXRJdGVyPgogICAgdGVtcGxhdGU8dHlwZW5hbWUgX1ZhbHVlVD4KICAgICAgX091dEl0ZXIK ICAgICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICAgIF9NX2luc2VydF9mbG9h dChfT3V0SXRlciBfX3MsIGlvc19iYXNlJiBfX2lvLCBfQ2hhclQgX19maWxsLCBjaGFyIF9f bW9kLAogICAgICAgICBfVmFsdWVUIF9fdikgY29uc3QKICAgICAgewogdHlwZWRlZiBfX251 bXB1bmN0X2NhY2hlPF9DaGFyVD4gX19jYWNoZV90eXBlOwogX191c2VfY2FjaGU8X19jYWNo ZV90eXBlPiBfX3VjOwogY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9jKCk7 CiBjb25zdCBfX2NhY2hlX3R5cGUqIF9fbGMgPSBfX3VjKF9fbG9jKTsKCgogY29uc3Qgc3Ry ZWFtc2l6ZSBfX3ByZWMgPSBfX2lvLnByZWNpc2lvbigpIDwgMCA/IDYgOiBfX2lvLnByZWNp c2lvbigpOwoKIGNvbnN0IGludCBfX21heF9kaWdpdHMgPQogICBfX2dudV9jeHg6Ol9fbnVt ZXJpY190cmFpdHM8X1ZhbHVlVD46Ol9fZGlnaXRzMTA7CgoKIGludCBfX2xlbjsKCiBjaGFy IF9fZmJ1ZlsxNl07CiBfX251bV9iYXNlOjpfU19mb3JtYXRfZmxvYXQoX19pbywgX19mYnVm LCBfX21vZCk7CgoKCiBjb25zdCBib29sIF9fdXNlX3ByZWMgPQogICAoX19pby5mbGFncygp ICYgaW9zX2Jhc2U6OmZsb2F0ZmllbGQpICE9IGlvc19iYXNlOjpmbG9hdGZpZWxkOwoKCgog aW50IF9fY3Nfc2l6ZSA9IF9fbWF4X2RpZ2l0cyAqIDM7CiBjaGFyKiBfX2NzID0gc3RhdGlj X2Nhc3Q8Y2hhcio+KF9fYnVpbHRpbl9hbGxvY2EoX19jc19zaXplKSk7CiBpZiAoX191c2Vf cHJlYykKICAgX19sZW4gPSBzdGQ6Ol9fY29udmVydF9mcm9tX3YoX1NfZ2V0X2NfbG9jYWxl KCksIF9fY3MsIF9fY3Nfc2l6ZSwKICAgICBfX2ZidWYsIF9fcHJlYywgX192KTsKIGVsc2UK ICAgX19sZW4gPSBzdGQ6Ol9fY29udmVydF9mcm9tX3YoX1NfZ2V0X2NfbG9jYWxlKCksIF9f Y3MsIF9fY3Nfc2l6ZSwKICAgICBfX2ZidWYsIF9fdik7CgoKIGlmIChfX2xlbiA+PSBfX2Nz X3NpemUpCiAgIHsKICAgICBfX2NzX3NpemUgPSBfX2xlbiArIDE7CiAgICAgX19jcyA9IHN0 YXRpY19jYXN0PGNoYXIqPihfX2J1aWx0aW5fYWxsb2NhKF9fY3Nfc2l6ZSkpOwogICAgIGlm IChfX3VzZV9wcmVjKQogICAgICAgX19sZW4gPSBzdGQ6Ol9fY29udmVydF9mcm9tX3YoX1Nf Z2V0X2NfbG9jYWxlKCksIF9fY3MsIF9fY3Nfc2l6ZSwKICAgICAgICAgX19mYnVmLCBfX3By ZWMsIF9fdik7CiAgICAgZWxzZQogICAgICAgX19sZW4gPSBzdGQ6Ol9fY29udmVydF9mcm9t X3YoX1NfZ2V0X2NfbG9jYWxlKCksIF9fY3MsIF9fY3Nfc2l6ZSwKICAgICAgICAgX19mYnVm LCBfX3YpOwogICB9CiMgMTA2MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2xv Y2FsZV9mYWNldHMudGNjIiAzCiBjb25zdCBjdHlwZTxfQ2hhclQ+JiBfX2N0eXBlID0gdXNl X2ZhY2V0PGN0eXBlPF9DaGFyVD4gPihfX2xvYyk7CgogX0NoYXJUKiBfX3dzID0gc3RhdGlj X2Nhc3Q8X0NoYXJUKj4oX19idWlsdGluX2FsbG9jYShzaXplb2YoX0NoYXJUKQogICAgICAg ICAgICAqIF9fbGVuKSk7CiBfX2N0eXBlLndpZGVuKF9fY3MsIF9fY3MgKyBfX2xlbiwgX193 cyk7CgoKIF9DaGFyVCogX193cCA9IDA7CiBjb25zdCBjaGFyKiBfX3AgPSBjaGFyX3RyYWl0 czxjaGFyPjo6ZmluZChfX2NzLCBfX2xlbiwgJy4nKTsKIGlmIChfX3ApCiAgIHsKICAgICBf X3dwID0gX193cyArIChfX3AgLSBfX2NzKTsKICAgICAqX193cCA9IF9fbGMtPl9NX2RlY2lt YWxfcG9pbnQ7CiAgIH0KCgoKCiBpZiAoX19sYy0+X01fdXNlX2dyb3VwaW5nCiAgICAgJiYg KF9fd3AgfHwgX19sZW4gPCAzIHx8IChfX2NzWzFdIDw9ICc5JyAmJiBfX2NzWzJdIDw9ICc5 JwogICAgICAgICAgJiYgX19jc1sxXSA+PSAnMCcgJiYgX19jc1syXSA+PSAnMCcpKSkKICAg ewoKCiAgICAgX0NoYXJUKiBfX3dzMiA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRp bl9hbGxvY2Eoc2l6ZW9mKF9DaGFyVCkKICAgICAgICAgICogX19sZW4gKiAyKSk7CgogICAg IHN0cmVhbXNpemUgX19vZmYgPSAwOwogICAgIGlmIChfX2NzWzBdID09ICctJyB8fCBfX2Nz WzBdID09ICcrJykKICAgICAgIHsKICBfX29mZiA9IDE7CiAgX193czJbMF0gPSBfX3dzWzBd OwogIF9fbGVuIC09IDE7CiAgICAgICB9CgogICAgIF9NX2dyb3VwX2Zsb2F0KF9fbGMtPl9N X2dyb3VwaW5nLCBfX2xjLT5fTV9ncm91cGluZ19zaXplLAogICAgICBfX2xjLT5fTV90aG91 c2FuZHNfc2VwLCBfX3dwLCBfX3dzMiArIF9fb2ZmLAogICAgICBfX3dzICsgX19vZmYsIF9f bGVuKTsKICAgICBfX2xlbiArPSBfX29mZjsKCiAgICAgX193cyA9IF9fd3MyOwogICB9CgoK IGNvbnN0IHN0cmVhbXNpemUgX193ID0gX19pby53aWR0aCgpOwogaWYgKF9fdyA+IHN0YXRp Y19jYXN0PHN0cmVhbXNpemU+KF9fbGVuKSkKICAgewogICAgIF9DaGFyVCogX193czMgPSBz dGF0aWNfY2FzdDxfQ2hhclQqPihfX2J1aWx0aW5fYWxsb2NhKHNpemVvZihfQ2hhclQpCiAg ICAgICAgICAqIF9fdykpOwogICAgIF9NX3BhZChfX2ZpbGwsIF9fdywgX19pbywgX193czMs IF9fd3MsIF9fbGVuKTsKICAgICBfX3dzID0gX193czM7CiAgIH0KIF9faW8ud2lkdGgoMCk7 CgoKCiByZXR1cm4gc3RkOjpfX3dyaXRlKF9fcywgX193cywgX19sZW4pOwogICAgICB9Cgog IHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBfT3V0 SXRlcgogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBkb19wdXQoaXRlcl90 eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGJvb2wgX192KSBj b25zdAogICAgewogICAgICBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19mbGFncyA9IF9f aW8uZmxhZ3MoKTsKICAgICAgaWYgKChfX2ZsYWdzICYgaW9zX2Jhc2U6OmJvb2xhbHBoYSkg PT0gMCkKICAgICAgICB7CiAgICAgICAgICBjb25zdCBsb25nIF9fbCA9IF9fdjsKICAgICAg ICAgIF9fcyA9IF9NX2luc2VydF9pbnQoX19zLCBfX2lvLCBfX2ZpbGwsIF9fbCk7CiAgICAg ICAgfQogICAgICBlbHNlCiAgICAgICAgewogICB0eXBlZGVmIF9fbnVtcHVuY3RfY2FjaGU8 X0NoYXJUPiBfX2NhY2hlX3R5cGU7CiAgIF9fdXNlX2NhY2hlPF9fY2FjaGVfdHlwZT4gX191 YzsKICAgY29uc3QgbG9jYWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9jKCk7CiAgIGNvbnN0 IF9fY2FjaGVfdHlwZSogX19sYyA9IF9fdWMoX19sb2MpOwoKICAgY29uc3QgX0NoYXJUKiBf X25hbWUgPSBfX3YgPyBfX2xjLT5fTV90cnVlbmFtZQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA6IF9fbGMtPl9NX2ZhbHNlbmFtZTsKICAgaW50IF9fbGVuID0gX192ID8gX19s Yy0+X01fdHJ1ZW5hbWVfc2l6ZQogICAgICAgICAgICAgICAgICAgOiBfX2xjLT5fTV9mYWxz ZW5hbWVfc2l6ZTsKCiAgIGNvbnN0IHN0cmVhbXNpemUgX193ID0gX19pby53aWR0aCgpOwog ICBpZiAoX193ID4gc3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX19sZW4pKQogICAgIHsKICAg ICAgIGNvbnN0IHN0cmVhbXNpemUgX19wbGVuID0gX193IC0gX19sZW47CiAgICAgICBfQ2hh clQqIF9fcHMKICA9IHN0YXRpY19jYXN0PF9DaGFyVCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6 ZW9mKF9DaGFyVCkKICAgICAgICogX19wbGVuKSk7CgogICAgICAgY2hhcl90cmFpdHM8X0No YXJUPjo6YXNzaWduKF9fcHMsIF9fcGxlbiwgX19maWxsKTsKICAgICAgIF9faW8ud2lkdGgo MCk7CgogICAgICAgaWYgKChfX2ZsYWdzICYgaW9zX2Jhc2U6OmFkanVzdGZpZWxkKSA9PSBp b3NfYmFzZTo6bGVmdCkKICB7CiAgICBfX3MgPSBzdGQ6Ol9fd3JpdGUoX19zLCBfX25hbWUs IF9fbGVuKTsKICAgIF9fcyA9IHN0ZDo6X193cml0ZShfX3MsIF9fcHMsIF9fcGxlbik7CiAg fQogICAgICAgZWxzZQogIHsKICAgIF9fcyA9IHN0ZDo6X193cml0ZShfX3MsIF9fcHMsIF9f cGxlbik7CiAgICBfX3MgPSBzdGQ6Ol9fd3JpdGUoX19zLCBfX25hbWUsIF9fbGVuKTsKICB9 CiAgICAgICByZXR1cm4gX19zOwogICAgIH0KICAgX19pby53aWR0aCgwKTsKICAgX19zID0g c3RkOjpfX3dyaXRlKF9fcywgX19uYW1lLCBfX2xlbik7CiB9CiAgICAgIHJldHVybiBfX3M7 CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+ CiAgICBfT3V0SXRlcgogICAgbnVtX3B1dDxfQ2hhclQsIF9PdXRJdGVyPjo6CiAgICBkb19w dXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9faW8sIGNoYXJfdHlwZSBfX2ZpbGwsIGRv dWJsZSBfX3YpIGNvbnN0CiAgICB7IHJldHVybiBfTV9pbnNlcnRfZmxvYXQoX19zLCBfX2lv LCBfX2ZpbGwsIGNoYXIoKSwgX192KTsgfQojIDExODcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9D aGFyVCwgdHlwZW5hbWUgX091dEl0ZXI+CiAgICBfT3V0SXRlcgogICAgbnVtX3B1dDxfQ2hh clQsIF9PdXRJdGVyPjo6CiAgICBkb19wdXQoaXRlcl90eXBlIF9fcywgaW9zX2Jhc2UmIF9f aW8sIGNoYXJfdHlwZSBfX2ZpbGwsCiAgICBsb25nIGRvdWJsZSBfX3YpIGNvbnN0CiAgICB7 IHJldHVybiBfTV9pbnNlcnRfZmxvYXQoX19zLCBfX2lvLCBfX2ZpbGwsICdMJywgX192KTsg fQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9PdXRJdGVyPgogICAg X091dEl0ZXIKICAgIG51bV9wdXQ8X0NoYXJULCBfT3V0SXRlcj46OgogICAgZG9fcHV0KGl0 ZXJfdHlwZSBfX3MsIGlvc19iYXNlJiBfX2lvLCBjaGFyX3R5cGUgX19maWxsLAogICAgICAg ICAgIGNvbnN0IHZvaWQqIF9fdikgY29uc3QKICAgIHsKICAgICAgY29uc3QgaW9zX2Jhc2U6 OmZtdGZsYWdzIF9fZmxhZ3MgPSBfX2lvLmZsYWdzKCk7CiAgICAgIGNvbnN0IGlvc19iYXNl OjpmbXRmbGFncyBfX2ZtdCA9IH4oaW9zX2Jhc2U6OmJhc2VmaWVsZAogICAgICB8IGlvc19i YXNlOjp1cHBlcmNhc2UpOwogICAgICBfX2lvLmZsYWdzKChfX2ZsYWdzICYgX19mbXQpIHwg KGlvc19iYXNlOjpoZXggfCBpb3NfYmFzZTo6c2hvd2Jhc2UpKTsKCiAgICAgIHR5cGVkZWYg X19nbnVfY3h4OjpfX2NvbmRpdGlvbmFsX3R5cGU8KHNpemVvZihjb25zdCB2b2lkKikKICAg ICAgICAgIDw9IHNpemVvZih1bnNpZ25lZCBsb25nKSksCiB1bnNpZ25lZCBsb25nLCB1bnNp Z25lZCBsb25nIGxvbmc+OjpfX3R5cGUgX1VJbnRQdHJUeXBlOwoKICAgICAgX19zID0gX01f aW5zZXJ0X2ludChfX3MsIF9faW8sIF9fZmlsbCwKICAgICByZWludGVycHJldF9jYXN0PF9V SW50UHRyVHlwZT4oX192KSk7CiAgICAgIF9faW8uZmxhZ3MoX19mbGFncyk7CiAgICAgIHJl dHVybiBfX3M7CiAgICB9CiMgMTIyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2xvY2FsZV9mYWNldHMudGNjIiAzCgojIDEyMzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy9sb2NhbGVfZmFjZXRzLnRjYyIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIF9fcGFkPF9DaGFyVCwgX1RyYWl0 cz46Ol9TX3BhZChpb3NfYmFzZSYgX19pbywgX0NoYXJUIF9fZmlsbCwKICAgICAgIF9DaGFy VCogX19uZXdzLCBjb25zdCBfQ2hhclQqIF9fb2xkcywKICAgICAgIHN0cmVhbXNpemUgX19u ZXdsZW4sIHN0cmVhbXNpemUgX19vbGRsZW4pCiAgICB7CiAgICAgIGNvbnN0IHNpemVfdCBf X3BsZW4gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fbmV3bGVuIC0gX19vbGRsZW4pOwogICAg ICBjb25zdCBpb3NfYmFzZTo6Zm10ZmxhZ3MgX19hZGp1c3QgPSBfX2lvLmZsYWdzKCkgJiBp b3NfYmFzZTo6YWRqdXN0ZmllbGQ7CgoKICAgICAgaWYgKF9fYWRqdXN0ID09IGlvc19iYXNl OjpsZWZ0KQogewogICBfVHJhaXRzOjpjb3B5KF9fbmV3cywgX19vbGRzLCBfX29sZGxlbik7 CiAgIF9UcmFpdHM6OmFzc2lnbihfX25ld3MgKyBfX29sZGxlbiwgX19wbGVuLCBfX2ZpbGwp OwogICByZXR1cm47CiB9CgogICAgICBzaXplX3QgX19tb2QgPSAwOwogICAgICBpZiAoX19h ZGp1c3QgPT0gaW9zX2Jhc2U6OmludGVybmFsKQogewoKCgogICAgICAgICAgY29uc3QgbG9j YWxlJiBfX2xvYyA9IF9faW8uX01fZ2V0bG9jKCk7CiAgIGNvbnN0IGN0eXBlPF9DaGFyVD4m IF9fY3R5cGUgPSB1c2VfZmFjZXQ8Y3R5cGU8X0NoYXJUPiA+KF9fbG9jKTsKCiAgIGlmIChf X2N0eXBlLndpZGVuKCctJykgPT0gX19vbGRzWzBdCiAgICAgICB8fCBfX2N0eXBlLndpZGVu KCcrJykgPT0gX19vbGRzWzBdKQogICAgIHsKICAgICAgIF9fbmV3c1swXSA9IF9fb2xkc1sw XTsKICAgICAgIF9fbW9kID0gMTsKICAgICAgICsrX19uZXdzOwogICAgIH0KICAgZWxzZSBp ZiAoX19jdHlwZS53aWRlbignMCcpID09IF9fb2xkc1swXQogICAgICYmIF9fb2xkbGVuID4g MQogICAgICYmIChfX2N0eXBlLndpZGVuKCd4JykgPT0gX19vbGRzWzFdCiAgICAgICAgIHx8 IF9fY3R5cGUud2lkZW4oJ1gnKSA9PSBfX29sZHNbMV0pKQogICAgIHsKICAgICAgIF9fbmV3 c1swXSA9IF9fb2xkc1swXTsKICAgICAgIF9fbmV3c1sxXSA9IF9fb2xkc1sxXTsKICAgICAg IF9fbW9kID0gMjsKICAgICAgIF9fbmV3cyArPSAyOwogICAgIH0KCiB9CiAgICAgIF9UcmFp dHM6OmFzc2lnbihfX25ld3MsIF9fcGxlbiwgX19maWxsKTsKICAgICAgX1RyYWl0czo6Y29w eShfX25ld3MgKyBfX3BsZW4sIF9fb2xkcyArIF9fbW9kLCBfX29sZGxlbiAtIF9fbW9kKTsK ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgogICAgX0NoYXJUKgogICAgX19h ZGRfZ3JvdXBpbmcoX0NoYXJUKiBfX3MsIF9DaGFyVCBfX3NlcCwKICAgICBjb25zdCBjaGFy KiBfX2diZWcsIHNpemVfdCBfX2dzaXplLAogICAgIGNvbnN0IF9DaGFyVCogX19maXJzdCwg Y29uc3QgX0NoYXJUKiBfX2xhc3QpCiAgICB7CiAgICAgIHNpemVfdCBfX2lkeCA9IDA7CiAg ICAgIHNpemVfdCBfX2N0ciA9IDA7CgogICAgICB3aGlsZSAoX19sYXN0IC0gX19maXJzdCA+ IF9fZ2JlZ1tfX2lkeF0KICAgICAgJiYgc3RhdGljX2Nhc3Q8c2lnbmVkIGNoYXI+KF9fZ2Jl Z1tfX2lkeF0pID4gMAogICAgICAmJiBfX2diZWdbX19pZHhdICE9IF9fZ251X2N4eDo6X19u dW1lcmljX3RyYWl0czxjaGFyPjo6X19tYXgpCiB7CiAgIF9fbGFzdCAtPSBfX2diZWdbX19p ZHhdOwogICBfX2lkeCA8IF9fZ3NpemUgLSAxID8gKytfX2lkeCA6ICsrX19jdHI7CiB9Cgog ICAgICB3aGlsZSAoX19maXJzdCAhPSBfX2xhc3QpCiAqX19zKysgPSAqX19maXJzdCsrOwoK ICAgICAgd2hpbGUgKF9fY3RyLS0pCiB7CiAgICpfX3MrKyA9IF9fc2VwOwogICBmb3IgKGNo YXIgX19pID0gX19nYmVnW19faWR4XTsgX19pID4gMDsgLS1fX2kpCiAgICAgKl9fcysrID0g Kl9fZmlyc3QrKzsKIH0KCiAgICAgIHdoaWxlIChfX2lkeC0tKQogewogICAqX19zKysgPSBf X3NlcDsKICAgZm9yIChjaGFyIF9faSA9IF9fZ2JlZ1tfX2lkeF07IF9faSA+IDA7IC0tX19p KQogICAgICpfX3MrKyA9ICpfX2ZpcnN0Kys7CiB9CgogICAgICByZXR1cm4gX19zOwogICAg fQoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgX19jeHgxMTo6IG51bXB1bmN0PGNoYXI+ OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX2N4eDExOjogbnVtcHVuY3RfYnluYW1lPGNo YXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBudW1fZ2V0PGNoYXI+OwogIGV4dGVybiB0 ZW1wbGF0ZSBjbGFzcyBudW1fcHV0PGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBj dHlwZV9ieW5hbWU8Y2hhcj47CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY3R5cGU8 Y2hhcj4qCiAgICBfX3RyeV91c2VfZmFjZXQ8Y3R5cGU8Y2hhcj4gPihjb25zdCBsb2NhbGUm KSB0aHJvdygpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bXB1bmN0PGNoYXI+ KgogICAgX190cnlfdXNlX2ZhY2V0PG51bXB1bmN0PGNoYXI+ID4oY29uc3QgbG9jYWxlJikg dGhyb3coKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBjb25zdCBudW1fcHV0PGNoYXI+Kgog ICAgX190cnlfdXNlX2ZhY2V0PG51bV9wdXQ8Y2hhcj4gPihjb25zdCBsb2NhbGUmKSB0aHJv dygpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9nZXQ8Y2hhcj4qCiAgICBf X3RyeV91c2VfZmFjZXQ8bnVtX2dldDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7 CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgY3R5cGU8Y2hhcj4mCiAgICB1c2VfZmFj ZXQ8Y3R5cGU8Y2hhcj4gPihjb25zdCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAg ICBjb25zdCBudW1wdW5jdDxjaGFyPiYKICAgIHVzZV9mYWNldDxudW1wdW5jdDxjaGFyPiA+ KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9wdXQ8 Y2hhcj4mCiAgICB1c2VfZmFjZXQ8bnVtX3B1dDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoK ICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0IG51bV9nZXQ8Y2hhcj4mCiAgICB1c2VfZmFj ZXQ8bnVtX2dldDxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUK ICAgIGJvb2wKICAgIGhhc19mYWNldDxjdHlwZTxjaGFyPiA+KGNvbnN0IGxvY2FsZSYpOwoK ICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxudW1wdW5jdDxjaGFy PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhh c19mYWNldDxudW1fcHV0PGNoYXI+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1w bGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PG51bV9nZXQ8Y2hhcj4gPihjb25zdCBsb2Nh bGUmKTsKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBfX2N4eDExOjogbnVtcHVuY3Q8d2No YXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIF9fY3h4MTE6OiBudW1wdW5jdF9ieW5h bWU8d2NoYXJfdD47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51bV9nZXQ8d2NoYXJfdD47 CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIG51bV9wdXQ8d2NoYXJfdD47CiAgZXh0ZXJuIHRl bXBsYXRlIGNsYXNzIGN0eXBlX2J5bmFtZTx3Y2hhcl90PjsKCiAgZXh0ZXJuIHRlbXBsYXRl CiAgICBjb25zdCBjdHlwZTx3Y2hhcl90PioKICAgIF9fdHJ5X3VzZV9mYWNldDxjdHlwZTx3 Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7CgogIGV4dGVybiB0ZW1wbGF0ZQog ICAgY29uc3QgbnVtcHVuY3Q8d2NoYXJfdD4qCiAgICBfX3RyeV91c2VfZmFjZXQ8bnVtcHVu Y3Q8d2NoYXJfdD4gPihjb25zdCBsb2NhbGUmKSB0aHJvdygpOwoKICBleHRlcm4gdGVtcGxh dGUKICAgIGNvbnN0IG51bV9wdXQ8d2NoYXJfdD4qCiAgICBfX3RyeV91c2VfZmFjZXQ8bnVt X3B1dDx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpIHRocm93KCk7CgogIGV4dGVybiB0ZW1w bGF0ZQogICAgY29uc3QgbnVtX2dldDx3Y2hhcl90PioKICAgIF9fdHJ5X3VzZV9mYWNldDxu dW1fZ2V0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJikgdGhyb3coKTsKCiAgZXh0ZXJuIHRl bXBsYXRlCiAgICBjb25zdCBjdHlwZTx3Y2hhcl90PiYKICAgIHVzZV9mYWNldDxjdHlwZTx3 Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRlcm4gdGVtcGxhdGUKICAgIGNvbnN0 IG51bXB1bmN0PHdjaGFyX3Q+JgogICAgdXNlX2ZhY2V0PG51bXB1bmN0PHdjaGFyX3Q+ID4o Y29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgbnVtX3B1dDx3 Y2hhcl90PiYKICAgIHVzZV9mYWNldDxudW1fcHV0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxl Jik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgY29uc3QgbnVtX2dldDx3Y2hhcl90PiYKICAg IHVzZV9mYWNldDxudW1fZ2V0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVy biB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PGN0eXBlPHdjaGFyX3Q+ID4oY29u c3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0 PG51bXB1bmN0PHdjaGFyX3Q+ID4oY29uc3QgbG9jYWxlJik7CgogIGV4dGVybiB0ZW1wbGF0 ZQogICAgYm9vbAogICAgaGFzX2ZhY2V0PG51bV9wdXQ8d2NoYXJfdD4gPihjb25zdCBsb2Nh bGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8bnVtX2dl dDx3Y2hhcl90PiA+KGNvbnN0IGxvY2FsZSYpOwoKCgoKfQojIDI2ODggIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9sb2NhbGVfZmFjZXRzLmgiIDIgMwojIDM4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfaW9zLmgiIDIgMwoKCgpuYW1lc3BhY2Ug c3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgog IHRlbXBsYXRlPHR5cGVuYW1lIF9GYWNldD4KICAgIGlubGluZSBjb25zdCBfRmFjZXQmCiAg ICBfX2NoZWNrX2ZhY2V0KGNvbnN0IF9GYWNldCogX19mKQogICAgewogICAgICBpZiAoIV9f ZikKIF9fdGhyb3dfYmFkX2Nhc3QoKTsKICAgICAgcmV0dXJuICpfX2Y7CiAgICB9CiMgNjYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19pb3MuaCIgMwogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2lj X2lvcyA6IHB1YmxpYyBpb3NfYmFzZQogICAgewoKCgoKICAgIHB1YmxpYzoKCgoKCgoKICAg ICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9U cmFpdHM6OmludF90eXBlIGludF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFp dHM6OnBvc190eXBlIHBvc190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6 Om9mZl90eXBlIG9mZl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7 CgoKCgoKCiAgICAgIHR5cGVkZWYgY3R5cGU8X0NoYXJUPiBfX2N0eXBlX3R5cGU7CiAgICAg IHR5cGVkZWYgbnVtX3B1dDxfQ2hhclQsIG9zdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBf VHJhaXRzPiA+CiAgICAgICAgICAgX19udW1fcHV0X3R5cGU7CiAgICAgIHR5cGVkZWYgbnVt X2dldDxfQ2hhclQsIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiA+CiAg ICAgICAgICAgX19udW1fZ2V0X3R5cGU7CgoKCiAgICBwcm90ZWN0ZWQ6CiAgICAgIGJhc2lj X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiogX01fdGllOwogICAgICBtdXRhYmxlIGNoYXJf dHlwZSBfTV9maWxsOwogICAgICBtdXRhYmxlIGJvb2wgX01fZmlsbF9pbml0OwogICAgICBi YXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiogX01fc3RyZWFtYnVmOwoKCiAgICAg IGNvbnN0IF9fY3R5cGVfdHlwZSogX01fY3R5cGU7CgogICAgICBjb25zdCBfX251bV9wdXRf dHlwZSogX01fbnVtX3B1dDsKCiAgICAgIGNvbnN0IF9fbnVtX2dldF90eXBlKiBfTV9udW1f Z2V0OwoKICAgIHB1YmxpYzoKIyAxMjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19pb3MuaCIgMwogICAgICBvcGVyYXRvciB2b2lkKigpIGNvbnN0CiAgICAgIHsg cmV0dXJuIHRoaXMtPmZhaWwoKSA/IDAgOiBjb25zdF9jYXN0PGJhc2ljX2lvcyo+KHRoaXMp OyB9CgoKICAgICAgYm9vbAogICAgICBvcGVyYXRvciEoKSBjb25zdAogICAgICB7IHJldHVy biB0aGlzLT5mYWlsKCk7IH0KIyAxNDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy9iYXNpY19pb3MuaCIgMwogICAgICBpb3N0YXRlCiAgICAgIHJkc3RhdGUoKSBjb25zdAog ICAgICB7IHJldHVybiBfTV9zdHJlYW1idWZfc3RhdGU7IH0KIyAxNTEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19pb3MuaCIgMwogICAgICB2b2lkCiAgICAgIGNs ZWFyKGlvc3RhdGUgX19zdGF0ZSA9IGdvb2RiaXQpOwoKCgoKCgoKICAgICAgdm9pZAogICAg ICBzZXRzdGF0ZShpb3N0YXRlIF9fc3RhdGUpCiAgICAgIHsgdGhpcy0+Y2xlYXIodGhpcy0+ cmRzdGF0ZSgpIHwgX19zdGF0ZSk7IH0KCgoKCiAgICAgIHZvaWQKICAgICAgX01fc2V0c3Rh dGUoaW9zdGF0ZSBfX3N0YXRlKQogICAgICB7CgoKIF9NX3N0cmVhbWJ1Zl9zdGF0ZSB8PSBf X3N0YXRlOwogaWYgKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIF9fc3RhdGUpCiAgIHRocm93Owog ICAgICB9CgoKCgoKCgogICAgICBib29sCiAgICAgIGdvb2QoKSBjb25zdAogICAgICB7IHJl dHVybiB0aGlzLT5yZHN0YXRlKCkgPT0gMDsgfQoKCgoKCgoKICAgICAgYm9vbAogICAgICBl b2YoKSBjb25zdAogICAgICB7IHJldHVybiAodGhpcy0+cmRzdGF0ZSgpICYgZW9mYml0KSAh PSAwOyB9CiMgMjA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfaW9z LmgiIDMKICAgICAgYm9vbAogICAgICBmYWlsKCkgY29uc3QKICAgICAgeyByZXR1cm4gKHRo aXMtPnJkc3RhdGUoKSAmIChiYWRiaXQgfCBmYWlsYml0KSkgIT0gMDsgfQoKCgoKCgoKICAg ICAgYm9vbAogICAgICBiYWQoKSBjb25zdAogICAgICB7IHJldHVybiAodGhpcy0+cmRzdGF0 ZSgpICYgYmFkYml0KSAhPSAwOyB9CiMgMjI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgaW9zdGF0ZQogICAgICBleGNlcHRpb25zKCkg Y29uc3QKICAgICAgeyByZXR1cm4gX01fZXhjZXB0aW9uOyB9CiMgMjYwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgdm9pZAogICAgICBl eGNlcHRpb25zKGlvc3RhdGUgX19leGNlcHQpCiAgICAgIHsKICAgICAgICBfTV9leGNlcHRp b24gPSBfX2V4Y2VwdDsKICAgICAgICB0aGlzLT5jbGVhcihfTV9zdHJlYW1idWZfc3RhdGUp OwogICAgICB9CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBiYXNpY19pb3MoYmFzaWNf c3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9fc2IpCiAgICAgIDogaW9zX2Jhc2UoKSwg X01fdGllKDApLCBfTV9maWxsKCksIF9NX2ZpbGxfaW5pdChmYWxzZSksIF9NX3N0cmVhbWJ1 ZigwKSwKIF9NX2N0eXBlKDApLCBfTV9udW1fcHV0KDApLCBfTV9udW1fZ2V0KDApCiAgICAg IHsgdGhpcy0+aW5pdChfX3NiKTsgfQoKCgoKCgoKICAgICAgdmlydHVhbAogICAgICB+YmFz aWNfaW9zKCkgeyB9CiMgMjk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFz aWNfaW9zLmgiIDMKICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+KgogICAg ICB0aWUoKSBjb25zdAogICAgICB7IHJldHVybiBfTV90aWU7IH0KIyAzMTAgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19pb3MuaCIgMwogICAgICBiYXNpY19vc3Ry ZWFtPF9DaGFyVCwgX1RyYWl0cz4qCiAgICAgIHRpZShiYXNpY19vc3RyZWFtPF9DaGFyVCwg X1RyYWl0cz4qIF9fdGllc3RyKQogICAgICB7CiAgICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hh clQsIF9UcmFpdHM+KiBfX29sZCA9IF9NX3RpZTsKICAgICAgICBfTV90aWUgPSBfX3RpZXN0 cjsKICAgICAgICByZXR1cm4gX19vbGQ7CiAgICAgIH0KCgoKCgoKCiAgICAgIGJhc2ljX3N0 cmVhbWJ1ZjxfQ2hhclQsIF9UcmFpdHM+KgogICAgICByZGJ1ZigpIGNvbnN0CiAgICAgIHsg cmV0dXJuIF9NX3N0cmVhbWJ1ZjsgfQojIDM1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9U cmFpdHM+KgogICAgICByZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiog X19zYik7CiMgMzY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfaW9z LmgiIDMKICAgICAgYmFzaWNfaW9zJgogICAgICBjb3B5Zm10KGNvbnN0IGJhc2ljX2lvcyYg X19yaHMpOwoKCgoKCgoKICAgICAgY2hhcl90eXBlCiAgICAgIGZpbGwoKSBjb25zdAogICAg ICB7CiBpZiAoIV9NX2ZpbGxfaW5pdCkKICAgewogICAgIF9NX2ZpbGwgPSB0aGlzLT53aWRl bignICcpOwogICAgIF9NX2ZpbGxfaW5pdCA9IHRydWU7CiAgIH0KIHJldHVybiBfTV9maWxs OwogICAgICB9CiMgMzkzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNf aW9zLmgiIDMKICAgICAgY2hhcl90eXBlCiAgICAgIGZpbGwoY2hhcl90eXBlIF9fY2gpCiAg ICAgIHsKIGNoYXJfdHlwZSBfX29sZCA9IHRoaXMtPmZpbGwoKTsKIF9NX2ZpbGwgPSBfX2No OwogcmV0dXJuIF9fb2xkOwogICAgICB9CiMgNDEzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvYmFzaWNfaW9zLmgiIDMKICAgICAgbG9jYWxlCiAgICAgIGltYnVlKGNvbnN0 IGxvY2FsZSYgX19sb2MpOwojIDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2Jhc2ljX2lvcy5oIiAzCiAgICAgIGNoYXIKICAgICAgbmFycm93KGNoYXJfdHlwZSBfX2Ms IGNoYXIgX19kZmF1bHQpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9fY2hlY2tfZmFjZXQoX01f Y3R5cGUpLm5hcnJvdyhfX2MsIF9fZGZhdWx0KTsgfQojIDQ1MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2Jhc2ljX2lvcy5oIiAzCiAgICAgIGNoYXJfdHlwZQogICAgICB3 aWRlbihjaGFyIF9fYykgY29uc3QKICAgICAgeyByZXR1cm4gX19jaGVja19mYWNldChfTV9j dHlwZSkud2lkZW4oX19jKTsgfQoKICAgIHByb3RlY3RlZDoKCgoKCgoKCiAgICAgIGJhc2lj X2lvcygpCiAgICAgIDogaW9zX2Jhc2UoKSwgX01fdGllKDApLCBfTV9maWxsKGNoYXJfdHlw ZSgpKSwgX01fZmlsbF9pbml0KGZhbHNlKSwKIF9NX3N0cmVhbWJ1ZigwKSwgX01fY3R5cGUo MCksIF9NX251bV9wdXQoMCksIF9NX251bV9nZXQoMCkKICAgICAgeyB9CgoKCgoKCgogICAg ICB2b2lkCiAgICAgIGluaXQoYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9f c2IpOwojIDUxMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX2lvcy5o IiAzCiAgICAgIHZvaWQKICAgICAgX01fY2FjaGVfbG9jYWxlKGNvbnN0IGxvY2FsZSYgX19s b2MpOwogICAgfTsKCgp9CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9i YXNpY19pb3MudGNjIiAxIDMKIyAzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L2Jhc2ljX2lvcy50Y2MiIDMKI2RlZmluZSBfQkFTSUNfSU9TX1RDQyAxCgogICAgICAgCiMg MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9iYXNpY19pb3MudGNjIiAzCgpu YW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQi KSkpCnsKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K ICAgIHZvaWQKICAgIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+OjpjbGVhcihpb3N0YXRl IF9fc3RhdGUpCiAgICB7CiAgICAgIGlmICh0aGlzLT5yZGJ1ZigpKQogX01fc3RyZWFtYnVm X3N0YXRlID0gX19zdGF0ZTsKICAgICAgZWxzZQogX01fc3RyZWFtYnVmX3N0YXRlID0gX19z dGF0ZSB8IGJhZGJpdDsKICAgICAgaWYgKHRoaXMtPmV4Y2VwdGlvbnMoKSAmIHRoaXMtPnJk c3RhdGUoKSkKIF9fdGhyb3dfaW9zX2ZhaWx1cmUoKCJiYXNpY19pb3M6OmNsZWFyIikpOwog ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg ICBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPioKICAgIGJhc2ljX2lvczxfQ2hh clQsIF9UcmFpdHM+OjpyZGJ1ZihiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiog X19zYikKICAgIHsKICAgICAgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4qIF9f b2xkID0gX01fc3RyZWFtYnVmOwogICAgICBfTV9zdHJlYW1idWYgPSBfX3NiOwogICAgICB0 aGlzLT5jbGVhcigpOwogICAgICByZXR1cm4gX19vbGQ7CiAgICB9CgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lvczxfQ2hhclQs IF9UcmFpdHM+JgogICAgYmFzaWNfaW9zPF9DaGFyVCwgX1RyYWl0cz46OmNvcHlmbXQoY29u c3QgYmFzaWNfaW9zJiBfX3JocykKICAgIHsKCgogICAgICBpZiAodGhpcyAhPSBzdGQ6Ol9f YWRkcmVzc29mKF9fcmhzKSkKIHsKCgoKCiAgIF9Xb3JkcyogX193b3JkcyA9IChfX3Jocy5f TV93b3JkX3NpemUgPD0gX1NfbG9jYWxfd29yZF9zaXplKSA/CiAgICAgICAgICAgICAgICAg ICAgICBfTV9sb2NhbF93b3JkIDogbmV3IF9Xb3Jkc1tfX3Jocy5fTV93b3JkX3NpemVdOwoK CiAgIF9DYWxsYmFja19saXN0KiBfX2NiID0gX19yaHMuX01fY2FsbGJhY2tzOwogICBpZiAo X19jYikKICAgICBfX2NiLT5fTV9hZGRfcmVmZXJlbmNlKCk7CiAgIF9NX2NhbGxfY2FsbGJh Y2tzKGVyYXNlX2V2ZW50KTsKICAgaWYgKF9NX3dvcmQgIT0gX01fbG9jYWxfd29yZCkKICAg ICB7CiAgICAgICBkZWxldGUgW10gX01fd29yZDsKICAgICAgIF9NX3dvcmQgPSAwOwogICAg IH0KICAgX01fZGlzcG9zZV9jYWxsYmFja3MoKTsKCgogICBfTV9jYWxsYmFja3MgPSBfX2Ni OwogICBmb3IgKGludCBfX2kgPSAwOyBfX2kgPCBfX3Jocy5fTV93b3JkX3NpemU7ICsrX19p KQogICAgIF9fd29yZHNbX19pXSA9IF9fcmhzLl9NX3dvcmRbX19pXTsKICAgX01fd29yZCA9 IF9fd29yZHM7CiAgIF9NX3dvcmRfc2l6ZSA9IF9fcmhzLl9NX3dvcmRfc2l6ZTsKCiAgIHRo aXMtPmZsYWdzKF9fcmhzLmZsYWdzKCkpOwogICB0aGlzLT53aWR0aChfX3Jocy53aWR0aCgp KTsKICAgdGhpcy0+cHJlY2lzaW9uKF9fcmhzLnByZWNpc2lvbigpKTsKICAgdGhpcy0+dGll KF9fcmhzLnRpZSgpKTsKICAgdGhpcy0+ZmlsbChfX3Jocy5maWxsKCkpOwogICBfTV9pb3Nf bG9jYWxlID0gX19yaHMuZ2V0bG9jKCk7CiAgIF9NX2NhY2hlX2xvY2FsZShfTV9pb3NfbG9j YWxlKTsKCiAgIF9NX2NhbGxfY2FsbGJhY2tzKGNvcHlmbXRfZXZlbnQpOwoKCiAgIHRoaXMt PmV4Y2VwdGlvbnMoX19yaHMuZXhjZXB0aW9ucygpKTsKIH0KICAgICAgcmV0dXJuICp0aGlz OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz PgogICAgbG9jYWxlCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6aW1idWUoY29u c3QgbG9jYWxlJiBfX2xvYykKICAgIHsKICAgICAgbG9jYWxlIF9fb2xkKHRoaXMtPmdldGxv YygpKTsKICAgICAgaW9zX2Jhc2U6OmltYnVlKF9fbG9jKTsKICAgICAgX01fY2FjaGVfbG9j YWxlKF9fbG9jKTsKICAgICAgaWYgKHRoaXMtPnJkYnVmKCkgIT0gMCkKIHRoaXMtPnJkYnVm KCktPnB1YmltYnVlKF9fbG9jKTsKICAgICAgcmV0dXJuIF9fb2xkOwogICAgfQoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB2b2lkCiAgICBi YXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6aW5pdChiYXNpY19zdHJlYW1idWY8X0NoYXJU LCBfVHJhaXRzPiogX19zYikKICAgIHsKCiAgICAgIGlvc19iYXNlOjpfTV9pbml0KCk7CgoK ICAgICAgX01fY2FjaGVfbG9jYWxlKF9NX2lvc19sb2NhbGUpOwojIDE0NiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Jhc2ljX2lvcy50Y2MiIDMKICAgICAgX01fZmlsbCA9 IF9DaGFyVCgpOwogICAgICBfTV9maWxsX2luaXQgPSBmYWxzZTsKCiAgICAgIF9NX3RpZSA9 IDA7CiAgICAgIF9NX2V4Y2VwdGlvbiA9IGdvb2RiaXQ7CiAgICAgIF9NX3N0cmVhbWJ1ZiA9 IF9fc2I7CiAgICAgIF9NX3N0cmVhbWJ1Zl9zdGF0ZSA9IF9fc2IgPyBnb29kYml0IDogYmFk Yml0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp dHM+CiAgICB2b2lkCiAgICBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPjo6X01fY2FjaGVf bG9jYWxlKGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7CiAgICAgIF9NX2N0eXBlID0gc3Rk OjpfX3RyeV91c2VfZmFjZXQ8X19jdHlwZV90eXBlPihfX2xvYyk7CiAgICAgIF9NX251bV9w dXQgPSBzdGQ6Ol9fdHJ5X3VzZV9mYWNldDxfX251bV9wdXRfdHlwZT4oX19sb2MpOwogICAg ICBfTV9udW1fZ2V0ID0gc3RkOjpfX3RyeV91c2VfZmFjZXQ8X19udW1fZ2V0X3R5cGU+KF9f bG9jKTsKICAgIH0KCgoKCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2lvczxjaGFy PjsKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19pb3M8d2NoYXJfdD47CgoKCgp9 CiMgNTIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvYmFzaWNfaW9zLmgiIDIg MwojIDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lvcyIgMiAzCgojZGVmaW5lIF9f Z2xpYmN4eF93YW50X2lvc19ub3JlcGxhY2UgCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMSAzCiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKICAgICAgIAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2luY29t cGxldGVfY29udGFpbmVyX2VsZW1lbnRzIDIwMTUwNUwKCgoKCgojdW5kZWYgX19nbGliY3h4 X3dhbnRfaW5jb21wbGV0ZV9jb250YWluZXJfZWxlbWVudHMKIyA3MSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf dW5jYXVnaHRfZXhjZXB0aW9ucwojIDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hbGxvY2F0b3JfdHJhaXRz X2lzX2Fsd2F5c19lcXVhbAojIDkzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19udWxsX3BvaW50ZXIKIyAx MDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jlc3VsdF9vZl9zZmluYWUKIyAxMjAgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3No YXJlZF9wdHJfYXJyYXlzCiMgMTMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19zd2FwcGFibGUKIyAxNDIg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3ZvaWRfdAojIDE1MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZW5hYmxlX3NoYXJlZF9m cm9tX3RoaXMKIyAxNjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3BlY19mdW5jcwojIDE3NSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfY29yb3V0aW5lCiMgMTg2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leGNoYW5nZV9mdW5jdGlv bgojIDE5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdlcl9zZXF1ZW5jZQojIDIwOCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfaW50ZWdyYWxfY29uc3RhbnRfY2FsbGFibGUKIyAyMTkgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2Zp bmFsCiMgMjMwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX3JldmVyc2VfaXRlcmF0b3IKIyAyNDEgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X251bGxfaXRlcmF0b3JzCiMgMjUyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc2Zvcm1h dGlvbl90cmFpdF9hbGlhc2VzCiMgMjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc3BhcmVudF9vcGVy YXRvcnMKIyAyNzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3R1cGxlX2VsZW1lbnRfdAojIDI4NSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdHVwbGVzX2J5X3R5cGUKIyAyOTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JvYnVzdF9ub25tb2Rp Znlpbmdfc2VxX29wcwojIDMxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fY2hhcnMKIyAzMjMgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2Nocm9ub191ZGxzCiMgMzM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb21wbGV4X3VkbHMKIyAz NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2dlbmVyaWNfYXNzb2NpYXRpdmVfbG9va3VwCiMgMzU2ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9tYWtlX3VuaXF1ZQojIDM2NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcXVvdGVkX3N0cmluZ19p bwojIDM3OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfc2hhcmVkX3RpbWVkX211dGV4CiMgMzg5ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9zdHJpbmdfdWRscwojIDQwMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWRkcmVzc29mX2NvbnN0ZXhw cgojIDQxMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYW55CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcHBseQojIDQz MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfYXNfY29uc3QKIyA0NDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19pc19h bHdheXNfbG9ja19mcmVlCiMgNDU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ib29sX2NvbnN0YW50CiMgNDY2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9ieXRlCiMgNDc3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oYXNfdW5pcXVlX29iamVj dF9yZXByZXNlbnRhdGlvbnMKIyA0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2hhcmR3YXJlX2ludGVyZmVy ZW5jZV9zaXplCiMgNDk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbnZva2UKIyA1MTAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2lzX2FnZ3JlZ2F0ZQojIDUyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfaW52b2NhYmxlCiMgNTMyICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9sYXVuZGVyCiMgNTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sb2dpY2FsX3RyYWl0cwoj IDU1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfbWFrZV9mcm9tX3R1cGxlCiMgNTY1ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9u b3RfZm4KIyA1NzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3R5cGVfdHJhaXRfdmFyaWFibGVfdGVtcGxhdGVz CiMgNTkyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF92YXJpYW50CiMgNjAzICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sY20KIyA2 MTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2djZAojIDYyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2NkX2xjbQojIDYzNiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfcmF3X21lbW9yeV9hbGdvcml0aG1zCiMgNjUyICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9h cnJheV9jb25zdGV4cHIKIyA2NjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X25vbm1lbWJlcl9jb250YWluZXJf YWNjZXNzCiMgNjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jbGFtcAojIDY4NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2Ft cGxlCiMgNjk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ib3llcl9tb29yZV9zZWFyY2hlcgojIDcxMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfY2hyb25vCiMgNzIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leGVjdXRpb24KIyA3MzQgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2ZpbGVzeXN0ZW0KIyA3NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2h5cG90CiMgNzU2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9tYXBfdHJ5X2VtcGxhY2UKIyA3NjcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3Bl Y2lhbF9mdW5jdGlvbnMKIyA3ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21lbW9yeV9yZXNvdXJjZQojIDc5 NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfbm9kZV9leHRyYWN0CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wYXJhbGxl bF9hbGdvcml0aG0KIyA4MTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Njb3BlZF9sb2NrCiMgODI3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9zaGFyZWRfbXV0ZXgKIyA4MzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJfd2Vh a190eXBlCiMgODQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdfdmlldwojIDg2MCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfdW5vcmRlcmVkX21hcF90cnlfZW1wbGFjZQojIDg3MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNzdW1l X2FsaWduZWQKIyA4ODIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19mbGFnX3Rlc3QKIyA4OTMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2F0b21pY19mbG9hdAojIDkwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2xvY2tf ZnJlZV90eXBlX2FsaWFzZXMKIyA5MTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19yZWYKIyA5MjYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY192YWx1ZV9pbml0aWFsaXphdGlvbgojIDkzNyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfYmluZF9mcm9udAojIDk0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RhcnRzX2VuZHNfd2l0aAoj IDk1OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfYml0X2Nhc3QKIyA5NzAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2JpdG9wcwoj IDk4MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfYm91bmRlZF9hcnJheV90cmFpdHMKIyA5OTIgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2NvbmNlcHRzCiMgMTAxMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfb3B0aW9uYWwKIyAxMDI0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9kZXN0cm95aW5nX2RlbGV0ZQojIDEwMzUgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhw cl9zdHJpbmdfdmlldwojIDEwNDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VuZGlhbgojIDEwNTcgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2ludF9wb3cyCiMgMTA2OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdlcl9jb21wYXJpc29u X2Z1bmN0aW9ucwojIDEwNzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2NvbnN0YW50X2V2YWx1YXRlZAoj IDEwOTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jaGFyX3RyYWl0cwojIDExMDYgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2lzX2xheW91dF9jb21wYXRpYmxlCiMgMTExNyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbm90 aHJvd19jb252ZXJ0aWJsZQojIDExMjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX3BvaW50ZXJfaW50ZXJj b252ZXJ0aWJsZQojIDExMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfY29uc3RhbnRzCiMgMTE1MCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfbWFrZV9vYmpfdXNpbmdfYWxsb2NhdG9yCiMgMTE2MSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcmVtb3ZlX2N2cmVmCiMgMTE3MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc291cmNlX2xvY2F0aW9uCiMg MTE4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfc3BhbgojIDExOTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NzaXplCiMgMTIx MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfdGhyZWVfd2F5X2NvbXBhcmlzb24KIyAxMjIxICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF90b19hZGRyZXNzCiMgMTIzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fYXJyYXkKIyAxMjQzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF90eXBlX2lkZW50aXR5CiMgMTI1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW53cmFwX3JlZgoj IDEyNjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9pdGVyYXRvcgojIDEyNzYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ludGVycG9sYXRlCiMgMTI4NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3V0aWxpdHkK IyAxMjk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9zaGlmdAojIDEzMTQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlcwoj IDEzMjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9udW1lcmljCiMgMTMzNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfY29uc3RleHByX2Z1bmN0aW9uYWwKIyAxMzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJf YWxnb3JpdGhtcwojIDEzNTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl90dXBsZQojIDEzNzQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2NvbnN0ZXhwcl9tZW1vcnkKIyAxMzg1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9t aWNfc2hhcmVkX3B0cgojIDE0MDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY193YWl0CiMgMTQxMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfYmFycmllcgojIDE0MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdAojIDE0MzQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jb21wbGV4CiMgMTQ0NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29u c3RleHByX2R5bmFtaWNfYWxsb2MKIyAxNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfc3Ry aW5nCiMgMTQ3NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3ZlY3RvcgojIDE0ODggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2VyYXNlX2lmCiMgMTQ5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2VuZXJpY191bm9yZGVyZWRf bG9va3VwCiMgMTUxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfanRocmVhZAojIDE1MjEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2xhdGNoCiMgMTUzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbGlzdF9yZW1vdmVfcmV0dXJuX3R5cGUKIyAx NTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9wb2x5bW9ycGhpY19hbGxvY2F0b3IKIyAxNTU0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9tb3ZlX2l0ZXJhdG9yX2NvbmNlcHQKIyAxNTY1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zZW1hcGhv cmUKIyAxNTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zbWFydF9wdHJfZm9yX292ZXJ3cml0ZQojIDE1ODcg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3N5bmNidWYKIyAxNTk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlc3dhcAojIDE2 MDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jaGFyY29udgojIDE2MjAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2NvbnN0ZXhwcl90eXBlaW5mbwojIDE2MzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2V4cGVjdGVkCiMgMTY0 MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX2FsZ29yaXRobQojIDE2NTMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ZyZWVzdGFuZGluZ19hcnJheQojIDE2NjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGlu Z19jc3RyaW5nCiMgMTY3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX2V4cGVjdGVkCiMg MTY4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX29wdGlvbmFsCiMgMTY5NyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZnJlZXN0YW5kaW5nX3N0cmluZ192aWV3CiMgMTcwOCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJl ZXN0YW5kaW5nX3ZhcmlhbnQKIyAxNzE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbnZva2VfcgojIDE3MzAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2lzX3Njb3BlZF9lbnVtCiMgMTc0MSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVmZXJl bmNlX2Zyb21fdGVtcG9yYXJ5CiMgMTc1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3RvX2NvbnRh aW5lcgojIDE3NjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc196aXAKIyAxNzc0ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9yYW5nZXNfY2h1bmsKIyAxNzg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfc2xpZGUKIyAxNzk2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1bmtfYnkKIyAxODA3ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5n ZXNfam9pbl93aXRoCiMgMTgxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3JlcGVhdAojIDE4Mjkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3Jhbmdlc19zdHJpZGUKIyAxODQwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNf Y2FydGVzaWFuX3Byb2R1Y3QKIyAxODUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfcnZhbHVl CiMgMTg2MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2FzX2NvbnN0CiMgMTg3MyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcmFuZ2VzX2VudW1lcmF0ZQojIDE4ODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19mb2xkCiMg MTg5NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2NvbnRhaW5zCiMgMTkwNiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf cmFuZ2VzX2lvdGEKIyAxOTE3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZmluZF9sYXN0CiMgMTky OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfY29uc3RleHByX2JpdHNldAojIDE5MzkgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0 ZGF0b21pY19oCiMgMTk1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWRhcHRvcl9pdGVyYXRvcl9wYWlyX2Nv bnN0cnVjdG9yCiMgMTk2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZm9ybWF0dGVycwojIDE5NzIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2ZvcndhcmRfbGlrZQojIDE5ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lvc19ub3JlcGxhY2UK IyAxOTk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9tb3ZlX29ubHlfZnVuY3Rpb24KIyAyMDA1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9vdXRfcHRyCiMgMjAxNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcHJpbnQKIyAyMDI3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9zcGFuc3RyZWFtCiMgMjAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RhY2t0cmFjZQojIDIwNDkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3N0cmluZ19jb250YWlucwojIDIwNjAgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0cmlu Z19yZXNpemVfYW5kX292ZXJ3cml0ZQojIDIwNzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX3VuZGVybHlp bmcKIyAyMDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF91bnJlYWNoYWJsZQojIDIwOTMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2ZzdHJlYW1fbmF0aXZlX2hhbmRsZQojIDIxMDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhdGlvCiMgMjEx NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfc2F0dXJhdGlvbl9hcml0aG1ldGljCiMgMjEyNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfdG9fc3RyaW5nCiMgMjEzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2VuZXJhdG9yCgojdW5kZWYgX19n bGliY3h4X3dhbnRfYWxsCiMgNTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9zIiAy IDMKIyA0MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFtIiAyIDMKCgoKCgoj ZGVmaW5lIF9fZ2xpYmN4eF93YW50X3ByaW50IAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDEgMwojIDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiAgICAgICAKIyA0OCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoKCgoKCgojZGVmaW5lIF9fZ2xpYmN4eF9pbmNv bXBsZXRlX2NvbnRhaW5lcl9lbGVtZW50cyAyMDE1MDVMCgoKCgoKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzCiMgNzEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3VuY2F1Z2h0X2V4Y2VwdGlvbnMKIyA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsb2NhdG9yX3RyYWl0 c19pc19hbHdheXNfZXF1YWwKIyA5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbnVsbF9wb2ludGVyCiMg MTA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9yZXN1bHRfb2Zfc2ZpbmFlCiMgMTIwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z aGFyZWRfcHRyX2FycmF5cwojIDEzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfc3dhcHBhYmxlCiMgMTQy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF92b2lkX3QKIyAxNTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VuYWJsZV9zaGFyZWRf ZnJvbV90aGlzCiMgMTY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3NwZWNfZnVuY3MKIyAxNzUgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2Nvcm91dGluZQojIDE4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhjaGFuZ2VfZnVuY3Rp b24KIyAxOTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfc2VxdWVuY2UKIyAyMDggIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ludGVncmFsX2NvbnN0YW50X2NhbGxhYmxlCiMgMjE5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19m aW5hbAojIDIzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9yZXZlcnNlX2l0ZXJhdG9yCiMgMjQxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9udWxsX2l0ZXJhdG9ycwojIDI1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNmb3Jt YXRpb25fdHJhaXRfYWxpYXNlcwojIDI2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNwYXJlbnRfb3Bl cmF0b3JzCiMgMjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90dXBsZV9lbGVtZW50X3QKIyAyODUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X3R1cGxlc19ieV90eXBlCiMgMjk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yb2J1c3Rfbm9ubW9k aWZ5aW5nX3NlcV9vcHMKIyAzMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2NoYXJzCiMgMzIzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9jaHJvbm9fdWRscwojIDMzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29tcGxleF91ZGxzCiMg MzQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9nZW5lcmljX2Fzc29jaWF0aXZlX2xvb2t1cAojIDM1NiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbWFrZV91bmlxdWUKIyAzNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3F1b3RlZF9zdHJpbmdf aW8KIyAzNzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF90aW1lZF9tdXRleAojIDM4OSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfc3RyaW5nX3VkbHMKIyA0MDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkZHJlc3NvZl9jb25zdGV4 cHIKIyA0MTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2FueQojIDQyMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXBwbHkKIyA0 MzMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2FzX2NvbnN0CiMgNDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfaXNf YWx3YXlzX2xvY2tfZnJlZQojIDQ1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm9vbF9jb25zdGFudAojIDQ2 NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfYnl0ZQojIDQ3NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaGFzX3VuaXF1ZV9vYmpl Y3RfcmVwcmVzZW50YXRpb25zCiMgNDg4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oYXJkd2FyZV9pbnRlcmZl cmVuY2Vfc2l6ZQojIDQ5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlCiMgNTEwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9pc19hZ2dyZWdhdGUKIyA1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ludm9jYWJsZQojIDUzMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfbGF1bmRlcgojIDU0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbG9naWNhbF90cmFpdHMK IyA1NTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X21ha2VfZnJvbV90dXBsZQojIDU2NSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf bm90X2ZuCiMgNTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRl cwojIDU5MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfdmFyaWFudAojIDYwMyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbGNtCiMg NjE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9nY2QKIyA2MjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZF9sY20KIyA2MzYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3Jhd19tZW1vcnlfYWxnb3JpdGhtcwojIDY1MiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf YXJyYXlfY29uc3RleHByCiMgNjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub25tZW1iZXJfY29udGFpbmVy X2FjY2VzcwojIDY3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2xhbXAKIyA2ODUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Nh bXBsZQojIDY5NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm95ZXJfbW9vcmVfc2VhcmNoZXIKIyA3MTIgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2Nocm9ubwojIDcyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhlY3V0aW9uCiMgNzM0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9maWxlc3lzdGVtCiMgNzQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oeXBvdAojIDc1NiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfbWFwX3RyeV9lbXBsYWNlCiMgNzY3ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3Nw ZWNpYWxfZnVuY3Rpb25zCiMgNzgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tZW1vcnlfcmVzb3VyY2UKIyA3 OTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X25vZGVfZXh0cmFjdAojIDgwNSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcGFyYWxs ZWxfYWxnb3JpdGhtCiMgODE2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zY29wZWRfbG9jawojIDgyNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfc2hhcmVkX211dGV4CiMgODM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfcHRyX3dl YWtfdHlwZQojIDg0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RyaW5nX3ZpZXcKIyA4NjAgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3Vub3JkZXJlZF9tYXBfdHJ5X2VtcGxhY2UKIyA4NzEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Fzc3Vt ZV9hbGlnbmVkCiMgODgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfZmxhZ190ZXN0CiMgODkzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9hdG9taWNfZmxvYXQKIyA5MDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19sb2Nr X2ZyZWVfdHlwZV9hbGlhc2VzCiMgOTE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfcmVmCiMgOTI2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9hdG9taWNfdmFsdWVfaW5pdGlhbGl6YXRpb24KIyA5MzcgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2JpbmRfZnJvbnQKIyA5NDggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YXJ0c19lbmRzX3dpdGgK IyA5NTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2JpdF9jYXN0CiMgOTcwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iaXRvcHMK IyA5ODEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2JvdW5kZWRfYXJyYXlfdHJhaXRzCiMgOTkyICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9jb25jZXB0cwojIDEwMTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X29wdGlvbmFsCiMgMTAyNCAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZGVzdHJveWluZ19kZWxldGUKIyAxMDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4 cHJfc3RyaW5nX3ZpZXcKIyAxMDQ2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9lbmRpYW4KIyAxMDU3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9pbnRfcG93MgojIDEwNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfY29tcGFyaXNv bl9mdW5jdGlvbnMKIyAxMDc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19jb25zdGFudF9ldmFsdWF0ZWQK IyAxMDk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcl90cmFpdHMKIyAxMTA2ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9pc19sYXlvdXRfY29tcGF0aWJsZQojIDExMTcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX25v dGhyb3dfY29udmVydGlibGUKIyAxMTI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19wb2ludGVyX2ludGVy Y29udmVydGlibGUKIyAxMTM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX2NvbnN0YW50cwojIDExNTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X21ha2Vfb2JqX3VzaW5nX2FsbG9jYXRvcgojIDExNjEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3JlbW92ZV9jdnJlZgojIDExNzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NvdXJjZV9sb2NhdGlvbgoj IDExODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NwYW4KIyAxMTk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zc2l6ZQojIDEy MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3RocmVlX3dheV9jb21wYXJpc29uCiMgMTIyMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfdG9fYWRkcmVzcwojIDEyMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2FycmF5CiMgMTI0MyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdHlwZV9pZGVudGl0eQojIDEyNTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Vud3JhcF9yZWYK IyAxMjY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfaXRlcmF0b3IKIyAxMjc2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pbnRlcnBvbGF0ZQojIDEyODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl91dGlsaXR5 CiMgMTI5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfc2hpZnQKIyAxMzE0ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXMK IyAxMzI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfbnVtZXJpYwojIDEzMzYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2NvbnN0ZXhwcl9mdW5jdGlvbmFsCiMgMTM0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHBy X2FsZ29yaXRobXMKIyAxMzU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfdHVwbGUKIyAxMzc0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb25zdGV4cHJfbWVtb3J5CiMgMTM4NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRv bWljX3NoYXJlZF9wdHIKIyAxNDAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfd2FpdAojIDE0MTIg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2JhcnJpZXIKIyAxNDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mb3JtYXQKIyAxNDM0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY29tcGxleAojIDE0NDUgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Nv bnN0ZXhwcl9keW5hbWljX2FsbG9jCiMgMTQ2NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3N0 cmluZwojIDE0NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl92ZWN0b3IKIyAxNDg4ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9lcmFzZV9pZgojIDE0OTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNfdW5vcmRlcmVk X2xvb2t1cAojIDE1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2p0aHJlYWQKIyAxNTIxICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9sYXRjaAojIDE1MzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xpc3RfcmVtb3ZlX3JldHVybl90eXBlCiMg MTU0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfcG9seW1vcnBoaWNfYWxsb2NhdG9yCiMgMTU1NCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfbW92ZV9pdGVyYXRvcl9jb25jZXB0CiMgMTU2NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2VtYXBo b3JlCiMgMTU3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfc21hcnRfcHRyX2Zvcl9vdmVyd3JpdGUKIyAxNTg3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9zeW5jYnVmCiMgMTU5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYnl0ZXN3YXAKIyAx NjA5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcmNvbnYKIyAxNjIwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9jb25zdGV4cHJfdHlwZWluZm8KIyAxNjMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leHBlY3RlZAojIDE2 NDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hbGdvcml0aG0KIyAxNjUzICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9mcmVlc3RhbmRpbmdfYXJyYXkKIyAxNjY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRp bmdfY3N0cmluZwojIDE2NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19leHBlY3RlZAoj IDE2ODYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19vcHRpb25hbAojIDE2OTcgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2ZyZWVzdGFuZGluZ19zdHJpbmdfdmlldwojIDE3MDggIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zy ZWVzdGFuZGluZ192YXJpYW50CiMgMTcxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlX3IKIyAxNzMw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9pc19zY29wZWRfZW51bQojIDE3NDEgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JlZmVy ZW5jZV9mcm9tX3RlbXBvcmFyeQojIDE3NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc190b19jb250 YWluZXIKIyAxNzYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfemlwCiMgMTc3NCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcmFuZ2VzX2NodW5rCiMgMTc4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3NsaWRlCiMgMTc5 NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcmFuZ2VzX2NodW5rX2J5CiMgMTgwNyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFu Z2VzX2pvaW5fd2l0aAojIDE4MTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19yZXBlYXQKIyAxODI5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yYW5nZXNfc3RyaWRlCiMgMTg0MCAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2Vz X2NhcnRlc2lhbl9wcm9kdWN0CiMgMTg1MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2FzX3J2YWx1 ZQojIDE4NjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19hc19jb25zdAojIDE4NzMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3Jhbmdlc19lbnVtZXJhdGUKIyAxODg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZm9sZAoj IDE4OTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19jb250YWlucwojIDE5MDYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc19pb3RhCiMgMTkxNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2ZpbmRfbGFzdAojIDE5 MjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9iaXRzZXQKIyAxOTM5ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9z dGRhdG9taWNfaAojIDE5NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkYXB0b3JfaXRlcmF0b3JfcGFpcl9j b25zdHJ1Y3RvcgojIDE5NjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdHRlcnMKIyAxOTcyICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9mb3J3YXJkX2xpa2UKIyAxOTgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pb3Nfbm9yZXBsYWNl CiMgMTk5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfbW92ZV9vbmx5X2Z1bmN0aW9uCiMgMjAwNSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfb3V0X3B0cgojIDIwMTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ByaW50CiMgMjAyNyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfc3BhbnN0cmVhbQojIDIwMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YWNrdHJhY2UKIyAyMDQ5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9zdHJpbmdfY29udGFpbnMKIyAyMDYwICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJp bmdfcmVzaXplX2FuZF9vdmVyd3JpdGUKIyAyMDcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b191bmRlcmx5 aW5nCiMgMjA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW5yZWFjaGFibGUKIyAyMDkzICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9mc3RyZWFtX25hdGl2ZV9oYW5kbGUKIyAyMTA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYXRpbwojIDIx MTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3NhdHVyYXRpb25fYXJpdGhtZXRpYwojIDIxMjYgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3RvX3N0cmluZwojIDIxMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyYXRvcgoKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2FsbAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJl YW0iIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18g KCJkZWZhdWx0IikpKQp7CgojIDY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJl YW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg ICBjbGFzcyBiYXNpY19vc3RyZWFtIDogdmlydHVhbCBwdWJsaWMgYmFzaWNfaW9zPF9DaGFy VCwgX1RyYWl0cz4KICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNo YXJfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjppbnRfdHlwZSBpbnRf dHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpwb3NfdHlwZSBwb3NfdHlw ZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSBfVHJhaXRzOjpvZmZfdHlwZSBvZmZfdHlwZTsK ICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFz aWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAg dHlwZWRlZiBiYXNpY19pb3M8X0NoYXJULCBfVHJhaXRzPiBfX2lvc190eXBlOwogICAgICB0 eXBlZGVmIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX29zdHJlYW1fdHlwZTsK ICAgICAgdHlwZWRlZiBudW1fcHV0PF9DaGFyVCwgb3N0cmVhbWJ1Zl9pdGVyYXRvcjxfQ2hh clQsIF9UcmFpdHM+ID4KICAgICAgICAgICAgIF9fbnVtX3B1dF90eXBlOwogICAgICB0eXBl ZGVmIGN0eXBlPF9DaGFyVD4gX19jdHlwZV90eXBlOwojIDkxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL29zdHJlYW0iIDMKICAgICAgZXhwbGljaXQKICAgICAgYmFzaWNfb3N0cmVh bShfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiKQogICAgICB7IHRoaXMtPmluaXQoX19zYik7IH0K CgoKCgoKICAgICAgdmlydHVhbAogICAgICB+YmFzaWNfb3N0cmVhbSgpIHsgfQoKCiAgICAg IGNsYXNzIHNlbnRyeTsKICAgICAgZnJpZW5kIGNsYXNzIHNlbnRyeTsKIyAxMTUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvb3N0cmVhbSIgMwogICAgICBfX29zdHJlYW1fdHlwZSYK ICAgICAgb3BlcmF0b3I8PChfX29zdHJlYW1fdHlwZSYgKCpfX3BmKShfX29zdHJlYW1fdHlw ZSYpKQogICAgICB7CgoKCiByZXR1cm4gX19wZigqdGhpcyk7CiAgICAgIH0KCiAgICAgIF9f b3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KF9faW9zX3R5cGUmICgqX19wZikoX19p b3NfdHlwZSYpKQogICAgICB7CgoKCiBfX3BmKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAg ICAgfQoKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoaW9zX2Jhc2Um ICgqX19wZikgKGlvc19iYXNlJikpCiAgICAgIHsKCgoKIF9fcGYoKnRoaXMpOwogcmV0dXJu ICp0aGlzOwogICAgICB9CiMgMTczICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJl YW0iIDMKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwobG9uZyBfX24p CiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChfX24pOyB9CgogICAgICBfX29zdHJlYW1fdHlw ZSYKICAgICAgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nIF9fbikKICAgICAgeyByZXR1cm4g X01faW5zZXJ0KF9fbik7IH0KCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRv cjw8KGJvb2wgX19uKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19uKTsgfQoKICAgICAg X19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoc2hvcnQgX19uKTsKCiAgICAgIF9f b3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KHVuc2lnbmVkIHNob3J0IF9fbikKICAg ICAgewoKCiByZXR1cm4gX01faW5zZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KF9f bikpOwogICAgICB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PChp bnQgX19uKTsKCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KHVuc2ln bmVkIGludCBfX24pCiAgICAgIHsKCgogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDx1 bnNpZ25lZCBsb25nPihfX24pKTsKICAgICAgfQoKCiAgICAgIF9fb3N0cmVhbV90eXBlJgog ICAgICBvcGVyYXRvcjw8KGxvbmcgbG9uZyBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2luc2Vy dChfX24pOyB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I8PCh1bnNp Z25lZCBsb25nIGxvbmcgX19uKQogICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19uKTsgfQoj IDIyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgICAgIF9fb3N0 cmVhbV90eXBlJgogICAgICBvcGVyYXRvcjw8KGRvdWJsZSBfX2YpCiAgICAgIHsgcmV0dXJu IF9NX2luc2VydChfX2YpOyB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0 b3I8PChmbG9hdCBfX2YpCiAgICAgIHsKCgogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2Fz dDxkb3VibGU+KF9fZikpOwogICAgICB9CgogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAg b3BlcmF0b3I8PChsb25nIGRvdWJsZSBfX2YpCiAgICAgIHsgcmV0dXJuIF9NX2luc2VydChf X2YpOyB9CiMgMjk3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJlYW0iIDMKICAg ICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPDwoY29uc3Qgdm9pZCogX19wKQog ICAgICB7IHJldHVybiBfTV9pbnNlcnQoX19wKTsgfQojIDMzNSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBvcGVy YXRvcjw8KF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IpOwojIDM2OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgICAgIF9fb3N0cmVhbV90eXBlJgogICAgICBwdXQo Y2hhcl90eXBlIF9fYyk7CiMgMzg3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJl YW0iIDMKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIHdyaXRlKGNvbnN0IGNoYXJfdHlw ZSogX19zLCBzdHJlYW1zaXplIF9fbik7CiMgNDAwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL29zdHJlYW0iIDMKICAgICAgX19vc3RyZWFtX3R5cGUmCiAgICAgIGZsdXNoKCk7CiMg NDEwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJlYW0iIDMKICAgICAgcG9zX3R5 cGUKICAgICAgdGVsbHAoKTsKIyA0MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvb3N0 cmVhbSIgMwogICAgICBfX29zdHJlYW1fdHlwZSYKICAgICAgc2Vla3AocG9zX3R5cGUpOwoj IDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgICAgICBfX29z dHJlYW1fdHlwZSYKICAgICAgc2Vla3Aob2ZmX3R5cGUsIGlvc19iYXNlOjpzZWVrZGlyKTsK CiAgICBwcm90ZWN0ZWQ6CiAgICAgIGJhc2ljX29zdHJlYW0oKQogICAgICB7IHRoaXMtPmlu aXQoMCk7IH0KIyA0NjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvb3N0cmVhbSIgMwog ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFsdWVUPgogX19vc3RyZWFtX3R5cGUmCiBfTV9p bnNlcnQoX1ZhbHVlVCBfX3YpOwoKICAgIHByaXZhdGU6CgogICAgICB2b2lkCiAgICAgIF9N X3dyaXRlKGNvbnN0IGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikKICAgICAgeyBz dGQ6Ol9fb3N0cmVhbV9pbnNlcnQoKnRoaXMsIF9fcywgX19uKTsgfQoKICAgIH07CiMgNDg1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJlYW0iIDMKICB0ZW1wbGF0ZSA8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgYmFzaWNfb3N0cmVh bTxfQ2hhclQsIF9UcmFpdHM+OjpzZW50cnkKICAgIHsKCiAgICAgIGJvb2wgX01fb2s7CiAg ICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX01fb3M7CgogICAgcHVibGlj OgojIDUwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgICAgIGV4 cGxpY2l0CiAgICAgIHNlbnRyeShiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f b3MpOwoKI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCiNwcmFnbWEgR0NDIGRpYWdub3N0 aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKCgoKCgoKCiAgICAgIH5z ZW50cnkoKQogICAgICB7CgogaWYgKGJvb2woX01fb3MuZmxhZ3MoKSAmIGlvc19iYXNlOjp1 bml0YnVmKSAmJiAhdW5jYXVnaHRfZXhjZXB0aW9uKCkpCiAgIHsKCiAgICAgaWYgKF9NX29z LnJkYnVmKCkgJiYgX01fb3MucmRidWYoKS0+cHVic3luYygpID09IC0xKQogICAgICAgX01f b3Muc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgIH0KICAgICAgfQojcHJhZ21hIEdD QyBkaWFnbm9zdGljIHBvcAojIDUzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3Ry ZWFtIiAzCiAgICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdAogICAgICB7IHJldHVybiBfTV9v azsgfQogICAgfTsKIyA1NTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvb3N0cmVhbSIg MwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlu bGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJh c2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIF9DaGFyVCBfX2MpCiAgICB7 CiAgICAgIGlmIChfX291dC53aWR0aCgpICE9IDApCiByZXR1cm4gX19vc3RyZWFtX2luc2Vy dChfX291dCwgJl9fYywgMSk7CiAgICAgIF9fb3V0LnB1dChfX2MpOwogICAgICByZXR1cm4g X19vdXQ7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1Ry YWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBv cGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNoYXIg X19jKQogICAgeyByZXR1cm4gKF9fb3V0IDw8IF9fb3V0LndpZGVuKF9fYykpOyB9CgoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hh ciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0 cz4mIF9fb3V0LCBjaGFyIF9fYykKICAgIHsKICAgICAgaWYgKF9fb3V0LndpZHRoKCkgIT0g MCkKIHJldHVybiBfX29zdHJlYW1faW5zZXJ0KF9fb3V0LCAmX19jLCAxKTsKICAgICAgX19v dXQucHV0KF9fYyk7CiAgICAgIHJldHVybiBfX291dDsKICAgIH0KCgogIHRlbXBsYXRlPHR5 cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRz PiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19vdXQs IHNpZ25lZCBjaGFyIF9fYykKICAgIHsgcmV0dXJuIChfX291dCA8PCBzdGF0aWNfY2FzdDxj aGFyPihfX2MpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5l IGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29z dHJlYW08Y2hhciwgX1RyYWl0cz4mIF9fb3V0LCB1bnNpZ25lZCBjaGFyIF9fYykKICAgIHsg cmV0dXJuIChfX291dCA8PCBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsgfQojIDY0OSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9vc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUg X0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08X0No YXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9U cmFpdHM+JiBfX291dCwgY29uc3QgX0NoYXJUKiBfX3MpCiAgICB7CiAgICAgIGlmICghX19z KQogX19vdXQuc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgIGVsc2UKIF9fb3N0 cmVhbV9pbnNlcnQoX19vdXQsIF9fcywKICAgIHN0YXRpY19jYXN0PHN0cmVhbXNpemU+KF9U cmFpdHM6Omxlbmd0aChfX3MpKSk7CiAgICAgIHJldHVybiBfX291dDsKICAgIH0KCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0 cmVhbTxfQ2hhclQsIF9UcmFpdHM+ICYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxf Q2hhclQsIF9UcmFpdHM+JiBfX291dCwgY29uc3QgY2hhciogX19zKTsKCgogIHRlbXBsYXRl PHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJh aXRzPiYKICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxjaGFyLCBfVHJhaXRzPiYgX19v dXQsIGNvbnN0IGNoYXIqIF9fcykKICAgIHsKICAgICAgaWYgKCFfX3MpCiBfX291dC5zZXRz dGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgZWxzZQogX19vc3RyZWFtX2luc2VydChf X291dCwgX19zLAogICAgc3RhdGljX2Nhc3Q8c3RyZWFtc2l6ZT4oX1RyYWl0czo6bGVuZ3Ro KF9fcykpKTsKICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+Jgog ICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX291dCwgY29u c3Qgc2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIChfX291dCA8PCByZWludGVycHJl dF9jYXN0PGNvbnN0IGNoYXIqPihfX3MpKTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHJh aXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08Y2hhciwgX1RyYWl0cz4gJgogICAgb3Bl cmF0b3I8PChiYXNpY19vc3RyZWFtPGNoYXIsIF9UcmFpdHM+JiBfX291dCwgY29uc3QgdW5z aWduZWQgY2hhciogX19zKQogICAgeyByZXR1cm4gKF9fb3V0IDw8IHJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgY2hhcio+KF9fcykpOyB9CiMgNzM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL29zdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U cmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAg ZW5kbChiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MpCiAgICB7IHJldHVy biBmbHVzaChfX29zLnB1dChfX29zLndpZGVuKCdcbicpKSk7IH0KIyA3NTEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvb3N0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwg X1RyYWl0cz4mCiAgICBlbmRzKGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19v cykKICAgIHsgcmV0dXJuIF9fb3MucHV0KF9DaGFyVCgpKTsgfQoKCgoKCgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19v c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBmbHVzaChiYXNpY19vc3RyZWFtPF9DaGFy VCwgX1RyYWl0cz4mIF9fb3MpCiAgICB7IHJldHVybiBfX29zLmZsdXNoKCk7IH0KIyAxMDAy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJlYW0iIDMKCn0KCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL29zdHJlYW0udGNjIiAxIDMKIyAzNSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL29zdHJlYW0udGNjIiAzCiNkZWZpbmUgX09TVFJF QU1fVENDIDEKCiAgICAgICAKIyAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L29zdHJlYW0udGNjIiAzCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9fdmlz aWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+ OjpzZW50cnk6OgogICAgc2VudHJ5KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYg X19vcykKICAgIDogX01fb2soZmFsc2UpLCBfTV9vcyhfX29zKQogICAgewoKICAgICAgaWYg KF9fb3MudGllKCkgJiYgX19vcy5nb29kKCkpCiBfX29zLnRpZSgpLT5mbHVzaCgpOwoKICAg ICAgaWYgKF9fb3MuZ29vZCgpKQogX01fb2sgPSB0cnVlOwogICAgICBlbHNlIGlmIChfX29z LmJhZCgpKQogX19vcy5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7CiAgICB9CgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBsYXRl PHR5cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz PiYKICAgICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgICAgX01faW5z ZXJ0KF9WYWx1ZVQgX192KQogICAgICB7CiBzZW50cnkgX19jZXJiKCp0aGlzKTsKIGlmIChf X2NlcmIpCiAgIHsKICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpn b29kYml0OwogICAgIHRyeQogICAgICAgewoKICBjb25zdCBfX251bV9wdXRfdHlwZSYgX19u cCA9IF9fY2hlY2tfZmFjZXQodGhpcy0+X01fbnVtX3B1dCk7CgoKCgogIGlmIChfX25wLnB1 dCgqdGhpcywgKnRoaXMsIHRoaXMtPmZpbGwoKSwgX192KS5mYWlsZWQoKSkKICAgIF9fZXJy IHw9IGlvc19iYXNlOjpiYWRiaXQ7CiAgICAgICB9CiAgICAgY2F0Y2goX19jeHhhYml2MTo6 X19mb3JjZWRfdW53aW5kJikKICAgICAgIHsKICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFz ZTo6YmFkYml0KTsKICB0aHJvdzsKICAgICAgIH0KICAgICBjYXRjaCguLi4pCiAgICAgICB7 IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgaWYgKF9fZXJy KQogICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICB9CiByZXR1cm4gKnRoaXM7CiAg ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxf Q2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPDwoc2hvcnQgX19uKQogICAgewoKCiAg ICAgIGNvbnN0IGlvc19iYXNlOjpmbXRmbGFncyBfX2ZtdCA9IHRoaXMtPmZsYWdzKCkgJiBp b3NfYmFzZTo6YmFzZWZpZWxkOwogICAgICBpZiAoX19mbXQgPT0gaW9zX2Jhc2U6Om9jdCB8 fCBfX2ZtdCA9PSBpb3NfYmFzZTo6aGV4KQogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2Fz dDxsb25nPihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oX19uKSkpOwogICAgICBlbHNl CiByZXR1cm4gX01faW5zZXJ0KHN0YXRpY19jYXN0PGxvbmc+KF9fbikpOwogICAgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19v c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1Ry YWl0cz46OgogICAgb3BlcmF0b3I8PChpbnQgX19uKQogICAgewoKCiAgICAgIGNvbnN0IGlv c19iYXNlOjpmbXRmbGFncyBfX2ZtdCA9IHRoaXMtPmZsYWdzKCkgJiBpb3NfYmFzZTo6YmFz ZWZpZWxkOwogICAgICBpZiAoX19mbXQgPT0gaW9zX2Jhc2U6Om9jdCB8fCBfX2ZtdCA9PSBp b3NfYmFzZTo6aGV4KQogcmV0dXJuIF9NX2luc2VydChzdGF0aWNfY2FzdDxsb25nPihzdGF0 aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KF9fbikpKTsKICAgICAgZWxzZQogcmV0dXJuIF9NX2lu c2VydChzdGF0aWNfY2FzdDxsb25nPihfX24pKTsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQs IF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9w ZXJhdG9yPDwoX19zdHJlYW1idWZfdHlwZSogX19zYmluKQogICAgewogICAgICBpb3NfYmFz ZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19j ZXJiKCp0aGlzKTsKICAgICAgaWYgKF9fY2VyYiAmJiBfX3NiaW4pCiB7CiAgIHRyeQogICAg IHsKICAgICAgIGlmICghX19jb3B5X3N0cmVhbWJ1ZnMoX19zYmluLCB0aGlzLT5yZGJ1Zigp KSkKICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICB9CiAgIGNhdGNoKF9fY3h4 YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3Rh dGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4u LikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsgfQogfQog ICAgICBlbHNlIGlmICghX19zYmluKQogX19lcnIgfD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAg ICAgaWYgKF9fZXJyKQogdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gKnRo aXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0 cz4KICAgIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX29zdHJl YW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICBwdXQoY2hhcl90eXBlIF9fYykKICAgIHsKCgoK CgoKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcyk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAg IGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgIHRyeQog ICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9fcHV0ID0gdGhpcy0+cmRidWYoKS0+c3B1 dGMoX19jKTsKICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19wdXQsIHRy YWl0c190eXBlOjplb2YoKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAgICB9 CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAg dGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAg ICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi YWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9 CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+ JgogICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHdyaXRlKGNvbnN0 IF9DaGFyVCogX19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsKCgoKCgoKCiAgICAgIHNlbnRy eSBfX2NlcmIoKnRoaXMpOwogICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9z dGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICB0cnkKICAgICB7CiAgICAgICBp ZiAodGhpcy0+cmRidWYoKS0+c3B1dG4oX19zLCBfX24pICE9IF9fbikKICBfX2VyciA9IGlv c19iYXNlOjpiYWRiaXQ7CiAgICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91 bndpbmQmKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRi aXQpOwogICAgICAgdGhyb3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5f TV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhp cy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiB9CiAgICAgIHJldHVybiAqdGhpczsK ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxf Q2hhclQsIF9UcmFpdHM+OjoKICAgIGZsdXNoKCkKICAgIHsKCgoKCgogICAgICBpZiAoX19z dHJlYW1idWZfdHlwZSogX19idWYgPSB0aGlzLT5yZGJ1ZigpKQogewogICBzZW50cnkgX19j ZXJiKCp0aGlzKTsKICAgaWYgKF9fY2VyYikKICAgICB7CiAgICAgICBpb3NfYmFzZTo6aW9z dGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICAgdHJ5CiAgewogICAgaWYg KHRoaXMtPnJkYnVmKCktPnB1YnN5bmMoKSA9PSAtMSkKICAgICAgX19lcnIgfD0gaW9zX2Jh c2U6OmJhZGJpdDsKICB9CiAgICAgICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndp bmQmKQogIHsKICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAg dGhyb3c7CiAgfQogICAgICAgY2F0Y2goLi4uKQogIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9z X2Jhc2U6OmJhZGJpdCk7IH0KICAgICAgIGlmIChfX2VycikKICB0aGlzLT5zZXRzdGF0ZShf X2Vycik7CiAgICAgfQogfQogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2lj X29zdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6cG9zX3R5cGUKICAgIGJhc2ljX29zdHJlYW08 X0NoYXJULCBfVHJhaXRzPjo6CiAgICB0ZWxscCgpCiAgICB7CiAgICAgIHNlbnRyeSBfX2Nl cmIoKnRoaXMpOwogICAgICBwb3NfdHlwZSBfX3JldCA9IHBvc190eXBlKC0xKTsKICAgICAg aWYgKCF0aGlzLT5mYWlsKCkpCiBfX3JldCA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtvZmYo MCwgaW9zX2Jhc2U6OmN1ciwgaW9zX2Jhc2U6Om91dCk7CiAgICAgIHJldHVybiBfX3JldDsK ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog ICAgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfb3N0cmVhbTxf Q2hhclQsIF9UcmFpdHM+OjoKICAgIHNlZWtwKHBvc190eXBlIF9fcG9zKQogICAgewogICAg ICBzZW50cnkgX19jZXJiKCp0aGlzKTsKICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpCiB7CgoK ICAgY29uc3QgcG9zX3R5cGUgX19wID0gdGhpcy0+cmRidWYoKS0+cHVic2Vla3BvcyhfX3Bv cywgaW9zX2Jhc2U6Om91dCk7CgoKICAgaWYgKF9fcCA9PSBwb3NfdHlwZShvZmZfdHlwZSgt MSkpKQogICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsKIH0KICAgICAg cmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu YW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBi YXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgc2Vla3Aob2ZmX3R5cGUgX19v ZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fZGlyKQogICAgewogICAgICBzZW50cnkgX19jZXJi KCp0aGlzKTsKICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpCiB7CgoKICAgY29uc3QgcG9zX3R5 cGUgX19wID0gdGhpcy0+cmRidWYoKS0+cHVic2Vla29mZihfX29mZiwgX19kaXIsCiAgICAg ICAgaW9zX2Jhc2U6Om91dCk7CgoKICAgaWYgKF9fcCA9PSBwb3NfdHlwZShvZmZfdHlwZSgt MSkpKQogICAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsKIH0KICAgICAg cmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVu YW1lIF9UcmFpdHM+CiAgICBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBv cGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19vdXQsIGNvbnN0 IGNoYXIqIF9fcykKICAgIHsKICAgICAgaWYgKCFfX3MpCiBfX291dC5zZXRzdGF0ZShpb3Nf YmFzZTo6YmFkYml0KTsKICAgICAgZWxzZQogewoKCiAgIGNvbnN0IHNpemVfdCBfX2NsZW4g PSBjaGFyX3RyYWl0czxjaGFyPjo6bGVuZ3RoKF9fcyk7CiAgIHRyeQogICAgIHsKICAgICAg IHN0cnVjdCBfX3B0cl9ndWFyZAogICAgICAgewogIF9DaGFyVCAqX19wOwogIF9fcHRyX2d1 YXJkIChfQ2hhclQgKl9faXApOiBfX3AoX19pcCkgeyB9CiAgfl9fcHRyX2d1YXJkKCkgeyBk ZWxldGVbXSBfX3A7IH0KICBfQ2hhclQqIF9fZ2V0KCkgeyByZXR1cm4gX19wOyB9CiAgICAg ICB9IF9fcGcgKG5ldyBfQ2hhclRbX19jbGVuXSk7CgogICAgICAgX0NoYXJUICpfX3dzID0g X19wZy5fX2dldCgpOwogICAgICAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgX19jbGVu OyArK19faSkKICBfX3dzW19faV0gPSBfX291dC53aWRlbihfX3NbX19pXSk7CiAgICAgICBf X29zdHJlYW1faW5zZXJ0KF9fb3V0LCBfX3dzLCBfX2NsZW4pOwogICAgIH0KICAgY2F0Y2go X19jeHhhYml2MTo6X19mb3JjZWRfdW53aW5kJikKICAgICB7CiAgICAgICBfX291dC5fTV9z ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIHRocm93OwogICAgIH0KICAgY2F0 Y2goLi4uKQogICAgIHsgX19vdXQuX01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0K IH0KICAgICAgcmV0dXJuIF9fb3V0OwogICAgfQoKCgoKICBleHRlcm4gdGVtcGxhdGUgY2xh c3MgYmFzaWNfb3N0cmVhbTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgZW5k bChvc3RyZWFtJik7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIGVuZHMob3N0cmVhbSYp OwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBmbHVzaChvc3RyZWFtJik7CiAgZXh0ZXJu IHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIGNoYXIpOwogIGV4dGVy biB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCB1bnNpZ25lZCBjaGFy KTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgc2ln bmVkIGNoYXIpOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJl YW0mLCBjb25zdCBjaGFyKik7CiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9y PDwob3N0cmVhbSYsIGNvbnN0IHVuc2lnbmVkIGNoYXIqKTsKICBleHRlcm4gdGVtcGxhdGUg b3N0cmVhbSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgY29uc3Qgc2lnbmVkIGNoYXIqKTsKCiAg ZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9zdHJlYW06Ol9NX2luc2VydChsb25nKTsKICBl eHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0KHVuc2lnbmVkIGxv bmcpOwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvc3RyZWFtOjpfTV9pbnNlcnQoYm9v bCk7CgogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvc3RyZWFtOjpfTV9pbnNlcnQobG9u ZyBsb25nKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3N0cmVhbTo6X01faW5zZXJ0 KHVuc2lnbmVkIGxvbmcgbG9uZyk7CgogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvc3Ry ZWFtOjpfTV9pbnNlcnQoZG91YmxlKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3N0 cmVhbTo6X01faW5zZXJ0KGxvbmcgZG91YmxlKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVh bSYgb3N0cmVhbTo6X01faW5zZXJ0KGNvbnN0IHZvaWQqKTsKCgogIGV4dGVybiB0ZW1wbGF0 ZSBjbGFzcyBiYXNpY19vc3RyZWFtPHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0 cmVhbSYgZW5kbCh3b3N0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgZW5k cyh3b3N0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgZmx1c2god29zdHJl YW0mKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIG9wZXJhdG9yPDwod29zdHJlYW0m LCB3Y2hhcl90KTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIG9wZXJhdG9yPDwod29z dHJlYW0mLCBjaGFyKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIG9wZXJhdG9yPDwo d29zdHJlYW0mLCBjb25zdCB3Y2hhcl90Kik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFt JiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwgY29uc3QgY2hhciopOwoKICBleHRlcm4gdGVtcGxh dGUgd29zdHJlYW0mIHdvc3RyZWFtOjpfTV9pbnNlcnQobG9uZyk7CiAgZXh0ZXJuIHRlbXBs YXRlIHdvc3RyZWFtJiB3b3N0cmVhbTo6X01faW5zZXJ0KHVuc2lnbmVkIGxvbmcpOwogIGV4 dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29zdHJlYW06Ol9NX2luc2VydChib29sKTsKCiAg ZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiB3b3N0cmVhbTo6X01faW5zZXJ0KGxvbmcgbG9u Zyk7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiB3b3N0cmVhbTo6X01faW5zZXJ0KHVu c2lnbmVkIGxvbmcgbG9uZyk7CgogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29zdHJl YW06Ol9NX2luc2VydChkb3VibGUpOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgd29z dHJlYW06Ol9NX2luc2VydChsb25nIGRvdWJsZSk7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3Ry ZWFtJiB3b3N0cmVhbTo6X01faW5zZXJ0KGNvbnN0IHZvaWQqKTsKCgoKCn0KIyAxMDA2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL29zdHJlYW0iIDIgMwojIDQyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2lvc3RyZWFtIiAyIDMKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2lzdHJlYW0iIDEgMwojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lz dHJlYW0iIDMKI2RlZmluZSBfR0xJQkNYWF9JU1RSRUFNIDEKCiAgICAgICAKIyAzNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCgoKCgoKCm5hbWVzcGFjZSBzdGQg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKIyA1OSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3MgYmFzaWNfaXN0cmVhbSA6 IHZpcnR1YWwgcHVibGljIGJhc2ljX2lvczxfQ2hhclQsIF9UcmFpdHM+CiAgICB7CiAgICBw dWJsaWM6CgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYg dHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlw ZW5hbWUgX1RyYWl0czo6cG9zX3R5cGUgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h bWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0 cmFpdHNfdHlwZTsKCgogICAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxfQ2hhclQsIF9U cmFpdHM+IF9fc3RyZWFtYnVmX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfaW9zPF9DaGFy VCwgX1RyYWl0cz4gX19pb3NfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19pc3RyZWFtPF9D aGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgbnVtX2dldDxf Q2hhclQsIGlzdHJlYW1idWZfaXRlcmF0b3I8X0NoYXJULCBfVHJhaXRzPiA+CiAgICAgICAg X19udW1fZ2V0X3R5cGU7CiAgICAgIHR5cGVkZWYgY3R5cGU8X0NoYXJUPiBfX2N0eXBlX3R5 cGU7CgogICAgcHJvdGVjdGVkOgoKCgoKCiAgICAgIHN0cmVhbXNpemUgX01fZ2NvdW50OwoK ICAgIHB1YmxpYzoKCgoKCgoKCiAgICAgIGV4cGxpY2l0CiAgICAgIGJhc2ljX2lzdHJlYW0o X19zdHJlYW1idWZfdHlwZSogX19zYikKICAgICAgOiBfTV9nY291bnQoc3RyZWFtc2l6ZSgw KSkKICAgICAgeyB0aGlzLT5pbml0KF9fc2IpOyB9CgoKCgoKCiAgICAgIHZpcnR1YWwKICAg ICAgfmJhc2ljX2lzdHJlYW0oKQogICAgICB7IF9NX2djb3VudCA9IHN0cmVhbXNpemUoMCk7 IH0KCgogICAgICBjbGFzcyBzZW50cnk7CiAgICAgIGZyaWVuZCBjbGFzcyBzZW50cnk7CiMg MTIxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgX19pc3Ry ZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oX19pc3RyZWFtX3R5cGUmICgqX19wZikoX19p c3RyZWFtX3R5cGUmKSkKICAgICAgeyByZXR1cm4gX19wZigqdGhpcyk7IH0KCiAgICAgIF9f aXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KF9faW9zX3R5cGUmICgqX19wZikoX19p b3NfdHlwZSYpKQogICAgICB7CiBfX3BmKCp0aGlzKTsKIHJldHVybiAqdGhpczsKICAgICAg fQoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIG9wZXJhdG9yPj4oaW9zX2Jhc2UmICgq X19wZikoaW9zX2Jhc2UmKSkKICAgICAgewogX19wZigqdGhpcyk7CiByZXR1cm4gKnRoaXM7 CiAgICAgIH0KIyAxNjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIgMwog ICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgb3BlcmF0b3I+Pihib29sJiBfX24pCiAgICAg IHsgcmV0dXJuIF9NX2V4dHJhY3QoX19uKTsgfQoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAg ICAgIG9wZXJhdG9yPj4oc2hvcnQmIF9fbik7CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAg ICAgb3BlcmF0b3I+Pih1bnNpZ25lZCBzaG9ydCYgX19uKQogICAgICB7IHJldHVybiBfTV9l eHRyYWN0KF9fbik7IH0KCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+ KGludCYgX19uKTsKCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KHVu c2lnbmVkIGludCYgX19uKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fbik7IH0KCiAg ICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KGxvbmcmIF9fbikKICAgICAg eyByZXR1cm4gX01fZXh0cmFjdChfX24pOyB9CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAg ICAgb3BlcmF0b3I+Pih1bnNpZ25lZCBsb25nJiBfX24pCiAgICAgIHsgcmV0dXJuIF9NX2V4 dHJhY3QoX19uKTsgfQoKCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+ KGxvbmcgbG9uZyYgX19uKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fbik7IH0KCiAg ICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KHVuc2lnbmVkIGxvbmcgbG9u ZyYgX19uKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fbik7IH0KIyAyMTUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYK ICAgICAgb3BlcmF0b3I+PihmbG9hdCYgX19mKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0 KF9fZik7IH0KCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KGRvdWJs ZSYgX19mKQogICAgICB7IHJldHVybiBfTV9leHRyYWN0KF9fZik7IH0KCiAgICAgIF9faXN0 cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+KGxvbmcgZG91YmxlJiBfX2YpCiAgICAgIHsg cmV0dXJuIF9NX2V4dHJhY3QoX19mKTsgfQojIDMyNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBvcGVyYXRvcj4+ KHZvaWQqJiBfX3ApCiAgICAgIHsgcmV0dXJuIF9NX2V4dHJhY3QoX19wKTsgfQojIDM0OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90 eXBlJgogICAgICBvcGVyYXRvcj4+KF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IpOwojIDM1OCAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAgIHN0cmVhbXNpemUK ICAgICAgZ2NvdW50KCkgY29uc3QKICAgICAgeyByZXR1cm4gX01fZ2NvdW50OyB9CiMgMzkx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgaW50X3R5cGUK ICAgICAgZ2V0KCk7CiMgNDA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0i IDMKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGdldChjaGFyX3R5cGUmIF9fYyk7CiMg NDMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgX19pc3Ry ZWFtX3R5cGUmCiAgICAgIGdldChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24sIGNo YXJfdHlwZSBfX2RlbGltKTsKIyA0NDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0 cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgZ2V0KGNoYXJfdHlwZSogX19z LCBzdHJlYW1zaXplIF9fbikKICAgICAgeyByZXR1cm4gdGhpcy0+Z2V0KF9fcywgX19uLCB0 aGlzLT53aWRlbignXG4nKSk7IH0KIyA0NjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv aXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgZ2V0KF9fc3RyZWFtYnVm X3R5cGUmIF9fc2IsIGNoYXJfdHlwZSBfX2RlbGltKTsKIyA0NzYgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgZ2V0 KF9fc3RyZWFtYnVmX3R5cGUmIF9fc2IpCiAgICAgIHsgcmV0dXJuIHRoaXMtPmdldChfX3Ni LCB0aGlzLT53aWRlbignXG4nKSk7IH0KIyA1MDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgZ2V0bGluZShjaGFy X3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24sIGNoYXJfdHlwZSBfX2RlbGltKTsKIyA1MTYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIgMwogICAgICBfX2lzdHJlYW1f dHlwZSYKICAgICAgZ2V0bGluZShjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAg ICAgIHsgcmV0dXJuIHRoaXMtPmdldGxpbmUoX19zLCBfX24sIHRoaXMtPndpZGVuKCdcbicp KTsgfQojIDU0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAg IF9faXN0cmVhbV90eXBlJgogICAgICBpZ25vcmUoc3RyZWFtc2l6ZSBfX24sIGludF90eXBl IF9fZGVsaW0pOwoKICAgICAgX19pc3RyZWFtX3R5cGUmCiAgICAgIGlnbm9yZShzdHJlYW1z aXplIF9fbik7CgogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgaWdub3JlKCk7CiMgNTU3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgaW50X3R5cGUK ICAgICAgcGVlaygpOwojIDU3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFt IiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICByZWFkKGNoYXJfdHlwZSogX19zLCBz dHJlYW1zaXplIF9fbik7CiMgNTk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJl YW0iIDMKICAgICAgc3RyZWFtc2l6ZQogICAgICByZWFkc29tZShjaGFyX3R5cGUqIF9fcywg c3RyZWFtc2l6ZSBfX24pOwojIDYxMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3Ry ZWFtIiAzCiAgICAgIF9faXN0cmVhbV90eXBlJgogICAgICBwdXRiYWNrKGNoYXJfdHlwZSBf X2MpOwojIDYyNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAg IF9faXN0cmVhbV90eXBlJgogICAgICB1bmdldCgpOwojIDY0NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAgIGludAogICAgICBzeW5jKCk7CiMgNjYwICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgcG9zX3R5cGUKICAg ICAgdGVsbGcoKTsKIyA2NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIg MwogICAgICBfX2lzdHJlYW1fdHlwZSYKICAgICAgc2Vla2cocG9zX3R5cGUpOwojIDY5MSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICAgIF9faXN0cmVhbV90 eXBlJgogICAgICBzZWVrZyhvZmZfdHlwZSwgaW9zX2Jhc2U6OnNlZWtkaXIpOwoKCiAgICBw cm90ZWN0ZWQ6CiAgICAgIGJhc2ljX2lzdHJlYW0oKQogICAgICA6IF9NX2djb3VudChzdHJl YW1zaXplKDApKQogICAgICB7IHRoaXMtPmluaXQoMCk7IH0KIyA3MjkgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIgMwogICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVmFs dWVUPgogX19pc3RyZWFtX3R5cGUmCiBfTV9leHRyYWN0KF9WYWx1ZVQmIF9fdik7CiAgICB9 OwoKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYKICAgIGJhc2ljX2lz dHJlYW08Y2hhcj46OgogICAgZ2V0bGluZShjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBf X24sIGNoYXJfdHlwZSBfX2RlbGltKTsKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVh bTxjaGFyPiYKICAgIGJhc2ljX2lzdHJlYW08Y2hhcj46OgogICAgaWdub3JlKHN0cmVhbXNp emUgX19uKTsKCiAgdGVtcGxhdGU8PgogICAgYmFzaWNfaXN0cmVhbTxjaGFyPiYKICAgIGJh c2ljX2lzdHJlYW08Y2hhcj46OgogICAgaWdub3JlKHN0cmVhbXNpemUgX19uLCBpbnRfdHlw ZSBfX2RlbGltKTsKCgogIHRlbXBsYXRlPD4KICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4m CiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+OjoKICAgIGdldGxpbmUoY2hhcl90eXBlKiBf X3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5cGUgX19kZWxpbSk7CgogIHRlbXBsYXRlPD4K ICAgIGJhc2ljX2lzdHJlYW08d2NoYXJfdD4mCiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+ OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbik7CgogIHRlbXBsYXRlPD4KICAgIGJhc2lj X2lzdHJlYW08d2NoYXJfdD4mCiAgICBiYXNpY19pc3RyZWFtPHdjaGFyX3Q+OjoKICAgIGln bm9yZShzdHJlYW1zaXplIF9fbiwgaW50X3R5cGUgX19kZWxpbSk7CiMgNzc1ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pc3RyZWFtPF9DaGFyVCwg X1RyYWl0cz46OnNlbnRyeQogICAgewoKICAgICAgYm9vbCBfTV9vazsKCiAgICBwdWJsaWM6 CgogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJhaXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgYmFz aWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAgICAg dHlwZWRlZiBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7 CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6Ol9fY3R5cGVfdHlwZSBf X2N0eXBlX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUg X19pbnRfdHlwZTsKIyA4MTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIg MwogICAgICBleHBsaWNpdAogICAgICBzZW50cnkoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U cmFpdHM+JiBfX2lzLCBib29sIF9fbm9za2lwd3MgPSBmYWxzZSk7CiMgODI0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICAgICAgb3BlcmF0b3IgYm9vbCgpIGNv bnN0CiAgICAgIHsgcmV0dXJuIF9NX29rOyB9CiAgICB9OwojIDg0MCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0 eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgog ICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9faW4sIF9D aGFyVCYgX19jKTsKCiAgdGVtcGxhdGU8Y2xhc3MgX1RyYWl0cz4KICAgIGlubGluZSBiYXNp Y19pc3RyZWFtPGNoYXIsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFt PGNoYXIsIF9UcmFpdHM+JiBfX2luLCB1bnNpZ25lZCBjaGFyJiBfX2MpCiAgICB7IHJldHVy biAoX19pbiA+PiByZWludGVycHJldF9jYXN0PGNoYXImPihfX2MpKTsgfQoKICB0ZW1wbGF0 ZTxjbGFzcyBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0 cz4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08Y2hhciwgX1RyYWl0cz4mIF9faW4s IHNpZ25lZCBjaGFyJiBfX2MpCiAgICB7IHJldHVybiAoX19pbiA+PiByZWludGVycHJldF9j YXN0PGNoYXImPihfX2MpKTsgfQoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cz4KICAgIHZvaWQKICAgIF9faXN0cmVhbV9leHRyYWN0KGJhc2ljX2lz dHJlYW08X0NoYXJULCBfVHJhaXRzPiYsIF9DaGFyVCosIHN0cmVhbXNpemUpOwoKICB2b2lk IF9faXN0cmVhbV9leHRyYWN0KGlzdHJlYW0mLCBjaGFyKiwgc3RyZWFtc2l6ZSk7CiMgODkw ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBfX2F0dHJpYnV0ZV9fKChfX25v bm51bGxfXygyKSwgX19hY2Nlc3NfXyhfX3dyaXRlX29ubHlfXywgMikpKQogICAgaW5saW5l IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNf aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLCBfQ2hhclQqIF9fcykKICAgIHsKCgoK ICAgICAgc2l6ZV90IF9fbiA9IF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShfX3MsIDApOwogICAg ICBpZiAoX19uIDwgc2l6ZW9mKF9DaGFyVCkpCiB7CgogICA7CgogICBfX2luLndpZHRoKDAp OwogICBfX2luLnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsKIH0KICAgICAgZWxzZSBp ZiAoX19uICE9IChzaXplX3QpLTEpCiB7CiAgIF9fbiAvPSBzaXplb2YoX0NoYXJUKTsKICAg c3RyZWFtc2l6ZSBfX3cgPSBfX2luLndpZHRoKCk7CiAgIHN0ZDo6X19pc3RyZWFtX2V4dHJh Y3QoX19pbiwgX19zLCBfX24pOwogICBpZiAoX19pbi5nb29kKCkgJiYgKF9fdyA8PSAwIHx8 IF9fbiA8IF9fdykpCiAgICAgewoKCiAgICAgICBjb25zdCB0eXBlbmFtZSBfVHJhaXRzOjpp bnRfdHlwZSBfX2MgPSBfX2luLnJkYnVmKCktPnNnZXRjKCk7CiAgICAgICBjb25zdCBib29s IF9fZW9mID0gX1RyYWl0czo6ZXFfaW50X3R5cGUoX19jLCBfVHJhaXRzOjplb2YoKSk7CiAg ICAgICBpZiAoX19idWlsdGluX2V4cGVjdChfX2VvZiwgdHJ1ZSkpCiAgX19pbi5zZXRzdGF0 ZShpb3NfYmFzZTo6ZW9mYml0KTsKICAgICB9CiB9CiAgICAgIGVsc2UKCiB7CgogICBzdHJl YW1zaXplIF9fbiA9IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzdHJlYW1zaXplPjo6 X19tYXg7CiAgIF9fbiAvPSBzaXplb2YoX0NoYXJUKTsKICAgc3RkOjpfX2lzdHJlYW1fZXh0 cmFjdChfX2luLCBfX3MsIF9fbik7CiB9CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKICB0 ZW1wbGF0ZTxjbGFzcyBfVHJhaXRzPgogICAgX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18o MiksIF9fYWNjZXNzX18oX193cml0ZV9vbmx5X18sIDIpKSkKICAgIGlubGluZSBiYXNpY19p c3RyZWFtPGNoYXIsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPGNo YXIsIF9UcmFpdHM+JiBfX2luLCB1bnNpZ25lZCBjaGFyKiBfX3MpCiAgICB7IHJldHVybiBf X2luID4+IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KF9fcyk7IH0KCiAgdGVtcGxhdGU8Y2xh c3MgX1RyYWl0cz4KICAgIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKDIpLCBfX2FjY2Vz c19fKF9fd3JpdGVfb25seV9fLCAyKSkpCiAgICBpbmxpbmUgYmFzaWNfaXN0cmVhbTxjaGFy LCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxjaGFyLCBfVHJhaXRz PiYgX19pbiwgc2lnbmVkIGNoYXIqIF9fcykKICAgIHsgcmV0dXJuIF9faW4gPj4gcmVpbnRl cnByZXRfY2FzdDxjaGFyKj4oX19zKTsgfQojIDk3OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9pc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBf VHJhaXRzPgogICAgY2xhc3MgYmFzaWNfaW9zdHJlYW0KICAgIDogcHVibGljIGJhc2ljX2lz dHJlYW08X0NoYXJULCBfVHJhaXRzPiwKICAgICAgcHVibGljIGJhc2ljX29zdHJlYW08X0No YXJULCBfVHJhaXRzPgogICAgewogICAgcHVibGljOgoKCgogICAgICB0eXBlZGVmIF9DaGFy VCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6aW50X3R5cGUg aW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6cG9zX3R5cGUgcG9z X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX1RyYWl0czo6b2ZmX3R5cGUgb2ZmX3R5 cGU7CiAgICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKCgogICAgICB0eXBlZGVm IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAg dHlwZWRlZiBiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19vc3RyZWFtX3R5cGU7 CgoKCgoKCgogICAgICBleHBsaWNpdAogICAgICBiYXNpY19pb3N0cmVhbShiYXNpY19zdHJl YW1idWY8X0NoYXJULCBfVHJhaXRzPiogX19zYikKICAgICAgOiBfX2lzdHJlYW1fdHlwZShf X3NiKSwgX19vc3RyZWFtX3R5cGUoX19zYikgeyB9CgoKCgogICAgICB2aXJ0dWFsCiAgICAg IH5iYXNpY19pb3N0cmVhbSgpIHsgfQoKICAgIHByb3RlY3RlZDoKICAgICAgYmFzaWNfaW9z dHJlYW0oKQogICAgICA6IF9faXN0cmVhbV90eXBlKCksIF9fb3N0cmVhbV90eXBlKCkgeyB9 CiMgMTA0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAzCiAgICB9Owoj IDEwNjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaXN0cmVhbSIgMwogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08 X0NoYXJULCBfVHJhaXRzPiYKICAgIHdzKGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz PiYgX19pcyk7CiMgMTEwMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAz Cgp9CgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pc3RyZWFtLnRjYyIg MSAzCiMgMzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9pc3RyZWFtLnRjYyIg MwojZGVmaW5lIF9JU1RSRUFNX1RDQyAxCgogICAgICAgCiMgMzggIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9pc3RyZWFtLnRjYyIgMwoKCgpuYW1lc3BhY2Ugc3RkIF9fYXR0 cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08 X0NoYXJULCBfVHJhaXRzPjo6c2VudHJ5OjoKICAgIHNlbnRyeShiYXNpY19pc3RyZWFtPF9D aGFyVCwgX1RyYWl0cz4mIF9faW4sIGJvb2wgX19ub3NraXApIDogX01fb2soZmFsc2UpCiAg ICB7CiAgICAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7 CiAgICAgIGlmIChfX2luLmdvb2QoKSkKIHsKICAgdHJ5CiAgICAgewogICAgICAgaWYgKF9f aW4udGllKCkpCiAgX19pbi50aWUoKS0+Zmx1c2goKTsKICAgICAgIGlmICghX19ub3NraXAg JiYgYm9vbChfX2luLmZsYWdzKCkgJiBpb3NfYmFzZTo6c2tpcHdzKSkKICB7CiAgICBjb25z dCBfX2ludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5cGU6OmVvZigpOwogICAgX19zdHJlYW1i dWZfdHlwZSogX19zYiA9IF9faW4ucmRidWYoKTsKICAgIF9faW50X3R5cGUgX19jID0gX19z Yi0+c2dldGMoKTsKCiAgICBjb25zdCBfX2N0eXBlX3R5cGUmIF9fY3QgPSBfX2NoZWNrX2Zh Y2V0KF9faW4uX01fY3R5cGUpOwogICAgd2hpbGUgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5 cGUoX19jLCBfX2VvZikKICAgICYmIF9fY3QuaXMoY3R5cGVfYmFzZTo6c3BhY2UsCiAgICAg ICAgdHJhaXRzX3R5cGU6OnRvX2NoYXJfdHlwZShfX2MpKSkKICAgICAgX19jID0gX19zYi0+ c25leHRjKCk7CgoKCgogICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9f ZW9mKSkKICAgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICB9CiAgICAgfQogICBj YXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAgICAgIF9faW4u X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAg IGNhdGNoKC4uLikKICAgICB7IF9faW4uX01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7 IH0KIH0KCiAgICAgIGlmIChfX2luLmdvb2QoKSAmJiBfX2VyciA9PSBpb3NfYmFzZTo6Z29v ZGJpdCkKIF9NX29rID0gdHJ1ZTsKICAgICAgZWxzZQogewogICBfX2VyciB8PSBpb3NfYmFz ZTo6ZmFpbGJpdDsKICAgX19pbi5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICB9CgogIHRlbXBs YXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHRlbXBsYXRlPHR5 cGVuYW1lIF9WYWx1ZVQ+CiAgICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK ICAgICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgICAgX01fZXh0cmFj dChfVmFsdWVUJiBfX3YpCiAgICAgIHsKIHNlbnRyeSBfX2NlcmIoKnRoaXMsIGZhbHNlKTsK IGlmIChfX2NlcmIpCiAgIHsKICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19i YXNlOjpnb29kYml0OwogICAgIHRyeQogICAgICAgewoKICBjb25zdCBfX251bV9nZXRfdHlw ZSYgX19uZyA9IF9fY2hlY2tfZmFjZXQodGhpcy0+X01fbnVtX2dldCk7CgoKCgogIF9fbmcu Z2V0KCp0aGlzLCAwLCAqdGhpcywgX19lcnIsIF9fdik7CiAgICAgICB9CiAgICAgY2F0Y2go X19jeHhhYml2MTo6X19mb3JjZWRfdW53aW5kJikKICAgICAgIHsKICB0aGlzLT5fTV9zZXRz dGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICB0aHJvdzsKICAgICAgIH0KICAgICBjYXRjaCgu Li4pCiAgICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAg ICAgaWYgKF9fZXJyKQogICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICB9CiByZXR1 cm4gKnRoaXM7CiAgICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFz aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oc2hvcnQmIF9f bikKICAgIHsKCgogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCBmYWxzZSk7CiAgICAgIGlm IChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdv b2RiaXQ7CiAgIHRyeQogICAgIHsKICAgICAgIGxvbmcgX19sOwoKICAgICAgIGNvbnN0IF9f bnVtX2dldF90eXBlJiBfX25nID0gX19jaGVja19mYWNldCh0aGlzLT5fTV9udW1fZ2V0KTsK CgoKCiAgICAgICBfX25nLmdldCgqdGhpcywgMCwgKnRoaXMsIF9fZXJyLCBfX2wpOwoKCgog ICAgICAgaWYgKF9fbCA8IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzaG9ydD46Ol9f bWluKQogIHsKICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgX19uID0gX19n bnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPHNob3J0Pjo6X19taW47CiAgfQogICAgICAgZWxz ZSBpZiAoX19sID4gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPHNob3J0Pjo6X19tYXgp CiAgewogICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICBfX24gPSBfX2dudV9j eHg6Ol9fbnVtZXJpY190cmFpdHM8c2hvcnQ+OjpfX21heDsKICB9CiAgICAgICBlbHNlCiAg X19uID0gc2hvcnQoX19sKTsKICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2Vk X3Vud2luZCYpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJh ZGJpdCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMt Pl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0 aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNf aXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U cmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oaW50JiBfX24pCiAgICB7CgoKICAgICAgc2VudHJ5 IF9fY2VyYigqdGhpcywgZmFsc2UpOwogICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFz ZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICB0cnkKICAgICB7CiAg ICAgICBsb25nIF9fbDsKCiAgICAgICBjb25zdCBfX251bV9nZXRfdHlwZSYgX19uZyA9IF9f Y2hlY2tfZmFjZXQodGhpcy0+X01fbnVtX2dldCk7CgoKCgogICAgICAgX19uZy5nZXQoKnRo aXMsIDAsICp0aGlzLCBfX2VyciwgX19sKTsKCgoKICAgICAgIGlmIChfX2wgPCBfX2dudV9j eHg6Ol9fbnVtZXJpY190cmFpdHM8aW50Pjo6X19taW4pCiAgewogICAgX19lcnIgfD0gaW9z X2Jhc2U6OmZhaWxiaXQ7CiAgICBfX24gPSBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8 aW50Pjo6X19taW47CiAgfQogICAgICAgZWxzZSBpZiAoX19sID4gX19nbnVfY3h4OjpfX251 bWVyaWNfdHJhaXRzPGludD46Ol9fbWF4KQogIHsKICAgIF9fZXJyIHw9IGlvc19iYXNlOjpm YWlsYml0OwogICAgX19uID0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPGludD46Ol9f bWF4OwogIH0KICAgICAgIGVsc2UKICBfX24gPSBpbnQoX19sKTsKICAgICB9CiAgIGNhdGNo KF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAgdGhpcy0+X01f c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAgIGNh dGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9 CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJl dHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFz aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIG9wZXJhdG9yPj4oX19zdHJlYW1i dWZfdHlwZSogX19zYm91dCkKICAgIHsKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIg PSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgZmFsc2Up OwogICAgICBpZiAoX19jZXJiICYmIF9fc2JvdXQpCiB7CiAgIHRyeQogICAgIHsKICAgICAg IGJvb2wgX19pbmVvZjsKICAgICAgIGlmICghX19jb3B5X3N0cmVhbWJ1ZnNfZW9mKHRoaXMt PnJkYnVmKCksIF9fc2JvdXQsIF9faW5lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpmYWls Yml0OwogICAgICAgaWYgKF9faW5lb2YpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsK ICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewog ICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOwogICAgICAgdGhy b3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3Nf YmFzZTo6ZmFpbGJpdCk7IH0KIH0KICAgICAgZWxzZSBpZiAoIV9fc2JvdXQpCiBfX2VyciB8 PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogdGhpcy0+c2V0c3RhdGUo X19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1l IF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2ljX2lzdHJlYW08 X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUKICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBf VHJhaXRzPjo6CiAgICBnZXQodm9pZCkKICAgIHsKICAgICAgY29uc3QgaW50X3R5cGUgX19l b2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgIGludF90eXBlIF9fYyA9IF9fZW9mOwog ICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlv c19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAg ICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAgewogICAgICAgX19jID0gdGhpcy0+cmRi dWYoKS0+c2J1bXBjKCk7CgogICAgICAgaWYgKCF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo X19jLCBfX2VvZikpCiAgX01fZ2NvdW50ID0gMTsKICAgICAgIGVsc2UKICBfX2VyciB8PSBp b3NfYmFzZTo6ZW9mYml0OwogICAgIH0KICAgY2F0Y2goX19jeHhhYml2MTo6X19mb3JjZWRf dW53aW5kJikKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFk Yml0KTsKICAgICAgIHRocm93OwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsgdGhpcy0+ X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAgICAgaWYgKCFfTV9nY291 bnQpCiBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKICAgICAgaWYgKF9fZXJyKQogdGhp cy0+c2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gX19jOwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFt PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46 OgogICAgZ2V0KGNoYXJfdHlwZSYgX19jKQogICAgewogICAgICBfTV9nY291bnQgPSAwOwog ICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAg ICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAg dHJ5CiAgICAgewogICAgICAgY29uc3QgaW50X3R5cGUgX19jYiA9IHRoaXMtPnJkYnVmKCkt PnNidW1wYygpOwoKICAgICAgIGlmICghdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fY2Is IHRyYWl0c190eXBlOjplb2YoKSkpCiAgewogICAgX01fZ2NvdW50ID0gMTsKICAgIF9fYyA9 IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jYik7CiAgfQogICAgICAgZWxzZQogIF9f ZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpf X2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19i YXNlOjpiYWRiaXQpOwogICAgICAgdGhyb3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAg eyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogfQogICAgICBpZiAo IV9NX2djb3VudCkKIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19l cnIpCiB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0K CiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFz aWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQs IF9UcmFpdHM+OjoKICAgIGdldChjaGFyX3R5cGUqIF9fcywgc3RyZWFtc2l6ZSBfX24sIGNo YXJfdHlwZSBfX2RlbGltKQogICAgewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3Nf YmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkg X19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAg ewogICAgICAgY29uc3QgaW50X3R5cGUgX19pZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50 X3R5cGUoX19kZWxpbSk7CiAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190 eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IgPSB0aGlzLT5yZGJ1 ZigpOwogICAgICAgaW50X3R5cGUgX19jID0gX19zYi0+c2dldGMoKTsKCiAgICAgICB3aGls ZSAoX01fZ2NvdW50ICsgMSA8IF9fbgogICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRf dHlwZShfX2MsIF9fZW9mKQogICAgICAgJiYgIXRyYWl0c190eXBlOjplcV9pbnRfdHlwZShf X2MsIF9faWRlbGltKSkKICB7CiAgICAqX19zKysgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90 eXBlKF9fYyk7CiAgICArK19NX2djb3VudDsKICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOwog IH0KICAgICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAg X19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6 Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9z X2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAg ICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiB9CgoKICAgICAg aWYgKF9fbiA+IDApCiAqX19zID0gY2hhcl90eXBlKCk7CiAgICAgIGlmICghX01fZ2NvdW50 KQogX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7CiAgICAgIGlmIChfX2VycikKIHRoaXMt PnNldHN0YXRlKF9fZXJyKTsKICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFt PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46 OgogICAgZ2V0KF9fc3RyZWFtYnVmX3R5cGUmIF9fc2IsIGNoYXJfdHlwZSBfX2RlbGltKQog ICAgewogICAgICBfTV9nY291bnQgPSAwOwogICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2Vy ciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVl KTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAgdHJ5CiAgICAgewogICAgICAgY29uc3QgaW50 X3R5cGUgX19pZGVsaW0gPSB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoX19kZWxpbSk7CiAg ICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAg IF9fc3RyZWFtYnVmX3R5cGUqIF9fdGhpc19zYiA9IHRoaXMtPnJkYnVmKCk7CiAgICAgICBp bnRfdHlwZSBfX2MgPSBfX3RoaXNfc2ItPnNnZXRjKCk7CiAgICAgICBjaGFyX3R5cGUgX19j MiA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBfX2djb3VudCA9IDA7CgogICAgICAgd2hpbGUgKCF0cmFpdHNfdHlwZTo6ZXFf aW50X3R5cGUoX19jLCBfX2VvZikKICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5 cGUoX19jLCBfX2lkZWxpbSkKICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUo X19zYi5zcHV0YyhfX2MyKSwgX19lb2YpKQogIHsKICAgICsrX19nY291bnQ7CiAgICBfX2Mg PSBfX3RoaXNfc2ItPnNuZXh0YygpOwogICAgX19jMiA9IHRyYWl0c190eXBlOjp0b19jaGFy X3R5cGUoX19jKTsKICB9CiAgICAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9f YywgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CgoKICAgICAgIGlmIChf X2djb3VudCA8PSBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8c3RyZWFtc2l6ZT46Ol9f bWF4KQogIF9NX2djb3VudCA9IF9fZ2NvdW50OwogICAgICAgZWxzZQogIF9NX2djb3VudCA9 IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzdHJlYW1zaXplPjo6X19tYXg7CiAgICAg fQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAgICAg IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgdGhyb3c7CiAg ICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6 YmFkYml0KTsgfQogfQogICAgICBpZiAoIV9NX2djb3VudCkKIF9fZXJyIHw9IGlvc19iYXNl OjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiAg ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0 eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgog ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGdldGxpbmUoY2hhcl90 eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uLCBjaGFyX3R5cGUgX19kZWxpbSkKICAgIHsKICAg ICAgX01fZ2NvdW50ID0gMDsKICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3Nf YmFzZTo6Z29vZGJpdDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAg IGlmIChfX2NlcmIpCiAgICAgICAgewogICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsKICAg ICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2lkZWxpbSA9IHRyYWl0c190eXBlOjp0b19p bnRfdHlwZShfX2RlbGltKTsKICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9 IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBf X3NiID0gdGhpcy0+cmRidWYoKTsKICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3Ni LT5zZ2V0YygpOwoKICAgICAgICAgICAgICB3aGlsZSAoX01fZ2NvdW50ICsgMSA8IF9fbgog ICAgICAgICAgICAgICAgICAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywg X19lb2YpCiAgICAgICAgICAgICAgICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50X3R5 cGUoX19jLCBfX2lkZWxpbSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICpfX3MrKyA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5cGUoX19jKTsKICAgICAgICAgICAg ICAgICAgX19jID0gX19zYi0+c25leHRjKCk7CiAgICAgICAgICAgICAgICAgICsrX01fZ2Nv dW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh0cmFpdHNfdHlwZTo6 ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgICAgICAgICAgICBfX2VyciB8PSBpb3Nf YmFzZTo6ZW9mYml0OwogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9faWRl bGltKSkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBfX3Ni LT5zYnVtcGMoKTsKICAgICAgICAgICAgICAgICAgICAgICsrX01fZ2NvdW50OwogICAgICAg ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg ICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICAgICAgICAgICAgfQogICAg ICAgICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAg ewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0 aHJvdzsKICAgICB9CiAgICAgICAgICBjYXRjaCguLi4pCiAgICAgICAgICAgIHsgdGhpcy0+ X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgICAgICB9CgoKICAgICAgaWYg KF9fbiA+IDApCiAqX19zID0gY2hhcl90eXBlKCk7CiAgICAgIGlmICghX01fZ2NvdW50KQog ICAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiAg ICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICAgICByZXR1cm4gKnRoaXM7CiAgICB9 CgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAg IGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIGJhc2ljX2lzdHJlYW08X0No YXJULCBfVHJhaXRzPjo6CiAgICBpZ25vcmUodm9pZCkKICAgIHsKICAgICAgX01fZ2NvdW50 ID0gMDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2Nl cmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7 CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IGludF90eXBlIF9fZW9mID0gdHJhaXRzX3R5 cGU6OmVvZigpOwogICAgICAgX19zdHJlYW1idWZfdHlwZSogX19zYiA9IHRoaXMtPnJkYnVm KCk7CgogICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX3NiLT5zYnVtcGMo KSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICBlbHNlCiAg X01fZ2NvdW50ID0gMTsKICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vu d2luZCYpCiAgICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJp dCk7CiAgICAgICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9N X3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlz LT5zZXRzdGF0ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVt cGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0 cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp dHM+OjoKICAgIGlnbm9yZShzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAgX01fZ2NvdW50 ID0gMDsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2Nl cmIgJiYgX19uID4gMCkKICAgICAgICB7CiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBf X2VyciA9IGlvc19iYXNlOjpnb29kYml0OwogICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsK ICAgICAgICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2Yo KTsKICAgICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYo KTsKICAgICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwojIDU0NSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2lzdHJlYW0udGNjIiAzCiAgICAgICBi b29sIF9fbGFyZ2VfaWdub3JlID0gZmFsc2U7CiAgICAgICB3aGlsZSAodHJ1ZSkKICB7CiAg ICB3aGlsZSAoX01fZ2NvdW50IDwgX19uCiAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90 eXBlKF9fYywgX19lb2YpKQogICAgICB7CiAgICAgICAgKytfTV9nY291bnQ7CiAgICAgICAg X19jID0gX19zYi0+c25leHRjKCk7CiAgICAgIH0KICAgIGlmIChfX24gPT0gX19nbnVfY3h4 OjpfX251bWVyaWNfdHJhaXRzPHN0cmVhbXNpemU+OjpfX21heAogICAgICAgICYmICF0cmFp dHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgIHsKICAgICAgICBfTV9n Y291bnQgPQogICBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8c3RyZWFtc2l6ZT46Ol9f bWluOwogICAgICAgIF9fbGFyZ2VfaWdub3JlID0gdHJ1ZTsKICAgICAgfQogICAgZWxzZQog ICAgICBicmVhazsKICB9CgogICAgICAgaWYgKF9fbiA9PSBfX2dudV9jeHg6Ol9fbnVtZXJp Y190cmFpdHM8c3RyZWFtc2l6ZT46Ol9fbWF4KQogIHsKICAgIGlmIChfX2xhcmdlX2lnbm9y ZSkKICAgICAgX01fZ2NvdW50ID0gX19nbnVfY3h4OjpfX251bWVyaWNfdHJhaXRzPHN0cmVh bXNpemU+OjpfX21heDsKCiAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywg X19lb2YpKQogICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0OwogIH0KICAgICAgIGVs c2UgaWYgKF9NX2djb3VudCA8IF9fbikKICB7CiAgICBpZiAodHJhaXRzX3R5cGU6OmVxX2lu dF90eXBlKF9fYywgX19lb2YpKQogICAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZW9mYml0Owog IH0KICAgICAgICAgICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQm KQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwog ICAgICAgdGhyb3c7CiAgICAgfQogICAgICAgICAgY2F0Y2goLi4uKQogICAgICAgICAgICB7 IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgICAgICAgICBpZiAo X19lcnIpCiAgICAgICAgICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKICAgICAgICB9CiAg ICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0 eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+Jgog ICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGlnbm9yZShzdHJlYW1z aXplIF9fbiwgaW50X3R5cGUgX19kZWxpbSkKICAgIHsKICAgICAgX01fZ2NvdW50ID0gMDsK ICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIgJiYg X19uID4gMCkKICAgICAgICB7CiAgICAgICAgICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9 IGlvc19iYXNlOjpnb29kYml0OwogICAgICAgICAgdHJ5CiAgICAgICAgICAgIHsKICAgICAg ICAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRyYWl0c190eXBlOjplb2YoKTsKICAg ICAgICAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYoKTsKICAg ICAgICAgICAgICBpbnRfdHlwZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKCiAgICAgICBib29s IF9fbGFyZ2VfaWdub3JlID0gZmFsc2U7CiAgICAgICB3aGlsZSAodHJ1ZSkKICB7CiAgICB3 aGlsZSAoX01fZ2NvdW50IDwgX19uCiAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBl KF9fYywgX19lb2YpCiAgICAmJiAhdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fYywgX19k ZWxpbSkpCiAgICAgIHsKICAgICAgICArK19NX2djb3VudDsKICAgICAgICBfX2MgPSBfX3Ni LT5zbmV4dGMoKTsKICAgICAgfQogICAgaWYgKF9fbiA9PSBfX2dudV9jeHg6Ol9fbnVtZXJp Y190cmFpdHM8c3RyZWFtc2l6ZT46Ol9fbWF4CiAgICAgICAgJiYgIXRyYWl0c190eXBlOjpl cV9pbnRfdHlwZShfX2MsIF9fZW9mKQogICAgICAgICYmICF0cmFpdHNfdHlwZTo6ZXFfaW50 X3R5cGUoX19jLCBfX2RlbGltKSkKICAgICAgewogICAgICAgIF9NX2djb3VudCA9CiAgIF9f Z251X2N4eDo6X19udW1lcmljX3RyYWl0czxzdHJlYW1zaXplPjo6X19taW47CiAgICAgICAg X19sYXJnZV9pZ25vcmUgPSB0cnVlOwogICAgICB9CiAgICBlbHNlCiAgICAgIGJyZWFrOwog IH0KCiAgICAgICBpZiAoX19uID09IF9fZ251X2N4eDo6X19udW1lcmljX3RyYWl0czxzdHJl YW1zaXplPjo6X19tYXgpCiAgewogICAgaWYgKF9fbGFyZ2VfaWdub3JlKQogICAgICBfTV9n Y291bnQgPSBfX2dudV9jeHg6Ol9fbnVtZXJpY190cmFpdHM8c3RyZWFtc2l6ZT46Ol9fbWF4 OwoKICAgIGlmICh0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAg IF9fZXJyIHw9IGlvc19iYXNlOjplb2ZiaXQ7CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBp ZiAoX01fZ2NvdW50ICE9IF9fbikKICAgKytfTV9nY291bnQ7CiAgICAgICAgX19zYi0+c2J1 bXBjKCk7CiAgICAgIH0KICB9CiAgICAgICBlbHNlIGlmIChfTV9nY291bnQgPCBfX24pCiAg ewogICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIF9fZW9mKSkKICAgICAg X19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgIGVsc2UKICAgICAgewogICAgICAgICsr X01fZ2NvdW50OwogICAgICAgIF9fc2ItPnNidW1wYygpOwogICAgICB9CiAgfQogICAgICAg ICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewog ICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJv dzsKICAgICB9CiAgICAgICAgICBjYXRjaCguLi4pCiAgICAgICAgICAgIHsgdGhpcy0+X01f c2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgICAgICAgIGlmIChfX2VycikKICAg ICAgICAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogICAgICAgIH0KICAgICAgcmV0dXJu ICp0aGlzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U cmFpdHM+CiAgICB0eXBlbmFtZSBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Omlu dF90eXBlCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgcGVlayh2 b2lkKQogICAgewogICAgICBpbnRfdHlwZSBfX2MgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAg ICAgIF9NX2djb3VudCA9IDA7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOwog ICAgICBpZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19i YXNlOjpnb29kYml0OwogICB0cnkKICAgICB7CiAgICAgICBfX2MgPSB0aGlzLT5yZGJ1Zigp LT5zZ2V0YygpOwogICAgICAgaWYgKHRyYWl0c190eXBlOjplcV9pbnRfdHlwZShfX2MsIHRy YWl0c190eXBlOjplb2YoKSkpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsKICAgICB9 CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAg dGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAg ICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi YWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9 CiAgICAgIHJldHVybiBfX2M7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg dHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPjo6CiAgICByZWFkKGNoYXJfdHlw ZSogX19zLCBzdHJlYW1zaXplIF9fbikKICAgIHsKICAgICAgX01fZ2NvdW50ID0gMDsKICAg ICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAg IGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgIHRyeQog ICAgIHsKICAgICAgIF9NX2djb3VudCA9IHRoaXMtPnJkYnVmKCktPnNnZXRuKF9fcywgX19u KTsKICAgICAgIGlmIChfTV9nY291bnQgIT0gX19uKQogIF9fZXJyIHw9IChpb3NfYmFzZTo6 ZW9mYml0IHwgaW9zX2Jhc2U6OmZhaWxiaXQpOwogICAgIH0KICAgY2F0Y2goX19jeHhhYml2 MTo6X19mb3JjZWRfdW53aW5kJikKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0ZShp b3NfYmFzZTo6YmFkYml0KTsKICAgICAgIHRocm93OwogICAgIH0KICAgY2F0Y2goLi4uKQog ICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9f ZXJyKQogICAgIHRoaXMtPnNldHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuICp0aGlz OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+ CiAgICBzdHJlYW1zaXplCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46Ogog ICAgcmVhZHNvbWUoY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKQogICAgewogICAg ICBfTV9nY291bnQgPSAwOwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAg ICAgaWYgKF9fY2VyYikKIHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFz ZTo6Z29vZGJpdDsKICAgdHJ5CiAgICAgewoKICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19u dW0gPSB0aGlzLT5yZGJ1ZigpLT5pbl9hdmFpbCgpOwogICAgICAgaWYgKF9fbnVtID4gMCkK ICBfTV9nY291bnQgPSB0aGlzLT5yZGJ1ZigpLT5zZ2V0bihfX3MsIHN0ZDo6bWluKF9fbnVt LCBfX24pKTsKICAgICAgIGVsc2UgaWYgKF9fbnVtID09IC0xKQogIF9fZXJyIHw9IGlvc19i YXNlOjplb2ZiaXQ7CiAgICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndp bmQmKQogICAgIHsKICAgICAgIHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQp OwogICAgICAgdGhyb3c7CiAgICAgfQogICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9z ZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+ c2V0c3RhdGUoX19lcnIpOwogfQogICAgICByZXR1cm4gX01fZ2NvdW50OwogICAgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19p c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1Ry YWl0cz46OgogICAgcHV0YmFjayhjaGFyX3R5cGUgX19jKQogICAgewoKCiAgICAgIF9NX2dj b3VudCA9IDA7CgogICAgICB0aGlzLT5jbGVhcih0aGlzLT5yZHN0YXRlKCkgJiB+aW9zX2Jh c2U6OmVvZmJpdCk7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUpOwogICAgICBp ZiAoX19jZXJiKQogewogICBpb3NfYmFzZTo6aW9zdGF0ZSBfX2VyciA9IGlvc19iYXNlOjpn b29kYml0OwogICB0cnkKICAgICB7CiAgICAgICBjb25zdCBpbnRfdHlwZSBfX2VvZiA9IHRy YWl0c190eXBlOjplb2YoKTsKICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IgPSB0aGlz LT5yZGJ1ZigpOwogICAgICAgaWYgKCFfX3NiCiAgICB8fCB0cmFpdHNfdHlwZTo6ZXFfaW50 X3R5cGUoX19zYi0+c3B1dGJhY2tjKF9fYyksIF9fZW9mKSkKICBfX2VyciB8PSBpb3NfYmFz ZTo6YmFkYml0OwogICAgIH0KICAgY2F0Y2goX19jeHhhYml2MTo6X19mb3JjZWRfdW53aW5k JikKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsK ICAgICAgIHRocm93OwogICAgIH0KICAgY2F0Y2goLi4uKQogICAgIHsgdGhpcy0+X01fc2V0 c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIHRoaXMtPnNl dHN0YXRlKF9fZXJyKTsKIH0KICAgICAgcmV0dXJuICp0aGlzOwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFt PF9DaGFyVCwgX1RyYWl0cz4mCiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46 OgogICAgdW5nZXQodm9pZCkKICAgIHsKCgogICAgICBfTV9nY291bnQgPSAwOwoKICAgICAg dGhpcy0+Y2xlYXIodGhpcy0+cmRzdGF0ZSgpICYgfmlvc19iYXNlOjplb2ZiaXQpOwogICAg ICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikKIHsKICAg aW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAgdHJ5CiAg ICAgewogICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7 CiAgICAgICBfX3N0cmVhbWJ1Zl90eXBlKiBfX3NiID0gdGhpcy0+cmRidWYoKTsKICAgICAg IGlmICghX19zYgogICAgfHwgdHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fc2ItPnN1bmdl dGMoKSwgX19lb2YpKQogIF9fZXJyIHw9IGlvc19iYXNlOjpiYWRiaXQ7CiAgICAgfQogICBj YXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAgICAgIHRoaXMt Pl9NX3NldHN0YXRlKGlvc19iYXNlOjpiYWRiaXQpOwogICAgICAgdGhyb3c7CiAgICAgfQog ICBjYXRjaCguLi4pCiAgICAgeyB0aGlzLT5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0 KTsgfQogICBpZiAoX19lcnIpCiAgICAgdGhpcy0+c2V0c3RhdGUoX19lcnIpOwogfQogICAg ICByZXR1cm4gKnRoaXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cz4KICAgIGludAogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFp dHM+OjoKICAgIHN5bmModm9pZCkKICAgIHsKCgogICAgICBpbnQgX19yZXQgPSAtMTsKICAg ICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAgICAgIGlmIChfX2NlcmIpCiB7CiAg IGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7CiAgIHRyeQog ICAgIHsKICAgICAgIF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IgPSB0aGlzLT5yZGJ1ZigpOwog ICAgICAgaWYgKF9fc2IpCiAgewogICAgaWYgKF9fc2ItPnB1YnN5bmMoKSA9PSAtMSkKICAg ICAgX19lcnIgfD0gaW9zX2Jhc2U6OmJhZGJpdDsKICAgIGVsc2UKICAgICAgX19yZXQgPSAw OwogIH0KICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAg ICAgewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAg ICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRl KGlvc19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0 ZShfX2Vycik7CiB9CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgYmFzaWNfaXN0 cmVhbTxfQ2hhclQsIF9UcmFpdHM+Ojpwb3NfdHlwZQogICAgYmFzaWNfaXN0cmVhbTxfQ2hh clQsIF9UcmFpdHM+OjoKICAgIHRlbGxnKHZvaWQpCiAgICB7CgoKICAgICAgcG9zX3R5cGUg X19yZXQgPSBwb3NfdHlwZSgtMSk7CiAgICAgIHNlbnRyeSBfX2NlcmIoKnRoaXMsIHRydWUp OwogICAgICBpZiAoX19jZXJiKQogewogICB0cnkKICAgICB7CiAgICAgICBpZiAoIXRoaXMt PmZhaWwoKSkKICBfX3JldCA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtvZmYoMCwgaW9zX2Jh c2U6OmN1ciwKICAgICAgICBpb3NfYmFzZTo6aW4pOwogICAgIH0KICAgY2F0Y2goX19jeHhh Yml2MTo6X19mb3JjZWRfdW53aW5kJikKICAgICB7CiAgICAgICB0aGlzLT5fTV9zZXRzdGF0 ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIHRocm93OwogICAgIH0KICAgY2F0Y2goLi4u KQogICAgIHsgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KIH0KICAg ICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5 cGVuYW1lIF9UcmFpdHM+CiAgICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAg ICBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz46OgogICAgc2Vla2cocG9zX3R5cGUg X19wb3MpCiAgICB7CgoKCiAgICAgIHRoaXMtPmNsZWFyKHRoaXMtPnJkc3RhdGUoKSAmIH5p b3NfYmFzZTo6ZW9mYml0KTsKICAgICAgc2VudHJ5IF9fY2VyYigqdGhpcywgdHJ1ZSk7CiAg ICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jh c2U6Omdvb2RiaXQ7CiAgIHRyeQogICAgIHsKICAgICAgIGlmICghdGhpcy0+ZmFpbCgpKQog IHsKCiAgICBjb25zdCBwb3NfdHlwZSBfX3AgPSB0aGlzLT5yZGJ1ZigpLT5wdWJzZWVrcG9z KF9fcG9zLAogICAgICAgICBpb3NfYmFzZTo6aW4pOwoKCiAgICBpZiAoX19wID09IHBvc190 eXBlKG9mZl90eXBlKC0xKSkpCiAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0Owog IH0KICAgICB9CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAg ewogICAgICAgdGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0 aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlv c19iYXNlOjpiYWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShf X2Vycik7CiB9CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQs IF9UcmFpdHM+JgogICAgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHNl ZWtnKG9mZl90eXBlIF9fb2ZmLCBpb3NfYmFzZTo6c2Vla2RpciBfX2RpcikKICAgIHsKCgoK ICAgICAgdGhpcy0+Y2xlYXIodGhpcy0+cmRzdGF0ZSgpICYgfmlvc19iYXNlOjplb2ZiaXQp OwogICAgICBzZW50cnkgX19jZXJiKCp0aGlzLCB0cnVlKTsKICAgICAgaWYgKF9fY2VyYikK IHsKICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAg dHJ5CiAgICAgewogICAgICAgaWYgKCF0aGlzLT5mYWlsKCkpCiAgewoKICAgIGNvbnN0IHBv c190eXBlIF9fcCA9IHRoaXMtPnJkYnVmKCktPnB1YnNlZWtvZmYoX19vZmYsIF9fZGlyLAog ICAgICAgICBpb3NfYmFzZTo6aW4pOwoKCiAgICBpZiAoX19wID09IHBvc190eXBlKG9mZl90 eXBlKC0xKSkpCiAgICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwogIH0KICAgICB9 CiAgIGNhdGNoKF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAg dGhpcy0+X01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsKICAg ICB9CiAgIGNhdGNoKC4uLikKICAgICB7IHRoaXMtPl9NX3NldHN0YXRlKGlvc19iYXNlOjpi YWRiaXQpOyB9CiAgIGlmIChfX2VycikKICAgICB0aGlzLT5zZXRzdGF0ZShfX2Vycik7CiB9 CiAgICAgIHJldHVybiAqdGhpczsKICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRz PiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2lu LCBfQ2hhclQmIF9fYykKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19pc3RyZWFtPF9DaGFy VCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX19p c3RyZWFtX3R5cGU6OmludF90eXBlIF9faW50X3R5cGU7CgogICAgICB0eXBlbmFtZSBfX2lz dHJlYW1fdHlwZTo6c2VudHJ5IF9fY2VyYihfX2luLCBmYWxzZSk7CiAgICAgIGlmIChfX2Nl cmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jhc2U6Omdvb2RiaXQ7 CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IF9faW50X3R5cGUgX19jYiA9IF9faW4ucmRi dWYoKS0+c2J1bXBjKCk7CiAgICAgICBpZiAoIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fY2Is IF9UcmFpdHM6OmVvZigpKSkKICBfX2MgPSBfVHJhaXRzOjp0b19jaGFyX3R5cGUoX19jYik7 CiAgICAgICBlbHNlCiAgX19lcnIgfD0gKGlvc19iYXNlOjplb2ZiaXQgfCBpb3NfYmFzZTo6 ZmFpbGJpdCk7CiAgICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQm KQogICAgIHsKICAgICAgIF9faW4uX01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAg ICAgICB0aHJvdzsKICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IF9faW4uX01fc2V0c3Rh dGUoaW9zX2Jhc2U6OmJhZGJpdCk7IH0KICAgaWYgKF9fZXJyKQogICAgIF9faW4uc2V0c3Rh dGUoX19lcnIpOwogfQogICAgICByZXR1cm4gX19pbjsKICAgIH0KCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdm9pZAogICAgX19pc3RyZWFt X2V4dHJhY3QoYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX2luLCBfQ2hhclQq IF9fcywKICAgICAgICBzdHJlYW1zaXplIF9fbnVtKQogICAgewogICAgICB0eXBlZGVmIGJh c2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiBfX2lzdHJlYW1fdHlwZTsKICAgICAgdHlw ZWRlZiBiYXNpY19zdHJlYW1idWY8X0NoYXJULCBfVHJhaXRzPiBfX3N0cmVhbWJ1Zl90eXBl OwogICAgICB0eXBlZGVmIHR5cGVuYW1lIF9UcmFpdHM6OmludF90eXBlIGludF90eXBlOwog ICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAgICAgIHR5cGVkZWYgY3R5cGU8X0No YXJUPiBfX2N0eXBlX3R5cGU7CgogICAgICBzdHJlYW1zaXplIF9fZXh0cmFjdGVkID0gMDsK ICAgICAgaW9zX2Jhc2U6Omlvc3RhdGUgX19lcnIgPSBpb3NfYmFzZTo6Z29vZGJpdDsKICAg ICAgdHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6OnNlbnRyeSBfX2NlcmIoX19pbiwgZmFsc2Up OwogICAgICBpZiAoX19jZXJiKQogewogICB0cnkKICAgICB7CgogICAgICAgc3RyZWFtc2l6 ZSBfX3dpZHRoID0gX19pbi53aWR0aCgpOwogICAgICAgaWYgKDAgPCBfX3dpZHRoICYmIF9f d2lkdGggPCBfX251bSkKICBfX251bSA9IF9fd2lkdGg7CgogICAgICAgY29uc3QgX19jdHlw ZV90eXBlJiBfX2N0ID0gdXNlX2ZhY2V0PF9fY3R5cGVfdHlwZT4oX19pbi5nZXRsb2MoKSk7 CgogICAgICAgY29uc3QgaW50X3R5cGUgX19lb2YgPSBfVHJhaXRzOjplb2YoKTsKICAgICAg IF9fc3RyZWFtYnVmX3R5cGUqIF9fc2IgPSBfX2luLnJkYnVmKCk7CiAgICAgICBpbnRfdHlw ZSBfX2MgPSBfX3NiLT5zZ2V0YygpOwoKICAgICAgIHdoaWxlIChfX2V4dHJhY3RlZCA8IF9f bnVtIC0gMQogICAgICAgJiYgIV9UcmFpdHM6OmVxX2ludF90eXBlKF9fYywgX19lb2YpCiAg ICAgICAmJiAhX19jdC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwKICAgICBfVHJhaXRzOjp0b19j aGFyX3R5cGUoX19jKSkpCiAgewogICAgKl9fcysrID0gX1RyYWl0czo6dG9fY2hhcl90eXBl KF9fYyk7CiAgICArK19fZXh0cmFjdGVkOwogICAgX19jID0gX19zYi0+c25leHRjKCk7CiAg fQoKICAgICAgIGlmIChfX2V4dHJhY3RlZCA8IF9fbnVtIC0gMQogICAgJiYgX1RyYWl0czo6 ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgX19lcnIgfD0gaW9zX2Jhc2U6OmVvZmJpdDsK CgoKICAgICAgICpfX3MgPSBjaGFyX3R5cGUoKTsKICAgICAgIF9faW4ud2lkdGgoMCk7CiAg ICAgfQogICBjYXRjaChfX2N4eGFiaXYxOjpfX2ZvcmNlZF91bndpbmQmKQogICAgIHsKICAg ICAgIF9faW4uX01fc2V0c3RhdGUoaW9zX2Jhc2U6OmJhZGJpdCk7CiAgICAgICB0aHJvdzsK ICAgICB9CiAgIGNhdGNoKC4uLikKICAgICB7IF9faW4uX01fc2V0c3RhdGUoaW9zX2Jhc2U6 OmJhZGJpdCk7IH0KIH0KICAgICAgaWYgKCFfX2V4dHJhY3RlZCkKIF9fZXJyIHw9IGlvc19i YXNlOjpmYWlsYml0OwogICAgICBpZiAoX19lcnIpCiBfX2luLnNldHN0YXRlKF9fZXJyKTsK ICAgIH0KCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4K ICAgIGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIHdzKGJhc2ljX2lzdHJl YW08X0NoYXJULCBfVHJhaXRzPiYgX19pbikKICAgIHsKICAgICAgdHlwZWRlZiBiYXNpY19p c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4gX19pc3RyZWFtX3R5cGU7CiAgICAgIHR5cGVkZWYg YmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4gX19zdHJlYW1idWZfdHlwZTsKICAg ICAgdHlwZWRlZiB0eXBlbmFtZSBfX2lzdHJlYW1fdHlwZTo6aW50X3R5cGUgX19pbnRfdHlw ZTsKICAgICAgdHlwZWRlZiBjdHlwZTxfQ2hhclQ+IF9fY3R5cGVfdHlwZTsKCgoKICAgICAg dHlwZW5hbWUgX19pc3RyZWFtX3R5cGU6OnNlbnRyeSBfX2NlcmIoX19pbiwgdHJ1ZSk7CiAg ICAgIGlmIChfX2NlcmIpCiB7CiAgIGlvc19iYXNlOjppb3N0YXRlIF9fZXJyID0gaW9zX2Jh c2U6Omdvb2RiaXQ7CiAgIHRyeQogICAgIHsKICAgICAgIGNvbnN0IF9fY3R5cGVfdHlwZSYg X19jdCA9IHVzZV9mYWNldDxfX2N0eXBlX3R5cGU+KF9faW4uZ2V0bG9jKCkpOwogICAgICAg Y29uc3QgX19pbnRfdHlwZSBfX2VvZiA9IF9UcmFpdHM6OmVvZigpOwogICAgICAgX19zdHJl YW1idWZfdHlwZSogX19zYiA9IF9faW4ucmRidWYoKTsKICAgICAgIF9faW50X3R5cGUgX19j ID0gX19zYi0+c2dldGMoKTsKCiAgICAgICB3aGlsZSAodHJ1ZSkKICB7CiAgICBpZiAoX1Ry YWl0czo6ZXFfaW50X3R5cGUoX19jLCBfX2VvZikpCiAgICAgIHsKICAgICAgICBfX2VyciA9 IGlvc19iYXNlOjplb2ZiaXQ7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIGlmICghX19j dC5pcyhjdHlwZV9iYXNlOjpzcGFjZSwgX1RyYWl0czo6dG9fY2hhcl90eXBlKF9fYykpKQog ICAgICBicmVhazsKICAgIF9fYyA9IF9fc2ItPnNuZXh0YygpOwogIH0KICAgICB9CiAgIGNh dGNoKGNvbnN0IF9fY3h4YWJpdjE6Ol9fZm9yY2VkX3Vud2luZCYpCiAgICAgewogICAgICAg X19pbi5fTV9zZXRzdGF0ZShpb3NfYmFzZTo6YmFkYml0KTsKICAgICAgIHRocm93OwogICAg IH0KICAgY2F0Y2goLi4uKQogICAgIHsKICAgICAgIF9faW4uX01fc2V0c3RhdGUoaW9zX2Jh c2U6OmJhZGJpdCk7CiAgICAgfQogICBpZiAoX19lcnIpCiAgICAgX19pbi5zZXRzdGF0ZShf X2Vycik7CiB9CiAgICAgIHJldHVybiBfX2luOwogICAgfQoKCgoKICBleHRlcm4gdGVtcGxh dGUgY2xhc3MgYmFzaWNfaXN0cmVhbTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVh bSYgd3MoaXN0cmVhbSYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+ KGlzdHJlYW0mLCBjaGFyJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9y Pj4oaXN0cmVhbSYsIHVuc2lnbmVkIGNoYXImKTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVh bSYgb3BlcmF0b3I+Pihpc3RyZWFtJiwgc2lnbmVkIGNoYXImKTsKCiAgZXh0ZXJuIHRlbXBs YXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgc2hvcnQmKTsKICBl eHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdCh1bnNpZ25lZCBp bnQmKTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdChs b25nJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3Qo dW5zaWduZWQgbG9uZyYpOwogIGV4dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpf TV9leHRyYWN0KGJvb2wmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06 Ol9NX2V4dHJhY3QobG9uZyBsb25nJik7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIGlz dHJlYW06Ol9NX2V4dHJhY3QodW5zaWduZWQgbG9uZyBsb25nJik7CgogIGV4dGVybiB0ZW1w bGF0ZSBpc3RyZWFtJiBpc3RyZWFtOjpfTV9leHRyYWN0KGZsb2F0Jik7CiAgZXh0ZXJuIHRl bXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QoZG91YmxlJik7CiAgZXh0ZXJu IHRlbXBsYXRlIGlzdHJlYW0mIGlzdHJlYW06Ol9NX2V4dHJhY3QobG9uZyBkb3VibGUmKTsK ICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgaXN0cmVhbTo6X01fZXh0cmFjdCh2b2lkKiYp OwoKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfaW9zdHJlYW08Y2hhcj47CgoKICBl eHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfaXN0cmVhbTx3Y2hhcl90PjsKICBleHRlcm4g dGVtcGxhdGUgd2lzdHJlYW0mIHdzKHdpc3RyZWFtJik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdp c3RyZWFtJiBvcGVyYXRvcj4+KHdpc3RyZWFtJiwgd2NoYXJfdCYpOwogIGV4dGVybiB0ZW1w bGF0ZSB2b2lkIF9faXN0cmVhbV9leHRyYWN0KHdpc3RyZWFtJiwgd2NoYXJfdCosIHN0cmVh bXNpemUpOwoKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRy YWN0KHVuc2lnbmVkIHNob3J0Jik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiB3aXN0 cmVhbTo6X01fZXh0cmFjdCh1bnNpZ25lZCBpbnQmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lz dHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGxvbmcmKTsKICBleHRlcm4gdGVtcGxhdGUg d2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KHVuc2lnbmVkIGxvbmcmKTsKICBleHRl cm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGJvb2wmKTsKCiAg ZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiB3aXN0cmVhbTo6X01fZXh0cmFjdChsb25nIGxv bmcmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0 KHVuc2lnbmVkIGxvbmcgbG9uZyYpOwoKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIHdp c3RyZWFtOjpfTV9leHRyYWN0KGZsb2F0Jik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFt JiB3aXN0cmVhbTo6X01fZXh0cmFjdChkb3VibGUmKTsKICBleHRlcm4gdGVtcGxhdGUgd2lz dHJlYW0mIHdpc3RyZWFtOjpfTV9leHRyYWN0KGxvbmcgZG91YmxlJik7CiAgZXh0ZXJuIHRl bXBsYXRlIHdpc3RyZWFtJiB3aXN0cmVhbTo6X01fZXh0cmFjdCh2b2lkKiYpOwoKICBleHRl cm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfaW9zdHJlYW08d2NoYXJfdD47CgoKCgp9CiMgMTEw NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pc3RyZWFtIiAyIDMKIyA0MyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9pb3N0cmVhbSIgMiAzCgpuYW1lc3BhY2Ugc3RkIF9fYXR0 cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgNjIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9zdHJlYW0iIDMKICBleHRlcm4gaXN0cmVhbSBjaW47 CiAgZXh0ZXJuIG9zdHJlYW0gY291dDsKICBleHRlcm4gb3N0cmVhbSBjZXJyOwogIGV4dGVy biBvc3RyZWFtIGNsb2c7CgoKICBleHRlcm4gd2lzdHJlYW0gd2NpbjsKICBleHRlcm4gd29z dHJlYW0gd2NvdXQ7CiAgZXh0ZXJuIHdvc3RyZWFtIHdjZXJyOwogIGV4dGVybiB3b3N0cmVh bSB3Y2xvZzsKIyA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb3N0cmVhbSIgMwog IF9fZXh0ZW5zaW9uX18gX19hc20gKCIuZ2xvYmwgX1pTdDIxaW9zX2Jhc2VfbGlicmFyeV9p bml0diIpOwoKCgp9CiMgMjQgImV4YW1wbGUuY2MiIDIKIyAxICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2lvbWFuaXAiIDEgMwojIDM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2lvbWFuaXAiIDMKI2RlZmluZSBfR0xJQkNYWF9JT01BTklQIDEKCiAgICAgICAKIyAzNyAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9pb21hbmlwIiAzCgoKCgoKCgojZGVmaW5lIF9f Z2xpYmN4eF93YW50X3F1b3RlZF9zdHJpbmdfaW8gCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMSAzCiMgNDcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKICAgICAgIAojIDQ4ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCgoKCgoKCiNkZWZpbmUgX19nbGliY3h4X2lu Y29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzIDIwMTUwNUwKCgoKCgojdW5kZWYgX19nbGli Y3h4X3dhbnRfaW5jb21wbGV0ZV9jb250YWluZXJfZWxlbWVudHMKIyA3MSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfdW5jYXVnaHRfZXhjZXB0aW9ucwojIDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hbGxvY2F0b3JfdHJh aXRzX2lzX2Fsd2F5c19lcXVhbAojIDkzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19udWxsX3BvaW50ZXIK IyAxMDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jlc3VsdF9vZl9zZmluYWUKIyAxMjAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3NoYXJlZF9wdHJfYXJyYXlzCiMgMTMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19zd2FwcGFibGUKIyAx NDIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3ZvaWRfdAojIDE1MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZW5hYmxlX3NoYXJl ZF9mcm9tX3RoaXMKIyAxNjQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfc3BlY19mdW5jcwojIDE3NSAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfY29yb3V0aW5lCiMgMTg2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leGNoYW5nZV9mdW5j dGlvbgojIDE5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdlcl9zZXF1ZW5jZQojIDIwOCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfaW50ZWdyYWxfY29uc3RhbnRfY2FsbGFibGUKIyAyMTkgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lz X2ZpbmFsCiMgMjMwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYWtlX3JldmVyc2VfaXRlcmF0b3IKIyAyNDEg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X251bGxfaXRlcmF0b3JzCiMgMjUyICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc2Zv cm1hdGlvbl90cmFpdF9hbGlhc2VzCiMgMjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90cmFuc3BhcmVudF9v cGVyYXRvcnMKIyAyNzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3R1cGxlX2VsZW1lbnRfdAojIDI4NSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfdHVwbGVzX2J5X3R5cGUKIyAyOTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JvYnVzdF9ub25t b2RpZnlpbmdfc2VxX29wcwojIDMxMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fY2hhcnMKIyAzMjMgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2Nocm9ub191ZGxzCiMgMzM0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb21wbGV4X3VkbHMK IyAzNDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNfYXNzb2NpYXRpdmVfbG9va3VwCiMgMzU2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9tYWtlX3VuaXF1ZQojIDM2NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcXVvdGVkX3N0cmlu Z19pbwojIDM3OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2hhcmVkX3RpbWVkX211dGV4CiMgMzg5ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9zdHJpbmdfdWRscwojIDQwMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWRkcmVzc29mX2NvbnN0 ZXhwcgojIDQxMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfYW55CiMgNDIyICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hcHBseQoj IDQzMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfYXNfY29uc3QKIyA0NDQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19p c19hbHdheXNfbG9ja19mcmVlCiMgNDU1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ib29sX2NvbnN0YW50CiMg NDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9ieXRlCiMgNDc3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oYXNfdW5pcXVlX29i amVjdF9yZXByZXNlbnRhdGlvbnMKIyA0ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2hhcmR3YXJlX2ludGVy ZmVyZW5jZV9zaXplCiMgNDk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbnZva2UKIyA1MTAgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2lzX2FnZ3JlZ2F0ZQojIDUyMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfaW52b2NhYmxlCiMgNTMy ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9sYXVuZGVyCiMgNTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sb2dpY2FsX3RyYWl0 cwojIDU1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9mcm9tX3R1cGxlCiMgNTY1ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9ub3RfZm4KIyA1NzYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3R5cGVfdHJhaXRfdmFyaWFibGVfdGVtcGxh dGVzCiMgNTkyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF92YXJpYW50CiMgNjAzICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9sY20K IyA2MTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2djZAojIDYyNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2NkX2xjbQojIDYz NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcmF3X21lbW9yeV9hbGdvcml0aG1zCiMgNjUyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9hcnJheV9jb25zdGV4cHIKIyA2NjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X25vbm1lbWJlcl9jb250YWlu ZXJfYWNjZXNzCiMgNjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jbGFtcAojIDY4NSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf c2FtcGxlCiMgNjk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ib3llcl9tb29yZV9zZWFyY2hlcgojIDcxMiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfY2hyb25vCiMgNzIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leGVjdXRpb24KIyA3MzQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2ZpbGVzeXN0ZW0KIyA3NDUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2h5cG90CiMgNzU2 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9tYXBfdHJ5X2VtcGxhY2UKIyA3NjcgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhf c3BlY2lhbF9mdW5jdGlvbnMKIyA3ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21lbW9yeV9yZXNvdXJjZQoj IDc5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfbm9kZV9leHRyYWN0CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9wYXJh bGxlbF9hbGdvcml0aG0KIyA4MTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Njb3BlZF9sb2NrCiMgODI3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9zaGFyZWRfbXV0ZXgKIyA4MzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF9wdHJf d2Vha190eXBlCiMgODQ5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdfdmlldwojIDg2MCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdW5vcmRlcmVkX21hcF90cnlfZW1wbGFjZQojIDg3MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXNz dW1lX2FsaWduZWQKIyA4ODIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19mbGFnX3Rlc3QKIyA4OTMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2F0b21pY19mbG9hdAojIDkwNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWljX2xv Y2tfZnJlZV90eXBlX2FsaWFzZXMKIyA5MTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19yZWYKIyA5 MjYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2F0b21pY192YWx1ZV9pbml0aWFsaXphdGlvbgojIDkzNyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfYmluZF9mcm9udAojIDk0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RhcnRzX2VuZHNfd2l0 aAojIDk1OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYml0X2Nhc3QKIyA5NzAgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2JpdG9w cwojIDk4MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYm91bmRlZF9hcnJheV90cmFpdHMKIyA5OTIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2NvbmNlcHRzCiMgMTAxMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfb3B0aW9uYWwKIyAxMDI0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9kZXN0cm95aW5nX2RlbGV0ZQojIDEwMzUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9zdHJpbmdfdmlldwojIDEwNDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VuZGlhbgojIDEwNTcgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2ludF9wb3cyCiMgMTA2OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW50ZWdlcl9jb21wYXJp c29uX2Z1bmN0aW9ucwojIDEwNzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2NvbnN0YW50X2V2YWx1YXRl ZAojIDEwOTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jaGFyX3RyYWl0cwojIDExMDYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2lzX2xheW91dF9jb21wYXRpYmxlCiMgMTExNyAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNf bm90aHJvd19jb252ZXJ0aWJsZQojIDExMjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX3BvaW50ZXJfaW50 ZXJjb252ZXJ0aWJsZQojIDExMzkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X21hdGhfY29uc3RhbnRzCiMgMTE1 MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfbWFrZV9vYmpfdXNpbmdfYWxsb2NhdG9yCiMgMTE2MSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfcmVtb3ZlX2N2cmVmCiMgMTE3MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc291cmNlX2xvY2F0aW9u CiMgMTE4OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfc3BhbgojIDExOTkgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NzaXplCiMg MTIxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfdGhyZWVfd2F5X2NvbXBhcmlzb24KIyAxMjIxICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF90b19hZGRyZXNzCiMgMTIzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdG9fYXJyYXkKIyAxMjQzICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF90eXBlX2lkZW50aXR5CiMgMTI1NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdW53cmFwX3Jl ZgojIDEyNjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9pdGVyYXRvcgojIDEyNzYgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2ludGVycG9sYXRlCiMgMTI4NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3V0aWxp dHkKIyAxMjk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGlmdAojIDEzMTQgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdl cwojIDEzMjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9udW1lcmljCiMgMTMzNiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfY29uc3RleHByX2Z1bmN0aW9uYWwKIyAxMzQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4 cHJfYWxnb3JpdGhtcwojIDEzNTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl90dXBsZQojIDEz NzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9tZW1vcnkKIyAxMzg1ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9h dG9taWNfc2hhcmVkX3B0cgojIDE0MDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY193YWl0CiMgMTQx MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfYmFycmllcgojIDE0MjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdAojIDE0 MzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jb21wbGV4CiMgMTQ0NSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf Y29uc3RleHByX2R5bmFtaWNfYWxsb2MKIyAxNDY2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJf c3RyaW5nCiMgMTQ3NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3ZlY3RvcgojIDE0ODggIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2VyYXNlX2lmCiMgMTQ5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2VuZXJpY191bm9yZGVy ZWRfbG9va3VwCiMgMTUxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfanRocmVhZAojIDE1MjEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2xhdGNoCiMgMTUzMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbGlzdF9yZW1vdmVfcmV0dXJuX3R5cGUK IyAxNTQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1 bmRlZiBfX2dsaWJjeHhfd2FudF9wb2x5bW9ycGhpY19hbGxvY2F0b3IKIyAxNTU0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9tb3ZlX2l0ZXJhdG9yX2NvbmNlcHQKIyAxNTY1ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zZW1h cGhvcmUKIyAxNTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zbWFydF9wdHJfZm9yX292ZXJ3cml0ZQojIDE1 ODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3N5bmNidWYKIyAxNTk4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ieXRlc3dhcAoj IDE2MDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl9jaGFyY29udgojIDE2MjAgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2NvbnN0ZXhwcl90eXBlaW5mbwojIDE2MzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2V4cGVjdGVkCiMg MTY0MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX2FsZ29yaXRobQojIDE2NTMgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2ZyZWVzdGFuZGluZ19hcnJheQojIDE2NjQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFu ZGluZ19jc3RyaW5nCiMgMTY3NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX2V4cGVjdGVk CiMgMTY4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfZnJlZXN0YW5kaW5nX29wdGlvbmFsCiMgMTY5NyAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfZnJlZXN0YW5kaW5nX3N0cmluZ192aWV3CiMgMTcwOCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf ZnJlZXN0YW5kaW5nX3ZhcmlhbnQKIyAxNzE5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pbnZva2VfcgojIDE3 MzAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2lzX3Njb3BlZF9lbnVtCiMgMTc0MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmVm ZXJlbmNlX2Zyb21fdGVtcG9yYXJ5CiMgMTc1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3RvX2Nv bnRhaW5lcgojIDE3NjMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc196aXAKIyAxNzc0ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9yYW5nZXNfY2h1bmsKIyAxNzg1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfc2xpZGUKIyAx Nzk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfY2h1bmtfYnkKIyAxODA3ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9y YW5nZXNfam9pbl93aXRoCiMgMTgxOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3JlcGVhdAojIDE4 MjkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jhbmdlc19zdHJpZGUKIyAxODQwICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5n ZXNfY2FydGVzaWFuX3Byb2R1Y3QKIyAxODUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfYXNfcnZh bHVlCiMgMTg2MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2FzX2NvbnN0CiMgMTg3MyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfcmFuZ2VzX2VudW1lcmF0ZQojIDE4ODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19mb2xk CiMgMTg5NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2NvbnRhaW5zCiMgMTkwNiAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfcmFuZ2VzX2lvdGEKIyAxOTE3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZmluZF9sYXN0CiMg MTkyOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2JpdHNldAojIDE5MzkgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3N0ZGF0b21pY19oCiMgMTk1MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWRhcHRvcl9pdGVyYXRvcl9wYWly X2NvbnN0cnVjdG9yCiMgMTk2MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZm9ybWF0dGVycwojIDE5NzIgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2ZvcndhcmRfbGlrZQojIDE5ODMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lvc19ub3JlcGxh Y2UKIyAxOTk0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tb3ZlX29ubHlfZnVuY3Rpb24KIyAyMDA1ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9vdXRfcHRyCiMgMjAxNiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcHJpbnQKIyAyMDI3ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9zcGFuc3RyZWFtCiMgMjAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RhY2t0cmFjZQojIDIw NDkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3N0cmluZ19jb250YWlucwojIDIwNjAgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0 cmluZ19yZXNpemVfYW5kX292ZXJ3cml0ZQojIDIwNzEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX3VuZGVy bHlpbmcKIyAyMDgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF91bnJlYWNoYWJsZQojIDIwOTMgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ZzdHJlYW1fbmF0aXZlX2hhbmRsZQojIDIxMDQgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JhdGlvCiMg MjExNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfc2F0dXJhdGlvbl9hcml0aG1ldGljCiMgMjEyNiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdG9fc3RyaW5nCiMgMjEzNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZ2VuZXJhdG9yCgojdW5kZWYg X19nbGliY3h4X3dhbnRfYWxsCiMgNDYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9t YW5pcCIgMiAzCiMgNTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9tYW5pcCIgMwpu YW1lc3BhY2Ugc3RkIF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQi KSkpCnsKCgoKCgogIHN0cnVjdCBfUmVzZXRpb3NmbGFncyB7IGlvc19iYXNlOjpmbXRmbGFn cyBfTV9tYXNrOyB9OwojIDcwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lvbWFuaXAi IDMKICBpbmxpbmUgX1Jlc2V0aW9zZmxhZ3MKICByZXNldGlvc2ZsYWdzKGlvc19iYXNlOjpm bXRmbGFncyBfX21hc2spCiAgeyByZXR1cm4geyBfX21hc2sgfTsgfQoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfaXN0 cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9D aGFyVCwgX1RyYWl0cz4mIF9faXMsIF9SZXNldGlvc2ZsYWdzIF9fZikKICAgIHsKICAgICAg X19pcy5zZXRmKGlvc19iYXNlOjpmbXRmbGFncygwKSwgX19mLl9NX21hc2spOwogICAgICBy ZXR1cm4gX19pczsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFt ZSBfVHJhaXRzPgogICAgaW5saW5lIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYK ICAgIG9wZXJhdG9yPDwoYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLCBf UmVzZXRpb3NmbGFncyBfX2YpCiAgICB7CiAgICAgIF9fb3Muc2V0Zihpb3NfYmFzZTo6Zm10 ZmxhZ3MoMCksIF9fZi5fTV9tYXNrKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgoKICBz dHJ1Y3QgX1NldGlvc2ZsYWdzIHsgaW9zX2Jhc2U6OmZtdGZsYWdzIF9NX21hc2s7IH07CiMg MTAwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lvbWFuaXAiIDMKICBpbmxpbmUgX1Nl dGlvc2ZsYWdzCiAgc2V0aW9zZmxhZ3MoaW9zX2Jhc2U6OmZtdGZsYWdzIF9fbWFzaykKICB7 IHJldHVybiB7IF9fbWFzayB9OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlw ZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0 cz4mCiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19p cywgX1NldGlvc2ZsYWdzIF9fZikKICAgIHsKICAgICAgX19pcy5zZXRmKF9fZi5fTV9tYXNr KTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFy VCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19vc3RyZWFtPF9DaGFyVCwg X1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRz PiYgX19vcywgX1NldGlvc2ZsYWdzIF9fZikKICAgIHsKICAgICAgX19vcy5zZXRmKF9fZi5f TV9tYXNrKTsKICAgICAgcmV0dXJuIF9fb3M7CiAgICB9CgoKICBzdHJ1Y3QgX1NldGJhc2Ug eyBpbnQgX01fYmFzZTsgfTsKIyAxMzEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvaW9t YW5pcCIgMwogIGlubGluZSBfU2V0YmFzZQogIHNldGJhc2UoaW50IF9fYmFzZSkKICB7IHJl dHVybiB7IF9fYmFzZSB9OyB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5h bWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m CiAgICBvcGVyYXRvcj4+KGJhc2ljX2lzdHJlYW08X0NoYXJULCBfVHJhaXRzPiYgX19pcywg X1NldGJhc2UgX19mKQogICAgewogICAgICBfX2lzLnNldGYoX19mLl9NX2Jhc2UgPT0gOCA/ IGlvc19iYXNlOjpvY3QgOgogIF9fZi5fTV9iYXNlID09IDEwID8gaW9zX2Jhc2U6OmRlYyA6 CiAgX19mLl9NX2Jhc2UgPT0gMTYgPyBpb3NfYmFzZTo6aGV4IDoKICBpb3NfYmFzZTo6Zm10 ZmxhZ3MoMCksIGlvc19iYXNlOjpiYXNlZmllbGQpOwogICAgICByZXR1cm4gX19pczsKICAg IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg aW5saW5lIGJhc2ljX29zdHJlYW08X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPDwo YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JiBfX29zLCBfU2V0YmFzZSBfX2YpCiAg ICB7CiAgICAgIF9fb3Muc2V0ZihfX2YuX01fYmFzZSA9PSA4ID8gaW9zX2Jhc2U6Om9jdCA6 CiAgX19mLl9NX2Jhc2UgPT0gMTAgPyBpb3NfYmFzZTo6ZGVjIDoKICBfX2YuX01fYmFzZSA9 PSAxNiA/IGlvc19iYXNlOjpoZXggOgogIGlvc19iYXNlOjpmbXRmbGFncygwKSwgaW9zX2Jh c2U6OmJhc2VmaWVsZCk7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX0NoYXJUPgogICAgc3RydWN0IF9TZXRmaWxsIHsgX0NoYXJUIF9NX2M7IH07 CiMgMTY4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2lvbWFuaXAiIDMKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQ+CiAgICBpbmxpbmUgX1NldGZpbGw8X0NoYXJUPgogICAgc2V0 ZmlsbChfQ2hhclQgX19jKQogICAgeyByZXR1cm4geyBfX2MgfTsgfQoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBfX2F0dHJpYnV0ZV9fKChf X2RlcHJlY2F0ZWRfXygiJ3N0ZDo6c2V0ZmlsbCcgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRo ICIKICAgICAgIm91dHB1dCBzdHJlYW1zIikpKQogICAgaW5saW5lIGJhc2ljX2lzdHJlYW08 X0NoYXJULCBfVHJhaXRzPiYKICAgIG9wZXJhdG9yPj4oYmFzaWNfaXN0cmVhbTxfQ2hhclQs IF9UcmFpdHM+JiBfX2lzLCBfU2V0ZmlsbDxfQ2hhclQ+IF9fZikKICAgIHsKICAgICAgX19p cy5maWxsKF9fZi5fTV9jKTsKICAgICAgcmV0dXJuIF9faXM7CiAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGlubGluZSBiYXNpY19v c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mCiAgICBvcGVyYXRvcjw8KGJhc2ljX29zdHJlYW08 X0NoYXJULCBfVHJhaXRzPiYgX19vcywgX1NldGZpbGw8X0NoYXJUPiBfX2YpCiAgICB7CiAg ICAgIF9fb3MuZmlsbChfX2YuX01fYyk7CiAgICAgIHJldHVybiBfX29zOwogICAgfQoKCiAg c3RydWN0IF9TZXRwcmVjaXNpb24geyBpbnQgX01fbjsgfTsKIyAyMDEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvaW9tYW5pcCIgMwogIGlubGluZSBfU2V0cHJlY2lzaW9uCiAgc2V0 cHJlY2lzaW9uKGludCBfX24pCiAgeyByZXR1cm4geyBfX24gfTsgfQoKICB0ZW1wbGF0ZTx0 eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfaXN0 cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9D aGFyVCwgX1RyYWl0cz4mIF9faXMsIF9TZXRwcmVjaXNpb24gX19mKQogICAgewogICAgICBf X2lzLnByZWNpc2lvbihfX2YuX01fbik7CiAgICAgIHJldHVybiBfX2lzOwogICAgfQoKICB0 ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUg YmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19v c3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9fb3MsIF9TZXRwcmVjaXNpb24gX19mKQogICAg ewogICAgICBfX29zLnByZWNpc2lvbihfX2YuX01fbik7CiAgICAgIHJldHVybiBfX29zOwog ICAgfQoKCiAgc3RydWN0IF9TZXR3IHsgaW50IF9NX247IH07CiMgMjMxICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2lvbWFuaXAiIDMKICBpbmxpbmUgX1NldHcKICBzZXR3KGludCBf X24pCiAgeyByZXR1cm4geyBfX24gfTsgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQs IHR5cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfaXN0cmVhbTxfQ2hhclQsIF9U cmFpdHM+JgogICAgb3BlcmF0b3I+PihiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4m IF9faXMsIF9TZXR3IF9fZikKICAgIHsKICAgICAgX19pcy53aWR0aChfX2YuX01fbik7CiAg ICAgIHJldHVybiBfX2lzOwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5 cGVuYW1lIF9UcmFpdHM+CiAgICBpbmxpbmUgYmFzaWNfb3N0cmVhbTxfQ2hhclQsIF9UcmFp dHM+JgogICAgb3BlcmF0b3I8PChiYXNpY19vc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4mIF9f b3MsIF9TZXR3IF9fZikKICAgIHsKICAgICAgX19vcy53aWR0aChfX2YuX01fbik7CiAgICAg IHJldHVybiBfX29zOwogICAgfQojIDUxNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9p b21hbmlwIiAzCiAgZXh0ZXJuIHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVh bSYsIF9TZXRmaWxsPGNoYXI+KTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVhbSYgb3BlcmF0 b3I8PChvc3RyZWFtJiwgX1NldGlvc2ZsYWdzKTsKICBleHRlcm4gdGVtcGxhdGUgb3N0cmVh bSYgb3BlcmF0b3I8PChvc3RyZWFtJiwgX1Jlc2V0aW9zZmxhZ3MpOwogIGV4dGVybiB0ZW1w bGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBfU2V0YmFzZSk7CiAgZXh0ZXJu IHRlbXBsYXRlIG9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSYsIF9TZXRwcmVjaXNpb24p OwogIGV4dGVybiB0ZW1wbGF0ZSBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0mLCBfU2V0 dyk7CiAgZXh0ZXJuIHRlbXBsYXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIF9T ZXRmaWxsPGNoYXI+KTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3BlcmF0b3I+Pihp c3RyZWFtJiwgX1NldGlvc2ZsYWdzKTsKICBleHRlcm4gdGVtcGxhdGUgaXN0cmVhbSYgb3Bl cmF0b3I+Pihpc3RyZWFtJiwgX1Jlc2V0aW9zZmxhZ3MpOwogIGV4dGVybiB0ZW1wbGF0ZSBp c3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBfU2V0YmFzZSk7CiAgZXh0ZXJuIHRlbXBs YXRlIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSYsIF9TZXRwcmVjaXNpb24pOwogIGV4 dGVybiB0ZW1wbGF0ZSBpc3RyZWFtJiBvcGVyYXRvcj4+KGlzdHJlYW0mLCBfU2V0dyk7CgoK ICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0mIG9wZXJhdG9yPDwod29zdHJlYW0mLCBfU2V0 ZmlsbDx3Y2hhcl90Pik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8 KHdvc3RyZWFtJiwgX1NldGlvc2ZsYWdzKTsKICBleHRlcm4gdGVtcGxhdGUgd29zdHJlYW0m IG9wZXJhdG9yPDwod29zdHJlYW0mLCBfUmVzZXRpb3NmbGFncyk7CiAgZXh0ZXJuIHRlbXBs YXRlIHdvc3RyZWFtJiBvcGVyYXRvcjw8KHdvc3RyZWFtJiwgX1NldGJhc2UpOwogIGV4dGVy biB0ZW1wbGF0ZSB3b3N0cmVhbSYgb3BlcmF0b3I8PCh3b3N0cmVhbSYsIF9TZXRwcmVjaXNp b24pOwogIGV4dGVybiB0ZW1wbGF0ZSB3b3N0cmVhbSYgb3BlcmF0b3I8PCh3b3N0cmVhbSYs IF9TZXR3KTsKICBleHRlcm4gdGVtcGxhdGUgd2lzdHJlYW0mIG9wZXJhdG9yPj4od2lzdHJl YW0mLCBfU2V0ZmlsbDx3Y2hhcl90Pik7CiAgZXh0ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiBv cGVyYXRvcj4+KHdpc3RyZWFtJiwgX1NldGlvc2ZsYWdzKTsKICBleHRlcm4gdGVtcGxhdGUg d2lzdHJlYW0mIG9wZXJhdG9yPj4od2lzdHJlYW0mLCBfUmVzZXRpb3NmbGFncyk7CiAgZXh0 ZXJuIHRlbXBsYXRlIHdpc3RyZWFtJiBvcGVyYXRvcj4+KHdpc3RyZWFtJiwgX1NldGJhc2Up OwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgb3BlcmF0b3I+Pih3aXN0cmVhbSYsIF9T ZXRwcmVjaXNpb24pOwogIGV4dGVybiB0ZW1wbGF0ZSB3aXN0cmVhbSYgb3BlcmF0b3I+Pih3 aXN0cmVhbSYsIF9TZXR3KTsKCgoKCn0KIyAyNSAiZXhhbXBsZS5jYyIgMgojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMSAzCiMgMzQgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvZnN0cmVhbSIgMwojZGVmaW5lIF9HTElCQ1hYX0ZTVFJFQU0gMQoKICAg ICAgIAojIDM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKCgoKCgoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9jb2RlY3Z0LmgiIDEgMwojIDM3 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY29kZWN2dC5oIiAzCiNkZWZpbmUg X0NPREVDVlRfSCAxCgogICAgICAgCiMgNDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy9jb2RlY3Z0LmgiIDMKCgoKCm5hbWVzcGFjZSBzdGQgX19hdHRyaWJ1dGVfXyAoKF9f dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIGNsYXNzIGNvZGVjdnRfYmFzZQog IHsKICBwdWJsaWM6CiAgICBlbnVtIHJlc3VsdAogICAgewogICAgICBvaywKICAgICAgcGFy dGlhbCwKICAgICAgZXJyb3IsCiAgICAgIG5vY29udgogICAgfTsKICB9OwojIDcwICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY29kZWN2dC5oIiAzCiAgdGVtcGxhdGU8dHlw ZW5hbWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVUPgog ICAgY2xhc3MgX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2UKICAgIDogcHVibGljIGxvY2FsZTo6 ZmFjZXQsIHB1YmxpYyBjb2RlY3Z0X2Jhc2UKICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5 cGVkZWYgY29kZWN2dF9iYXNlOjpyZXN1bHQgcmVzdWx0OwogICAgICB0eXBlZGVmIF9JbnRl cm5UIGludGVybl90eXBlOwogICAgICB0eXBlZGVmIF9FeHRlcm5UIGV4dGVybl90eXBlOwog ICAgICB0eXBlZGVmIF9TdGF0ZVQgc3RhdGVfdHlwZTsKIyAxMTggIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy9jb2RlY3Z0LmgiIDMKICAgICAgcmVzdWx0CiAgICAgIG91dChz dGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tLAogICBjb25z dCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21f bmV4dCwKICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90eXBlKiBfX3RvX2VuZCwKICAg ZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0CiAgICAgIHsKIHJldHVybiB0aGlzLT5k b19vdXQoX19zdGF0ZSwgX19mcm9tLCBfX2Zyb21fZW5kLCBfX2Zyb21fbmV4dCwKICAgICAg IF9fdG8sIF9fdG9fZW5kLCBfX3RvX25leHQpOwogICAgICB9CiMgMTU3ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvY29kZWN2dC5oIiAzCiAgICAgIHJlc3VsdAogICAgICB1 bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5f dHlwZSogX190b19lbmQsCiAgICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QK ICAgICAgeyByZXR1cm4gdGhpcy0+ZG9fdW5zaGlmdChfX3N0YXRlLCBfX3RvLF9fdG9fZW5k LF9fdG9fbmV4dCk7IH0KIyAxOTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9j b2RlY3Z0LmgiIDMKICAgICAgcmVzdWx0CiAgICAgIGluKHN0YXRlX3R5cGUmIF9fc3RhdGUs IGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCiAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJv bV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCiAgaW50ZXJuX3R5cGUq IF9fdG8sIGludGVybl90eXBlKiBfX3RvX2VuZCwKICBpbnRlcm5fdHlwZSomIF9fdG9fbmV4 dCkgY29uc3QKICAgICAgewogcmV0dXJuIHRoaXMtPmRvX2luKF9fc3RhdGUsIF9fZnJvbSwg X19mcm9tX2VuZCwgX19mcm9tX25leHQsCiAgICAgIF9fdG8sIF9fdG9fZW5kLCBfX3RvX25l eHQpOwogICAgICB9CgogICAgICBpbnQKICAgICAgZW5jb2RpbmcoKSBjb25zdCB0aHJvdygp CiAgICAgIHsgcmV0dXJuIHRoaXMtPmRvX2VuY29kaW5nKCk7IH0KCiAgICAgIGJvb2wKICAg ICAgYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93KCkKICAgICAgeyByZXR1cm4gdGhpcy0+ ZG9fYWx3YXlzX25vY29udigpOyB9CgogICAgICBpbnQKICAgICAgbGVuZ3RoKHN0YXRlX3R5 cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCiAgICAgIGNvbnN0IGV4 dGVybl90eXBlKiBfX2VuZCwgc2l6ZV90IF9fbWF4KSBjb25zdAogICAgICB7IHJldHVybiB0 aGlzLT5kb19sZW5ndGgoX19zdGF0ZSwgX19mcm9tLCBfX2VuZCwgX19tYXgpOyB9CgogICAg ICBpbnQKICAgICAgbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkKICAgICAgeyByZXR1cm4g dGhpcy0+ZG9fbWF4X2xlbmd0aCgpOyB9CgogICAgcHJvdGVjdGVkOgogICAgICBleHBsaWNp dAogICAgICBfX2NvZGVjdnRfYWJzdHJhY3RfYmFzZShzaXplX3QgX19yZWZzID0gMCkgOiBs b2NhbGU6OmZhY2V0KF9fcmVmcykgeyB9CgogICAgICB2aXJ0dWFsCiAgICAgIH5fX2NvZGVj dnRfYWJzdHJhY3RfYmFzZSgpIHsgfQojIDIzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL2NvZGVjdnQuaCIgMwogICAgICB2aXJ0dWFsIHJlc3VsdAogICAgICBkb19vdXQo c3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbSwKICAgICAg Y29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBlKiYgX19m cm9tX25leHQsCiAgICAgIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSogX190b19l bmQsCiAgICAgIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdCA9IDA7CgogICAgICB2 aXJ0dWFsIHJlc3VsdAogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGV4 dGVybl90eXBlKiBfX3RvLAogICBleHRlcm5fdHlwZSogX190b19lbmQsIGV4dGVybl90eXBl KiYgX190b19uZXh0KSBjb25zdCA9IDA7CgogICAgICB2aXJ0dWFsIHJlc3VsdAogICAgICBk b19pbihzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAog ICAgIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBleHRlcm5fdHlwZSom IF9fZnJvbV9uZXh0LAogICAgIGludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlwZSogX190 b19lbmQsCiAgICAgaW50ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0ID0gMDsKCiAgICAg IHZpcnR1YWwgaW50CiAgICAgIGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKSA9IDA7Cgog ICAgICB2aXJ0dWFsIGJvb2wKICAgICAgZG9fYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93 KCkgPSAwOwoKICAgICAgdmlydHVhbCBpbnQKICAgICAgZG9fbGVuZ3RoKHN0YXRlX3R5cGUm LCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAogIGNvbnN0IGV4dGVybl90eXBlKiBfX2Vu ZCwgc2l6ZV90IF9fbWF4KSBjb25zdCA9IDA7CgogICAgICB2aXJ0dWFsIGludAogICAgICBk b19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKSA9IDA7CiAgICB9OwojIDI3NiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2NvZGVjdnQuaCIgMwogICB0ZW1wbGF0ZTx0eXBl bmFtZSBfSW50ZXJuVCwgdHlwZW5hbWUgX0V4dGVyblQsIHR5cGVuYW1lIF9TdGF0ZVQ+CiAg ICBjbGFzcyBjb2RlY3Z0CiAgICA6IHB1YmxpYyBfX2NvZGVjdnRfYWJzdHJhY3RfYmFzZTxf SW50ZXJuVCwgX0V4dGVyblQsIF9TdGF0ZVQ+CiAgICB7CiAgICBwdWJsaWM6CgogICAgICB0 eXBlZGVmIGNvZGVjdnRfYmFzZTo6cmVzdWx0IHJlc3VsdDsKICAgICAgdHlwZWRlZiBfSW50 ZXJuVCBpbnRlcm5fdHlwZTsKICAgICAgdHlwZWRlZiBfRXh0ZXJuVCBleHRlcm5fdHlwZTsK ICAgICAgdHlwZWRlZiBfU3RhdGVUIHN0YXRlX3R5cGU7CgogICAgcHJvdGVjdGVkOgogICAg ICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2NvZGVjdnQ7CgogICAgcHVibGljOgogICAgICBz dGF0aWMgbG9jYWxlOjppZCBpZDsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGNvZGVjdnQoc2l6 ZV90IF9fcmVmcyA9IDApCiAgICAgIDogX19jb2RlY3Z0X2Fic3RyYWN0X2Jhc2U8X0ludGVy blQsIF9FeHRlcm5ULCBfU3RhdGVUPiAoX19yZWZzKSwKIF9NX2NfbG9jYWxlX2NvZGVjdnQo MCkKICAgICAgeyB9CgogICAgICBleHBsaWNpdAogICAgICBjb2RlY3Z0KF9fY19sb2NhbGUg X19jbG9jLCBzaXplX3QgX19yZWZzID0gMCk7CgogICAgcHJvdGVjdGVkOgogICAgICB2aXJ0 dWFsCiAgICAgIH5jb2RlY3Z0KCkgeyB9CgogICAgICB2aXJ0dWFsIHJlc3VsdAogICAgICBk b19vdXQoc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbSwK ICAgICAgY29uc3QgaW50ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGludGVybl90eXBl KiYgX19mcm9tX25leHQsCiAgICAgIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSog X190b19lbmQsCiAgICAgIGV4dGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdDsKCiAgICAg IHZpcnR1YWwgcmVzdWx0CiAgICAgIGRvX3Vuc2hpZnQoc3RhdGVfdHlwZSYgX19zdGF0ZSwg ZXh0ZXJuX3R5cGUqIF9fdG8sCiAgIGV4dGVybl90eXBlKiBfX3RvX2VuZCwgZXh0ZXJuX3R5 cGUqJiBfX3RvX25leHQpIGNvbnN0OwoKICAgICAgdmlydHVhbCByZXN1bHQKICAgICAgZG9f aW4oc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKICAg ICBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgZXh0ZXJuX3R5cGUqJiBf X2Zyb21fbmV4dCwKICAgICBpbnRlcm5fdHlwZSogX190bywgaW50ZXJuX3R5cGUqIF9fdG9f ZW5kLAogICAgIGludGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdDsKCiAgICAgIHZpcnR1 YWwgaW50CiAgICAgIGRvX2VuY29kaW5nKCkgY29uc3QgdGhyb3coKTsKCiAgICAgIHZpcnR1 YWwgYm9vbAogICAgICBkb19hbHdheXNfbm9jb252KCkgY29uc3QgdGhyb3coKTsKCiAgICAg IHZpcnR1YWwgaW50CiAgICAgIGRvX2xlbmd0aChzdGF0ZV90eXBlJiwgY29uc3QgZXh0ZXJu X3R5cGUqIF9fZnJvbSwKICBjb25zdCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21h eCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGludAogICAgICBkb19tYXhfbGVuZ3RoKCkgY29u c3QgdGhyb3coKTsKICAgIH07CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9JbnRlcm5ULCB0eXBl bmFtZSBfRXh0ZXJuVCwgdHlwZW5hbWUgX1N0YXRlVD4KICAgIGxvY2FsZTo6aWQgY29kZWN2 dDxfSW50ZXJuVCwgX0V4dGVyblQsIF9TdGF0ZVQ+OjppZDsKCgogIHRlbXBsYXRlPD4KICAg IGNsYXNzIGNvZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90PgogICAgOiBwdWJsaWMgX19j b2RlY3Z0X2Fic3RyYWN0X2Jhc2U8Y2hhciwgY2hhciwgbWJzdGF0ZV90PgogICAgewogICAg ICBmcmllbmQgY2xhc3MgbWVzc2FnZXM8Y2hhcj47CgogICAgcHVibGljOgoKICAgICAgdHlw ZWRlZiBjaGFyIGludGVybl90eXBlOwogICAgICB0eXBlZGVmIGNoYXIgZXh0ZXJuX3R5cGU7 CiAgICAgIHR5cGVkZWYgbWJzdGF0ZV90IHN0YXRlX3R5cGU7CgogICAgcHJvdGVjdGVkOgog ICAgICBfX2NfbG9jYWxlIF9NX2NfbG9jYWxlX2NvZGVjdnQ7CgogICAgcHVibGljOgogICAg ICBzdGF0aWMgbG9jYWxlOjppZCBpZDsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGNvZGVjdnQo c2l6ZV90IF9fcmVmcyA9IDApOwoKICAgICAgZXhwbGljaXQKICAgICAgY29kZWN2dChfX2Nf bG9jYWxlIF9fY2xvYywgc2l6ZV90IF9fcmVmcyA9IDApOwoKICAgIHByb3RlY3RlZDoKICAg ICAgdmlydHVhbAogICAgICB+Y29kZWN2dCgpOwoKICAgICAgdmlydHVhbCByZXN1bHQKICAg ICAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zy b20sCiAgICAgIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb21fZW5kLCBjb25zdCBpbnRlcm5f dHlwZSomIF9fZnJvbV9uZXh0LAogICAgICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5 cGUqIF9fdG9fZW5kLAogICAgICBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7Cgog ICAgICB2aXJ0dWFsIHJlc3VsdAogICAgICBkb191bnNoaWZ0KHN0YXRlX3R5cGUmIF9fc3Rh dGUsIGV4dGVybl90eXBlKiBfX3RvLAogICBleHRlcm5fdHlwZSogX190b19lbmQsIGV4dGVy bl90eXBlKiYgX190b19uZXh0KSBjb25zdDsKCiAgICAgIHZpcnR1YWwgcmVzdWx0CiAgICAg IGRvX2luKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20s CiAgICAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBl KiYgX19mcm9tX25leHQsCiAgICAgaW50ZXJuX3R5cGUqIF9fdG8sIGludGVybl90eXBlKiBf X3RvX2VuZCwKICAgICBpbnRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7CgogICAgICB2 aXJ0dWFsIGludAogICAgICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCk7CgogICAgICB2 aXJ0dWFsIGJvb2wKICAgICAgZG9fYWx3YXlzX25vY29udigpIGNvbnN0IHRocm93KCk7Cgog ICAgICB2aXJ0dWFsIGludAogICAgICBkb19sZW5ndGgoc3RhdGVfdHlwZSYsIGNvbnN0IGV4 dGVybl90eXBlKiBfX2Zyb20sCiAgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZW5kLCBzaXplX3Qg X19tYXgpIGNvbnN0OwoKICAgICAgdmlydHVhbCBpbnQKICAgICAgZG9fbWF4X2xlbmd0aCgp IGNvbnN0IHRocm93KCk7CiAgfTsKCgoKCgoKICB0ZW1wbGF0ZTw+CiAgICBjbGFzcyBjb2Rl Y3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD4KICAgIDogcHVibGljIF9fY29kZWN2dF9h YnN0cmFjdF9iYXNlPHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD4KICAgIHsKICAgICAgZnJp ZW5kIGNsYXNzIG1lc3NhZ2VzPHdjaGFyX3Q+OwoKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVk ZWYgd2NoYXJfdCBpbnRlcm5fdHlwZTsKICAgICAgdHlwZWRlZiBjaGFyIGV4dGVybl90eXBl OwogICAgICB0eXBlZGVmIG1ic3RhdGVfdCBzdGF0ZV90eXBlOwoKICAgIHByb3RlY3RlZDoK ICAgICAgX19jX2xvY2FsZSBfTV9jX2xvY2FsZV9jb2RlY3Z0OwoKICAgIHB1YmxpYzoKICAg ICAgc3RhdGljIGxvY2FsZTo6aWQgaWQ7CgogICAgICBleHBsaWNpdAogICAgICBjb2RlY3Z0 KHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICAgIGV4cGxpY2l0CiAgICAgIGNvZGVjdnQoX19j X2xvY2FsZSBfX2Nsb2MsIHNpemVfdCBfX3JlZnMgPSAwKTsKCiAgICBwcm90ZWN0ZWQ6CiAg ICAgIHZpcnR1YWwKICAgICAgfmNvZGVjdnQoKTsKCiAgICAgIHZpcnR1YWwgcmVzdWx0CiAg ICAgIGRvX291dChzdGF0ZV90eXBlJiBfX3N0YXRlLCBjb25zdCBpbnRlcm5fdHlwZSogX19m cm9tLAogICAgICBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJu X3R5cGUqJiBfX2Zyb21fbmV4dCwKICAgICAgZXh0ZXJuX3R5cGUqIF9fdG8sIGV4dGVybl90 eXBlKiBfX3RvX2VuZCwKICAgICAgZXh0ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNvbnN0OwoK ICAgICAgdmlydHVhbCByZXN1bHQKICAgICAgZG9fdW5zaGlmdChzdGF0ZV90eXBlJiBfX3N0 YXRlLAogICBleHRlcm5fdHlwZSogX190bywgZXh0ZXJuX3R5cGUqIF9fdG9fZW5kLAogICBl eHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIHJlc3VsdAog ICAgICBkb19pbihzdGF0ZV90eXBlJiBfX3N0YXRlLAogICAgICBjb25zdCBleHRlcm5fdHlw ZSogX19mcm9tLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tX2VuZCwKICAgICAgY29uc3Qg ZXh0ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKICAgICAgaW50ZXJuX3R5cGUqIF9fdG8sIGlu dGVybl90eXBlKiBfX3RvX2VuZCwKICAgICAgaW50ZXJuX3R5cGUqJiBfX3RvX25leHQpIGNv bnN0OwoKICAgICAgdmlydHVhbAogICAgICBpbnQgZG9fZW5jb2RpbmcoKSBjb25zdCB0aHJv dygpOwoKICAgICAgdmlydHVhbAogICAgICBib29sIGRvX2Fsd2F5c19ub2NvbnYoKSBjb25z dCB0aHJvdygpOwoKICAgICAgdmlydHVhbAogICAgICBpbnQgZG9fbGVuZ3RoKHN0YXRlX3R5 cGUmLCBjb25zdCBleHRlcm5fdHlwZSogX19mcm9tLAogICAgICBjb25zdCBleHRlcm5fdHlw ZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3Q7CgogICAgICB2aXJ0dWFsIGludAogICAg ICBkb19tYXhfbGVuZ3RoKCkgY29uc3QgdGhyb3coKTsKICAgIH07CiMgNjk4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY29kZWN2dC5oIiAzCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0ludGVyblQsIHR5cGVuYW1lIF9FeHRlcm5ULCB0eXBlbmFtZSBfU3RhdGVUPgogICAg Y2xhc3MgY29kZWN2dF9ieW5hbWUgOiBwdWJsaWMgY29kZWN2dDxfSW50ZXJuVCwgX0V4dGVy blQsIF9TdGF0ZVQ+CiAgICB7CiAgICBwdWJsaWM6CiAgICAgIGV4cGxpY2l0CiAgICAgIGNv ZGVjdnRfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcyA9IDApCiAgICAg IDogY29kZWN2dDxfSW50ZXJuVCwgX0V4dGVyblQsIF9TdGF0ZVQ+KF9fcmVmcykKICAgICAg ewogaWYgKF9fYnVpbHRpbl9zdHJjbXAoX19zLCAiQyIpICE9IDAKICAgICAmJiBfX2J1aWx0 aW5fc3RyY21wKF9fcywgIlBPU0lYIikgIT0gMCkKICAgewogICAgIHRoaXMtPl9TX2Rlc3Ry b3lfY19sb2NhbGUodGhpcy0+X01fY19sb2NhbGVfY29kZWN2dCk7CiAgICAgdGhpcy0+X1Nf Y3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2NvZGVjdnQsIF9fcyk7CiAgIH0K ICAgICAgfQoKCgoKCgoKICAgIHByb3RlY3RlZDoKICAgICAgdmlydHVhbAogICAgICB+Y29k ZWN2dF9ieW5hbWUoKSB7IH0KICAgIH07CiMgODA1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvY29kZWN2dC5oIiAzCiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGNvZGVjdnRf YnluYW1lPGNoYXIsIGNoYXIsIG1ic3RhdGVfdD47CgogIGV4dGVybiB0ZW1wbGF0ZQogICAg Y29uc3QgY29kZWN2dDxjaGFyLCBjaGFyLCBtYnN0YXRlX3Q+JgogICAgdXNlX2ZhY2V0PGNv ZGVjdnQ8Y2hhciwgY2hhciwgbWJzdGF0ZV90PiA+KGNvbnN0IGxvY2FsZSYpOwoKICBleHRl cm4gdGVtcGxhdGUKICAgIGJvb2wKICAgIGhhc19mYWNldDxjb2RlY3Z0PGNoYXIsIGNoYXIs IG1ic3RhdGVfdD4gPihjb25zdCBsb2NhbGUmKTsKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFz cyBjb2RlY3Z0X2J5bmFtZTx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+OwoKICBleHRlcm4g dGVtcGxhdGUKICAgIGNvbnN0IGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90PiYK ICAgIHVzZV9mYWNldDxjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD4gPihjb25z dCBsb2NhbGUmKTsKCiAgZXh0ZXJuIHRlbXBsYXRlCiAgICBib29sCiAgICBoYXNfZmFjZXQ8 Y29kZWN2dDx3Y2hhcl90LCBjaGFyLCBtYnN0YXRlX3Q+ID4oY29uc3QgbG9jYWxlJik7CiMg ODQwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvY29kZWN2dC5oIiAzCgp9CiMg NDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMiAzCiMgMSAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9jc3RkaW8iIDEgMwojIDM5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2NzdGRpbyIgMwogICAgICAgCiMgNDAgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvY3N0ZGlvIiAzCgoKIyAxICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMSAzIDQKIyAy NCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNAojZGVmaW5lIF9TVERJT19IIDEKCiNkZWZp bmUgX19HTElCQ19JTlRFUk5BTF9TVEFSVElOR19IRUFERVJfSU1QTEVNRU5UQVRJT04gCiMg MSAiL3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMSAzIDQKIyAzMSAi L3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFkZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dM SUJDX0lOVEVSTkFMX1NUQVJUSU5HX0hFQURFUl9JTVBMRU1FTlRBVElPTgoKCgoKCiN1bmRl ZiBfX0dMSUJDX1VTRV9MSUJfRVhUMgoKCiNkZWZpbmUgX19HTElCQ19VU0VfTElCX0VYVDIg MQojIDY3ICIvdXNyL2luY2x1ZGUvYml0cy9saWJjLWhlYWRlci1zdGFydC5oIiAzIDQKI3Vu ZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9CRlBfRVhUCgojZGVmaW5lIF9fR0xJQkNfVVNF X0lFQ182MDU1OV9CRlBfRVhUIDEKCgoKI3VuZGVmIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9C RlBfRVhUX0MyWAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfQkZQX0VYVF9DMlgg MQoKCgojdW5kZWYgX19HTElCQ19VU0VfSUVDXzYwNTU5X0VYVAoKI2RlZmluZSBfX0dMSUJD X1VTRV9JRUNfNjA1NTlfRVhUIDEKIyA5MCAiL3Vzci9pbmNsdWRlL2JpdHMvbGliYy1oZWFk ZXItc3RhcnQuaCIgMyA0CiN1bmRlZiBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfRlVOQ1NfRVhU CgojZGVmaW5lIF9fR0xJQkNfVVNFX0lFQ182MDU1OV9GVU5DU19FWFQgMQoKCgojdW5kZWYg X19HTElCQ19VU0VfSUVDXzYwNTU5X0ZVTkNTX0VYVF9DMlgKCiNkZWZpbmUgX19HTElCQ19V U0VfSUVDXzYwNTU5X0ZVTkNTX0VYVF9DMlggMQoKCgoKCgojdW5kZWYgX19HTElCQ19VU0Vf SUVDXzYwNTU5X1RZUEVTX0VYVAoKI2RlZmluZSBfX0dMSUJDX1VTRV9JRUNfNjA1NTlfVFlQ RVNfRVhUIDEKIyAyOCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDIgMyA0CgpleHRlcm4gIkMi IHsKCiNkZWZpbmUgX19uZWVkX3NpemVfdCAKI2RlZmluZSBfX25lZWRfTlVMTCAKIyAxICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3Rk ZGVmLmgiIDEgMyA0CiMgMjM3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1n bnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAoj IDM5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNs dWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIE5VTEwKCiNkZWZpbmUgTlVMTCBfX251bGwKIyA0 MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfTlVMTAojIDM0ICIvdXNyL2luY2x1ZGUv c3RkaW8uaCIgMiAzIDQKCiNkZWZpbmUgX19uZWVkX19fdmFfbGlzdCAKIyAxICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkYXJnLmgi IDEgMyA0CiMgMzQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4w LjAvaW5jbHVkZS9zdGRhcmcuaCIgMyA0CiN1bmRlZiBfX25lZWRfX192YV9saXN0CiMgMzcg Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvX19mcG9zX3QuaCIgMSAzIDQKCiNkZWZpbmUgX19fX19mcG9zX3RfZGVmaW5lZCAx CgoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfR19mcG9zX3QKewogIF9fb2ZmX3QgX19wb3M7CiAg X19tYnN0YXRlX3QgX19zdGF0ZTsKfSBfX2Zwb3NfdDsKIyA0MCAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDIgMyA0CiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvX19mcG9zNjRfdC5o IiAxIDMgNAoKI2RlZmluZSBfX19fX2Zwb3M2NF90X2RlZmluZWQgMQoKCgoKCgoKdHlwZWRl ZiBzdHJ1Y3QgX0dfZnBvczY0X3QKewogIF9fb2ZmNjRfdCBfX3BvczsKICBfX21ic3RhdGVf dCBfX3N0YXRlOwp9IF9fZnBvczY0X3Q7CiMgNDEgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAy IDMgNAoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X0ZJTEUuaCIgMSAz IDQKIyAxOSAiL3Vzci9pbmNsdWRlL2JpdHMvdHlwZXMvc3RydWN0X0ZJTEUuaCIgMyA0CiNk ZWZpbmUgX19zdHJ1Y3RfRklMRV9kZWZpbmVkIDEKIyAzNSAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvc3RydWN0X0ZJTEUuaCIgMyA0CnN0cnVjdCBfSU9fRklMRTsKc3RydWN0IF9JT19t YXJrZXI7CnN0cnVjdCBfSU9fY29kZWN2dDsKc3RydWN0IF9JT193aWRlX2RhdGE7CgoKCgp0 eXBlZGVmIHZvaWQgX0lPX2xvY2tfdDsKCgoKCgpzdHJ1Y3QgX0lPX0ZJTEUKewogIGludCBf ZmxhZ3M7CgoKICBjaGFyICpfSU9fcmVhZF9wdHI7CiAgY2hhciAqX0lPX3JlYWRfZW5kOwog IGNoYXIgKl9JT19yZWFkX2Jhc2U7CiAgY2hhciAqX0lPX3dyaXRlX2Jhc2U7CiAgY2hhciAq X0lPX3dyaXRlX3B0cjsKICBjaGFyICpfSU9fd3JpdGVfZW5kOwogIGNoYXIgKl9JT19idWZf YmFzZTsKICBjaGFyICpfSU9fYnVmX2VuZDsKCgogIGNoYXIgKl9JT19zYXZlX2Jhc2U7CiAg Y2hhciAqX0lPX2JhY2t1cF9iYXNlOwogIGNoYXIgKl9JT19zYXZlX2VuZDsKCiAgc3RydWN0 IF9JT19tYXJrZXIgKl9tYXJrZXJzOwoKICBzdHJ1Y3QgX0lPX0ZJTEUgKl9jaGFpbjsKCiAg aW50IF9maWxlbm87CiAgaW50IF9mbGFnczI7CiAgX19vZmZfdCBfb2xkX29mZnNldDsKCgog IHVuc2lnbmVkIHNob3J0IF9jdXJfY29sdW1uOwogIHNpZ25lZCBjaGFyIF92dGFibGVfb2Zm c2V0OwogIGNoYXIgX3Nob3J0YnVmWzFdOwoKICBfSU9fbG9ja190ICpfbG9jazsKCgoKCgoK CiAgX19vZmY2NF90IF9vZmZzZXQ7CgogIHN0cnVjdCBfSU9fY29kZWN2dCAqX2NvZGVjdnQ7 CiAgc3RydWN0IF9JT193aWRlX2RhdGEgKl93aWRlX2RhdGE7CiAgc3RydWN0IF9JT19GSUxF ICpfZnJlZXJlc19saXN0OwogIHZvaWQgKl9mcmVlcmVzX2J1ZjsKICBzaXplX3QgX19wYWQ1 OwogIGludCBfbW9kZTsKCiAgY2hhciBfdW51c2VkMlsxNSAqIHNpemVvZiAoaW50KSAtIDQg KiBzaXplb2YgKHZvaWQgKikgLSBzaXplb2YgKHNpemVfdCldOwp9OwoKCiNkZWZpbmUgX19n ZXRjX3VubG9ja2VkX2JvZHkoX2ZwKSAoX19nbGliY191bmxpa2VseSAoKF9mcCktPl9JT19y ZWFkX3B0ciA+PSAoX2ZwKS0+X0lPX3JlYWRfZW5kKSA/IF9fdWZsb3cgKF9mcCkgOiAqKHVu c2lnbmVkIGNoYXIgKikgKF9mcCktPl9JT19yZWFkX3B0cisrKQoKCgojZGVmaW5lIF9fcHV0 Y191bmxvY2tlZF9ib2R5KF9jaCxfZnApIChfX2dsaWJjX3VubGlrZWx5ICgoX2ZwKS0+X0lP X3dyaXRlX3B0ciA+PSAoX2ZwKS0+X0lPX3dyaXRlX2VuZCkgPyBfX292ZXJmbG93IChfZnAs ICh1bnNpZ25lZCBjaGFyKSAoX2NoKSkgOiAodW5zaWduZWQgY2hhcikgKCooX2ZwKS0+X0lP X3dyaXRlX3B0cisrID0gKF9jaCkpKQoKCgoKI2RlZmluZSBfSU9fRU9GX1NFRU4gMHgwMDEw CiNkZWZpbmUgX19mZW9mX3VubG9ja2VkX2JvZHkoX2ZwKSAoKChfZnApLT5fZmxhZ3MgJiBf SU9fRU9GX1NFRU4pICE9IDApCgojZGVmaW5lIF9JT19FUlJfU0VFTiAweDAwMjAKI2RlZmlu ZSBfX2ZlcnJvcl91bmxvY2tlZF9ib2R5KF9mcCkgKCgoX2ZwKS0+X2ZsYWdzICYgX0lPX0VS Ul9TRUVOKSAhPSAwKQoKI2RlZmluZSBfSU9fVVNFUl9MT0NLIDB4ODAwMAojIDQ0ICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKCgojIDEgIi91c3IvaW5jbHVkZS9iaXRzL3R5cGVz L2Nvb2tpZV9pb19mdW5jdGlvbnNfdC5oIiAxIDMgNAojIDE5ICIvdXNyL2luY2x1ZGUvYml0 cy90eXBlcy9jb29raWVfaW9fZnVuY3Rpb25zX3QuaCIgMyA0CiNkZWZpbmUgX19jb29raWVf aW9fZnVuY3Rpb25zX3RfZGVmaW5lZCAxCgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBjb29r aWVfcmVhZF9mdW5jdGlvbl90ICh2b2lkICpfX2Nvb2tpZSwgY2hhciAqX19idWYsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBfX25ieXRlcyk7 CgoKCgoKCgp0eXBlZGVmIF9fc3NpemVfdCBjb29raWVfd3JpdGVfZnVuY3Rpb25fdCAodm9p ZCAqX19jb29raWUsIGNvbnN0IGNoYXIgKl9fYnVmLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IF9fbmJ5dGVzKTsKCgoKCgoKCnR5cGVkZWYg aW50IGNvb2tpZV9zZWVrX2Z1bmN0aW9uX3QgKHZvaWQgKl9fY29va2llLCBfX29mZjY0X3Qg Kl9fcG9zLCBpbnQgX193KTsKCgp0eXBlZGVmIGludCBjb29raWVfY2xvc2VfZnVuY3Rpb25f dCAodm9pZCAqX19jb29raWUpOwoKCgoKCgp0eXBlZGVmIHN0cnVjdCBfSU9fY29va2llX2lv X2Z1bmN0aW9uc190CnsKICBjb29raWVfcmVhZF9mdW5jdGlvbl90ICpyZWFkOwogIGNvb2tp ZV93cml0ZV9mdW5jdGlvbl90ICp3cml0ZTsKICBjb29raWVfc2Vla19mdW5jdGlvbl90ICpz ZWVrOwogIGNvb2tpZV9jbG9zZV9mdW5jdGlvbl90ICpjbG9zZTsKfSBjb29raWVfaW9fZnVu Y3Rpb25zX3Q7CiMgNDcgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAyIDMgNAoKCgoKCnR5cGVk ZWYgX19nbnVjX3ZhX2xpc3QgdmFfbGlzdDsKI2RlZmluZSBfVkFfTElTVF9ERUZJTkVEIAoj IDg0ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CnR5cGVkZWYgX19mcG9zX3QgZnBvc190 OwoKCgoKdHlwZWRlZiBfX2Zwb3M2NF90IGZwb3M2NF90OwoKCgojZGVmaW5lIF9JT0ZCRiAw CiNkZWZpbmUgX0lPTEJGIDEKI2RlZmluZSBfSU9OQkYgMgoKCgojZGVmaW5lIEJVRlNJWiA4 MTkyCgoKCgojZGVmaW5lIEVPRiAoLTEpCgoKCgojZGVmaW5lIFNFRUtfU0VUIDAKI2RlZmlu ZSBTRUVLX0NVUiAxCiNkZWZpbmUgU0VFS19FTkQgMgoKI2RlZmluZSBTRUVLX0RBVEEgMwoj ZGVmaW5lIFNFRUtfSE9MRSA0CgoKCgoKI2RlZmluZSBQX3RtcGRpciAiL3RtcCIKIyAxMzMg Ii91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp b19saW0uaCIgMSAzIDQKIyAxOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW9fbGltLmgiIDMg NAojZGVmaW5lIF9CSVRTX1NURElPX0xJTV9IIDEKCgoKCgojZGVmaW5lIExfdG1wbmFtIDIw CiNkZWZpbmUgVE1QX01BWCAyMzgzMjgKI2RlZmluZSBGSUxFTkFNRV9NQVggNDA5NgoKCiNk ZWZpbmUgTF9jdGVybWlkIDkKCiNkZWZpbmUgTF9jdXNlcmlkIDkKCgoKI3VuZGVmIEZPUEVO X01BWAojZGVmaW5lIEZPUEVOX01BWCAxNgojIDEzNCAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDIgMyA0CgoKCgojZGVmaW5lIF9QUklOVEZfTkFOX0xFTl9NQVggNAoKCgoKZXh0ZXJuIEZJ TEUgKnN0ZGluOwpleHRlcm4gRklMRSAqc3Rkb3V0OwpleHRlcm4gRklMRSAqc3RkZXJyOwoK I2RlZmluZSBzdGRpbiBzdGRpbgojZGVmaW5lIHN0ZG91dCBzdGRvdXQKI2RlZmluZSBzdGRl cnIgc3RkZXJyCgoKZXh0ZXJuIGludCByZW1vdmUgKGNvbnN0IGNoYXIgKl9fZmlsZW5hbWUp IHRocm93ICgpOwoKZXh0ZXJuIGludCByZW5hbWUgKGNvbnN0IGNoYXIgKl9fb2xkLCBjb25z dCBjaGFyICpfX25ldykgdGhyb3cgKCk7CgoKCmV4dGVybiBpbnQgcmVuYW1lYXQgKGludCBf X29sZGZkLCBjb25zdCBjaGFyICpfX29sZCwgaW50IF9fbmV3ZmQsCiAgICAgICBjb25zdCBj aGFyICpfX25ldykgdGhyb3cgKCk7CgoKCgojZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEg PDwgMCkKI2RlZmluZSBSRU5BTUVfRVhDSEFOR0UgKDEgPDwgMSkKI2RlZmluZSBSRU5BTUVf V0hJVEVPVVQgKDEgPDwgMikKCgoKZXh0ZXJuIGludCByZW5hbWVhdDIgKGludCBfX29sZGZk LCBjb25zdCBjaGFyICpfX29sZCwgaW50IF9fbmV3ZmQsCiAgICAgICAgY29uc3QgY2hhciAq X19uZXcsIHVuc2lnbmVkIGludCBfX2ZsYWdzKSB0aHJvdyAoKTsKCgoKCgoKZXh0ZXJuIGlu dCBmY2xvc2UgKEZJTEUgKl9fc3RyZWFtKTsKCiN1bmRlZiBfX2F0dHJfZGVhbGxvY19mY2xv c2UKI2RlZmluZSBfX2F0dHJfZGVhbGxvY19mY2xvc2UgX19hdHRyX2RlYWxsb2MgKGZjbG9z ZSwgMSkKCgoKCgoKZXh0ZXJuIEZJTEUgKnRtcGZpbGUgKHZvaWQpCiAgX19hdHRyaWJ1dGVf XyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3NlLCAx KSkpIDsKIyAyMDAgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIEZJTEUgKnRt cGZpbGU2NCAodm9pZCkKICAgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJp YnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKCgoKZXh0ZXJuIGNoYXIgKnRt cG5hbSAoY2hhclsyMF0pIHRocm93ICgpIDsKCgoKCmV4dGVybiBjaGFyICp0bXBuYW1fciAo Y2hhciBfX3NbMjBdKSB0aHJvdyAoKSA7CiMgMjIyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIg MyA0CmV4dGVybiBjaGFyICp0ZW1wbmFtIChjb25zdCBjaGFyICpfX2RpciwgY29uc3QgY2hh ciAqX19wZngpCiAgIHRocm93ICgpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fKSkgX19h dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKF9fYnVpbHRpbl9mcmVlLCAxKSkpOwoKCgoKCgpl eHRlcm4gaW50IGZmbHVzaCAoRklMRSAqX19zdHJlYW0pOwojIDIzOSAiL3Vzci9pbmNsdWRl L3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZmbHVzaF91bmxvY2tlZCAoRklMRSAqX19zdHJl YW0pOwojIDI0OSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZjbG9z ZWFsbCAodm9pZCk7CiMgMjU4ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBG SUxFICpmb3BlbiAoY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZpbGVuYW1lLAogICAgICBj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpCiAgX19hdHRyaWJ1dGVfXyAoKF9fbWFs bG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAoZmNsb3NlLCAxKSkpIDsKCgoK CmV4dGVybiBGSUxFICpmcmVvcGVuIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZmlsZW5h bWUsCiAgICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX21vZGVzLAogICAgICAgIEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKIyAyODMgIi91c3IvaW5jbHVkZS9zdGRpby5o IiAzIDQKZXh0ZXJuIEZJTEUgKmZvcGVuNjQgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19m aWxlbmFtZSwKICAgICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMpCiAgX19h dHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18pKSBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXyAo ZmNsb3NlLCAxKSkpIDsKZXh0ZXJuIEZJTEUgKmZyZW9wZW42NCAoY29uc3QgY2hhciAqX19y ZXN0cmljdCBfX2ZpbGVuYW1lLAogICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbW9kZXMs CiAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCmV4dGVybiBGSUxFICpmZG9w ZW4gKGludCBfX2ZkLCBjb25zdCBjaGFyICpfX21vZGVzKSB0aHJvdyAoKQogIF9fYXR0cmli dXRlX18gKChfX21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9z ZSwgMSkpKSA7CgoKCgoKZXh0ZXJuIEZJTEUgKmZvcGVuY29va2llICh2b2lkICpfX3Jlc3Ry aWN0IF9fbWFnaWNfY29va2llLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19tb2Rl cywKICAgICBjb29raWVfaW9fZnVuY3Rpb25zX3QgX19pb19mdW5jcykgdGhyb3cgKCkKICBf X2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19f IChmY2xvc2UsIDEpKSkgOwoKCgoKZXh0ZXJuIEZJTEUgKmZtZW1vcGVuICh2b2lkICpfX3Ms IHNpemVfdCBfX2xlbiwgY29uc3QgY2hhciAqX19tb2RlcykKICB0aHJvdyAoKSBfX2F0dHJp YnV0ZV9fICgoX19tYWxsb2NfXykpIF9fYXR0cmlidXRlX18gKChfX21hbGxvY19fIChmY2xv c2UsIDEpKSkgOwoKCgoKZXh0ZXJuIEZJTEUgKm9wZW5fbWVtc3RyZWFtIChjaGFyICoqX19i dWZsb2MsIHNpemVfdCAqX19zaXplbG9jKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChf X21hbGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwgMSkpKSA7 CgoKCgoKZXh0ZXJuIF9fRklMRSAqb3Blbl93bWVtc3RyZWFtICh3Y2hhcl90ICoqX19idWZs b2MsIHNpemVfdCAqX19zaXplbG9jKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChfX21h bGxvY19fKSkgX19hdHRyaWJ1dGVfXyAoKF9fbWFsbG9jX18gKGZjbG9zZSwgMSkpKTsKCgoK CgpleHRlcm4gdm9pZCBzZXRidWYgKEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIg Kl9fcmVzdHJpY3QgX19idWYpIHRocm93ICgpOwoKCgpleHRlcm4gaW50IHNldHZidWYgKEZJ TEUgKl9fcmVzdHJpY3QgX19zdHJlYW0sIGNoYXIgKl9fcmVzdHJpY3QgX19idWYsCiAgICAg IGludCBfX21vZGVzLCBzaXplX3QgX19uKSB0aHJvdyAoKTsKCgoKCmV4dGVybiB2b2lkIHNl dGJ1ZmZlciAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwgY2hhciAqX19yZXN0cmljdCBf X2J1ZiwKICAgICAgICAgc2l6ZV90IF9fc2l6ZSkgdGhyb3cgKCk7CgoKZXh0ZXJuIHZvaWQg c2V0bGluZWJ1ZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgoKCgoKZXh0ZXJuIGlu dCBmcHJpbnRmIChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLAogICAgICBjb25zdCBjaGFy ICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pOwoKCgoKZXh0ZXJuIGludCBwcmludGYgKGNv bnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLik7CgpleHRlcm4gaW50IHNwcmlu dGYgKGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fZm9ybWF0LCAuLi4pIHRocm93ICgpOwoKCgoKCmV4dGVybiBpbnQgdmZwcmludGYgKEZJ TEUgKl9fcmVzdHJpY3QgX19zLCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LAog ICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpOwoKCgoKZXh0ZXJuIGludCB2cHJpbnRmIChj b25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZyk7 CgpleHRlcm4gaW50IHZzcHJpbnRmIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9fZ251Y192YV9saXN0IF9fYXJnKSB0 aHJvdyAoKTsKCgoKZXh0ZXJuIGludCBzbnByaW50ZiAoY2hhciAqX19yZXN0cmljdCBfX3Ms IHNpemVfdCBfX21heGxlbiwKICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19mb3Jt YXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19w cmludGZfXywgMywgNCkpKTsKCmV4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICpfX3Jlc3Ry aWN0IF9fcywgc2l6ZV90IF9fbWF4bGVuLAogICAgICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIHRocm93ICgpIF9fYXR0 cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAzLCAwKSkpOwoKCgoKCmV4dGVy biBpbnQgdmFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwgY29uc3QgY2hhciAq X19yZXN0cmljdCBfX2YsCiAgICAgICAgX19nbnVjX3ZhX2xpc3QgX19hcmcpCiAgICAgdGhy b3cgKCkgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSkg OwpleHRlcm4gaW50IF9fYXNwcmludGYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fcHRyLAogICAg ICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgdGhyb3cgKCkg X19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSkgOwpleHRl cm4gaW50IGFzcHJpbnRmIChjaGFyICoqX19yZXN0cmljdCBfX3B0ciwKICAgICAgIGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mbXQsIC4uLikKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKSA7CgoKCgpleHRlcm4gaW50 IHZkcHJpbnRmIChpbnQgX19mZCwgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2ZtdCwKICAg ICAgIF9fZ251Y192YV9saXN0IF9fYXJnKQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1h dF9fIChfX3ByaW50Zl9fLCAyLCAwKSkpOwpleHRlcm4gaW50IGRwcmludGYgKGludCBfX2Zk LCBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm10LCAuLi4pCiAgICAgX19hdHRyaWJ1dGVf XyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7CgoKCgoKCgpleHRlcm4gaW50 IGZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSwKICAgICBjb25zdCBjaGFyICpf X3Jlc3RyaWN0IF9fZm9ybWF0LCAuLi4pIDsKCgoKCmV4dGVybiBpbnQgc2NhbmYgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsIC4uLikgOwoKZXh0ZXJuIGludCBzc2NhbmYg KGNvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgIGNvbnN0IGNoYXIgKl9fcmVzdHJp Y3QgX19mb3JtYXQsIC4uLikgdGhyb3cgKCk7CiMgNDU5ICIvdXNyL2luY2x1ZGUvc3RkaW8u aCIgMyA0CmV4dGVybiBpbnQgdmZzY2FuZiAoRklMRSAqX19yZXN0cmljdCBfX3MsIGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19mb3JtYXQsCiAgICAgIF9fZ251Y192YV9saXN0IF9fYXJn KQogICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3NjYW5mX18sIDIsIDApKSkg OwoKCgoKCmV4dGVybiBpbnQgdnNjYW5mIChjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fZm9y bWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3Jt YXRfXyAoX19zY2FuZl9fLCAxLCAwKSkpIDsKCgpleHRlcm4gaW50IHZzc2NhbmYgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBjb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Zm9ybWF0LCBfX2dudWNfdmFfbGlzdCBfX2FyZykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0 ZV9fICgoX19mb3JtYXRfXyAoX19zY2FuZl9fLCAyLCAwKSkpOwojIDUxMyAiL3Vzci9pbmNs dWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZnZXRjIChGSUxFICpfX3N0cmVhbSk7CmV4 dGVybiBpbnQgZ2V0YyAoRklMRSAqX19zdHJlYW0pOwoKCgoKCmV4dGVybiBpbnQgZ2V0Y2hh ciAodm9pZCk7CgoKCgoKCmV4dGVybiBpbnQgZ2V0Y191bmxvY2tlZCAoRklMRSAqX19zdHJl YW0pOwpleHRlcm4gaW50IGdldGNoYXJfdW5sb2NrZWQgKHZvaWQpOwojIDUzOCAiL3Vzci9p bmNsdWRlL3N0ZGlvLmgiIDMgNApleHRlcm4gaW50IGZnZXRjX3VubG9ja2VkIChGSUxFICpf X3N0cmVhbSk7CiMgNTQ5ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQg ZnB1dGMgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKTsKZXh0ZXJuIGludCBwdXRjIChpbnQg X19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKZXh0ZXJuIGludCBwdXRjaGFyIChpbnQgX19j KTsKIyA1NjUgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmcHV0Y191 bmxvY2tlZCAoaW50IF9fYywgRklMRSAqX19zdHJlYW0pOwoKCgoKCgoKZXh0ZXJuIGludCBw dXRjX3VubG9ja2VkIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CmV4dGVybiBpbnQgcHV0 Y2hhcl91bmxvY2tlZCAoaW50IF9fYyk7CgoKCgoKCmV4dGVybiBpbnQgZ2V0dyAoRklMRSAq X19zdHJlYW0pOwoKCmV4dGVybiBpbnQgcHV0dyAoaW50IF9fdywgRklMRSAqX19zdHJlYW0p OwoKCgoKCgoKZXh0ZXJuIGNoYXIgKmZnZXRzIChjaGFyICpfX3Jlc3RyaWN0IF9fcywgaW50 IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkKICAgICBfX2F0dHJpYnV0ZV9fICgo X19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CiMgNjA1ICIvdXNyL2luY2x1 ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBjaGFyICpnZXRzIChjaGFyICpfX3MpIF9fYXR0cmli dXRlX18gKChfX2RlcHJlY2F0ZWRfXykpOwojIDYxNSAiL3Vzci9pbmNsdWRlL3N0ZGlvLmgi IDMgNApleHRlcm4gY2hhciAqZmdldHNfdW5sb2NrZWQgKGNoYXIgKl9fcmVzdHJpY3QgX19z LCBpbnQgX19uLAogICAgICAgIEZJTEUgKl9fcmVzdHJpY3QgX19zdHJlYW0pCiAgICBfX2F0 dHJpYnV0ZV9fICgoX19hY2Nlc3NfXyAoX193cml0ZV9vbmx5X18sIDEsIDIpKSk7CiMgNjMy ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBfX3NzaXplX3QgX19nZXRkZWxp bSAoY2hhciAqKl9fcmVzdHJpY3QgX19saW5lcHRyLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCAqX19yZXN0cmljdCBfX24sIGludCBfX2RlbGltaXRlciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CmV4 dGVybiBfX3NzaXplX3QgZ2V0ZGVsaW0gKGNoYXIgKipfX3Jlc3RyaWN0IF9fbGluZXB0ciwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpfX3Jlc3RyaWN0IF9fbiwgaW50 IF9fZGVsaW1pdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtKSA7CgoKCgoKCgpleHRlcm4gX19zc2l6ZV90IGdldGxpbmUgKGNoYXIg KipfX3Jlc3RyaWN0IF9fbGluZXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgKl9fcmVzdHJpY3QgX19uLAogICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEUgKl9f cmVzdHJpY3QgX19zdHJlYW0pIDsKCgoKCgoKCmV4dGVybiBpbnQgZnB1dHMgKGNvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19zLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKTsKCgoKCgpl eHRlcm4gaW50IHB1dHMgKGNvbnN0IGNoYXIgKl9fcyk7CgoKCgoKCmV4dGVybiBpbnQgdW5n ZXRjIChpbnQgX19jLCBGSUxFICpfX3N0cmVhbSk7CgoKCgoKCmV4dGVybiBzaXplX3QgZnJl YWQgKHZvaWQgKl9fcmVzdHJpY3QgX19wdHIsIHNpemVfdCBfX3NpemUsCiAgICAgICBzaXpl X3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtKSA7CgoKCgpleHRlcm4gc2l6ZV90 IGZ3cml0ZSAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwK ICAgICAgICBzaXplX3QgX19uLCBGSUxFICpfX3Jlc3RyaWN0IF9fcyk7CiMgNjkxICIvdXNy L2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnB1dHNfdW5sb2NrZWQgKGNvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19zLAogICAgICBGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFt KTsKIyA3MDIgIi91c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIHNpemVfdCBmcmVh ZF91bmxvY2tlZCAodm9pZCAqX19yZXN0cmljdCBfX3B0ciwgc2l6ZV90IF9fc2l6ZSwKICAg ICAgICAgc2l6ZV90IF9fbiwgRklMRSAqX19yZXN0cmljdCBfX3N0cmVhbSkgOwpleHRlcm4g c2l6ZV90IGZ3cml0ZV91bmxvY2tlZCAoY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX3B0ciwg c2l6ZV90IF9fc2l6ZSwKICAgICAgICAgIHNpemVfdCBfX24sIEZJTEUgKl9fcmVzdHJpY3Qg X19zdHJlYW0pOwoKCgoKCgoKZXh0ZXJuIGludCBmc2VlayAoRklMRSAqX19zdHJlYW0sIGxv bmcgaW50IF9fb2ZmLCBpbnQgX193aGVuY2UpOwoKCgoKZXh0ZXJuIGxvbmcgaW50IGZ0ZWxs IChGSUxFICpfX3N0cmVhbSkgOwoKCgoKZXh0ZXJuIHZvaWQgcmV3aW5kIChGSUxFICpfX3N0 cmVhbSk7CiMgNzM2ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNl ZWtvIChGSUxFICpfX3N0cmVhbSwgX19vZmZfdCBfX29mZiwgaW50IF9fd2hlbmNlKTsKCgoK CmV4dGVybiBfX29mZl90IGZ0ZWxsbyAoRklMRSAqX19zdHJlYW0pIDsKIyA3NjAgIi91c3Iv aW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBmZ2V0cG9zIChGSUxFICpfX3Jlc3Ry aWN0IF9fc3RyZWFtLCBmcG9zX3QgKl9fcmVzdHJpY3QgX19wb3MpOwoKCgoKZXh0ZXJuIGlu dCBmc2V0cG9zIChGSUxFICpfX3N0cmVhbSwgY29uc3QgZnBvc190ICpfX3Bvcyk7CiMgNzc5 ICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMyA0CmV4dGVybiBpbnQgZnNlZWtvNjQgKEZJTEUg Kl9fc3RyZWFtLCBfX29mZjY0X3QgX19vZmYsIGludCBfX3doZW5jZSk7CmV4dGVybiBfX29m ZjY0X3QgZnRlbGxvNjQgKEZJTEUgKl9fc3RyZWFtKSA7CmV4dGVybiBpbnQgZmdldHBvczY0 IChGSUxFICpfX3Jlc3RyaWN0IF9fc3RyZWFtLCBmcG9zNjRfdCAqX19yZXN0cmljdCBfX3Bv cyk7CmV4dGVybiBpbnQgZnNldHBvczY0IChGSUxFICpfX3N0cmVhbSwgY29uc3QgZnBvczY0 X3QgKl9fcG9zKTsKCgoKZXh0ZXJuIHZvaWQgY2xlYXJlcnIgKEZJTEUgKl9fc3RyZWFtKSB0 aHJvdyAoKTsKCmV4dGVybiBpbnQgZmVvZiAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsK CmV4dGVybiBpbnQgZmVycm9yIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoKCgpleHRl cm4gdm9pZCBjbGVhcmVycl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwpl eHRlcm4gaW50IGZlb2ZfdW5sb2NrZWQgKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CmV4 dGVybiBpbnQgZmVycm9yX3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkgOwoK CgoKCgoKZXh0ZXJuIHZvaWQgcGVycm9yIChjb25zdCBjaGFyICpfX3MpOwoKCgoKZXh0ZXJu IGludCBmaWxlbm8gKEZJTEUgKl9fc3RyZWFtKSB0aHJvdyAoKSA7CgoKCgpleHRlcm4gaW50 IGZpbGVub191bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKIyA4MjMgIi91 c3IvaW5jbHVkZS9zdGRpby5oIiAzIDQKZXh0ZXJuIGludCBwY2xvc2UgKEZJTEUgKl9fc3Ry ZWFtKTsKCgoKCgpleHRlcm4gRklMRSAqcG9wZW4gKGNvbnN0IGNoYXIgKl9fY29tbWFuZCwg Y29uc3QgY2hhciAqX19tb2RlcykKICBfX2F0dHJpYnV0ZV9fICgoX19tYWxsb2NfXykpIF9f YXR0cmlidXRlX18gKChfX21hbGxvY19fIChwY2xvc2UsIDEpKSkgOwoKCgoKCgpleHRlcm4g Y2hhciAqY3Rlcm1pZCAoY2hhciAqX19zKSB0aHJvdyAoKQogIF9fYXR0cmlidXRlX18gKChf X2FjY2Vzc19fIChfX3dyaXRlX29ubHlfXywgMSkpKTsKCgoKCgpleHRlcm4gY2hhciAqY3Vz ZXJpZCAoY2hhciAqX19zKQogIF9fYXR0cmlidXRlX18gKChfX2FjY2Vzc19fIChfX3dyaXRl X29ubHlfXywgMSkpKTsKCgoKCnN0cnVjdCBvYnN0YWNrOwoKCmV4dGVybiBpbnQgb2JzdGFj a19wcmludGYgKHN0cnVjdCBvYnN0YWNrICpfX3Jlc3RyaWN0IF9fb2JzdGFjaywKICAgICAg Y29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwgLi4uKQogICAgIHRocm93ICgpIF9f YXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwpleHRlcm4g aW50IG9ic3RhY2tfdnByaW50ZiAoc3RydWN0IG9ic3RhY2sgKl9fcmVzdHJpY3QgX19vYnN0 YWNrLAogICAgICAgY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2Zvcm1hdCwKICAgICAgIF9f Z251Y192YV9saXN0IF9fYXJncykKICAgICB0aHJvdyAoKSBfX2F0dHJpYnV0ZV9fICgoX19m b3JtYXRfXyAoX19wcmludGZfXywgMiwgMCkpKTsKCgoKCgoKCmV4dGVybiB2b2lkIGZsb2Nr ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwoKCgpleHRlcm4gaW50IGZ0cnlsb2Nr ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpIDsKCgpleHRlcm4gdm9pZCBmdW5sb2Nr ZmlsZSAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpOwojIDg4NSAiL3Vzci9pbmNsdWRlL3N0 ZGlvLmgiIDMgNApleHRlcm4gaW50IF9fdWZsb3cgKEZJTEUgKik7CmV4dGVybiBpbnQgX19v dmVyZmxvdyAoRklMRSAqLCBpbnQpOwoKCgoKIyAxICIvdXNyL2luY2x1ZGUvYml0cy9zdGRp by5oIiAxIDMgNAojIDIwICIvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKI2RlZmlu ZSBfQklUU19TVERJT19IIDEKIyAyOSAiL3Vzci9pbmNsdWRlL2JpdHMvc3RkaW8uaCIgMyA0 CiNkZWZpbmUgX19TVERJT19JTkxJTkUgX19leHRlcm5faW5saW5lCiMgMzggIi91c3IvaW5j bHVkZS9iaXRzL3N0ZGlvLmgiIDMgNApleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAo KF9fZ251X2lubGluZV9fKSkgaW50CnZwcmludGYgKGNvbnN0IGNoYXIgKl9fcmVzdHJpY3Qg X19mbXQsIF9fZ251Y192YV9saXN0IF9fYXJnKQp7CiAgcmV0dXJuIHZmcHJpbnRmIChzdGRv dXQsIF9fZm10LCBfX2FyZyk7Cn0KCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18g KChfX2dudV9pbmxpbmVfXykpIGludApnZXRjaGFyICh2b2lkKQp7CiAgcmV0dXJuIGdldGMg KHN0ZGluKTsKfQoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18gKChfX2dudV9p bmxpbmVfXykpIGludApmZ2V0Y191bmxvY2tlZCAoRklMRSAqX19mcCkKewogIHJldHVybiAo X19idWlsdGluX2V4cGVjdCAoKChfX2ZwKS0+X0lPX3JlYWRfcHRyID49IChfX2ZwKS0+X0lP X3JlYWRfZW5kKSwgMCkgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5zaWduZWQgY2hhciAqKSAo X19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJp YnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKZ2V0Y191bmxvY2tlZCAoRklMRSAqX19m cCkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChfX2ZwKS0+X0lPX3JlYWRfcHRy ID49IChfX2ZwKS0+X0lPX3JlYWRfZW5kKSwgMCkgPyBfX3VmbG93IChfX2ZwKSA6ICoodW5z aWduZWQgY2hhciAqKSAoX19mcCktPl9JT19yZWFkX3B0cisrKTsKfQoKCmV4dGVybiBfX2lu bGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBpbnQKZ2V0Y2hhcl91bmxv Y2tlZCAodm9pZCkKewogIHJldHVybiAoX19idWlsdGluX2V4cGVjdCAoKChzdGRpbiktPl9J T19yZWFkX3B0ciA+PSAoc3RkaW4pLT5fSU9fcmVhZF9lbmQpLCAwKSA/IF9fdWZsb3cgKHN0 ZGluKSA6ICoodW5zaWduZWQgY2hhciAqKSAoc3RkaW4pLT5fSU9fcmVhZF9wdHIrKyk7Cn0K CgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBp bnQKcHV0Y2hhciAoaW50IF9fYykKewogIHJldHVybiBwdXRjIChfX2MsIHN0ZG91dCk7Cn0K CgoKCmV4dGVybiBfX2lubGluZSBfX2F0dHJpYnV0ZV9fICgoX19nbnVfaW5saW5lX18pKSBp bnQKZnB1dGNfdW5sb2NrZWQgKGludCBfX2MsIEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJu IChfX2J1aWx0aW5fZXhwZWN0ICgoKF9fc3RyZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19z dHJlYW0pLT5fSU9fd3JpdGVfZW5kKSwgMCkgPyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVu c2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNpZ25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9J T193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRy aWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50CnB1dGNfdW5sb2NrZWQgKGludCBfX2Ms IEZJTEUgKl9fc3RyZWFtKQp7CiAgcmV0dXJuIChfX2J1aWx0aW5fZXhwZWN0ICgoKF9fc3Ry ZWFtKS0+X0lPX3dyaXRlX3B0ciA+PSAoX19zdHJlYW0pLT5fSU9fd3JpdGVfZW5kKSwgMCkg PyBfX292ZXJmbG93IChfX3N0cmVhbSwgKHVuc2lnbmVkIGNoYXIpIChfX2MpKSA6ICh1bnNp Z25lZCBjaGFyKSAoKihfX3N0cmVhbSktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7Cn0K CgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50 CnB1dGNoYXJfdW5sb2NrZWQgKGludCBfX2MpCnsKICByZXR1cm4gKF9fYnVpbHRpbl9leHBl Y3QgKCgoc3Rkb3V0KS0+X0lPX3dyaXRlX3B0ciA+PSAoc3Rkb3V0KS0+X0lPX3dyaXRlX2Vu ZCksIDApID8gX19vdmVyZmxvdyAoc3Rkb3V0LCAodW5zaWduZWQgY2hhcikgKF9fYykpIDog KHVuc2lnbmVkIGNoYXIpICgqKHN0ZG91dCktPl9JT193cml0ZV9wdHIrKyA9IChfX2MpKSk7 Cn0KCgoKCgpleHRlcm4gX19pbmxpbmUgX19hdHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9f KSkgX19zc2l6ZV90CmdldGxpbmUgKGNoYXIgKipfX2xpbmVwdHIsIHNpemVfdCAqX19uLCBG SUxFICpfX3N0cmVhbSkKewogIHJldHVybiBfX2dldGRlbGltIChfX2xpbmVwdHIsIF9fbiwg J1xuJywgX19zdHJlYW0pOwp9CgoKCgoKZXh0ZXJuIF9faW5saW5lIF9fYXR0cmlidXRlX18g KChfX2dudV9pbmxpbmVfXykpIGludApfX2F0dHJpYnV0ZV9fICgoX19sZWFmX18pKSBmZW9m X3VubG9ja2VkIChGSUxFICpfX3N0cmVhbSkgdGhyb3cgKCkKewogIHJldHVybiAoKChfX3N0 cmVhbSktPl9mbGFncyAmIDB4MDAxMCkgIT0gMCk7Cn0KCgpleHRlcm4gX19pbmxpbmUgX19h dHRyaWJ1dGVfXyAoKF9fZ251X2lubGluZV9fKSkgaW50Cl9fYXR0cmlidXRlX18gKChfX2xl YWZfXykpIGZlcnJvcl91bmxvY2tlZCAoRklMRSAqX19zdHJlYW0pIHRocm93ICgpCnsKICBy ZXR1cm4gKCgoX19zdHJlYW0pLT5fZmxhZ3MgJiAweDAwMjApICE9IDApOwp9CiMgMTkzICIv dXNyL2luY2x1ZGUvYml0cy9zdGRpby5oIiAzIDQKI3VuZGVmIF9fU1RESU9fSU5MSU5FCiMg ODkyICIvdXNyL2luY2x1ZGUvc3RkaW8uaCIgMiAzIDQKIyA5MDIgIi91c3IvaW5jbHVkZS9z dGRpby5oIiAzIDQKfQojIDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NzdGRpbyIg MiAzCgoKI2RlZmluZSBfR0xJQkNYWF9DU1RESU8gMQoKCgoKCgojdW5kZWYgY2xlYXJlcnIK I3VuZGVmIGZjbG9zZQojdW5kZWYgZmVvZgojdW5kZWYgZmVycm9yCiN1bmRlZiBmZmx1c2gK I3VuZGVmIGZnZXRjCiN1bmRlZiBmZ2V0cG9zCiN1bmRlZiBmZ2V0cwojdW5kZWYgZm9wZW4K I3VuZGVmIGZwcmludGYKI3VuZGVmIGZwdXRjCiN1bmRlZiBmcHV0cwojdW5kZWYgZnJlYWQK I3VuZGVmIGZyZW9wZW4KI3VuZGVmIGZzY2FuZgojdW5kZWYgZnNlZWsKI3VuZGVmIGZzZXRw b3MKI3VuZGVmIGZ0ZWxsCiN1bmRlZiBmd3JpdGUKI3VuZGVmIGdldGMKI3VuZGVmIGdldGNo YXIKCiN1bmRlZiBnZXRzCgojdW5kZWYgcGVycm9yCiN1bmRlZiBwcmludGYKI3VuZGVmIHB1 dGMKI3VuZGVmIHB1dGNoYXIKI3VuZGVmIHB1dHMKI3VuZGVmIHJlbW92ZQojdW5kZWYgcmVu YW1lCiN1bmRlZiByZXdpbmQKI3VuZGVmIHNjYW5mCiN1bmRlZiBzZXRidWYKI3VuZGVmIHNl dHZidWYKI3VuZGVmIHNwcmludGYKI3VuZGVmIHNzY2FuZgojdW5kZWYgdG1wZmlsZQojdW5k ZWYgdG1wbmFtCiN1bmRlZiB1bmdldGMKI3VuZGVmIHZmcHJpbnRmCiN1bmRlZiB2cHJpbnRm CiN1bmRlZiB2c3ByaW50ZgoKbmFtZXNwYWNlIHN0ZAp7CiAgdXNpbmcgOjpGSUxFOwogIHVz aW5nIDo6ZnBvc190OwoKICB1c2luZyA6OmNsZWFyZXJyOwogIHVzaW5nIDo6ZmNsb3NlOwog IHVzaW5nIDo6ZmVvZjsKICB1c2luZyA6OmZlcnJvcjsKICB1c2luZyA6OmZmbHVzaDsKICB1 c2luZyA6OmZnZXRjOwogIHVzaW5nIDo6ZmdldHBvczsKICB1c2luZyA6OmZnZXRzOwogIHVz aW5nIDo6Zm9wZW47CiAgdXNpbmcgOjpmcHJpbnRmOwogIHVzaW5nIDo6ZnB1dGM7CiAgdXNp bmcgOjpmcHV0czsKICB1c2luZyA6OmZyZWFkOwogIHVzaW5nIDo6ZnJlb3BlbjsKICB1c2lu ZyA6OmZzY2FuZjsKICB1c2luZyA6OmZzZWVrOwogIHVzaW5nIDo6ZnNldHBvczsKICB1c2lu ZyA6OmZ0ZWxsOwogIHVzaW5nIDo6ZndyaXRlOwogIHVzaW5nIDo6Z2V0YzsKICB1c2luZyA6 OmdldGNoYXI7CgoKICB1c2luZyA6OmdldHM7CgogIHVzaW5nIDo6cGVycm9yOwogIHVzaW5n IDo6cHJpbnRmOwogIHVzaW5nIDo6cHV0YzsKICB1c2luZyA6OnB1dGNoYXI7CiAgdXNpbmcg OjpwdXRzOwogIHVzaW5nIDo6cmVtb3ZlOwogIHVzaW5nIDo6cmVuYW1lOwogIHVzaW5nIDo6 cmV3aW5kOwogIHVzaW5nIDo6c2NhbmY7CiAgdXNpbmcgOjpzZXRidWY7CiAgdXNpbmcgOjpz ZXR2YnVmOwogIHVzaW5nIDo6c3ByaW50ZjsKICB1c2luZyA6OnNzY2FuZjsKICB1c2luZyA6 OnRtcGZpbGU7CgogIHVzaW5nIDo6dG1wbmFtOwoKICB1c2luZyA6OnVuZ2V0YzsKICB1c2lu ZyA6OnZmcHJpbnRmOwogIHVzaW5nIDo6dnByaW50ZjsKICB1c2luZyA6OnZzcHJpbnRmOwp9 CgoKCiN1bmRlZiBzbnByaW50ZgojdW5kZWYgdmZzY2FuZgojdW5kZWYgdnNjYW5mCiN1bmRl ZiB2c25wcmludGYKI3VuZGVmIHZzc2NhbmYKCm5hbWVzcGFjZSBfX2dudV9jeHgKewojIDE3 NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jc3RkaW8iIDMKICB1c2luZyA6OnNucHJp bnRmOwogIHVzaW5nIDo6dmZzY2FuZjsKICB1c2luZyA6OnZzY2FuZjsKICB1c2luZyA6OnZz bnByaW50ZjsKICB1c2luZyA6OnZzc2NhbmY7Cgp9CgpuYW1lc3BhY2Ugc3RkCnsKICB1c2lu ZyA6Ol9fZ251X2N4eDo6c25wcmludGY7CiAgdXNpbmcgOjpfX2dudV9jeHg6OnZmc2NhbmY7 CiAgdXNpbmcgOjpfX2dudV9jeHg6OnZzY2FuZjsKICB1c2luZyA6Ol9fZ251X2N4eDo6dnNu cHJpbnRmOwogIHVzaW5nIDo6X19nbnVfY3h4Ojp2c3NjYW5mOwp9CiMgNDQgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMiAzCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9sb29uZ2FyY2g2NC1saW51eC1nbnUvYml0cy9iYXNpY19maWxlLmgiIDEgMwoj IDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9i aXRzL2Jhc2ljX2ZpbGUuaCIgMwojZGVmaW5lIF9HTElCQ1hYX0JBU0lDX0ZJTEVfU1RESU9f SCAxCgogICAgICAgCiMgMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNo NjQtbGludXgtZ251L2JpdHMvYmFzaWNfZmlsZS5oIiAzCgoKIyAxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2lvLmgiIDEgMwoj IDMzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJjaDY0LWxpbnV4LWdudS9i aXRzL2MrK2lvLmgiIDMKI2RlZmluZSBfR0xJQkNYWF9DWFhfSU9fSCAxCgojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvY3N0ZGlvIiAxIDMKIyAzOSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9jc3RkaW8iIDMKICAgICAgIAojIDQwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2NzdGRpbyIgMwojIDM2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25n YXJjaDY0LWxpbnV4LWdudS9iaXRzL2MrK2lvLmgiIDIgMwoKCm5hbWVzcGFjZSBzdGQgX19h dHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgoKCgoKCiAg dHlwZWRlZiBfX2d0aHJlYWRfbXV0ZXhfdCBfX2NfbG9jazsKCgoKICB0eXBlZGVmIEZJTEUg X19jX2ZpbGU7CgoKfQojIDQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2xvb25nYXJj aDY0LWxpbnV4LWdudS9iaXRzL2Jhc2ljX2ZpbGUuaCIgMiAzCgoKCm5hbWVzcGFjZSBzdGQg X19hdHRyaWJ1dGVfXyAoKF9fdmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIHRl bXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KICAgIGNsYXNzIF9fYmFzaWNfZmlsZTsKCgogIHRl bXBsYXRlPD4KICAgIGNsYXNzIF9fYmFzaWNfZmlsZTxjaGFyPgogICAgewoKICAgICAgX19j X2ZpbGUqIF9NX2NmaWxlOwoKCiAgICAgIGJvb2wgX01fY2ZpbGVfY3JlYXRlZDsKCiAgICBw dWJsaWM6CiAgICAgIF9fYmFzaWNfZmlsZShfX2NfbG9jayogX19sb2NrID0gMCkgdGhyb3cg KCk7CiMgODQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGludXgt Z251L2JpdHMvYmFzaWNfZmlsZS5oIiAzCiAgICAgIF9fYmFzaWNfZmlsZSoKICAgICAgb3Bl bihjb25zdCBjaGFyKiBfX25hbWUsIGlvc19iYXNlOjpvcGVubW9kZSBfX21vZGUsIGludCBf X3Byb3QgPSAwNjY0KTsKCgoKCgoKICAgICAgX19iYXNpY19maWxlKgogICAgICBzeXNfb3Bl bihfX2NfZmlsZSogX19maWxlLCBpb3NfYmFzZTo6b3Blbm1vZGUpOwoKICAgICAgX19iYXNp Y19maWxlKgogICAgICBzeXNfb3BlbihpbnQgX19mZCwgaW9zX2Jhc2U6Om9wZW5tb2RlIF9f bW9kZSkgdGhyb3cgKCk7CgogICAgICBfX2Jhc2ljX2ZpbGUqCiAgICAgIGNsb3NlKCk7Cgog ICAgICBfX2F0dHJpYnV0ZV9fICgoX19wdXJlX18pKSBib29sCiAgICAgIGlzX29wZW4oKSBj b25zdCB0aHJvdyAoKTsKCiAgICAgIF9fYXR0cmlidXRlX18gKChfX3B1cmVfXykpIGludAog ICAgICBmZCgpIHRocm93ICgpOwoKICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkg X19jX2ZpbGUqCiAgICAgIGZpbGUoKSB0aHJvdyAoKTsKCiAgICAgIH5fX2Jhc2ljX2ZpbGUo KTsKCiAgICAgIHN0cmVhbXNpemUKICAgICAgeHNwdXRuKGNvbnN0IGNoYXIqIF9fcywgc3Ry ZWFtc2l6ZSBfX24pOwoKICAgICAgc3RyZWFtc2l6ZQogICAgICB4c3B1dG5fMihjb25zdCBj aGFyKiBfX3MxLCBzdHJlYW1zaXplIF9fbjEsCiAgICAgICAgY29uc3QgY2hhciogX19zMiwg c3RyZWFtc2l6ZSBfX24yKTsKCiAgICAgIHN0cmVhbXNpemUKICAgICAgeHNnZXRuKGNoYXIq IF9fcywgc3RyZWFtc2l6ZSBfX24pOwoKICAgICAgc3RyZWFtb2ZmCiAgICAgIHNlZWtvZmYo c3RyZWFtb2ZmIF9fb2ZmLCBpb3NfYmFzZTo6c2Vla2RpciBfX3dheSkgdGhyb3cgKCk7Cgog ICAgICBpbnQKICAgICAgc3luYygpOwoKICAgICAgc3RyZWFtc2l6ZQogICAgICBzaG93bWFu eWMoKTsKIyAxNDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbG9vbmdhcmNoNjQtbGlu dXgtZ251L2JpdHMvYmFzaWNfZmlsZS5oIiAzCiAgICB9OwoKCn0KIyA0NSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAyIDMKCgoKCiNkZWZpbmUgX19nbGliY3h4X3dh bnRfZnN0cmVhbV9uYXRpdmVfaGFuZGxlIAojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rv b2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4w LjAvYml0cy92ZXJzaW9uLmgiIDEgMwojIDQ3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiAgICAgICAKIyA0OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoKCgoKCgojZGVmaW5lIF9fZ2xpYmN4eF9pbmNvbXBs ZXRlX2NvbnRhaW5lcl9lbGVtZW50cyAyMDE1MDVMCgoKCgoKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2luY29tcGxldGVfY29udGFpbmVyX2VsZW1lbnRzCiMgNzEgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Vu Y2F1Z2h0X2V4Y2VwdGlvbnMKIyA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYWxsb2NhdG9yX3RyYWl0c19p c19hbHdheXNfZXF1YWwKIyA5MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfbnVsbF9wb2ludGVyCiMgMTA0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9yZXN1bHRfb2Zfc2ZpbmFlCiMgMTIwICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFy ZWRfcHRyX2FycmF5cwojIDEzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaXNfc3dhcHBhYmxlCiMgMTQyICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF92b2lkX3QKIyAxNTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2VuYWJsZV9zaGFyZWRfZnJv bV90aGlzCiMgMTY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3NwZWNfZnVuY3MKIyAxNzUgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2Nvcm91dGluZQojIDE4NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhjaGFuZ2VfZnVuY3Rpb24K IyAxOTcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfc2VxdWVuY2UKIyAyMDggIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2ludGVncmFsX2NvbnN0YW50X2NhbGxhYmxlCiMgMjE5ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19maW5h bAojIDIzMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfbWFrZV9yZXZlcnNlX2l0ZXJhdG9yCiMgMjQxICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9udWxsX2l0ZXJhdG9ycwojIDI1MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNmb3JtYXRp b25fdHJhaXRfYWxpYXNlcwojIDI2MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfdHJhbnNwYXJlbnRfb3BlcmF0 b3JzCiMgMjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90dXBsZV9lbGVtZW50X3QKIyAyODUgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X3R1cGxlc19ieV90eXBlCiMgMjk2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yb2J1c3Rfbm9ubW9kaWZ5 aW5nX3NlcV9vcHMKIyAzMTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2NoYXJzCiMgMzIzICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9jaHJvbm9fdWRscwojIDMzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29tcGxleF91ZGxzCiMgMzQ1 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9nZW5lcmljX2Fzc29jaWF0aXZlX2xvb2t1cAojIDM1NiAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfbWFrZV91bmlxdWUKIyAzNjcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3F1b3RlZF9zdHJpbmdfaW8K IyAzNzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3NoYXJlZF90aW1lZF9tdXRleAojIDM4OSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfc3RyaW5nX3VkbHMKIyA0MDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkZHJlc3NvZl9jb25zdGV4cHIK IyA0MTEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X2FueQojIDQyMiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXBwbHkKIyA0MzMg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2FzX2NvbnN0CiMgNDQ0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfaXNfYWx3 YXlzX2xvY2tfZnJlZQojIDQ1NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYm9vbF9jb25zdGFudAojIDQ2NiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfYnl0ZQojIDQ3NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaGFzX3VuaXF1ZV9vYmplY3Rf cmVwcmVzZW50YXRpb25zCiMgNDg4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oYXJkd2FyZV9pbnRlcmZlcmVu Y2Vfc2l6ZQojIDQ5OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24u aCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlCiMgNTEwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9p c19hZ2dyZWdhdGUKIyA1MjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX2ludm9jYWJsZQojIDUzMiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbGF1bmRlcgojIDU0MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbG9naWNhbF90cmFpdHMKIyA1 NTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X21ha2VfZnJvbV90dXBsZQojIDU2NSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbm90 X2ZuCiMgNTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF90eXBlX3RyYWl0X3ZhcmlhYmxlX3RlbXBsYXRlcwoj IDU5MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfdmFyaWFudAojIDYwMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfbGNtCiMgNjE0 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9nY2QKIyA2MjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2djZF9sY20KIyA2MzYgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X3Jhd19tZW1vcnlfYWxnb3JpdGhtcwojIDY1MiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXJy YXlfY29uc3RleHByCiMgNjYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9ub25tZW1iZXJfY29udGFpbmVyX2Fj Y2VzcwojIDY3NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfY2xhbXAKIyA2ODUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NhbXBs ZQojIDY5NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfYm95ZXJfbW9vcmVfc2VhcmNoZXIKIyA3MTIgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4 eF93YW50X2Nocm9ubwojIDcyMyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfZXhlY3V0aW9uCiMgNzM0ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9maWxlc3lzdGVtCiMgNzQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9oeXBvdAojIDc1NiAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGli Y3h4X3dhbnRfbWFwX3RyeV9lbXBsYWNlCiMgNzY3ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX3NwZWNp YWxfZnVuY3Rpb25zCiMgNzgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tZW1vcnlfcmVzb3VyY2UKIyA3OTQg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X25vZGVfZXh0cmFjdAojIDgwNSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcGFyYWxsZWxf YWxnb3JpdGhtCiMgODE2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zY29wZWRfbG9jawojIDgyNyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfc2hhcmVkX211dGV4CiMgODM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zaGFyZWRfcHRyX3dlYWtf dHlwZQojIDg0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIg MwojdW5kZWYgX19nbGliY3h4X3dhbnRfc3RyaW5nX3ZpZXcKIyA4NjAgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Vub3JkZXJlZF9tYXBfdHJ5X2VtcGxhY2UKIyA4NzEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Fzc3VtZV9h bGlnbmVkCiMgODgyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0v aW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5o IiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfZmxhZ190ZXN0CiMgODkzICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJj eHhfd2FudF9hdG9taWNfZmxvYXQKIyA5MDQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2F0b21pY19sb2NrX2Zy ZWVfdHlwZV9hbGlhc2VzCiMgOTE1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfcmVmCiMgOTI2ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9hdG9taWNfdmFsdWVfaW5pdGlhbGl6YXRpb24KIyA5MzcgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2JpbmRfZnJvbnQKIyA5NDggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YXJ0c19lbmRzX3dpdGgKIyA5 NTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2JpdF9jYXN0CiMgOTcwICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9iaXRvcHMKIyA5 ODEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2JvdW5kZWRfYXJyYXlfdHJhaXRzCiMgOTkyICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9jb25jZXB0cwojIDEwMTMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X29wdGlvbmFsCiMgMTAyNCAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfZGVzdHJveWluZ19kZWxldGUKIyAxMDM1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJf c3RyaW5nX3ZpZXcKIyAxMDQ2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9lbmRpYW4KIyAxMDU3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pbnRfcG93MgojIDEwNjggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ludGVnZXJfY29tcGFyaXNvbl9m dW5jdGlvbnMKIyAxMDc5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19jb25zdGFudF9ldmFsdWF0ZWQKIyAx MDk1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcl90cmFpdHMKIyAxMTA2ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9pc19sYXlvdXRfY29tcGF0aWJsZQojIDExMTcgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2lzX25vdGhy b3dfY29udmVydGlibGUKIyAxMTI4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4t dXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMv dmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pc19wb2ludGVyX2ludGVyY29u dmVydGlibGUKIyAxMTM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9tYXRoX2NvbnN0YW50cwojIDExNTAgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X21ha2Vfb2JqX3VzaW5nX2FsbG9jYXRvcgojIDExNjEgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3JlbW92ZV9jdnJlZgojIDExNzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3NvdXJjZV9sb2NhdGlvbgojIDEx ODggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3NwYW4KIyAxMTk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zc2l6ZQojIDEyMTAg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3RocmVlX3dheV9jb21wYXJpc29uCiMgMTIyMSAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf dG9fYWRkcmVzcwojIDEyMzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3RvX2FycmF5CiMgMTI0MyAiL2hvbWUv Y2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNy L2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4 X3dhbnRfdHlwZV9pZGVudGl0eQojIDEyNTQgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xj aGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAv Yml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Vud3JhcF9yZWYKIyAx MjY1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfaXRlcmF0b3IKIyAxMjc2ICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9pbnRlcnBvbGF0ZQojIDEyODcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl91dGlsaXR5CiMg MTI5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfc2hpZnQKIyAxMzE0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXMKIyAx MzI1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRl ZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfbnVtZXJpYwojIDEzMzYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X2NvbnN0ZXhwcl9mdW5jdGlvbmFsCiMgMTM0NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX2Fs Z29yaXRobXMKIyAxMzU4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lv bi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9jb25zdGV4cHJfdHVwbGUKIyAxMzc0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9jb25zdGV4cHJfbWVtb3J5CiMgMTM4NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYXRvbWlj X3NoYXJlZF9wdHIKIyAxNDAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVy c2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9hdG9taWNfd2FpdAojIDE0MTIgIi9o b21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXpl L3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2JhcnJpZXIKIyAxNDIzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mb3JtYXQKIyAxNDM0ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9jb25zdGV4cHJfY29tcGxleAojIDE0NDUgIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0 ZXhwcl9keW5hbWljX2FsbG9jCiMgMTQ2NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfY29uc3RleHByX3N0cmlu ZwojIDE0NzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0 YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMK I3VuZGVmIF9fZ2xpYmN4eF93YW50X2NvbnN0ZXhwcl92ZWN0b3IKIyAxNDg4ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9lcmFzZV9pZgojIDE0OTkgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyaWNfdW5vcmRlcmVkX2xv b2t1cAojIDE1MTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2p0aHJlYWQKIyAxNTIxICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9s YXRjaAojIDE1MzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgi IDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2xpc3RfcmVtb3ZlX3JldHVybl90eXBlCiMgMTU0 MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0 aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYg X19nbGliY3h4X3dhbnRfcG9seW1vcnBoaWNfYWxsb2NhdG9yCiMgMTU1NCAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfbW92ZV9pdGVyYXRvcl9jb25jZXB0CiMgMTU2NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfc2VtYXBob3Jl CiMgMTU3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfc21hcnRfcHRyX2Zvcl9vdmVyd3JpdGUKIyAxNTg3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9zeW5jYnVmCiMgMTU5OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNo YWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9i aXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfYnl0ZXN3YXAKIyAxNjA5 ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBf X2dsaWJjeHhfd2FudF9jb25zdGV4cHJfY2hhcmNvbnYKIyAxNjIwICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9j b25zdGV4cHJfdHlwZWluZm8KIyAxNjMxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9leHBlY3RlZAojIDE2NDIg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19hbGdvcml0aG0KIyAxNjUzICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2Fu dF9mcmVlc3RhbmRpbmdfYXJyYXkKIyAxNjY0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9mcmVlc3RhbmRpbmdf Y3N0cmluZwojIDE2NzUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19leHBlY3RlZAojIDE2 ODYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X2ZyZWVzdGFuZGluZ19vcHRpb25hbAojIDE2OTcgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93 YW50X2ZyZWVzdGFuZGluZ19zdHJpbmdfdmlldwojIDE3MDggIi9ob21lL2NoZW5nbHVsdS93 b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2Mr Ky8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2ZyZWVz dGFuZGluZ192YXJpYW50CiMgMTcxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfaW52b2tlX3IKIyAxNzMwICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9pc19zY29wZWRfZW51bQojIDE3NDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3JlZmVyZW5j ZV9mcm9tX3RlbXBvcmFyeQojIDE3NTIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0 cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc190b19jb250YWlu ZXIKIyAxNzYzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAz CiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfemlwCiMgMTc3NCAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRf cmFuZ2VzX2NodW5rCiMgMTc4NSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3Zl cnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX3NsaWRlCiMgMTc5NiAi L2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1p emUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19n bGliY3h4X3dhbnRfcmFuZ2VzX2NodW5rX2J5CiMgMTgwNyAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2Vz X2pvaW5fd2l0aAojIDE4MTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19yZXBlYXQKIyAxODI5ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9yYW5nZXNfc3RyaWRlCiMgMTg0MCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2Nh cnRlc2lhbl9wcm9kdWN0CiMgMTg1MSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWlu LXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRz L3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2FzX3J2YWx1ZQoj IDE4NjIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3Vu ZGVmIF9fZ2xpYmN4eF93YW50X3Jhbmdlc19hc19jb25zdAojIDE4NzMgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3Jhbmdlc19lbnVtZXJhdGUKIyAxODg0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYW5nZXNfZm9sZAojIDE4 OTUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVm IF9fZ2xpYmN4eF93YW50X3Jhbmdlc19jb250YWlucwojIDE5MDYgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3Jh bmdlc19pb3RhCiMgMTkxNyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNp b24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dhbnRfcmFuZ2VzX2ZpbmRfbGFzdAojIDE5Mjgg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X2NvbnN0ZXhwcl9iaXRzZXQKIyAxOTM5ICIvaG9tZS9jaGVuZ2x1bHUv d29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9j KysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdGRh dG9taWNfaAojIDE5NTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2FkYXB0b3JfaXRlcmF0b3JfcGFpcl9jb25z dHJ1Y3RvcgojIDE5NjEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVh bS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9u LmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2Zvcm1hdHRlcnMKIyAxOTcyICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhf d2FudF9mb3J3YXJkX2xpa2UKIyAxOTgzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9pb3Nfbm9yZXBsYWNlCiMg MTk5NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5k ZWYgX19nbGliY3h4X3dhbnRfbW92ZV9vbmx5X2Z1bmN0aW9uCiMgMjAwNSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfb3V0X3B0cgojIDIwMTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3ByaW50CiMgMjAyNyAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwojdW5kZWYgX19nbGliY3h4X3dh bnRfc3BhbnN0cmVhbQojIDIwMzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92 ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X3N0YWNrdHJhY2UKIyAyMDQ5ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2ds aWJjeHhfd2FudF9zdHJpbmdfY29udGFpbnMKIyAyMDYwICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9zdHJpbmdf cmVzaXplX2FuZF9vdmVyd3JpdGUKIyAyMDcxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF90b191bmRlcmx5aW5n CiMgMjA4MiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3Rh bGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL3ZlcnNpb24uaCIgMwoj dW5kZWYgX19nbGliY3h4X3dhbnRfdW5yZWFjaGFibGUKIyAyMDkzICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9m c3RyZWFtX25hdGl2ZV9oYW5kbGUKIyAyMTA0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2JpdHMvdmVyc2lvbi5oIiAzCiN1bmRlZiBfX2dsaWJjeHhfd2FudF9yYXRpbwojIDIxMTUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9f Z2xpYmN4eF93YW50X3NhdHVyYXRpb25fYXJpdGhtZXRpYwojIDIxMjYgIi9ob21lL2NoZW5n bHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNs dWRlL2MrKy8xNC4wLjAvYml0cy92ZXJzaW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50 X3RvX3N0cmluZwojIDIxMzcgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy92ZXJz aW9uLmgiIDMKI3VuZGVmIF9fZ2xpYmN4eF93YW50X2dlbmVyYXRvcgoKI3VuZGVmIF9fZ2xp YmN4eF93YW50X2FsbAojIDUxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0i IDIgMwoKCgojZGVmaW5lIF9HTElCQ1hYX0JVRlNJWiBCVUZTSVoKCgpuYW1lc3BhY2Ugc3Rk IF9fYXR0cmlidXRlX18gKChfX3Zpc2liaWxpdHlfXyAoImRlZmF1bHQiKSkpCnsKCiMgODkg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogIHRlbXBsYXRlPHR5cGVu YW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIGNsYXNzIGJhc2ljX2ZpbGVidWYg OiBwdWJsaWMgYmFzaWNfc3RyZWFtYnVmPF9DaGFyVCwgX1RyYWl0cz4KICAgIHsKIyAxMDYg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgcHVibGljOgoKICAg ICAgdHlwZWRlZiBfQ2hhclQgY2hhcl90eXBlOwogICAgICB0eXBlZGVmIF9UcmFpdHMgdHJh aXRzX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6OmludF90eXBl IGludF90eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpwb3NfdHlw ZSBwb3NfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6b2ZmX3R5 cGUgb2ZmX3R5cGU7CgogICAgICB0eXBlZGVmIGJhc2ljX3N0cmVhbWJ1ZjxjaGFyX3R5cGUs IHRyYWl0c190eXBlPiBfX3N0cmVhbWJ1Zl90eXBlOwogICAgICB0eXBlZGVmIGJhc2ljX2Zp bGVidWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gX19maWxlYnVmX3R5cGU7CiAgICAgIHR5 cGVkZWYgX19iYXNpY19maWxlPGNoYXI+IF9fZmlsZV90eXBlOwogICAgICB0eXBlZGVmIHR5 cGVuYW1lIHRyYWl0c190eXBlOjpzdGF0ZV90eXBlIF9fc3RhdGVfdHlwZTsKICAgICAgdHlw ZWRlZiBjb2RlY3Z0PGNoYXJfdHlwZSwgY2hhciwgX19zdGF0ZV90eXBlPiBfX2NvZGVjdnRf dHlwZTsKCiAgICAgIGZyaWVuZCBjbGFzcyBpb3NfYmFzZTsKCiAgICBwcm90ZWN0ZWQ6CgoK ICAgICAgX19jX2xvY2sgX01fbG9jazsKCgogICAgICBfX2ZpbGVfdHlwZSBfTV9maWxlOwoK CiAgICAgIGlvc19iYXNlOjpvcGVubW9kZSBfTV9tb2RlOwoKCiAgICAgIF9fc3RhdGVfdHlw ZSBfTV9zdGF0ZV9iZWc7CgoKCgogICAgICBfX3N0YXRlX3R5cGUgX01fc3RhdGVfY3VyOwoK CgogICAgICBfX3N0YXRlX3R5cGUgX01fc3RhdGVfbGFzdDsKCgogICAgICBjaGFyX3R5cGUq IF9NX2J1ZjsKCgoKCgoKICAgICAgc2l6ZV90IF9NX2J1Zl9zaXplOwoKCiAgICAgIGJvb2wg X01fYnVmX2FsbG9jYXRlZDsKIyAxNjUgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0 cmVhbSIgMwogICAgICBib29sIF9NX3JlYWRpbmc7CiAgICAgIGJvb2wgX01fd3JpdGluZzsK CgoKCgoKCiAgICAgIGNoYXJfdHlwZSBfTV9wYmFjazsKICAgICAgY2hhcl90eXBlKiBfTV9w YmFja19jdXJfc2F2ZTsKICAgICAgY2hhcl90eXBlKiBfTV9wYmFja19lbmRfc2F2ZTsKICAg ICAgYm9vbCBfTV9wYmFja19pbml0OwoKCgogICAgICBjb25zdCBfX2NvZGVjdnRfdHlwZSog X01fY29kZWN2dDsKCgoKCgoKICAgICAgY2hhciogX01fZXh0X2J1ZjsKCgoKCiAgICAgIHN0 cmVhbXNpemUgX01fZXh0X2J1Zl9zaXplOwoKCgoKCgogICAgICBjb25zdCBjaGFyKiBfTV9l eHRfbmV4dDsKICAgICAgY2hhciogX01fZXh0X2VuZDsKCgoKCgoKICAgICAgdm9pZAogICAg ICBfTV9jcmVhdGVfcGJhY2soKQogICAgICB7CiBpZiAoIV9NX3BiYWNrX2luaXQpCiAgIHsK ICAgICBfTV9wYmFja19jdXJfc2F2ZSA9IHRoaXMtPmdwdHIoKTsKICAgICBfTV9wYmFja19l bmRfc2F2ZSA9IHRoaXMtPmVncHRyKCk7CiAgICAgdGhpcy0+c2V0ZygmX01fcGJhY2ssICZf TV9wYmFjaywgJl9NX3BiYWNrICsgMSk7CiAgICAgX01fcGJhY2tfaW5pdCA9IHRydWU7CiAg IH0KICAgICAgfQoKCgoKCgogICAgICB2b2lkCiAgICAgIF9NX2Rlc3Ryb3lfcGJhY2soKSB0 aHJvdygpCiAgICAgIHsKIGlmIChfTV9wYmFja19pbml0KQogICB7CgogICAgIF9NX3BiYWNr X2N1cl9zYXZlICs9IHRoaXMtPmdwdHIoKSAhPSB0aGlzLT5lYmFjaygpOwogICAgIHRoaXMt PnNldGcoX01fYnVmLCBfTV9wYmFja19jdXJfc2F2ZSwgX01fcGJhY2tfZW5kX3NhdmUpOwog ICAgIF9NX3BiYWNrX2luaXQgPSBmYWxzZTsKICAgfQogICAgICB9CgogICAgcHVibGljOgoK CgoKCgoKICAgICAgYmFzaWNfZmlsZWJ1ZigpOwojIDI1NSAiL2hvbWUvY2hlbmdsdWx1L3dv cmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysr LzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIHZpcnR1YWwKICAgICAgfmJhc2ljX2ZpbGVidWYo KQogICAgICB7CiB0cnkKICAgeyB0aGlzLT5jbG9zZSgpOyB9CiBjYXRjaCguLi4pCiAgIHsg fQogICAgICB9CiMgMjc0ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMK ICAgICAgYm9vbAogICAgICBpc19vcGVuKCkgY29uc3QgdGhyb3coKQogICAgICB7IHJldHVy biBfTV9maWxlLmlzX29wZW4oKTsgfQojIDMxOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9mc3RyZWFtIiAzCiAgICAgIF9fZmlsZWJ1Zl90eXBlKgogICAgICBvcGVuKGNvbnN0IGNo YXIqIF9fcywgaW9zX2Jhc2U6Om9wZW5tb2RlIF9fbW9kZSk7CiMgMzcwICIvaG9tZS9jaGVu Z2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5j bHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKICAgICAgX19maWxlYnVmX3R5cGUqCiAgICAg IGNsb3NlKCk7CiMgNDAzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMK ICAgIHByb3RlY3RlZDoKICAgICAgdm9pZAogICAgICBfTV9hbGxvY2F0ZV9pbnRlcm5hbF9i dWZmZXIoKTsKCiAgICAgIHZvaWQKICAgICAgX01fZGVzdHJveV9pbnRlcm5hbF9idWZmZXIo KSB0aHJvdygpOwoKCiAgICAgIHZpcnR1YWwgc3RyZWFtc2l6ZQogICAgICBzaG93bWFueWMo KTsKCgoKCgoKICAgICAgdmlydHVhbCBpbnRfdHlwZQogICAgICB1bmRlcmZsb3coKTsKCiAg ICAgIHZpcnR1YWwgaW50X3R5cGUKICAgICAgcGJhY2tmYWlsKGludF90eXBlIF9fYyA9IF9U cmFpdHM6OmVvZigpKTsKIyA0MzIgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11 cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVh bSIgMwogICAgICB2aXJ0dWFsIGludF90eXBlCiAgICAgIG92ZXJmbG93KGludF90eXBlIF9f YyA9IF9UcmFpdHM6OmVvZigpKTsKCgoKICAgICAgYm9vbAogICAgICBfTV9jb252ZXJ0X3Rv X2V4dGVybmFsKGNoYXJfdHlwZSosIHN0cmVhbXNpemUpOwojIDQ1MiAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIHZpcnR1YWwgX19zdHJlYW1idWZfdHlw ZSoKICAgICAgc2V0YnVmKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbik7CgogICAg ICB2aXJ0dWFsIHBvc190eXBlCiAgICAgIHNlZWtvZmYob2ZmX3R5cGUgX19vZmYsIGlvc19i YXNlOjpzZWVrZGlyIF9fd2F5LAogICAgICAgaW9zX2Jhc2U6Om9wZW5tb2RlIF9fbW9kZSA9 IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpOwoKICAgICAgdmlydHVhbCBwb3NfdHlw ZQogICAgICBzZWVrcG9zKHBvc190eXBlIF9fcG9zLAogICAgICAgaW9zX2Jhc2U6Om9wZW5t b2RlIF9fbW9kZSA9IGlvc19iYXNlOjppbiB8IGlvc19iYXNlOjpvdXQpOwoKCiAgICAgIHBv c190eXBlCiAgICAgIF9NX3NlZWsob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGly IF9fd2F5LCBfX3N0YXRlX3R5cGUgX19zdGF0ZSk7CgogICAgICBpbnQKICAgICAgX01fZ2V0 X2V4dF9wb3MoX19zdGF0ZV90eXBlICZfX3N0YXRlKTsKCiAgICAgIHZpcnR1YWwgaW50CiAg ICAgIHN5bmMoKTsKCiAgICAgIHZpcnR1YWwgdm9pZAogICAgICBpbWJ1ZShjb25zdCBsb2Nh bGUmIF9fbG9jKTsKCiAgICAgIHZpcnR1YWwgc3RyZWFtc2l6ZQogICAgICB4c2dldG4oY2hh cl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsKCiAgICAgIHZpcnR1YWwgc3RyZWFtc2l6 ZQogICAgICB4c3B1dG4oY29uc3QgY2hhcl90eXBlKiBfX3MsIHN0cmVhbXNpemUgX19uKTsK CgogICAgICBib29sCiAgICAgIF9NX3Rlcm1pbmF0ZV9vdXRwdXQoKTsKIyA0OTggIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgICB2b2lkCiAgICAgIF9NX3Nl dF9idWZmZXIoc3RyZWFtc2l6ZSBfX29mZikKICAgICAgewogY29uc3QgYm9vbCBfX3Rlc3Rp biA9IF9NX21vZGUgJiBpb3NfYmFzZTo6aW47CiBjb25zdCBib29sIF9fdGVzdG91dCA9IChf TV9tb2RlICYgaW9zX2Jhc2U6Om91dAogICAgfHwgX01fbW9kZSAmIGlvc19iYXNlOjphcHAp OwoKIGlmIChfX3Rlc3RpbiAmJiBfX29mZiA+IDApCiAgIHRoaXMtPnNldGcoX01fYnVmLCBf TV9idWYsIF9NX2J1ZiArIF9fb2ZmKTsKIGVsc2UKICAgdGhpcy0+c2V0ZyhfTV9idWYsIF9N X2J1ZiwgX01fYnVmKTsKCiBpZiAoX190ZXN0b3V0ICYmIF9fb2ZmID09IDAgJiYgX01fYnVm X3NpemUgPiAxICkKICAgdGhpcy0+c2V0cChfTV9idWYsIF9NX2J1ZiArIF9NX2J1Zl9zaXpl IC0gMSk7CiBlbHNlCiAgIHRoaXMtPnNldHAoMCwgMCk7CiAgICAgIH0KICAgIH07CiMgNTMx ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRp bWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKICB0ZW1wbGF0ZTx0eXBl bmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBjbGFzcyBiYXNpY19pZnN0cmVh bSA6IHB1YmxpYyBiYXNpY19pc3RyZWFtPF9DaGFyVCwgX1RyYWl0cz4KICAgIHsKICAgIHB1 YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NoYXJUIGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBf VHJhaXRzIHRyYWl0c190eXBlOwogICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBl OjppbnRfdHlwZSBpbnRfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlw ZTo6cG9zX3R5cGUgcG9zX3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5 cGU6Om9mZl90eXBlIG9mZl90eXBlOwoKCiAgICAgIHR5cGVkZWYgYmFzaWNfZmlsZWJ1Zjxj aGFyX3R5cGUsIHRyYWl0c190eXBlPiBfX2ZpbGVidWZfdHlwZTsKICAgICAgdHlwZWRlZiBi YXNpY19pc3RyZWFtPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+IF9faXN0cmVhbV90eXBlOwoK ICAgIHByaXZhdGU6CiAgICAgIF9fZmlsZWJ1Zl90eXBlIF9NX2ZpbGVidWY7CgogICAgcHVi bGljOgojIDU1OCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2lu c3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAg IGJhc2ljX2lmc3RyZWFtKCkgOiBfX2lzdHJlYW1fdHlwZSgpLCBfTV9maWxlYnVmKCkKICAg ICAgeyB0aGlzLT5pbml0KCZfTV9maWxlYnVmKTsgfQojIDU2OCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIGV4cGxpY2l0CiAgICAgIGJhc2ljX2lmc3Ry ZWFtKGNvbnN0IGNoYXIqIF9fcywgaW9zX2Jhc2U6Om9wZW5tb2RlIF9fbW9kZSA9IGlvc19i YXNlOjppbikKICAgICAgOiBfX2lzdHJlYW1fdHlwZSgpLCBfTV9maWxlYnVmKCkKICAgICAg ewogdGhpcy0+aW5pdCgmX01fZmlsZWJ1Zik7CiB0aGlzLT5vcGVuKF9fcywgX19tb2RlKTsK ICAgICAgfQojIDYzOSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAzCiAg ICAgIH5iYXNpY19pZnN0cmVhbSgpCiAgICAgIHsgfQojIDY3MSAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIF9fZmlsZWJ1Zl90eXBlKgogICAgICByZGJ1 ZigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8X19maWxlYnVmX3R5cGUqPigm X01fZmlsZWJ1Zik7IH0KCgoKCgogICAgICBib29sCiAgICAgIGlzX29wZW4oKQogICAgICB7 IHJldHVybiBfTV9maWxlYnVmLmlzX29wZW4oKTsgfQoKCgogICAgICBib29sCiAgICAgIGlz X29wZW4oKSBjb25zdAogICAgICB7IHJldHVybiBfTV9maWxlYnVmLmlzX29wZW4oKTsgfQoj IDY5NyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwv b3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIHZvaWQK ICAgICAgb3Blbihjb25zdCBjaGFyKiBfX3MsIGlvc19iYXNlOjpvcGVubW9kZSBfX21vZGUg PSBpb3NfYmFzZTo6aW4pCiAgICAgIHsKIGlmICghX01fZmlsZWJ1Zi5vcGVuKF9fcywgX19t b2RlIHwgaW9zX2Jhc2U6OmluKSkKICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxi aXQpOwogZWxzZQoKCiAgIHRoaXMtPmNsZWFyKCk7CiAgICAgIH0KIyA3NjkgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgICB2b2lkCiAgICAgIGNsb3NlKCkK ICAgICAgewogaWYgKCFfTV9maWxlYnVmLmNsb3NlKCkpCiAgIHRoaXMtPnNldHN0YXRlKGlv c19iYXNlOjpmYWlsYml0KTsKICAgICAgfQojIDc4NCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0 LjAuMC9mc3RyZWFtIiAzCiAgICB9OwojIDgwMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9mc3RyZWFtIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJh aXRzPgogICAgY2xhc3MgYmFzaWNfb2ZzdHJlYW0gOiBwdWJsaWMgYmFzaWNfb3N0cmVhbTxf Q2hhclQsX1RyYWl0cz4KICAgIHsKICAgIHB1YmxpYzoKCiAgICAgIHR5cGVkZWYgX0NoYXJU IGNoYXJfdHlwZTsKICAgICAgdHlwZWRlZiBfVHJhaXRzIHRyYWl0c190eXBlOwogICAgICB0 eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjppbnRfdHlwZSBpbnRfdHlwZTsKICAgICAg dHlwZWRlZiB0eXBlbmFtZSB0cmFpdHNfdHlwZTo6cG9zX3R5cGUgcG9zX3R5cGU7CiAgICAg IHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzX3R5cGU6Om9mZl90eXBlIG9mZl90eXBlOwoKCiAg ICAgIHR5cGVkZWYgYmFzaWNfZmlsZWJ1ZjxjaGFyX3R5cGUsIHRyYWl0c190eXBlPiBfX2Zp bGVidWZfdHlwZTsKICAgICAgdHlwZWRlZiBiYXNpY19vc3RyZWFtPGNoYXJfdHlwZSwgdHJh aXRzX3R5cGU+IF9fb3N0cmVhbV90eXBlOwoKICAgIHByaXZhdGU6CiAgICAgIF9fZmlsZWJ1 Zl90eXBlIF9NX2ZpbGVidWY7CgogICAgcHVibGljOgojIDgyOCAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9mc3RyZWFtIiAzCiAgICAgIGJhc2ljX29mc3RyZWFtKCk6IF9fb3N0cmVh bV90eXBlKCksIF9NX2ZpbGVidWYoKQogICAgICB7IHRoaXMtPmluaXQoJl9NX2ZpbGVidWYp OyB9CiMgODM4ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKICAgICAg ZXhwbGljaXQKICAgICAgYmFzaWNfb2ZzdHJlYW0oY29uc3QgY2hhciogX19zLAogICAgICAg aW9zX2Jhc2U6Om9wZW5tb2RlIF9fbW9kZSA9IGlvc19iYXNlOjpvdXQpCiAgICAgIDogX19v c3RyZWFtX3R5cGUoKSwgX01fZmlsZWJ1ZigpCiAgICAgIHsKIHRoaXMtPmluaXQoJl9NX2Zp bGVidWYpOwogdGhpcy0+b3BlbihfX3MsIF9fbW9kZSk7CiAgICAgIH0KIyA5MTEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgICB+YmFzaWNfb2ZzdHJlYW0o KQogICAgICB7IH0KIyA5NDMgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIg MwogICAgICBfX2ZpbGVidWZfdHlwZSoKICAgICAgcmRidWYoKSBjb25zdAogICAgICB7IHJl dHVybiBjb25zdF9jYXN0PF9fZmlsZWJ1Zl90eXBlKj4oJl9NX2ZpbGVidWYpOyB9CgoKCgoK ICAgICAgYm9vbAogICAgICBpc19vcGVuKCkKICAgICAgeyByZXR1cm4gX01fZmlsZWJ1Zi5p c19vcGVuKCk7IH0KCgoKICAgICAgYm9vbAogICAgICBpc19vcGVuKCkgY29uc3QKICAgICAg eyByZXR1cm4gX01fZmlsZWJ1Zi5pc19vcGVuKCk7IH0KIyA5NjkgIi9ob21lL2NoZW5nbHVs dS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRl L2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgICB2b2lkCiAgICAgIG9wZW4oY29uc3QgY2hh ciogX19zLCBpb3NfYmFzZTo6b3Blbm1vZGUgX19tb2RlID0gaW9zX2Jhc2U6Om91dCkKICAg ICAgewogaWYgKCFfTV9maWxlYnVmLm9wZW4oX19zLCBfX21vZGUgfCBpb3NfYmFzZTo6b3V0 KSkKICAgdGhpcy0+c2V0c3RhdGUoaW9zX2Jhc2U6OmZhaWxiaXQpOwogZWxzZQoKCiAgIHRo aXMtPmNsZWFyKCk7CiAgICAgIH0KIyAxMDQxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2ZzdHJlYW0iIDMKICAgICAgdm9pZAogICAgICBjbG9zZSgpCiAgICAgIHsKIGlmICghX01f ZmlsZWJ1Zi5jbG9zZSgpKQogICB0aGlzLT5zZXRzdGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7 CiAgICAgIH0KIyAxMDU2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJl YW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMK ICAgIH07CiMgMTA3MyAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFtIiAzCiAg dGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgY2xhc3Mg YmFzaWNfZnN0cmVhbSA6IHB1YmxpYyBiYXNpY19pb3N0cmVhbTxfQ2hhclQsIF9UcmFpdHM+ CiAgICB7CiAgICBwdWJsaWM6CgogICAgICB0eXBlZGVmIF9DaGFyVCBjaGFyX3R5cGU7CiAg ICAgIHR5cGVkZWYgX1RyYWl0cyB0cmFpdHNfdHlwZTsKICAgICAgdHlwZWRlZiB0eXBlbmFt ZSB0cmFpdHNfdHlwZTo6aW50X3R5cGUgaW50X3R5cGU7CiAgICAgIHR5cGVkZWYgdHlwZW5h bWUgdHJhaXRzX3R5cGU6OnBvc190eXBlIHBvc190eXBlOwogICAgICB0eXBlZGVmIHR5cGVu YW1lIHRyYWl0c190eXBlOjpvZmZfdHlwZSBvZmZfdHlwZTsKCgogICAgICB0eXBlZGVmIGJh c2ljX2ZpbGVidWY8Y2hhcl90eXBlLCB0cmFpdHNfdHlwZT4gX19maWxlYnVmX3R5cGU7CiAg ICAgIHR5cGVkZWYgYmFzaWNfaW9zPGNoYXJfdHlwZSwgdHJhaXRzX3R5cGU+IF9faW9zX3R5 cGU7CiAgICAgIHR5cGVkZWYgYmFzaWNfaW9zdHJlYW08Y2hhcl90eXBlLCB0cmFpdHNfdHlw ZT4gX19pb3N0cmVhbV90eXBlOwoKICAgIHByaXZhdGU6CiAgICAgIF9fZmlsZWJ1Zl90eXBl IF9NX2ZpbGVidWY7CgogICAgcHVibGljOgojIDExMDEgIi9ob21lL2NoZW5nbHVsdS93b3Jr L3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8x NC4wLjAvZnN0cmVhbSIgMwogICAgICBiYXNpY19mc3RyZWFtKCkKICAgICAgOiBfX2lvc3Ry ZWFtX3R5cGUoKSwgX01fZmlsZWJ1ZigpCiAgICAgIHsgdGhpcy0+aW5pdCgmX01fZmlsZWJ1 Zik7IH0KCgoKCgoKICAgICAgZXhwbGljaXQKICAgICAgYmFzaWNfZnN0cmVhbShjb25zdCBj aGFyKiBfX3MsCiAgICAgIGlvc19iYXNlOjpvcGVubW9kZSBfX21vZGUgPSBpb3NfYmFzZTo6 aW4gfCBpb3NfYmFzZTo6b3V0KQogICAgICA6IF9faW9zdHJlYW1fdHlwZSgwKSwgX01fZmls ZWJ1ZigpCiAgICAgIHsKIHRoaXMtPmluaXQoJl9NX2ZpbGVidWYpOwogdGhpcy0+b3Blbihf X3MsIF9fbW9kZSk7CiAgICAgIH0KIyAxMTc2ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29s Y2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4w L2ZzdHJlYW0iIDMKICAgICAgfmJhc2ljX2ZzdHJlYW0oKQogICAgICB7IH0KIyAxMjA4ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKICAgICAgX19maWxlYnVmX3R5 cGUqCiAgICAgIHJkYnVmKCkgY29uc3QKICAgICAgeyByZXR1cm4gY29uc3RfY2FzdDxfX2Zp bGVidWZfdHlwZSo+KCZfTV9maWxlYnVmKTsgfQoKCgoKCiAgICAgIGJvb2wKICAgICAgaXNf b3BlbigpCiAgICAgIHsgcmV0dXJuIF9NX2ZpbGVidWYuaXNfb3BlbigpOyB9CgoKCiAgICAg IGJvb2wKICAgICAgaXNfb3BlbigpIGNvbnN0CiAgICAgIHsgcmV0dXJuIF9NX2ZpbGVidWYu aXNfb3BlbigpOyB9CiMgMTIzNCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9mc3RyZWFt IiAzCiAgICAgIHZvaWQKICAgICAgb3Blbihjb25zdCBjaGFyKiBfX3MsCiAgICBpb3NfYmFz ZTo6b3Blbm1vZGUgX19tb2RlID0gaW9zX2Jhc2U6OmluIHwgaW9zX2Jhc2U6Om91dCkKICAg ICAgewogaWYgKCFfTV9maWxlYnVmLm9wZW4oX19zLCBfX21vZGUpKQogICB0aGlzLT5zZXRz dGF0ZShpb3NfYmFzZTo6ZmFpbGJpdCk7CiBlbHNlCgoKICAgdGhpcy0+Y2xlYXIoKTsKICAg ICAgfQojIDEzMTAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAg ICB2b2lkCiAgICAgIGNsb3NlKCkKICAgICAgewogaWYgKCFfTV9maWxlYnVmLmNsb3NlKCkp CiAgIHRoaXMtPnNldHN0YXRlKGlvc19iYXNlOjpmYWlsYml0KTsKICAgICAgfQojIDEzMjUg Ii9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGlt aXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMwogICAgfTsKIyAxMzU3ICIv aG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6 ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2ZzdHJlYW0iIDMKCn0KCiMgMSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2ZzdHJlYW0udGNjIiAxIDMKIyAzNSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2lu Y2x1ZGUvYysrLzE0LjAuMC9iaXRzL2ZzdHJlYW0udGNjIiAzCiNkZWZpbmUgX0ZTVFJFQU1f VENDIDEKCiAgICAgICAKIyAzOCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2Zz dHJlYW0udGNjIiAzCgoKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVw c3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jZXJybm8i IDEgMwojIDM5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NlcnJubyIgMwogICAgICAg CiMgNDAgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxs L29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY2Vycm5vIiAzCgoKIyAxICIvdXNy L2luY2x1ZGUvZXJybm8uaCIgMSAzIDQKIyAyMyAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDMg NAojZGVmaW5lIF9FUlJOT19IIDEKCgoKCiMgMSAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8u aCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMvZXJybm8uaCIgMyA0CiNkZWZpbmUg X0JJVFNfRVJSTk9fSCAxCgoKCgoKIyAxICIvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIg MSAzIDQKIyAxICIvdXNyL2luY2x1ZGUvYXNtL2Vycm5vLmgiIDEgMyA0CiMgMSAiL3Vzci9p bmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLmgiIDEgMyA0CgoKI2RlZmluZSBfQVNNX0dFTkVS SUNfRVJSTk9fSCAKCiMgMSAiL3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL2Vycm5vLWJhc2Uu aCIgMSAzIDQKCgojZGVmaW5lIF9BU01fR0VORVJJQ19FUlJOT19CQVNFX0ggCgojZGVmaW5l IEVQRVJNIDEKI2RlZmluZSBFTk9FTlQgMgojZGVmaW5lIEVTUkNIIDMKI2RlZmluZSBFSU5U UiA0CiNkZWZpbmUgRUlPIDUKI2RlZmluZSBFTlhJTyA2CiNkZWZpbmUgRTJCSUcgNwojZGVm aW5lIEVOT0VYRUMgOAojZGVmaW5lIEVCQURGIDkKI2RlZmluZSBFQ0hJTEQgMTAKI2RlZmlu ZSBFQUdBSU4gMTEKI2RlZmluZSBFTk9NRU0gMTIKI2RlZmluZSBFQUNDRVMgMTMKI2RlZmlu ZSBFRkFVTFQgMTQKI2RlZmluZSBFTk9UQkxLIDE1CiNkZWZpbmUgRUJVU1kgMTYKI2RlZmlu ZSBFRVhJU1QgMTcKI2RlZmluZSBFWERFViAxOAojZGVmaW5lIEVOT0RFViAxOQojZGVmaW5l IEVOT1RESVIgMjAKI2RlZmluZSBFSVNESVIgMjEKI2RlZmluZSBFSU5WQUwgMjIKI2RlZmlu ZSBFTkZJTEUgMjMKI2RlZmluZSBFTUZJTEUgMjQKI2RlZmluZSBFTk9UVFkgMjUKI2RlZmlu ZSBFVFhUQlNZIDI2CiNkZWZpbmUgRUZCSUcgMjcKI2RlZmluZSBFTk9TUEMgMjgKI2RlZmlu ZSBFU1BJUEUgMjkKI2RlZmluZSBFUk9GUyAzMAojZGVmaW5lIEVNTElOSyAzMQojZGVmaW5l IEVQSVBFIDMyCiNkZWZpbmUgRURPTSAzMwojZGVmaW5lIEVSQU5HRSAzNAojIDYgIi91c3Iv aW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAyIDMgNAoKI2RlZmluZSBFREVBRExLIDM1 CiNkZWZpbmUgRU5BTUVUT09MT05HIDM2CiNkZWZpbmUgRU5PTENLIDM3CiMgMTggIi91c3Iv aW5jbHVkZS9hc20tZ2VuZXJpYy9lcnJuby5oIiAzIDQKI2RlZmluZSBFTk9TWVMgMzgKCiNk ZWZpbmUgRU5PVEVNUFRZIDM5CiNkZWZpbmUgRUxPT1AgNDAKI2RlZmluZSBFV09VTERCTE9D SyBFQUdBSU4KI2RlZmluZSBFTk9NU0cgNDIKI2RlZmluZSBFSURSTSA0MwojZGVmaW5lIEVD SFJORyA0NAojZGVmaW5lIEVMMk5TWU5DIDQ1CiNkZWZpbmUgRUwzSExUIDQ2CiNkZWZpbmUg RUwzUlNUIDQ3CiNkZWZpbmUgRUxOUk5HIDQ4CiNkZWZpbmUgRVVOQVRDSCA0OQojZGVmaW5l IEVOT0NTSSA1MAojZGVmaW5lIEVMMkhMVCA1MQojZGVmaW5lIEVCQURFIDUyCiNkZWZpbmUg RUJBRFIgNTMKI2RlZmluZSBFWEZVTEwgNTQKI2RlZmluZSBFTk9BTk8gNTUKI2RlZmluZSBF QkFEUlFDIDU2CiNkZWZpbmUgRUJBRFNMVCA1NwoKI2RlZmluZSBFREVBRExPQ0sgRURFQURM SwoKI2RlZmluZSBFQkZPTlQgNTkKI2RlZmluZSBFTk9TVFIgNjAKI2RlZmluZSBFTk9EQVRB IDYxCiNkZWZpbmUgRVRJTUUgNjIKI2RlZmluZSBFTk9TUiA2MwojZGVmaW5lIEVOT05FVCA2 NAojZGVmaW5lIEVOT1BLRyA2NQojZGVmaW5lIEVSRU1PVEUgNjYKI2RlZmluZSBFTk9MSU5L IDY3CiNkZWZpbmUgRUFEViA2OAojZGVmaW5lIEVTUk1OVCA2OQojZGVmaW5lIEVDT01NIDcw CiNkZWZpbmUgRVBST1RPIDcxCiNkZWZpbmUgRU1VTFRJSE9QIDcyCiNkZWZpbmUgRURPVERP VCA3MwojZGVmaW5lIEVCQURNU0cgNzQKI2RlZmluZSBFT1ZFUkZMT1cgNzUKI2RlZmluZSBF Tk9UVU5JUSA3NgojZGVmaW5lIEVCQURGRCA3NwojZGVmaW5lIEVSRU1DSEcgNzgKI2RlZmlu ZSBFTElCQUNDIDc5CiNkZWZpbmUgRUxJQkJBRCA4MAojZGVmaW5lIEVMSUJTQ04gODEKI2Rl ZmluZSBFTElCTUFYIDgyCiNkZWZpbmUgRUxJQkVYRUMgODMKI2RlZmluZSBFSUxTRVEgODQK I2RlZmluZSBFUkVTVEFSVCA4NQojZGVmaW5lIEVTVFJQSVBFIDg2CiNkZWZpbmUgRVVTRVJT IDg3CiNkZWZpbmUgRU5PVFNPQ0sgODgKI2RlZmluZSBFREVTVEFERFJSRVEgODkKI2RlZmlu ZSBFTVNHU0laRSA5MAojZGVmaW5lIEVQUk9UT1RZUEUgOTEKI2RlZmluZSBFTk9QUk9UT09Q VCA5MgojZGVmaW5lIEVQUk9UT05PU1VQUE9SVCA5MwojZGVmaW5lIEVTT0NLVE5PU1VQUE9S VCA5NAojZGVmaW5lIEVPUE5PVFNVUFAgOTUKI2RlZmluZSBFUEZOT1NVUFBPUlQgOTYKI2Rl ZmluZSBFQUZOT1NVUFBPUlQgOTcKI2RlZmluZSBFQUREUklOVVNFIDk4CiNkZWZpbmUgRUFE RFJOT1RBVkFJTCA5OQojZGVmaW5lIEVORVRET1dOIDEwMAojZGVmaW5lIEVORVRVTlJFQUNI IDEwMQojZGVmaW5lIEVORVRSRVNFVCAxMDIKI2RlZmluZSBFQ09OTkFCT1JURUQgMTAzCiNk ZWZpbmUgRUNPTk5SRVNFVCAxMDQKI2RlZmluZSBFTk9CVUZTIDEwNQojZGVmaW5lIEVJU0NP Tk4gMTA2CiNkZWZpbmUgRU5PVENPTk4gMTA3CiNkZWZpbmUgRVNIVVRET1dOIDEwOAojZGVm aW5lIEVUT09NQU5ZUkVGUyAxMDkKI2RlZmluZSBFVElNRURPVVQgMTEwCiNkZWZpbmUgRUNP Tk5SRUZVU0VEIDExMQojZGVmaW5lIEVIT1NURE9XTiAxMTIKI2RlZmluZSBFSE9TVFVOUkVB Q0ggMTEzCiNkZWZpbmUgRUFMUkVBRFkgMTE0CiNkZWZpbmUgRUlOUFJPR1JFU1MgMTE1CiNk ZWZpbmUgRVNUQUxFIDExNgojZGVmaW5lIEVVQ0xFQU4gMTE3CiNkZWZpbmUgRU5PVE5BTSAx MTgKI2RlZmluZSBFTkFWQUlMIDExOQojZGVmaW5lIEVJU05BTSAxMjAKI2RlZmluZSBFUkVN T1RFSU8gMTIxCiNkZWZpbmUgRURRVU9UIDEyMgoKI2RlZmluZSBFTk9NRURJVU0gMTIzCiNk ZWZpbmUgRU1FRElVTVRZUEUgMTI0CiNkZWZpbmUgRUNBTkNFTEVEIDEyNQojZGVmaW5lIEVO T0tFWSAxMjYKI2RlZmluZSBFS0VZRVhQSVJFRCAxMjcKI2RlZmluZSBFS0VZUkVWT0tFRCAx MjgKI2RlZmluZSBFS0VZUkVKRUNURUQgMTI5CgoKI2RlZmluZSBFT1dORVJERUFEIDEzMAoj ZGVmaW5lIEVOT1RSRUNPVkVSQUJMRSAxMzEKCiNkZWZpbmUgRVJGS0lMTCAxMzIKCiNkZWZp bmUgRUhXUE9JU09OIDEzMwojIDIgIi91c3IvaW5jbHVkZS9hc20vZXJybm8uaCIgMiAzIDQK IyAyICIvdXNyL2luY2x1ZGUvbGludXgvZXJybm8uaCIgMiAzIDQKIyAyNyAiL3Vzci9pbmNs dWRlL2JpdHMvZXJybm8uaCIgMiAzIDQKCgoKI2RlZmluZSBFTk9UU1VQIEVPUE5PVFNVUFAK IyAyOSAiL3Vzci9pbmNsdWRlL2Vycm5vLmgiIDIgMyA0CgoKCgoKZXh0ZXJuICJDIiB7CgoK ZXh0ZXJuIGludCAqX19lcnJub19sb2NhdGlvbiAodm9pZCkgdGhyb3cgKCkgX19hdHRyaWJ1 dGVfXyAoKF9fY29uc3RfXykpOwojZGVmaW5lIGVycm5vICgqX19lcnJub19sb2NhdGlvbiAo KSkKCgoKCgoKZXh0ZXJuIGNoYXIgKnByb2dyYW1faW52b2NhdGlvbl9uYW1lOwpleHRlcm4g Y2hhciAqcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWU7CgojIDEgIi91c3IvaW5jbHVk ZS9iaXRzL3R5cGVzL2Vycm9yX3QuaCIgMSAzIDQKIyAyMCAiL3Vzci9pbmNsdWRlL2JpdHMv dHlwZXMvZXJyb3JfdC5oIiAzIDQKI2RlZmluZSBfX2Vycm9yX3RfZGVmaW5lZCAxCgp0eXBl ZGVmIGludCBlcnJvcl90OwojIDQ5ICIvdXNyL2luY2x1ZGUvZXJybm8uaCIgMiAzIDQKCgoK fQojIDQzICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFs bC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NlcnJubyIgMiAzCgoKI2RlZmlu ZSBfR0xJQkNYWF9DRVJSTk8gMQojIDQyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hh aW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2Jp dHMvZnN0cmVhbS50Y2MiIDIgMwoKbmFtZXNwYWNlIHN0ZCBfX2F0dHJpYnV0ZV9fICgoX192 aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hh clQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB2b2lkCiAgICBiYXNpY19maWxlYnVmPF9DaGFy VCwgX1RyYWl0cz46OgogICAgX01fYWxsb2NhdGVfaW50ZXJuYWxfYnVmZmVyKCkKICAgIHsK CgogICAgICBpZiAoIV9NX2J1Zl9hbGxvY2F0ZWQgJiYgIV9NX2J1ZikKIHsKICAgX01fYnVm ID0gbmV3IGNoYXJfdHlwZVtfTV9idWZfc2l6ZV07CiAgIF9NX2J1Zl9hbGxvY2F0ZWQgPSB0 cnVlOwogfQogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9U cmFpdHM+CiAgICB2b2lkCiAgICBiYXNpY19maWxlYnVmPF9DaGFyVCwgX1RyYWl0cz46Ogog ICAgX01fZGVzdHJveV9pbnRlcm5hbF9idWZmZXIoKSB0aHJvdygpCiAgICB7CiAgICAgIGlm IChfTV9idWZfYWxsb2NhdGVkKQogewogICBkZWxldGUgW10gX01fYnVmOwogICBfTV9idWYg PSAwOwogICBfTV9idWZfYWxsb2NhdGVkID0gZmFsc2U7CiB9CiAgICAgIGRlbGV0ZSBbXSBf TV9leHRfYnVmOwogICAgICBfTV9leHRfYnVmID0gMDsKICAgICAgX01fZXh0X2J1Zl9zaXpl ID0gMDsKICAgICAgX01fZXh0X25leHQgPSAwOwogICAgICBfTV9leHRfZW5kID0gMDsKICAg IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg YmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGJhc2ljX2ZpbGVidWYoKSA6 IF9fc3RyZWFtYnVmX3R5cGUoKSwgX01fbG9jaygpLCBfTV9maWxlKCZfTV9sb2NrKSwKICAg IF9NX21vZGUoaW9zX2Jhc2U6Om9wZW5tb2RlKDApKSwgX01fc3RhdGVfYmVnKCksIF9NX3N0 YXRlX2N1cigpLAogICAgX01fc3RhdGVfbGFzdCgpLCBfTV9idWYoMCksIF9NX2J1Zl9zaXpl KDgxOTIpLAogICAgX01fYnVmX2FsbG9jYXRlZChmYWxzZSksIF9NX3JlYWRpbmcoZmFsc2Up LCBfTV93cml0aW5nKGZhbHNlKSwgX01fcGJhY2soKSwKICAgIF9NX3BiYWNrX2N1cl9zYXZl KDApLCBfTV9wYmFja19lbmRfc2F2ZSgwKSwgX01fcGJhY2tfaW5pdChmYWxzZSksCiAgICBf TV9jb2RlY3Z0KDApLCBfTV9leHRfYnVmKDApLCBfTV9leHRfYnVmX3NpemUoMCksIF9NX2V4 dF9uZXh0KDApLAogICAgX01fZXh0X2VuZCgwKQogICAgewogICAgICBfTV9jb2RlY3Z0ID0g c3RkOjpfX3RyeV91c2VfZmFjZXQ8X19jb2RlY3Z0X3R5cGU+KHRoaXMtPl9NX2J1Zl9sb2Nh bGUpOwogICAgfQojIDE3NiAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9iaXRzL2ZzdHJl YW0udGNjIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz PgogICAgdHlwZW5hbWUgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjpfX2ZpbGVi dWZfdHlwZSoKICAgIGJhc2ljX2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6CiAgICBvcGVu KGNvbnN0IGNoYXIqIF9fcywgaW9zX2Jhc2U6Om9wZW5tb2RlIF9fbW9kZSkKICAgIHsKICAg ICAgX19maWxlYnVmX3R5cGUgKl9fcmV0ID0gMDsKICAgICAgaWYgKCF0aGlzLT5pc19vcGVu KCkpCiB7CiAgIF9NX2ZpbGUub3BlbihfX3MsIF9fbW9kZSk7CiAgIGlmICh0aGlzLT5pc19v cGVuKCkpCiAgICAgewogICAgICAgX01fYWxsb2NhdGVfaW50ZXJuYWxfYnVmZmVyKCk7CiAg ICAgICBfTV9tb2RlID0gX19tb2RlOwoKCiAgICAgICBfTV9yZWFkaW5nID0gZmFsc2U7CiAg ICAgICBfTV93cml0aW5nID0gZmFsc2U7CiAgICAgICBfTV9zZXRfYnVmZmVyKC0xKTsKCgog ICAgICAgX01fc3RhdGVfbGFzdCA9IF9NX3N0YXRlX2N1ciA9IF9NX3N0YXRlX2JlZzsKCgog ICAgICAgaWYgKChfX21vZGUgJiBpb3NfYmFzZTo6YXRlKQogICAgJiYgdGhpcy0+c2Vla29m ZigwLCBpb3NfYmFzZTo6ZW5kLCBfX21vZGUpCiAgICA9PSBwb3NfdHlwZShvZmZfdHlwZSgt MSkpKQogIHRoaXMtPmNsb3NlKCk7CiAgICAgICBlbHNlCiAgX19yZXQgPSB0aGlzOwogICAg IH0KIH0KICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQojIDI0NiAiL2hvbWUvY2hlbmdsdWx1 L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUv YysrLzE0LjAuMC9iaXRzL2ZzdHJlYW0udGNjIiAzCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0No YXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgYmFzaWNfZmlsZWJ1ZjxfQ2hh clQsIF9UcmFpdHM+OjpfX2ZpbGVidWZfdHlwZSoKICAgIGJhc2ljX2ZpbGVidWY8X0NoYXJU LCBfVHJhaXRzPjo6CiAgICBjbG9zZSgpCiAgICB7CiAgICAgIGlmICghdGhpcy0+aXNfb3Bl bigpKQogcmV0dXJuIDA7CgogICAgICBib29sIF9fdGVzdGZhaWwgPSBmYWxzZTsKICAgICAg ewoKIHN0cnVjdCBfX2Nsb3NlX3NlbnRyeQogewogICBiYXNpY19maWxlYnVmICpfX2ZiOwog ICBfX2Nsb3NlX3NlbnRyeSAoYmFzaWNfZmlsZWJ1ZiAqX19mYmkpOiBfX2ZiKF9fZmJpKSB7 IH0KICAgfl9fY2xvc2Vfc2VudHJ5ICgpCiAgIHsKICAgICBfX2ZiLT5fTV9tb2RlID0gaW9z X2Jhc2U6Om9wZW5tb2RlKDApOwogICAgIF9fZmItPl9NX3BiYWNrX2luaXQgPSBmYWxzZTsK ICAgICBfX2ZiLT5fTV9kZXN0cm95X2ludGVybmFsX2J1ZmZlcigpOwogICAgIF9fZmItPl9N X3JlYWRpbmcgPSBmYWxzZTsKICAgICBfX2ZiLT5fTV93cml0aW5nID0gZmFsc2U7CiAgICAg X19mYi0+X01fc2V0X2J1ZmZlcigtMSk7CiAgICAgX19mYi0+X01fc3RhdGVfbGFzdCA9IF9f ZmItPl9NX3N0YXRlX2N1ciA9IF9fZmItPl9NX3N0YXRlX2JlZzsKICAgfQogfSBfX2NzICh0 aGlzKTsKCiB0cnkKICAgewogICAgIGlmICghX01fdGVybWluYXRlX291dHB1dCgpKQogICAg ICAgX190ZXN0ZmFpbCA9IHRydWU7CiAgIH0KIGNhdGNoKC4uLikKICAgewogICAgIF9NX2Zp bGUuY2xvc2UoKTsKICAgICB0aHJvdzsKICAgfQogICAgICB9CgogICAgICBpZiAoIV9NX2Zp bGUuY2xvc2UoKSkKIF9fdGVzdGZhaWwgPSB0cnVlOwoKICAgICAgaWYgKF9fdGVzdGZhaWwp CiByZXR1cm4gMDsKICAgICAgZWxzZQogcmV0dXJuIHRoaXM7CiAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHN0cmVhbXNpemUKICAg IGJhc2ljX2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6CiAgICBzaG93bWFueWMoKQogICAg ewogICAgICBzdHJlYW1zaXplIF9fcmV0ID0gLTE7CiAgICAgIGNvbnN0IGJvb2wgX190ZXN0 aW4gPSBfTV9tb2RlICYgaW9zX2Jhc2U6OmluOwogICAgICBpZiAoX190ZXN0aW4gJiYgdGhp cy0+aXNfb3BlbigpKQogewoKCiAgIF9fcmV0ID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmdw dHIoKTsKCgoKCgoKCiAgIGlmIChfX2NoZWNrX2ZhY2V0KF9NX2NvZGVjdnQpLmVuY29kaW5n KCkgPj0gMCkKCiAgICAgX19yZXQgKz0gX01fZmlsZS5zaG93bWFueWMoKSAvIF9NX2NvZGVj dnQtPm1heF9sZW5ndGgoKTsKIH0KICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1w bGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBi YXNpY19maWxlYnVmPF9DaGFyVCwgX1RyYWl0cz46OmludF90eXBlCiAgICBiYXNpY19maWxl YnVmPF9DaGFyVCwgX1RyYWl0cz46OgogICAgdW5kZXJmbG93KCkKICAgIHsKICAgICAgaW50 X3R5cGUgX19yZXQgPSB0cmFpdHNfdHlwZTo6ZW9mKCk7CiAgICAgIGNvbnN0IGJvb2wgX190 ZXN0aW4gPSBfTV9tb2RlICYgaW9zX2Jhc2U6OmluOwogICAgICBpZiAoX190ZXN0aW4pCiB7 CiAgIGlmIChfTV93cml0aW5nKQogICAgIHsKICAgICAgIGlmIChvdmVyZmxvdygpID09IHRy YWl0c190eXBlOjplb2YoKSkKICByZXR1cm4gX19yZXQ7CiAgICAgICBfTV9zZXRfYnVmZmVy KC0xKTsKICAgICAgIF9NX3dyaXRpbmcgPSBmYWxzZTsKICAgICB9CgoKCiAgIF9NX2Rlc3Ry b3lfcGJhY2soKTsKCiAgIGlmICh0aGlzLT5ncHRyKCkgPCB0aGlzLT5lZ3B0cigpKQogICAg IHJldHVybiB0cmFpdHNfdHlwZTo6dG9faW50X3R5cGUoKnRoaXMtPmdwdHIoKSk7CgoKICAg Y29uc3Qgc2l6ZV90IF9fYnVmbGVuID0gX01fYnVmX3NpemUgPiAxID8gX01fYnVmX3NpemUg LSAxIDogMTsKCgogICBib29sIF9fZ290X2VvZiA9IGZhbHNlOwoKICAgc3RyZWFtc2l6ZSBf X2lsZW4gPSAwOwogICBjb2RlY3Z0X2Jhc2U6OnJlc3VsdCBfX3IgPSBjb2RlY3Z0X2Jhc2U6 Om9rOwogICBpZiAoX19jaGVja19mYWNldChfTV9jb2RlY3Z0KS5hbHdheXNfbm9jb252KCkp CiAgICAgewogICAgICAgX19pbGVuID0gX01fZmlsZS54c2dldG4ocmVpbnRlcnByZXRfY2Fz dDxjaGFyKj4odGhpcy0+ZWJhY2soKSksCiAgICAgICAgICBfX2J1Zmxlbik7CiAgICAgICBp ZiAoX19pbGVuID09IDApCiAgX19nb3RfZW9mID0gdHJ1ZTsKICAgICB9CiAgIGVsc2UKICAg ICB7CgoKICAgICAgIGNvbnN0IGludCBfX2VuYyA9IF9NX2NvZGVjdnQtPmVuY29kaW5nKCk7 CiAgICAgICBzdHJlYW1zaXplIF9fYmxlbjsKICAgICAgIHN0cmVhbXNpemUgX19ybGVuOwog ICAgICAgaWYgKF9fZW5jID4gMCkKICBfX2JsZW4gPSBfX3JsZW4gPSBfX2J1ZmxlbiAqIF9f ZW5jOwogICAgICAgZWxzZQogIHsKICAgIF9fYmxlbiA9IF9fYnVmbGVuICsgX01fY29kZWN2 dC0+bWF4X2xlbmd0aCgpIC0gMTsKICAgIF9fcmxlbiA9IF9fYnVmbGVuOwogIH0KICAgICAg IGNvbnN0IHN0cmVhbXNpemUgX19yZW1haW5kZXIgPSBfTV9leHRfZW5kIC0gX01fZXh0X25l eHQ7CiAgICAgICBfX3JsZW4gPSBfX3JsZW4gPiBfX3JlbWFpbmRlciA/IF9fcmxlbiAtIF9f cmVtYWluZGVyIDogMDsKCgoKICAgICAgIGlmIChfTV9yZWFkaW5nICYmIHRoaXMtPmVncHRy KCkgPT0gdGhpcy0+ZWJhY2soKSAmJiBfX3JlbWFpbmRlcikKICBfX3JsZW4gPSAwOwoKCgog ICAgICAgaWYgKF9NX2V4dF9idWZfc2l6ZSA8IF9fYmxlbikKICB7CiAgICBjaGFyKiBfX2J1 ZiA9IG5ldyBjaGFyW19fYmxlbl07CiAgICBpZiAoX19yZW1haW5kZXIpCiAgICAgIF9fYnVp bHRpbl9tZW1jcHkoX19idWYsIF9NX2V4dF9uZXh0LCBfX3JlbWFpbmRlcik7CgogICAgZGVs ZXRlIFtdIF9NX2V4dF9idWY7CiAgICBfTV9leHRfYnVmID0gX19idWY7CiAgICBfTV9leHRf YnVmX3NpemUgPSBfX2JsZW47CiAgfQogICAgICAgZWxzZSBpZiAoX19yZW1haW5kZXIpCiAg X19idWlsdGluX21lbW1vdmUoX01fZXh0X2J1ZiwgX01fZXh0X25leHQsIF9fcmVtYWluZGVy KTsKCiAgICAgICBfTV9leHRfbmV4dCA9IF9NX2V4dF9idWY7CiAgICAgICBfTV9leHRfZW5k ID0gX01fZXh0X2J1ZiArIF9fcmVtYWluZGVyOwogICAgICAgX01fc3RhdGVfbGFzdCA9IF9N X3N0YXRlX2N1cjsKCiAgICAgICBkbwogIHsKICAgIGlmIChfX3JsZW4gPiAwKQogICAgICB7 CgoKCiAgICAgICAgaWYgKF9NX2V4dF9lbmQgLSBfTV9leHRfYnVmICsgX19ybGVuID4gX01f ZXh0X2J1Zl9zaXplKQogICB7CiAgICAgX190aHJvd19pb3NfZmFpbHVyZSgoImJhc2ljX2Zp bGVidWY6OnVuZGVyZmxvdyAiICJjb2RlY3Z0OjptYXhfbGVuZ3RoKCkgIiAiaXMgbm90IHZh bGlkIikKCiAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgfQogICAgICAgIHN0cmVh bXNpemUgX19lbGVuID0gX01fZmlsZS54c2dldG4oX01fZXh0X2VuZCwgX19ybGVuKTsKICAg ICAgICBpZiAoX19lbGVuID09IDApCiAgIF9fZ290X2VvZiA9IHRydWU7CiAgICAgICAgZWxz ZSBpZiAoX19lbGVuID09IC0xKQogICBicmVhazsKICAgICAgICBfTV9leHRfZW5kICs9IF9f ZWxlbjsKICAgICAgfQoKICAgIGNoYXJfdHlwZSogX19pZW5kID0gdGhpcy0+ZWJhY2soKTsK ICAgIGlmIChfTV9leHRfbmV4dCA8IF9NX2V4dF9lbmQpCiAgICAgIF9fciA9IF9NX2NvZGVj dnQtPmluKF9NX3N0YXRlX2N1ciwgX01fZXh0X25leHQsCiAgICAgIF9NX2V4dF9lbmQsIF9N X2V4dF9uZXh0LAogICAgICB0aGlzLT5lYmFjaygpLAogICAgICB0aGlzLT5lYmFjaygpICsg X19idWZsZW4sIF9faWVuZCk7CiAgICBpZiAoX19yID09IGNvZGVjdnRfYmFzZTo6bm9jb252 KQogICAgICB7CiAgICAgICAgc2l6ZV90IF9fYXZhaWwgPSBfTV9leHRfZW5kIC0gX01fZXh0 X2J1ZjsKICAgICAgICBfX2lsZW4gPSBzdGQ6Om1pbihfX2F2YWlsLCBfX2J1Zmxlbik7CiAg ICAgICAgdHJhaXRzX3R5cGU6OmNvcHkodGhpcy0+ZWJhY2soKSwKICAgICByZWludGVycHJl dF9jYXN0PGNoYXJfdHlwZSo+CiAgICAgKF9NX2V4dF9idWYpLCBfX2lsZW4pOwogICAgICAg IF9NX2V4dF9uZXh0ID0gX01fZXh0X2J1ZiArIF9faWxlbjsKICAgICAgfQogICAgZWxzZQog ICAgICBfX2lsZW4gPSBfX2llbmQgLSB0aGlzLT5lYmFjaygpOwoKCgoKICAgIGlmIChfX3Ig PT0gY29kZWN2dF9iYXNlOjplcnJvcikKICAgICAgYnJlYWs7CgogICAgX19ybGVuID0gMTsK ICB9CiAgICAgICB3aGlsZSAoX19pbGVuID09IDAgJiYgIV9fZ290X2VvZik7CiAgICAgfQoK ICAgaWYgKF9faWxlbiA+IDApCiAgICAgewogICAgICAgX01fc2V0X2J1ZmZlcihfX2lsZW4p OwogICAgICAgX01fcmVhZGluZyA9IHRydWU7CiAgICAgICBfX3JldCA9IHRyYWl0c190eXBl Ojp0b19pbnRfdHlwZSgqdGhpcy0+Z3B0cigpKTsKICAgICB9CiAgIGVsc2UgaWYgKF9fZ290 X2VvZikKICAgICB7CgoKCiAgICAgICBfTV9zZXRfYnVmZmVyKC0xKTsKICAgICAgIF9NX3Jl YWRpbmcgPSBmYWxzZTsKCgogICAgICAgaWYgKF9fciA9PSBjb2RlY3Z0X2Jhc2U6OnBhcnRp YWwpCiAgX190aHJvd19pb3NfZmFpbHVyZSgoImJhc2ljX2ZpbGVidWY6OnVuZGVyZmxvdyAi ICJpbmNvbXBsZXRlIGNoYXJhY3RlciBpbiBmaWxlIikKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKTsKICAgICB9CiAgIGVsc2UgaWYgKF9fciA9PSBjb2RlY3Z0 X2Jhc2U6OmVycm9yKQogICAgIF9fdGhyb3dfaW9zX2ZhaWx1cmUoKCJiYXNpY19maWxlYnVm Ojp1bmRlcmZsb3cgIiAiaW52YWxpZCBieXRlIHNlcXVlbmNlIGluIGZpbGUiKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICBlbHNlCiAgICAgX190aHJvd19p b3NfZmFpbHVyZSgoImJhc2ljX2ZpbGVidWY6OnVuZGVyZmxvdyAiICJlcnJvciByZWFkaW5n IHRoZSBmaWxlIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICgqX19lcnJub19s b2NhdGlvbiAoKSkpOwogfQogICAgICByZXR1cm4gX19yZXQ7CiAgICB9CgogIHRlbXBsYXRl PHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUgX1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2lj X2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6aW50X3R5cGUKICAgIGJhc2ljX2ZpbGVidWY8 X0NoYXJULCBfVHJhaXRzPjo6CiAgICBwYmFja2ZhaWwoaW50X3R5cGUgX19pKQogICAgewog ICAgICBpbnRfdHlwZSBfX3JldCA9IHRyYWl0c190eXBlOjplb2YoKTsKICAgICAgY29uc3Qg Ym9vbCBfX3Rlc3RpbiA9IF9NX21vZGUgJiBpb3NfYmFzZTo6aW47CiAgICAgIGlmIChfX3Rl c3RpbikKIHsKICAgaWYgKF9NX3dyaXRpbmcpCiAgICAgewogICAgICAgaWYgKG92ZXJmbG93 KCkgPT0gdHJhaXRzX3R5cGU6OmVvZigpKQogIHJldHVybiBfX3JldDsKICAgICAgIF9NX3Nl dF9idWZmZXIoLTEpOwogICAgICAgX01fd3JpdGluZyA9IGZhbHNlOwogICAgIH0KCgogICBj b25zdCBib29sIF9fdGVzdHBiID0gX01fcGJhY2tfaW5pdDsKICAgY29uc3QgYm9vbCBfX3Rl c3Rlb2YgPSB0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19pLCBfX3JldCk7CiAgIGludF90 eXBlIF9fdG1wOwogICBpZiAodGhpcy0+ZWJhY2soKSA8IHRoaXMtPmdwdHIoKSkKICAgICB7 CiAgICAgICB0aGlzLT5nYnVtcCgtMSk7CiAgICAgICBfX3RtcCA9IHRyYWl0c190eXBlOjp0 b19pbnRfdHlwZSgqdGhpcy0+Z3B0cigpKTsKICAgICB9CiAgIGVsc2UgaWYgKHRoaXMtPnNl ZWtvZmYoLTEsIGlvc19iYXNlOjpjdXIpICE9IHBvc190eXBlKG9mZl90eXBlKC0xKSkpCiAg ICAgewogICAgICAgX190bXAgPSB0aGlzLT51bmRlcmZsb3coKTsKICAgICAgIGlmICh0cmFp dHNfdHlwZTo6ZXFfaW50X3R5cGUoX190bXAsIF9fcmV0KSkKICByZXR1cm4gX19yZXQ7CiAg ICAgfQogICBlbHNlCiAgICAgewoKCgoKCiAgICAgICByZXR1cm4gX19yZXQ7CiAgICAgfQoK CgogICBpZiAoIV9fdGVzdGVvZiAmJiB0cmFpdHNfdHlwZTo6ZXFfaW50X3R5cGUoX19pLCBf X3RtcCkpCiAgICAgX19yZXQgPSBfX2k7CiAgIGVsc2UgaWYgKF9fdGVzdGVvZikKICAgICBf X3JldCA9IHRyYWl0c190eXBlOjpub3RfZW9mKF9faSk7CiAgIGVsc2UgaWYgKCFfX3Rlc3Rw YikKICAgICB7CiAgICAgICBfTV9jcmVhdGVfcGJhY2soKTsKICAgICAgIF9NX3JlYWRpbmcg PSB0cnVlOwogICAgICAgKnRoaXMtPmdwdHIoKSA9IHRyYWl0c190eXBlOjp0b19jaGFyX3R5 cGUoX19pKTsKICAgICAgIF9fcmV0ID0gX19pOwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9f cmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFp dHM+CiAgICB0eXBlbmFtZSBiYXNpY19maWxlYnVmPF9DaGFyVCwgX1RyYWl0cz46OmludF90 eXBlCiAgICBiYXNpY19maWxlYnVmPF9DaGFyVCwgX1RyYWl0cz46OgogICAgb3ZlcmZsb3co aW50X3R5cGUgX19jKQogICAgewogICAgICBpbnRfdHlwZSBfX3JldCA9IHRyYWl0c190eXBl Ojplb2YoKTsKICAgICAgY29uc3QgYm9vbCBfX3Rlc3Rlb2YgPSB0cmFpdHNfdHlwZTo6ZXFf aW50X3R5cGUoX19jLCBfX3JldCk7CiAgICAgIGNvbnN0IGJvb2wgX190ZXN0b3V0ID0gKF9N X21vZGUgJiBpb3NfYmFzZTo6b3V0CiAgICAgICAgIHx8IF9NX21vZGUgJiBpb3NfYmFzZTo6 YXBwKTsKICAgICAgaWYgKF9fdGVzdG91dCkKIHsKICAgICAgICAgIGlmIChfTV9yZWFkaW5n KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgX01fZGVzdHJveV9wYmFjaygpOwogICAg ICAgICAgICAgIGNvbnN0IGludCBfX2dwdHJfb2ZmID0gX01fZ2V0X2V4dF9wb3MoX01fc3Rh dGVfbGFzdCk7CiAgICAgICAgICAgICAgaWYgKF9NX3NlZWsoX19ncHRyX29mZiwgaW9zX2Jh c2U6OmN1ciwgX01fc3RhdGVfbGFzdCkKICAgICAgICAgICAgICAgICAgPT0gcG9zX3R5cGUo b2ZmX3R5cGUoLTEpKSkKICAgICAgICAgICAgICAgIHJldHVybiBfX3JldDsKICAgICAgICAg ICAgfQogICBpZiAodGhpcy0+cGJhc2UoKSA8IHRoaXMtPnBwdHIoKSkKICAgICB7CgogICAg ICAgaWYgKCFfX3Rlc3Rlb2YpCiAgewogICAgKnRoaXMtPnBwdHIoKSA9IHRyYWl0c190eXBl Ojp0b19jaGFyX3R5cGUoX19jKTsKICAgIHRoaXMtPnBidW1wKDEpOwogIH0KCgoKICAgICAg IGlmIChfTV9jb252ZXJ0X3RvX2V4dGVybmFsKHRoaXMtPnBiYXNlKCksCiAgICAgIHRoaXMt PnBwdHIoKSAtIHRoaXMtPnBiYXNlKCkpKQogIHsKICAgIF9NX3NldF9idWZmZXIoMCk7CiAg ICBfX3JldCA9IHRyYWl0c190eXBlOjpub3RfZW9mKF9fYyk7CiAgfQogICAgIH0KICAgZWxz ZSBpZiAoX01fYnVmX3NpemUgPiAxKQogICAgIHsKCgoKICAgICAgIF9NX3NldF9idWZmZXIo MCk7CiAgICAgICBfTV93cml0aW5nID0gdHJ1ZTsKICAgICAgIGlmICghX190ZXN0ZW9mKQog IHsKICAgICp0aGlzLT5wcHRyKCkgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKF9fYyk7 CiAgICB0aGlzLT5wYnVtcCgxKTsKICB9CiAgICAgICBfX3JldCA9IHRyYWl0c190eXBlOjpu b3RfZW9mKF9fYyk7CiAgICAgfQogICBlbHNlCiAgICAgewoKICAgICAgIGNoYXJfdHlwZSBf X2NvbnYgPSB0cmFpdHNfdHlwZTo6dG9fY2hhcl90eXBlKF9fYyk7CiAgICAgICBpZiAoX190 ZXN0ZW9mIHx8IF9NX2NvbnZlcnRfdG9fZXh0ZXJuYWwoJl9fY29udiwgMSkpCiAgewogICAg X01fd3JpdGluZyA9IHRydWU7CiAgICBfX3JldCA9IHRyYWl0c190eXBlOjpub3RfZW9mKF9f Yyk7CiAgfQogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0 ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAgICBib29sCiAgICBiYXNp Y19maWxlYnVmPF9DaGFyVCwgX1RyYWl0cz46OgogICAgX01fY29udmVydF90b19leHRlcm5h bChfQ2hhclQqIF9faWJ1Ziwgc3RyZWFtc2l6ZSBfX2lsZW4pCiAgICB7CgogICAgICBzdHJl YW1zaXplIF9fZWxlbjsKICAgICAgc3RyZWFtc2l6ZSBfX3BsZW47CiAgICAgIGlmIChfX2No ZWNrX2ZhY2V0KF9NX2NvZGVjdnQpLmFsd2F5c19ub2NvbnYoKSkKIHsKICAgX19lbGVuID0g X01fZmlsZS54c3B1dG4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oX19pYnVmKSwgX19pbGVu KTsKICAgX19wbGVuID0gX19pbGVuOwogfQogICAgICBlbHNlCiB7CgoKICAgc3RyZWFtc2l6 ZSBfX2JsZW4gPSBfX2lsZW4gKiBfTV9jb2RlY3Z0LT5tYXhfbGVuZ3RoKCk7CiAgIGNoYXIq IF9fYnVmID0gc3RhdGljX2Nhc3Q8Y2hhcio+KF9fYnVpbHRpbl9hbGxvY2EoX19ibGVuKSk7 CgogICBjaGFyKiBfX2JlbmQ7CiAgIGNvbnN0IGNoYXJfdHlwZSogX19pZW5kOwogICBjb2Rl Y3Z0X2Jhc2U6OnJlc3VsdCBfX3I7CiAgIF9fciA9IF9NX2NvZGVjdnQtPm91dChfTV9zdGF0 ZV9jdXIsIF9faWJ1ZiwgX19pYnVmICsgX19pbGVuLAogICAgX19pZW5kLCBfX2J1ZiwgX19i dWYgKyBfX2JsZW4sIF9fYmVuZCk7CgogICBpZiAoX19yID09IGNvZGVjdnRfYmFzZTo6b2sg fHwgX19yID09IGNvZGVjdnRfYmFzZTo6cGFydGlhbCkKICAgICBfX2JsZW4gPSBfX2JlbmQg LSBfX2J1ZjsKICAgZWxzZSBpZiAoX19yID09IGNvZGVjdnRfYmFzZTo6bm9jb252KQogICAg IHsKCiAgICAgICBfX2J1ZiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KF9faWJ1Zik7CiAg ICAgICBfX2JsZW4gPSBfX2lsZW47CiAgICAgfQogICBlbHNlCiAgICAgX190aHJvd19pb3Nf ZmFpbHVyZSgoImJhc2ljX2ZpbGVidWY6Ol9NX2NvbnZlcnRfdG9fZXh0ZXJuYWwgIiAiY29u dmVyc2lvbiBlcnJvciIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICBfX2Vs ZW4gPSBfTV9maWxlLnhzcHV0bihfX2J1ZiwgX19ibGVuKTsKICAgX19wbGVuID0gX19ibGVu OwoKCiAgIGlmIChfX3IgPT0gY29kZWN2dF9iYXNlOjpwYXJ0aWFsICYmIF9fZWxlbiA9PSBf X3BsZW4pCiAgICAgewogICAgICAgY29uc3QgY2hhcl90eXBlKiBfX2lyZXN1bWUgPSBfX2ll bmQ7CiAgICAgICBzdHJlYW1zaXplIF9fcmxlbiA9IHRoaXMtPnBwdHIoKSAtIF9faWVuZDsK ICAgICAgIF9fciA9IF9NX2NvZGVjdnQtPm91dChfTV9zdGF0ZV9jdXIsIF9faXJlc3VtZSwK ICAgICAgICBfX2lyZXN1bWUgKyBfX3JsZW4sIF9faWVuZCwgX19idWYsCiAgICAgICAgX19i dWYgKyBfX2JsZW4sIF9fYmVuZCk7CiAgICAgICBpZiAoX19yICE9IGNvZGVjdnRfYmFzZTo6 ZXJyb3IpCiAgewogICAgX19ybGVuID0gX19iZW5kIC0gX19idWY7CiAgICBfX2VsZW4gPSBf TV9maWxlLnhzcHV0bihfX2J1ZiwgX19ybGVuKTsKICAgIF9fcGxlbiA9IF9fcmxlbjsKICB9 CiAgICAgICBlbHNlCiAgX190aHJvd19pb3NfZmFpbHVyZSgoImJhc2ljX2ZpbGVidWY6Ol9N X2NvbnZlcnRfdG9fZXh0ZXJuYWwgIiAiY29udmVyc2lvbiBlcnJvciIpCiAgICAgICAgICAg ICAgICAgICAgICAgICk7CiAgICAgfQogfQogICAgICByZXR1cm4gX19lbGVuID09IF9fcGxl bjsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRz PgogICAgc3RyZWFtc2l6ZQogICAgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjoK ICAgIHhzZ2V0bihfQ2hhclQqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICB7CgogICAgICBz dHJlYW1zaXplIF9fcmV0ID0gMDsKICAgICAgaWYgKF9NX3BiYWNrX2luaXQpCiB7CiAgIGlm IChfX24gPiAwICYmIHRoaXMtPmdwdHIoKSA9PSB0aGlzLT5lYmFjaygpKQogICAgIHsKICAg ICAgICpfX3MrKyA9ICp0aGlzLT5ncHRyKCk7CiAgICAgICB0aGlzLT5nYnVtcCgxKTsKICAg ICAgIF9fcmV0ID0gMTsKICAgICAgIC0tX19uOwogICAgIH0KICAgX01fZGVzdHJveV9wYmFj aygpOwogfQogICAgICBlbHNlIGlmIChfTV93cml0aW5nKQogewogICBpZiAob3ZlcmZsb3co KSA9PSB0cmFpdHNfdHlwZTo6ZW9mKCkpCiAgICAgcmV0dXJuIF9fcmV0OwogICBfTV9zZXRf YnVmZmVyKC0xKTsKICAgX01fd3JpdGluZyA9IGZhbHNlOwogfQoKCgoKICAgICAgY29uc3Qg Ym9vbCBfX3Rlc3RpbiA9IF9NX21vZGUgJiBpb3NfYmFzZTo6aW47CiAgICAgIGNvbnN0IHN0 cmVhbXNpemUgX19idWZsZW4gPSBfTV9idWZfc2l6ZSA+IDEgPyBfTV9idWZfc2l6ZSAtIDEg OiAxOwoKICAgICAgaWYgKF9fbiA+IF9fYnVmbGVuICYmIF9fY2hlY2tfZmFjZXQoX01fY29k ZWN2dCkuYWx3YXlzX25vY29udigpCiAgICYmIF9fdGVzdGluKQogewoKICAgY29uc3Qgc3Ry ZWFtc2l6ZSBfX2F2YWlsID0gdGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmdwdHIoKTsKICAgaWYg KF9fYXZhaWwgIT0gMCkKICAgICB7CiAgICAgICB0cmFpdHNfdHlwZTo6Y29weShfX3MsIHRo aXMtPmdwdHIoKSwgX19hdmFpbCk7CiAgICAgICBfX3MgKz0gX19hdmFpbDsKICAgICAgIHRo aXMtPnNldGcodGhpcy0+ZWJhY2soKSwgdGhpcy0+Z3B0cigpICsgX19hdmFpbCwgdGhpcy0+ ZWdwdHIoKSk7CiAgICAgICBfX3JldCArPSBfX2F2YWlsOwogICAgICAgX19uIC09IF9fYXZh aWw7CiAgICAgfQoKCgogICBzdHJlYW1zaXplIF9fbGVuOwogICBmb3IgKDs7KQogICAgIHsK ICAgICAgIF9fbGVuID0gX01fZmlsZS54c2dldG4ocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4o X19zKSwgX19uKTsKICAgICAgIGlmIChfX2xlbiA9PSAtMSkKICBfX3Rocm93X2lvc19mYWls dXJlKCgiYmFzaWNfZmlsZWJ1Zjo6eHNnZXRuICIgImVycm9yIHJlYWRpbmcgdGhlIGZpbGUi KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICgqX19lcnJub19sb2NhdGlvbiAo KSkpOwogICAgICAgaWYgKF9fbGVuID09IDApCiAgYnJlYWs7CgogICAgICAgX19uIC09IF9f bGVuOwogICAgICAgX19yZXQgKz0gX19sZW47CiAgICAgICBpZiAoX19uID09IDApCiAgYnJl YWs7CgogICAgICAgX19zICs9IF9fbGVuOwogICAgIH0KCiAgIGlmIChfX24gPT0gMCkKICAg ICB7CgogICAgICAgX01fcmVhZGluZyA9IHRydWU7CiAgICAgfQogICBlbHNlIGlmIChfX2xl biA9PSAwKQogICAgIHsKCgoKICAgICAgIF9NX3NldF9idWZmZXIoLTEpOwogICAgICAgX01f cmVhZGluZyA9IGZhbHNlOwogICAgIH0KIH0KICAgICAgZWxzZQogX19yZXQgKz0gX19zdHJl YW1idWZfdHlwZTo6eHNnZXRuKF9fcywgX19uKTsKCiAgICAgIHJldHVybiBfX3JldDsKICAg IH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAg c3RyZWFtc2l6ZQogICAgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIHhz cHV0bihjb25zdCBfQ2hhclQqIF9fcywgc3RyZWFtc2l6ZSBfX24pCiAgICB7CiAgICAgIHN0 cmVhbXNpemUgX19yZXQgPSAwOwoKCgogICAgICBjb25zdCBib29sIF9fdGVzdG91dCA9IChf TV9tb2RlICYgaW9zX2Jhc2U6Om91dAogICAgICAgICB8fCBfTV9tb2RlICYgaW9zX2Jhc2U6 OmFwcCk7CiAgICAgIGlmIChfX2NoZWNrX2ZhY2V0KF9NX2NvZGVjdnQpLmFsd2F5c19ub2Nv bnYoKQogICAmJiBfX3Rlc3RvdXQgJiYgIV9NX3JlYWRpbmcpCiB7CiAgIHN0cmVhbXNpemUg X19idWZhdmFpbCA9IHRoaXMtPmVwcHRyKCkgLSB0aGlzLT5wcHRyKCk7CgoKICAgaWYgKCFf TV93cml0aW5nICYmIF9NX2J1Zl9zaXplID4gMSkKICAgICBfX2J1ZmF2YWlsID0gX01fYnVm X3NpemUgLSAxOwoKICAgaWYgKF9fbiA+PSBfX2J1ZmF2YWlsKQogICAgIHsKICAgICAgIGNv bnN0IHN0cmVhbXNpemUgX19idWZmaWxsID0gdGhpcy0+cHB0cigpIC0gdGhpcy0+cGJhc2Uo KTsKICAgICAgIGNvbnN0IGNoYXIqIF9fYnVmID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBj aGFyKj4odGhpcy0+cGJhc2UoKSk7CiAgICAgICBfX3JldCA9IF9NX2ZpbGUueHNwdXRuXzIo X19idWYsIF9fYnVmZmlsbCwKICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGNo YXIqPihfX3MpLAogICAgICAgICAgIF9fbik7CiAgICAgICBpZiAoX19yZXQgPT0gX19idWZm aWxsICsgX19uKQogIHsKICAgIF9NX3NldF9idWZmZXIoMCk7CiAgICBfTV93cml0aW5nID0g dHJ1ZTsKICB9CiAgICAgICBpZiAoX19yZXQgPiBfX2J1ZmZpbGwpCiAgX19yZXQgLT0gX19i dWZmaWxsOwogICAgICAgZWxzZQogIF9fcmV0ID0gMDsKICAgICB9CiAgIGVsc2UKICAgICBf X3JldCA9IF9fc3RyZWFtYnVmX3R5cGU6OnhzcHV0bihfX3MsIF9fbik7CiB9CiAgICAgICBl bHNlCiAgX19yZXQgPSBfX3N0cmVhbWJ1Zl90eXBlOjp4c3B1dG4oX19zLCBfX24pOwogICAg ICAgcmV0dXJuIF9fcmV0OwogICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5 cGVuYW1lIF9UcmFpdHM+CiAgICB0eXBlbmFtZSBiYXNpY19maWxlYnVmPF9DaGFyVCwgX1Ry YWl0cz46Ol9fc3RyZWFtYnVmX3R5cGUqCiAgICBiYXNpY19maWxlYnVmPF9DaGFyVCwgX1Ry YWl0cz46OgogICAgc2V0YnVmKGNoYXJfdHlwZSogX19zLCBzdHJlYW1zaXplIF9fbikKICAg IHsKICAgICAgaWYgKCF0aGlzLT5pc19vcGVuKCkpCiB7CiAgIGlmIChfX3MgPT0gMCAmJiBf X24gPT0gMCkKICAgICBfTV9idWZfc2l6ZSA9IDE7CiAgIGVsc2UgaWYgKF9fcyAmJiBfX24g PiAwKQogICAgIHsKIyA4MTYgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0 cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvYml0cy9mc3Ry ZWFtLnRjYyIgMwogICAgICAgX01fYnVmID0gX19zOwogICAgICAgX01fYnVmX3NpemUgPSBf X247CiAgICAgfQogfQogICAgICByZXR1cm4gdGhpczsKICAgIH0KCgoKCiAgdGVtcGxhdGU8 dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgYmFzaWNf ZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+Ojpwb3NfdHlwZQogICAgYmFzaWNfZmlsZWJ1Zjxf Q2hhclQsIF9UcmFpdHM+OjoKICAgIHNlZWtvZmYob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNl OjpzZWVrZGlyIF9fd2F5LCBpb3NfYmFzZTo6b3Blbm1vZGUpCiAgICB7CiAgICAgIGludCBf X3dpZHRoID0gMDsKICAgICAgaWYgKF9NX2NvZGVjdnQpCiBfX3dpZHRoID0gX01fY29kZWN2 dC0+ZW5jb2RpbmcoKTsKICAgICAgaWYgKF9fd2lkdGggPCAwKQogX193aWR0aCA9IDA7Cgog ICAgICBwb3NfdHlwZSBfX3JldCA9IHBvc190eXBlKG9mZl90eXBlKC0xKSk7CiAgICAgIGNv bnN0IGJvb2wgX190ZXN0ZmFpbCA9IF9fb2ZmICE9IDAgJiYgX193aWR0aCA8PSAwOwogICAg ICBpZiAodGhpcy0+aXNfb3BlbigpICYmICFfX3Rlc3RmYWlsKQogewoKCgoKICAgYm9vbCBf X25vX21vdmVtZW50ID0gX193YXkgPT0gaW9zX2Jhc2U6OmN1ciAmJiBfX29mZiA9PSAwCiAg ICAgJiYgKCFfTV93cml0aW5nIHx8IF9NX2NvZGVjdnQtPmFsd2F5c19ub2NvbnYoKSk7CgoK ICAgaWYgKCFfX25vX21vdmVtZW50KQogICAgIF9NX2Rlc3Ryb3lfcGJhY2soKTsKCgoKCgoK ICAgX19zdGF0ZV90eXBlIF9fc3RhdGUgPSBfTV9zdGF0ZV9iZWc7CiAgIG9mZl90eXBlIF9f Y29tcHV0ZWRfb2ZmID0gX19vZmYgKiBfX3dpZHRoOwogICBpZiAoX01fcmVhZGluZyAmJiBf X3dheSA9PSBpb3NfYmFzZTo6Y3VyKQogICAgIHsKICAgICAgIF9fc3RhdGUgPSBfTV9zdGF0 ZV9sYXN0OwogICAgICAgX19jb21wdXRlZF9vZmYgKz0gX01fZ2V0X2V4dF9wb3MoX19zdGF0 ZSk7CiAgICAgfQogICBpZiAoIV9fbm9fbW92ZW1lbnQpCiAgICAgX19yZXQgPSBfTV9zZWVr KF9fY29tcHV0ZWRfb2ZmLCBfX3dheSwgX19zdGF0ZSk7CiAgIGVsc2UKICAgICB7CiAgICAg ICBpZiAoX01fd3JpdGluZykKICBfX2NvbXB1dGVkX29mZiA9IHRoaXMtPnBwdHIoKSAtIHRo aXMtPnBiYXNlKCk7CgogICAgICAgb2ZmX3R5cGUgX19maWxlX29mZiA9IF9NX2ZpbGUuc2Vl a29mZigwLCBpb3NfYmFzZTo6Y3VyKTsKICAgICAgIGlmIChfX2ZpbGVfb2ZmICE9IG9mZl90 eXBlKC0xKSkKICB7CiAgICBfX3JldCA9IF9fZmlsZV9vZmYgKyBfX2NvbXB1dGVkX29mZjsK ICAgIF9fcmV0LnN0YXRlKF9fc3RhdGUpOwogIH0KICAgICB9CiB9CiAgICAgIHJldHVybiBf X3JldDsKICAgIH0KCgoKCgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwgdHlwZW5hbWUg X1RyYWl0cz4KICAgIHR5cGVuYW1lIGJhc2ljX2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6 cG9zX3R5cGUKICAgIGJhc2ljX2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6CiAgICBzZWVr cG9zKHBvc190eXBlIF9fcG9zLCBpb3NfYmFzZTo6b3Blbm1vZGUpCiAgICB7CiAgICAgIHBv c190eXBlIF9fcmV0ID0gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKICAgICAgaWYgKHRoaXMt PmlzX29wZW4oKSkKIHsKCiAgIF9NX2Rlc3Ryb3lfcGJhY2soKTsKICAgX19yZXQgPSBfTV9z ZWVrKG9mZl90eXBlKF9fcG9zKSwgaW9zX2Jhc2U6OmJlZywgX19wb3Muc3RhdGUoKSk7CiB9 CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJU LCB0eXBlbmFtZSBfVHJhaXRzPgogICAgdHlwZW5hbWUgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQs IF9UcmFpdHM+Ojpwb3NfdHlwZQogICAgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+ OjoKICAgIF9NX3NlZWsob2ZmX3R5cGUgX19vZmYsIGlvc19iYXNlOjpzZWVrZGlyIF9fd2F5 LCBfX3N0YXRlX3R5cGUgX19zdGF0ZSkKICAgIHsKICAgICAgcG9zX3R5cGUgX19yZXQgPSBw b3NfdHlwZShvZmZfdHlwZSgtMSkpOwogICAgICBpZiAoX01fdGVybWluYXRlX291dHB1dCgp KQogewogICBvZmZfdHlwZSBfX2ZpbGVfb2ZmID0gX01fZmlsZS5zZWVrb2ZmKF9fb2ZmLCBf X3dheSk7CiAgIGlmIChfX2ZpbGVfb2ZmICE9IG9mZl90eXBlKC0xKSkKICAgICB7CiAgICAg ICBfTV9yZWFkaW5nID0gZmFsc2U7CiAgICAgICBfTV93cml0aW5nID0gZmFsc2U7CiAgICAg ICBfTV9leHRfbmV4dCA9IF9NX2V4dF9lbmQgPSBfTV9leHRfYnVmOwogICAgICAgX01fc2V0 X2J1ZmZlcigtMSk7CiAgICAgICBfTV9zdGF0ZV9jdXIgPSBfX3N0YXRlOwogICAgICAgX19y ZXQgPSBfX2ZpbGVfb2ZmOwogICAgICAgX19yZXQuc3RhdGUoX01fc3RhdGVfY3VyKTsKICAg ICB9CiB9CiAgICAgIHJldHVybiBfX3JldDsKICAgIH0KCgoKCiAgdGVtcGxhdGU8dHlwZW5h bWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgogICAgaW50IGJhc2ljX2ZpbGVidWY8X0No YXJULCBfVHJhaXRzPjo6CiAgICBfTV9nZXRfZXh0X3BvcyhfX3N0YXRlX3R5cGUmIF9fc3Rh dGUpCiAgICB7CiAgICAgIGlmIChfTV9jb2RlY3Z0LT5hbHdheXNfbm9jb252KCkpCiAgICAg ICAgcmV0dXJuIHRoaXMtPmdwdHIoKSAtIHRoaXMtPmVncHRyKCk7CiAgICAgIGVsc2UKICAg ICAgICB7CgoKCiAgICAgICAgICBjb25zdCBpbnQgX19ncHRyX29mZiA9CiAgICAgICAgICAg IF9NX2NvZGVjdnQtPmxlbmd0aChfX3N0YXRlLCBfTV9leHRfYnVmLCBfTV9leHRfbmV4dCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmdwdHIoKSAtIHRoaXMtPmVi YWNrKCkpOwogICAgICAgICAgcmV0dXJuIF9NX2V4dF9idWYgKyBfX2dwdHJfb2ZmIC0gX01f ZXh0X2VuZDsKICAgICAgICB9CiAgICB9CgogIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVCwg dHlwZW5hbWUgX1RyYWl0cz4KICAgIGJvb2wKICAgIGJhc2ljX2ZpbGVidWY8X0NoYXJULCBf VHJhaXRzPjo6CiAgICBfTV90ZXJtaW5hdGVfb3V0cHV0KCkKICAgIHsKCiAgICAgIGJvb2wg X190ZXN0dmFsaWQgPSB0cnVlOwogICAgICBpZiAodGhpcy0+cGJhc2UoKSA8IHRoaXMtPnBw dHIoKSkKIHsKICAgY29uc3QgaW50X3R5cGUgX190bXAgPSB0aGlzLT5vdmVyZmxvdygpOwog ICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fdG1wLCB0cmFpdHNfdHlwZTo6ZW9m KCkpKQogICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7CiB9CgoKICAgICAgaWYgKF9NX3dyaXRp bmcgJiYgIV9fY2hlY2tfZmFjZXQoX01fY29kZWN2dCkuYWx3YXlzX25vY29udigpCiAgICYm IF9fdGVzdHZhbGlkKQogewoKCgogICBjb25zdCBzaXplX3QgX19ibGVuID0gMTI4OwogICBj aGFyIF9fYnVmW19fYmxlbl07CiAgIGNvZGVjdnRfYmFzZTo6cmVzdWx0IF9fcjsKICAgc3Ry ZWFtc2l6ZSBfX2lsZW4gPSAwOwoKICAgZG8KICAgICB7CiAgICAgICBjaGFyKiBfX25leHQ7 CiAgICAgICBfX3IgPSBfTV9jb2RlY3Z0LT51bnNoaWZ0KF9NX3N0YXRlX2N1ciwgX19idWYs CiAgICAgX19idWYgKyBfX2JsZW4sIF9fbmV4dCk7CiAgICAgICBpZiAoX19yID09IGNvZGVj dnRfYmFzZTo6ZXJyb3IpCiAgX190ZXN0dmFsaWQgPSBmYWxzZTsKICAgICAgIGVsc2UgaWYg KF9fciA9PSBjb2RlY3Z0X2Jhc2U6Om9rIHx8CiAgICAgICAgIF9fciA9PSBjb2RlY3Z0X2Jh c2U6OnBhcnRpYWwpCiAgewogICAgX19pbGVuID0gX19uZXh0IC0gX19idWY7CiAgICBpZiAo X19pbGVuID4gMCkKICAgICAgewogICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19lbGVuID0g X01fZmlsZS54c3B1dG4oX19idWYsIF9faWxlbik7CiAgICAgICAgaWYgKF9fZWxlbiAhPSBf X2lsZW4pCiAgIF9fdGVzdHZhbGlkID0gZmFsc2U7CiAgICAgIH0KICB9CiAgICAgfQogICB3 aGlsZSAoX19yID09IGNvZGVjdnRfYmFzZTo6cGFydGlhbCAmJiBfX2lsZW4gPiAwICYmIF9f dGVzdHZhbGlkKTsKCiAgIGlmIChfX3Rlc3R2YWxpZCkKICAgICB7CgoKCgogICAgICAgY29u c3QgaW50X3R5cGUgX190bXAgPSB0aGlzLT5vdmVyZmxvdygpOwogICAgICAgaWYgKHRyYWl0 c190eXBlOjplcV9pbnRfdHlwZShfX3RtcCwgdHJhaXRzX3R5cGU6OmVvZigpKSkKICBfX3Rl c3R2YWxpZCA9IGZhbHNlOwogICAgIH0KIH0KICAgICAgcmV0dXJuIF9fdGVzdHZhbGlkOwog ICAgfQoKICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQsIHR5cGVuYW1lIF9UcmFpdHM+CiAg ICBpbnQKICAgIGJhc2ljX2ZpbGVidWY8X0NoYXJULCBfVHJhaXRzPjo6CiAgICBzeW5jKCkK ICAgIHsKCgogICAgICBpbnQgX19yZXQgPSAwOwogICAgICBpZiAodGhpcy0+cGJhc2UoKSA8 IHRoaXMtPnBwdHIoKSkKIHsKICAgY29uc3QgaW50X3R5cGUgX190bXAgPSB0aGlzLT5vdmVy ZmxvdygpOwogICBpZiAodHJhaXRzX3R5cGU6OmVxX2ludF90eXBlKF9fdG1wLCB0cmFpdHNf dHlwZTo6ZW9mKCkpKQogICAgIF9fcmV0ID0gLTE7CiB9CiAgICAgIHJldHVybiBfX3JldDsK ICAgIH0KCiAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJULCB0eXBlbmFtZSBfVHJhaXRzPgog ICAgdm9pZAogICAgYmFzaWNfZmlsZWJ1ZjxfQ2hhclQsIF9UcmFpdHM+OjoKICAgIGltYnVl KGNvbnN0IGxvY2FsZSYgX19sb2MpCiAgICB7CiAgICAgIGJvb2wgX190ZXN0dmFsaWQgPSB0 cnVlOwoKICAgICAgY29uc3QgX19jb2RlY3Z0X3R5cGUqIGNvbnN0IF9NX2NvZGVjdnRfdG1w CiA9IF9fdHJ5X3VzZV9mYWNldDxfX2NvZGVjdnRfdHlwZT4oX19sb2MpOwoKICAgICAgaWYg KHRoaXMtPmlzX29wZW4oKSkKIHsKCiAgIGlmICgoX01fcmVhZGluZyB8fCBfTV93cml0aW5n KQogICAgICAgJiYgX19jaGVja19mYWNldChfTV9jb2RlY3Z0KS5lbmNvZGluZygpID09IC0x KQogICAgIF9fdGVzdHZhbGlkID0gZmFsc2U7CiAgIGVsc2UKICAgICB7CiAgICAgICBpZiAo X01fcmVhZGluZykKICB7CiAgICBpZiAoX19jaGVja19mYWNldChfTV9jb2RlY3Z0KS5hbHdh eXNfbm9jb252KCkpCiAgICAgIHsKICAgICAgICBpZiAoX01fY29kZWN2dF90bXAKICAgICAm JiAhX19jaGVja19mYWNldChfTV9jb2RlY3Z0X3RtcCkuYWx3YXlzX25vY29udigpKQogICBf X3Rlc3R2YWxpZCA9IHRoaXMtPnNlZWtvZmYoMCwgaW9zX2Jhc2U6OmN1ciwgX01fbW9kZSkK ICAgICAgICAgICAgICAgICAhPSBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwogICAgICB9CiAg ICBlbHNlCiAgICAgIHsKCiAgICAgICAgX01fZXh0X25leHQgPSBfTV9leHRfYnVmCiAgICsg X01fY29kZWN2dC0+bGVuZ3RoKF9NX3N0YXRlX2xhc3QsIF9NX2V4dF9idWYsCiAgICAgICAg ICBfTV9leHRfbmV4dCwKICAgICAgICAgIHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCkp OwogICAgICAgIGNvbnN0IHN0cmVhbXNpemUgX19yZW1haW5kZXIgPSBfTV9leHRfZW5kIC0g X01fZXh0X25leHQ7CiAgICAgICAgaWYgKF9fcmVtYWluZGVyKQogICBfX2J1aWx0aW5fbWVt bW92ZShfTV9leHRfYnVmLCBfTV9leHRfbmV4dCwgX19yZW1haW5kZXIpOwoKICAgICAgICBf TV9leHRfbmV4dCA9IF9NX2V4dF9idWY7CiAgICAgICAgX01fZXh0X2VuZCA9IF9NX2V4dF9i dWYgKyBfX3JlbWFpbmRlcjsKICAgICAgICBfTV9zZXRfYnVmZmVyKC0xKTsKICAgICAgICBf TV9zdGF0ZV9sYXN0ID0gX01fc3RhdGVfY3VyID0gX01fc3RhdGVfYmVnOwogICAgICB9CiAg fQogICAgICAgZWxzZSBpZiAoX01fd3JpdGluZyAmJiAoX190ZXN0dmFsaWQgPSBfTV90ZXJt aW5hdGVfb3V0cHV0KCkpKQogIF9NX3NldF9idWZmZXIoLTEpOwogICAgIH0KIH0KCiAgICAg IGlmIChfX3Rlc3R2YWxpZCkKIF9NX2NvZGVjdnQgPSBfTV9jb2RlY3Z0X3RtcDsKICAgICAg ZWxzZQogX01fY29kZWN2dCA9IDA7CiAgICB9CgoKCgogIGV4dGVybiB0ZW1wbGF0ZSBjbGFz cyBiYXNpY19maWxlYnVmPGNoYXI+OwogIGV4dGVybiB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19p ZnN0cmVhbTxjaGFyPjsKICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfb2ZzdHJlYW08 Y2hhcj47CiAgZXh0ZXJuIHRlbXBsYXRlIGNsYXNzIGJhc2ljX2ZzdHJlYW08Y2hhcj47CgoK ICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfZmlsZWJ1Zjx3Y2hhcl90PjsKICBleHRl cm4gdGVtcGxhdGUgY2xhc3MgYmFzaWNfaWZzdHJlYW08d2NoYXJfdD47CiAgZXh0ZXJuIHRl bXBsYXRlIGNsYXNzIGJhc2ljX29mc3RyZWFtPHdjaGFyX3Q+OwogIGV4dGVybiB0ZW1wbGF0 ZSBjbGFzcyBiYXNpY19mc3RyZWFtPHdjaGFyX3Q+OwoKCgoKfQojIDEzNjEgIi9ob21lL2No ZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9p bmNsdWRlL2MrKy8xNC4wLjAvZnN0cmVhbSIgMiAzCiMgMjYgImV4YW1wbGUuY2MiIDIKCiMg MSAic3B4ZGVmaW5lcy5oIiAxCiMgMzQgInNweGRlZmluZXMuaCIKI2RlZmluZSBfU1BYREVG SU5FU19IXyAKCiMgMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFt L2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAuMC9tYXRoLmgiIDEgMwoj IDM3ICJzcHhkZWZpbmVzLmgiIDIKIyA0NSAic3B4ZGVmaW5lcy5oIgoKIyA0NSAic3B4ZGVm aW5lcy5oIgpleHRlcm4gc3RkOjpvZnN0cmVhbSBvdXRfZmlsZTsKZXh0ZXJuIGNoYXIgKm91 dF9maWxlbmFtZTsKCgpuYW1lc3BhY2Ugc29wbGV4CnsKI2RlZmluZSBTT1BMRVhfVkVSU0lP TiAxMjEKCgoKCgojZGVmaW5lIFZFUkJPU0UxKHgpIHsgaWYoUGFyYW06OnZlcmJvc2UoKSA+ PSAxKSB7eH0gfQojZGVmaW5lIFZFUkJPU0UyKHgpIHsgaWYoUGFyYW06OnZlcmJvc2UoKSA+ PSAyKSB7eH0gfQojZGVmaW5lIFZFUkJPU0UzKHgpIHsgaWYoUGFyYW06OnZlcmJvc2UoKSA+ PSAzKSB7eH0gfQoKCgoKI2RlZmluZSBUUkFDRSh4KSAKCgoKCgojZGVmaW5lIERFQlVHKHgp IAojIDEwNiAic3B4ZGVmaW5lcy5oIgojZGVmaW5lIE1FVEhPRCh4KSAKIyAxMjcgInNweGRl ZmluZXMuaCIKdHlwZWRlZiBkb3VibGUgUmVhbDsKCgojZGVmaW5lIERFRkFVTFRfQk5EX1ZJ T0wgMWUtNgoKCiNkZWZpbmUgREVGQVVMVF9FUFNfWkVSTyAxZS0xNwoKI2RlZmluZSBERUZB VUxUX0lORklOSVRZIDFlMTAwCgoKCmV4dGVybiBjb25zdCBSZWFsIGluZmluaXR5OwoKY2xh c3MgUGFyYW0Kewpwcml2YXRlOgogICBzdGF0aWMgUmVhbCBzX2Vwc2lsb247CiAgIHN0YXRp YyBpbnQgc192ZXJib3NlOwoKcHVibGljOgogICBpbmxpbmUgc3RhdGljIFJlYWwgZXBzaWxv bigpCiAgIHsKICAgICAgcmV0dXJuIHNfZXBzaWxvbjsKICAgfQogICBzdGF0aWMgdm9pZCBz ZXRFcHNpbG9uKFJlYWwgZXBzKTsKICAgc3RhdGljIHZvaWQgY29tcHV0ZUVwc2lsb24oKTsK ICAgaW5saW5lIHN0YXRpYyBpbnQgdmVyYm9zZSgpCiAgIHsKICAgICAgcmV0dXJuIHNfdmVy Ym9zZTsKICAgfQogICBzdGF0aWMgdm9pZCBzZXRWZXJib3NlKGludCBwX3ZlcmJvc2UpOwp9 OwoKaW5saW5lIGJvb2wgRVEoUmVhbCBhLCBSZWFsIGIsIFJlYWwgZXBzID0gUGFyYW06OmVw c2lsb24oKSkKewogICByZXR1cm4gZmFicyhhIC0gYikgPD0gZXBzOwp9CgppbmxpbmUgYm9v bCBORShSZWFsIGEsIFJlYWwgYiwgUmVhbCBlcHMgPSBQYXJhbTo6ZXBzaWxvbigpKQp7CiAg IHJldHVybiBmYWJzKGEgLSBiKSA+IGVwczsKfQoKaW5saW5lIGJvb2wgTFQoUmVhbCBhLCBS ZWFsIGIsIFJlYWwgZXBzID0gUGFyYW06OmVwc2lsb24oKSkKewogICByZXR1cm4gKGEgLSBi KSA8IC1lcHM7Cn0KCmlubGluZSBib29sIExFKFJlYWwgYSwgUmVhbCBiLCBSZWFsIGVwcyA9 IFBhcmFtOjplcHNpbG9uKCkpCnsKICAgcmV0dXJuIChhIC0gYikgPCBlcHM7Cn0KCmlubGlu ZSBib29sIEdUKFJlYWwgYSwgUmVhbCBiLCBSZWFsIGVwcyA9IFBhcmFtOjplcHNpbG9uKCkp CnsKICAgcmV0dXJuIChhIC0gYikgPiBlcHM7Cn0KCmlubGluZSBib29sIEdFKFJlYWwgYSwg UmVhbCBiLCBSZWFsIGVwcyA9IFBhcmFtOjplcHNpbG9uKCkpCnsKICAgcmV0dXJuIChhIC0g YikgPiAtZXBzOwp9CgppbmxpbmUgYm9vbCBpc1plcm8oUmVhbCBhLCBSZWFsIGVwcyA9IFBh cmFtOjplcHNpbG9uKCkpCnsKICAgcmV0dXJuIGZhYnMoYSkgPD0gZXBzOwp9CgppbmxpbmUg Ym9vbCBpc05vdFplcm8oUmVhbCBhLCBSZWFsIGVwcyA9IFBhcmFtOjplcHNpbG9uKCkpCnsK ICAgcmV0dXJuIGZhYnMoYSkgPiBlcHM7Cn0KCn0KIyAyOCAiZXhhbXBsZS5jYyIgMgojIDEg InNweHNvbHZlci5oIiAxCiMgMjQgInNweHNvbHZlci5oIgojZGVmaW5lIF9TUFhTT0xWRVJf SF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNs dWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRl ZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmlu ZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2Fz dDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2Vy dChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fz c2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZP SURfQ0FTVCAoMCkpCiMgMjcgInNweHNvbHZlci5oIiAyCgojIDEgInNweHN0ZWVwcHIuaCIg MQojIDI1ICJzcHhzdGVlcHByLmgiCiNkZWZpbmUgX1NQWFNURUVQUFJfSF8gCgoKIyAxICIv dXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQu aCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRf Vk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9I IDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1 MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9f QVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0 CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDAp KQojIDI5ICJzcHhzdGVlcHByLmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMzEgInNw eHN0ZWVwcHIuaCIgMgojIDEgInNweHByaWNlci5oIiAxCiMgMjUgInNweHByaWNlci5oIgoj ZGVmaW5lIF9TUFhQUklDRV9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMg NAojIDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1 bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRf cGVycm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9J RF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5 ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJy bnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyOCAic3B4cHJpY2VyLmgiIDIKCiMg MSAic3B4ZGVmaW5lcy5oIiAxCiMgMzAgInNweHByaWNlci5oIiAyCiMgMSAic29wbGV4Lmgi IDEKIyAyNCAic29wbGV4LmgiCiNkZWZpbmUgX1NPUExFWF9IXyAKCiMgMSAiL3Vzci9pbmNs dWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAoj dW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FT VAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNk ZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3Iv aW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9W T0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5l IGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyNyAi c29wbGV4LmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMjkgInNvcGxleC5oIiAyCiMg MSAidGltZXIuaCIgMQojIDI1ICJ0aW1lci5oIgojZGVmaW5lIF9USU1FUl9IXyAKCm5hbWVz cGFjZSBzb3BsZXgKewojIDk1ICJ0aW1lci5oIgpjbGFzcyBUaW1lcgp7CnByaXZhdGU6CiAg IHN0YXRpYyBjb25zdCBsb25nIHRpY2tzX3Blcl9zZWM7CgogICBlbnVtCiAgIHsKICAgICAg UkVTRVQsCiAgICAgIFNUT1BQRUQsCiAgICAgIFJVTk5JTkcKICAgfSBzdGF0dXM7CgogICBs b25nIHVBY2NvdW50OwogICBsb25nIHNBY2NvdW50OwogICBsb25nIHJBY2NvdW50OwogICBt dXRhYmxlIGxvbmcgdVRpY2tzOwogICBtdXRhYmxlIGxvbmcgc1RpY2tzOwogICBtdXRhYmxl IGxvbmcgclRpY2tzOwoKCiAgIFJlYWwgdGlja3Myc2VjKGxvbmcgdGlja3MpIGNvbnN0CiAg IHsKICAgICAgcmV0dXJuIChSZWFsKHRpY2tzKSAqIDEwMDAuMCAvIHRpY2tzX3Blcl9zZWMp IC8gMTAwMC4wOwogICB9CgoKICAgdm9pZCB1cGRhdGVUaWNrcygpIGNvbnN0OwoKcHVibGlj OgoKICAgVGltZXIoKSA6IHN0YXR1cyhSRVNFVCksIHVBY2NvdW50KDApLCBzQWNjb3VudCgw KSwgckFjY291bnQoMCkKICAgewogICAgICAKIyAxMjcgInRpbWVyLmgiIDMgNAogICAgIChz dGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTI3ICJ0aW1lci5oIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CiAgIH0KCiAgIHZvaWQgcmVzZXQoKQogICB7CiAgICAgIHN0YXR1 cyA9IFJFU0VUOwogICAgICB1QWNjb3VudCA9IHJBY2NvdW50ID0gc0FjY291bnQgPSAwOwog ICB9CgoKICAgdm9pZCBzdGFydCgpOwoKCiAgIFJlYWwgc3RvcCgpOwoKCiAgIHZvaWQgZ2V0 VGltZXMoCiAgICAgIFJlYWwqIHVzZXJUaW1lLCBSZWFsKiBzeXN0ZW1UaW1lLCBSZWFsKiBy ZWFsVGltZSkgY29uc3Q7CgoKICAgUmVhbCB1c2VyVGltZSgpIGNvbnN0OwoKCiAgIFJlYWwg c3lzdGVtVGltZSgpIGNvbnN0OwoKCiAgIFJlYWwgcmVhbFRpbWUoKSBjb25zdDsKCgogICBs b25nIHJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiB0aWNrc19wZXJfc2VjOyB9Cn07Cn0K IyAzMCAic29wbGV4LmgiIDIKIyAxICJzcHhscC5oIiAxCiMgMjQgInNweGxwLmgiCiNkZWZp bmUgX1NQWExQX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQg Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFz c2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IK CgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qg c3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2Rl ZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3Iv aW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChf X0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhscC5oIiAyCgoKCiMgMSAic3B4ZGVm aW5lcy5oIiAxCiMgMzEgInNweGxwLmgiIDIKIyAxICJkYXRha2V5LmgiIDEKIyAyNCAiZGF0 YWtleS5oIgojZGVmaW5lIF9EQVRBS0VZX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNT RVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVm IGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FT U0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fz c2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAo MCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3Bl cnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJkYXRha2V5Lmgi IDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDUwICJkYXRha2V5LmgiCmNsYXNzIERhdGFLZXkK ewpwcm90ZWN0ZWQ6CnB1YmxpYzoKICAgc2lnbmVkIGludCBpbmZvOiA4OwogICBzaWduZWQg aW50IGlkeCA6ICg4ICogc2l6ZW9mKGludCkgLSA4KTsKCnB1YmxpYzoKCiAgIGlubGluZSBp bnQgZ2V0SWR4KCkgY29uc3QKICAgewogICAgICByZXR1cm4gaWR4OwogICB9CgogICBpbmxp bmUgdm9pZCBzZXRJZHgoaW50IHBfaWR4KQogICB7CiAgICAgIGlkeCA9IHBfaWR4OwogICB9 CgogICBpbmxpbmUgaW50IGlzVmFsaWQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBpZHgg Pj0gMDsKICAgfQoKICAgaW5saW5lIHZvaWQgaW5WYWxpZGF0ZSgpCiAgIHsKICAgICAgaWR4 ID0gLTE7CiAgICAgIGluZm8gPSAwOwogICB9CgogICBEYXRhS2V5KCkKICAgICAgOiBpbmZv KDApLCBpZHgoLTEpCiAgIHt9CgoKICAgRGF0YUtleShpbnQgcF9pbmZvLCBpbnQgcF9pZHgp CiAgICAgIDogaW5mbyhwX2luZm8pCiAgICAgICwgaWR4KHBfaWR4KQogICB7fQoKCiAgIERh dGFLZXkmIG9wZXJhdG9yPShjb25zdCBEYXRhS2V5JiByaHMpCiAgIHsKICAgICAgaW5mbyA9 IHJocy5pbmZvOwogICAgICBpZHggPSByaHMuaWR4OwoKICAgICAgcmV0dXJuICp0aGlzOwog ICB9CgogICBEYXRhS2V5KGNvbnN0IERhdGFLZXkmIG9sZCkKICAgICAgOiBpbmZvKG9sZC5p bmZvKQogICAgICAsIGlkeChvbGQuaWR4KQogICB7fQp9OwoKfQojIDMyICJzcHhscC5oIiAy CiMgMSAic3B4aWQuaCIgMQojIDI0ICJzcHhpZC5oIgojZGVmaW5lIF9TUFhJRF9IXyAKCiMg MSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNz ZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNT RVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NF UlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+ CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIp IChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi IDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNU ICgwKSkKIyAyNyAic3B4aWQuaCIgMgoKIyAxICJkYXRha2V5LmgiIDEKIyAyOSAic3B4aWQu aCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CmNsYXNzIFNQeElkOwoKCgoKCgoKY2xhc3MgU1B4 Q29sSWQgOiBwdWJsaWMgRGF0YUtleQp7CnB1YmxpYzoKCiAgIFNQeENvbElkKCkKICAge30K CiAgIGV4cGxpY2l0IFNQeENvbElkKGNvbnN0IERhdGFLZXkmIHBfa2V5KTsKCiAgIGV4cGxp Y2l0IFNQeENvbElkKGNvbnN0IFNQeElkJiBwX2tleSk7Cn07CgoKCgoKCgpjbGFzcyBTUHhS b3dJZCA6IHB1YmxpYyBEYXRhS2V5CnsKcHVibGljOgoKICAgU1B4Um93SWQoKQogICB7fQoK ICAgZXhwbGljaXQgU1B4Um93SWQoY29uc3QgRGF0YUtleSYgcF9rZXkpOwoKICAgZXhwbGlj aXQgU1B4Um93SWQoY29uc3QgU1B4SWQmIHBfa2V5KTsKfTsKIyA4OCAic3B4aWQuaCIKY2xh c3MgU1B4SWQgOiBwdWJsaWMgRGF0YUtleQp7CnB1YmxpYzoKCiAgIGVudW0gVHlwZQogICB7 CiAgICAgIFJPV19JRCA9IC0xLAogICAgICBJTlZBTElEID0gMCwKICAgICAgQ09MX0lEID0g MQogICB9OwoKCiAgIFR5cGUgdHlwZSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGluZm8g PyAoaW5mbyA8IDAgPyBST1dfSUQgOiBDT0xfSUQpIDogSU5WQUxJRDsKICAgfQoKICAgYm9v bCBpc1ZhbGlkKCkgY29uc3QKICAgewogICAgICByZXR1cm4gaW5mbyAhPSAwOwogICB9Cgog ICB2b2lkIGluVmFsaWRhdGUoKQogICB7CiAgICAgIGluZm8gPSAwOwogICB9CgogICBib29s IGlzU1B4Um93SWQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBpbmZvIDwgMDsKICAgfQoK ICAgYm9vbCBpc1NQeENvbElkKCkgY29uc3QKICAgewogICAgICByZXR1cm4gaW5mbyA+IDA7 CiAgIH0KCiAgIFNQeElkJiBvcGVyYXRvcj0oY29uc3QgU1B4SWQmIGlkKQogICB7CiAgICAg IGlmICh0aGlzICE9ICZpZCkKICAgICAgICAgRGF0YUtleTo6b3BlcmF0b3I9ICggaWQgKTsK ICAgICAgcmV0dXJuICp0aGlzOwogICB9CgogICBTUHhJZCYgb3BlcmF0b3I9KGNvbnN0IFNQ eENvbElkJiBjaWQpCiAgIHsKICAgICAgRGF0YUtleTo6b3BlcmF0b3I9ICggY2lkICk7CiAg ICAgIGluZm8gPSBDT0xfSUQ7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgU1B4SWQm IG9wZXJhdG9yPShjb25zdCBTUHhSb3dJZCYgcmlkKQogICB7CiAgICAgIERhdGFLZXk6Om9w ZXJhdG9yPSAoIHJpZCApOwogICAgICBpbmZvID0gUk9XX0lEOwogICAgICByZXR1cm4gKnRo aXM7CiAgIH0KCiAgIFNQeElkKCkKICAgICAgOiBEYXRhS2V5KElOVkFMSUQsIC0xKQogICB7 fQoKICAgZXhwbGljaXQgU1B4SWQoY29uc3QgU1B4Q29sSWQmIGNpZCkKICAgICAgOiBEYXRh S2V5KENPTF9JRCwgY2lkLmlkeCkKICAge30KCiAgIGV4cGxpY2l0IFNQeElkKGNvbnN0IFNQ eFJvd0lkJiByaWQpCiAgICAgIDogRGF0YUtleShST1dfSUQsIHJpZC5pZHgpCiAgIHt9Cgog ICBpbnQgb3BlcmF0b3I9PShjb25zdCBTUHhJZCYgaWQpCiAgIHsKICAgICAgcmV0dXJuICh0 aGlzID09ICZpZCk7CiAgIH0KCiAgIGludCBvcGVyYXRvciE9KGNvbnN0IFNQeElkJiBpZCkK ICAgewogICAgICByZXR1cm4gKHRoaXMgIT0gJmlkKTsKICAgfQoKICAgYm9vbCBvcGVyYXRv cjwoY29uc3QgU1B4SWQmIGlkKQogICB7CiAgICAgIHJldHVybiBnZXRJZHgoKSA8IGlkLmdl dElkeCgpOwogICB9Cn07Cgp9CiMgMzMgInNweGxwLmgiIDIKIyAxICJkdmVjdG9yLmgiIDEK IyAyNCAiZHZlY3Rvci5oIgojZGVmaW5lIF9EVkVDVE9SX0hfIAoKCiMgMSAiL3Vzci9pbmNs dWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAoj dW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FT VAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNk ZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3Iv aW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9W T0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5l IGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyOCAi ZHZlY3Rvci5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDMwICJkdmVjdG9yLmgiIDIK IyAxICJ2ZWN0b3IuaCIgMQojIDI0ICJ2ZWN0b3IuaCIKI2RlZmluZSBfVkVDVE9SX0hfIAoK IyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9h c3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19B U1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FT U0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9p ZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhw cikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQu aCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NB U1QgKDApKQojIDI3ICJ2ZWN0b3IuaCIgMgoKIyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90 b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQu MC4wL21hdGguaCIgMSAzCiMgMjkgInZlY3Rvci5oIiAyCgoKbmFtZXNwYWNlIHNvcGxleAp7 CmNsYXNzIFNMVUZhY3RvcjsKY2xhc3MgU1ZlY3RvcjsKY2xhc3MgU1NWZWN0b3I7CiMgODIg InZlY3Rvci5oIgpjbGFzcyBWZWN0b3IKewogICBmcmllbmQgY2xhc3MgTFA7CiAgIGZyaWVu ZCBWZWN0b3ImIFVzb2x2ZShWZWN0b3ImLCBjb25zdCBTTFVGYWN0b3ImKTsKICAgZnJpZW5k IFZlY3RvciYgVXNvbHZlMihWZWN0b3ImLCBWZWN0b3ImLCBjb25zdCBTTFVGYWN0b3ImKTsK CnByb3RlY3RlZDoKCiAgIGludCBkaW1lbjsKCgoKCgogICBSZWFsKiB2YWw7CgpwdWJsaWM6 CiMgMTA3ICJ2ZWN0b3IuaCIKICAgVmVjdG9yKGludCBwX2RpbWVuLCBSZWFsICpwX3ZhbCkK ICAgICAgOiBkaW1lbihwX2RpbWVuKQogICAgICAsIHZhbChwX3ZhbCkKICAgewogICAgICAK IyAxMTEgInZlY3Rvci5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDEx MSAidmVjdG9yLmgiCiAgICAgICAgICAgICAgICAgICAgICAgOwogICB9CgogICBWZWN0b3Im IG9wZXJhdG9yPShjb25zdCBWZWN0b3ImIHZlYyk7CgoKCgoKCiAgIFZlY3RvciYgb3BlcmF0 b3I9KGNvbnN0IFNWZWN0b3ImIHZlYyk7CgoKCgoKCiAgIFZlY3RvciYgb3BlcmF0b3I9KGNv bnN0IFNTVmVjdG9yJiB2ZWMpOwoKCgoKCiAgIFZlY3RvciYgYXNzaWduKGNvbnN0IFNWZWN0 b3ImIHN2KTsKCgoKCgogICBWZWN0b3ImIGFzc2lnbihjb25zdCBTU1ZlY3RvciYgc3YpOwoK CgoKCiAgIGludCBkaW0oKSBjb25zdAogICB7CiAgICAgIHJldHVybiBkaW1lbjsKICAgfQoK ICAgUmVhbCYgb3BlcmF0b3JbXShpbnQgbikKICAgewogICAgICAKIyAxNTMgInZlY3Rvci5o IiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDE1MyAidmVjdG9yLmgiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gdmFsW25dOwog ICB9CgoKICAgUmVhbCBvcGVyYXRvcltdKGludCBuKSBjb25zdAogICB7CiAgICAgIAojIDE2 MCAidmVjdG9yLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTYwICJ2 ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVy biB2YWxbbl07CiAgIH0KCgoKCgogICBWZWN0b3ImIG9wZXJhdG9yKz0oY29uc3QgVmVjdG9y JiB2ZWMpOwoKICAgVmVjdG9yJiBvcGVyYXRvcis9KGNvbnN0IFNWZWN0b3ImIHZlYyk7Cgog ICBWZWN0b3ImIG9wZXJhdG9yKz0oY29uc3QgU1NWZWN0b3ImIHZlYyk7CgoKICAgVmVjdG9y JiBvcGVyYXRvci09KGNvbnN0IFZlY3RvciYgdmVjKTsKCiAgIFZlY3RvciYgb3BlcmF0b3It PShjb25zdCBTVmVjdG9yJiB2ZWMpOwoKICAgVmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFNT VmVjdG9yJiB2ZWMpOwoKCiAgIFZlY3RvciYgb3BlcmF0b3IqPShSZWFsIHgpOwoKCiAgIFJl YWwgb3BlcmF0b3IqKGNvbnN0IFNTVmVjdG9yJiB2KSBjb25zdDsKCiAgIFJlYWwgb3BlcmF0 b3IqKGNvbnN0IFNWZWN0b3ImIHYpIGNvbnN0OwoKICAgUmVhbCBvcGVyYXRvciooY29uc3Qg VmVjdG9yJiB2KSBjb25zdAogICB7CiAgICAgIAojIDE5MSAidmVjdG9yLmgiIDMgNAogICAg IChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTkxICJ2ZWN0b3IuaCIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7CiAgICAgIFJlYWwgeCA9IDA7CiAgICAgIGZvcihpbnQgaSA9 IDA7IGkgPCBkaW1lbjsgaSsrKQogICAgICAgICB4ICs9IHZhbFtpXSAqIHYudmFsW2ldOwog ICAgICByZXR1cm4geDsKICAgfQoKCiAgIFJlYWwgbWF4QWJzKCkgY29uc3Q7CgogICBSZWFs IGxlbmd0aCgpIGNvbnN0OwoKICAgUmVhbCBsZW5ndGgyKCkgY29uc3Q7CgoKICAgVmVjdG9y JiBtdWx0QWRkKFJlYWwgeCwgY29uc3QgU1ZlY3RvciYgdmVjKTsKCiAgIFZlY3RvciYgbXVs dEFkZChSZWFsIHgsIGNvbnN0IFNTVmVjdG9yJiBzdmVjKTsKCiAgIFZlY3RvciYgbXVsdEFk ZChSZWFsIHgsIGNvbnN0IFZlY3RvciYgdmVjKQogICB7CiAgICAgIAojIDIxMiAidmVjdG9y LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjEyICJ2ZWN0b3IuaCIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgIGZvcihpbnQgaSA9IDA7 IGkgPCBkaW0oKTsgaSsrKQogICAgICAgICB2YWxbaV0gKz0geCAqIHZlYy52YWxbaV07Cgog ICAgICByZXR1cm4gKnRoaXM7CiAgIH0KIyAyMjkgInZlY3Rvci5oIgogICBSZWFsKiBnZXRf cHRyKCkKICAgewogICAgICByZXR1cm4gdmFsOwogICB9CgoKCgogICBjb25zdCBSZWFsKiBn ZXRfY29uc3RfcHRyKCkgY29uc3QKICAgewogICAgICByZXR1cm4gdmFsOwogICB9CgogICBm cmllbmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgcywgY29uc3Qg VmVjdG9yJiB2ZWMpOwoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7CgoKICAgdm9p ZCBjbGVhcigpCiAgIHsKICAgICAgaWYgKGRpbWVuKQogICAgICAgICBtZW1zZXQodmFsLCAw LCBkaW1lbipzaXplb2YoUmVhbCkpOwogICB9Cgpwcml2YXRlOgoKICAgVmVjdG9yKCk7Cn07 Cn0KIyAzMSAiZHZlY3Rvci5oIiAyCiMgMSAic3ZlY3Rvci5oIiAxCiMgMjQgInN2ZWN0b3Iu aCIKI2RlZmluZSBfU1ZFQ1RPUl9IXyAKCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRf SAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNz ZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJU X1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkK IyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9y KGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjggInN2ZWN0b3IuaCIgMgoj IDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvbWF0aC5oIiAxIDMKIyAyOSAic3ZlY3Rv ci5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDMxICJzdmVjdG9yLmgiIDIKIyAxICJ2 ZWN0b3IuaCIgMQojIDMyICJzdmVjdG9yLmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDk4 ICJzdmVjdG9yLmgiCmNsYXNzIFNWZWN0b3IKewogICBmcmllbmQgY2xhc3MgVmVjdG9yOwog ICBmcmllbmQgY2xhc3MgU1NWZWN0b3I7CiAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJh dG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU1ZlY3RvciYgdik7CgpwdWJsaWM6CgoK CgogICBzdHJ1Y3QgRWxlbWVudAogICB7CiAgICAgIFJlYWwgdmFsOwogICAgICBpbnQgaWR4 OwogICB9OwoKcHJpdmF0ZToKCgoKCiAgIEVsZW1lbnQgKm1fZWxlbTsKCnB1YmxpYzoKCgoK CiAgIHZvaWQgYWRkKGludCBpLCBSZWFsIHYpCiAgIHsKICAgICAgCiMgMTI5ICJzdmVjdG9y LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTI5ICJzdmVjdG9yLmgi CiAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICBpbnQgbiA9IHNpemUoKTsKICAg ICAgbV9lbGVtW25dLmlkeCA9IGk7CiAgICAgIG1fZWxlbVtuXS52YWwgPSB2OwogICAgICBz ZXRfc2l6ZSggbiArIDEgKTsKICAgICAgCiMgMTM0ICJzdmVjdG9yLmgiIDMgNAogICAgIChz dGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTM0ICJzdmVjdG9yLmgiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CiAgIH0KCgogICB2b2lkIGFkZChjb25zdCBTVmVjdG9yJiBzdikK ICAgewogICAgICBhZGQoc3Yuc2l6ZSgpLCBzdi5tX2VsZW0pOwogICB9CgoKICAgdm9pZCBh ZGQoaW50IG4sIGNvbnN0IGludCBpW10sIGNvbnN0IFJlYWwgdltdKTsKCgogICB2b2lkIGFk ZChpbnQgbiwgY29uc3QgRWxlbWVudCBlW10pOwoKCiAgIHZvaWQgcmVtb3ZlKGludCBuLCBp bnQgbSk7CgoKICAgdm9pZCByZW1vdmUoaW50IG4pCiAgIHsKICAgICAgCiMgMTU1ICJzdmVj dG9yLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTU1ICJzdmVjdG9y LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgc2V0X3NpemUo IHNpemUoKSAtIDEgKTsKICAgICAgbV9lbGVtW25dID0gbV9lbGVtW3NpemUoKV07CiAgIH0K CiAgIHZvaWQgY2xlYXIoKQogICB7CiAgICAgIHNldF9zaXplKDApOwogICB9CgogICB2b2lk IHNvcnQoKTsKCgoKCgoKICAgaW50IHNpemUoKSBjb25zdAogICB7CiAgICAgIGlmKCBtX2Vs ZW0gIT0gMCApCiAgICAgICAgIHJldHVybiBtX2VsZW1bIC0xXS5pZHg7CiAgICAgIGVsc2UK ICAgICAgICAgcmV0dXJuIDA7CiAgIH0KCgogICBpbnQgbWF4KCkgY29uc3QKICAgewogICAg ICBpZiggbV9lbGVtICE9IDAgKQogICAgICAgICByZXR1cm4gaW50KG1fZWxlbVsgLTFdLnZh bCk7CiAgICAgIGVsc2UKICAgICAgICAgcmV0dXJuIDA7CiAgIH0KCgogICBpbnQgZGltKCkg Y29uc3Q7CgoKCgoKCiAgIGludCBudW1iZXIoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgaWYo IG1fZWxlbSAhPSAwICkKICAgICAgewogICAgICAgICBpbnQgbiA9IHNpemUoKTsKICAgICAg ICAgRWxlbWVudCogZSA9ICYobV9lbGVtW25dKTsKICAgICAgICAgd2hpbGUgKG4tLSkKICAg ICAgICAgewogICAgICAgICAgICAtLWU7CiAgICAgICAgICAgIGlmIChlLT5pZHggPT0gaSkK ICAgICAgICAgICAgICAgcmV0dXJuIG47CiAgICAgICAgIH0KICAgICAgfQogICAgICByZXR1 cm4gLTE7CiAgIH0KCgogICBSZWFsIG9wZXJhdG9yW10oaW50IGkpIGNvbnN0CiAgIHsKICAg ICAgaW50IG4gPSBudW1iZXIoaSk7CiAgICAgIGlmIChuID49IDApCiAgICAgICAgIHJldHVy biBtX2VsZW1bbl0udmFsOwogICAgICByZXR1cm4gMDsKICAgfQoKCiAgIEVsZW1lbnQmIGVs ZW1lbnQoaW50IG4pCiAgIHsKICAgICAgCiMgMjI1ICJzdmVjdG9yLmgiIDMgNAogICAgIChz dGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjI1ICJzdmVjdG9yLmgiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gbV9lbGVtW25dOwogICB9CgoKICAg Y29uc3QgRWxlbWVudCYgZWxlbWVudChpbnQgbikgY29uc3QKICAgewogICAgICAKIyAyMzIg InN2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAyMzIgInN2 ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1 cm4gbV9lbGVtW25dOwogICB9CgoKICAgaW50JiBpbmRleChpbnQgbikKICAgewogICAgICAK IyAyMzkgInN2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAy MzkgInN2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAg ICByZXR1cm4gbV9lbGVtW25dLmlkeDsKICAgfQoKCiAgIGludCBpbmRleChpbnQgbikgY29u c3QKICAgewogICAgICAKIyAyNDYgInN2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0 PHZvaWQ+ICgwKSkKIyAyNDYgInN2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwogICAgICByZXR1cm4gbV9lbGVtW25dLmlkeDsKICAgfQoKCiAgIFJlYWwm IHZhbHVlKGludCBuKQogICB7CiAgICAgIAojIDI1MyAic3ZlY3Rvci5oIiAzIDQKICAgICAo c3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDI1MyAic3ZlY3Rvci5oIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiBtX2VsZW1bbl0udmFsOwogICB9 CgoKICAgUmVhbCB2YWx1ZShpbnQgbikgY29uc3QKICAgewogICAgICAKIyAyNjAgInN2ZWN0 b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAyNjAgInN2ZWN0b3Iu aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gbV9l bGVtW25dLnZhbDsKICAgfQoKCgoKCgogICBSZWFsIG1heEFicygpIGNvbnN0OwoKCiAgIFJl YWwgbWluQWJzKCkgY29uc3Q7CgoKICAgUmVhbCBsZW5ndGgoKSBjb25zdAogICB7CiAgICAg IHJldHVybiBzcXJ0KGxlbmd0aDIoKSk7CiAgIH0KCgogICBSZWFsIGxlbmd0aDIoKSBjb25z dDsKCgogICBTVmVjdG9yJiBvcGVyYXRvcio9KFJlYWwgeCk7CgoKICAgUmVhbCBvcGVyYXRv ciooY29uc3QgVmVjdG9yJiB3KSBjb25zdAogICB7CiAgICAgIFJlYWwgeCA9IDA7CiAgICAg IGludCBuID0gc2l6ZSgpOwogICAgICBFbGVtZW50KiBlID0gbV9lbGVtOwoKICAgICAgd2hp bGUgKG4tLSkKICAgICAgewogICAgICAgICB4ICs9IGUtPnZhbCAqIHdbZS0+aWR4XTsKICAg ICAgICAgZSsrOwogICAgICB9CiAgICAgIHJldHVybiB4OwogICB9CgoKCgoKICAgU1ZlY3Rv ciYgb3BlcmF0b3I9KGNvbnN0IFNTVmVjdG9yJiBzdik7CgogICBTVmVjdG9yJiBvcGVyYXRv cj0oY29uc3QgU1ZlY3RvciYgc3YpOwoKICAgU1ZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFZl Y3RvciYgc3YpOwoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7CiMgMzI0ICJzdmVj dG9yLmgiCiAgIFNWZWN0b3IoaW50IG4gPSAwLCBFbGVtZW50KiBwX21lbSA9IDApCiAgIHsK ICAgICAgc2V0TWVtKG4sIHBfbWVtKTsKICAgfQoKICAgRWxlbWVudCogbWVtKCkgY29uc3QK ICAgewogICAgICByZXR1cm4gbV9lbGVtIC0gMTsKICAgfQoKICAgdm9pZCBzZXRfc2l6ZShp bnQgcykKICAgewogICAgICAKIyAzMzYgInN2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyAzMzYgInN2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAg ICAgOwogICAgICBtX2VsZW1bIC0xXS5pZHggPSBzOwogICB9CgogICB2b2lkIHNldF9tYXgo aW50IG0pCiAgIHsKICAgICAgCiMgMzQyICJzdmVjdG9yLmgiIDMgNAogICAgIChzdGF0aWNf Y2FzdDx2b2lkPiAoMCkpCiMgMzQyICJzdmVjdG9yLmgiCiAgICAgICAgICAgICAgICAgICAg ICAgIDsKICAgICAgbV9lbGVtWyAtMV0udmFsID0gbTsKICAgfQoKICAgdm9pZCBzZXRNZW0o aW50IG4sIEVsZW1lbnQqIGVsbWVtKQogICB7CiAgICAgIAojIDM0OCAic3ZlY3Rvci5oIiAz IDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDM0OCAic3ZlY3Rvci5oIgogICAg ICAgICAgICAgICAgICAgOwoKICAgICAgaWYgKG4gPiAwKQogICAgICB7CiAgICAgICAgIAoj IDM1MiAic3ZlY3Rvci5oIiAzIDQKICAgICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQoj IDM1MiAic3ZlY3Rvci5oIgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAg ZWxtZW0tPnZhbCA9IDA7CiAgICAgICAgIG1fZWxlbSA9ICYoZWxtZW1bMV0pOwogICAgICAg ICBzZXRfc2l6ZSggMCApOwogICAgICAgICBzZXRfbWF4ICggbiAtIDEgKTsKICAgICAgfQog ICAgICBlbHNlCiAgICAgICAgIG1fZWxlbSA9IDA7CiAgIH0KCn07CgoKCgoKCmlubGluZSBW ZWN0b3ImIFZlY3Rvcjo6bXVsdEFkZChSZWFsIHgsIGNvbnN0IFNWZWN0b3ImIHZlYykKewog ICAKIyAzNzEgInN2ZWN0b3IuaCIgMyA0CiAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAz NzEgInN2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgIGZvcihp bnQgaSA9IDA7IGkgPCB2ZWMuc2l6ZSgpOyBpKyspCiAgICAgIHZhbFt2ZWMubV9lbGVtW2ld LmlkeF0gKz0geCAqIHZlYy5tX2VsZW1baV0udmFsOwoKICAgcmV0dXJuICp0aGlzOwp9Cgp9 CiMgMzIgImR2ZWN0b3IuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNTUgImR2ZWN0b3Iu aCIKY2xhc3MgRFZlY3RvciA6IHB1YmxpYyBWZWN0b3IKewogICBpbnQgbWVtc2l6ZTsKICAg UmVhbCogbWVtOwoKcHVibGljOgoKICAgZnJpZW5kIERWZWN0b3Igb3BlcmF0b3IrKGNvbnN0 IFZlY3RvciYgdiwgY29uc3QgVmVjdG9yJiB3KTsKCiAgIGZyaWVuZCBEVmVjdG9yIG9wZXJh dG9yKyhjb25zdCBTVmVjdG9yJiB2LCBjb25zdCBWZWN0b3ImIHcpOwoKICAgZnJpZW5kIERW ZWN0b3Igb3BlcmF0b3IrKGNvbnN0IFZlY3RvciYgdiwgY29uc3QgU1ZlY3RvciYgdyk7CgoK ICAgZnJpZW5kIERWZWN0b3Igb3BlcmF0b3ItKGNvbnN0IFZlY3RvciYgdiwgY29uc3QgVmVj dG9yJiB3KTsKCiAgIGZyaWVuZCBEVmVjdG9yIG9wZXJhdG9yLShjb25zdCBTVmVjdG9yJiB2 LCBjb25zdCBWZWN0b3ImIHcpOwoKICAgZnJpZW5kIERWZWN0b3Igb3BlcmF0b3ItKGNvbnN0 IFZlY3RvciYgdiwgY29uc3QgU1ZlY3RvciYgdyk7CgoKICAgZnJpZW5kIERWZWN0b3Igb3Bl cmF0b3ItKGNvbnN0IFZlY3RvciYgdmVjKTsKCiAgIGZyaWVuZCBEVmVjdG9yIG9wZXJhdG9y LShjb25zdCBTVmVjdG9yJiB2ZWMpOwoKCiAgIGZyaWVuZCBEVmVjdG9yIG9wZXJhdG9yKihj b25zdCBWZWN0b3ImIHYsIFJlYWwgeCk7CgogICBmcmllbmQgRFZlY3RvciBvcGVyYXRvcioo UmVhbCB4LCBjb25zdCBWZWN0b3ImIHYpOwoKCiAgIGZyaWVuZCBzdGQ6OmlzdHJlYW0mIG9w ZXJhdG9yPj4oc3RkOjppc3RyZWFtJiBzLCBEVmVjdG9yJiB2ZWMpOwoKCgoKCiAgIERWZWN0 b3ImIG9wZXJhdG9yKz0oY29uc3QgVmVjdG9yJiB2ZWMpCiAgIHsKICAgICAgVmVjdG9yOjpv cGVyYXRvcis9KHZlYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgRFZlY3RvciYg b3BlcmF0b3IrPShjb25zdCBTVmVjdG9yJiB2ZWMpCiAgIHsKICAgICAgVmVjdG9yOjpvcGVy YXRvcis9KHZlYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKCiAgIERWZWN0b3ImIG9w ZXJhdG9yLT0oY29uc3QgVmVjdG9yJiB2ZWMpCiAgIHsKICAgICAgVmVjdG9yOjpvcGVyYXRv ci09KHZlYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgRFZlY3RvciYgb3BlcmF0 b3ItPShjb25zdCBTVmVjdG9yJiB2ZWMpCiAgIHsKICAgICAgVmVjdG9yOjpvcGVyYXRvci09 KHZlYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKCiAgIERWZWN0b3ImIG9wZXJhdG9y Kj0oUmVhbCB4KQogICB7CiAgICAgIFZlY3Rvcjo6b3BlcmF0b3IqPSh4KTsKICAgICAgcmV0 dXJuICp0aGlzOwogICB9CgoKICAgdm9pZCByZURpbShpbnQgbmV3ZGltKTsKCgogICB2b2lk IHJlU2l6ZShpbnQgbmV3c2l6ZSk7CgoKICAgdm9pZCByZVNpemUoaW50IG5ld3NpemUsIGlu dCBuZXdkaW0pOwoKCiAgIGludCBtZW1TaXplKCkgY29uc3QKICAgewogICAgICByZXR1cm4g bWVtc2l6ZTsKICAgfQoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7CgoKICAgRFZl Y3RvcihpbnQgZGltID0gMCk7CgoKICAgZXhwbGljaXQgRFZlY3Rvcihjb25zdCBWZWN0b3Im IG9sZCk7CgogICBEVmVjdG9yKGNvbnN0IERWZWN0b3ImIG9sZCk7CgoKICAgRFZlY3RvciYg b3BlcmF0b3I9KGNvbnN0IFZlY3RvciYgdmVjKQogICB7CiAgICAgIGlmICh2ZWMuZGltKCkg IT0gZGltKCkpCiAgICAgICAgIHJlRGltKHZlYy5kaW0oKSk7CiAgICAgIFZlY3Rvcjo6b3Bl cmF0b3I9KHZlYyk7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgRFZlY3RvciYgb3Bl cmF0b3I9KGNvbnN0IERWZWN0b3ImIHZlYykKICAgewogICAgICBpZiAodGhpcyAhPSAmdmVj KQogICAgICB7CiAgICAgICAgIGlmICh2ZWMuZGltKCkgIT0gZGltKCkpCiAgICAgICAgICAg IHJlRGltKHZlYy5kaW0oKSk7CiAgICAgICAgIFZlY3Rvcjo6b3BlcmF0b3I9KHZlYyk7CiAg ICAgIH0KICAgICAgcmV0dXJuICp0aGlzOwogICB9CgogICBEVmVjdG9yJiBvcGVyYXRvcj0o Y29uc3QgU1ZlY3RvciYgdmVjKQogICB7CiAgICAgIGlmICh2ZWMuZGltKCkgIT0gZGltKCkp CiAgICAgICAgIHJlRGltKHZlYy5kaW0oKSk7CiAgICAgIFZlY3Rvcjo6b3BlcmF0b3I9KHZl Yyk7CgogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgogICB+RFZlY3RvcigpOwp9Owp9CiMg MzQgInNweGxwLmgiIDIKIyAxICJzdnNldC5oIiAxCiMgMjUgInN2c2V0LmgiCiNkZWZpbmUg X1NWU0VUX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91 c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2Vy dAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoK CiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3Rh dGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmlu ZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FT U0VSVF9WT0lEX0NBU1QgKDApKQojIDI4ICJzdnNldC5oIiAyCgojIDEgInNweGRlZmluZXMu aCIgMQojIDMwICJzdnNldC5oIiAyCiMgMSAic3ZlY3Rvci5oIiAxCiMgMzEgInN2c2V0Lmgi IDIKIyAxICJkYXRhc2V0LmgiIDEKIyAyNCAiZGF0YXNldC5oIgojZGVmaW5lIF9EQVRBU0VU X0hfIAoKCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9p bmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1 bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2Rl ZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNf Y2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFz c2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRl L2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJU X1ZPSURfQ0FTVCAoMCkpCiMgMjkgImRhdGFzZXQuaCIgMgoKIyAxICJkYXRhYXJyYXkuaCIg MQojIDI0ICJkYXRhYXJyYXkuaCIKI2RlZmluZSBfREFUQUFSUkFZX0hfIAoKIyAxICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9J RF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEK CgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAi L3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNT RVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNk ZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQoj IDI3ICJkYXRhYXJyYXkuaCIgMgojIDEgIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFp bi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxp bnV4LWdudS8xNC4wLjAvaW5jbHVkZS9zdGRkZWYuaCIgMSAzIDQKIyAzOSAiL2hvbWUvY2hl bmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xp Yi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAz IDQKI2RlZmluZSBfU1REREVGX0ggCiNkZWZpbmUgX1NURERFRl9IXyAKCiNkZWZpbmUgX0FO U0lfU1REREVGX0ggCiMgMTMyICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1n bnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojZGVmaW5lIF9QVFJESUZGX1QgCiNk ZWZpbmUgX1RfUFRSRElGRl8gCiNkZWZpbmUgX1RfUFRSRElGRiAKI2RlZmluZSBfX1BUUkRJ RkZfVCAKI2RlZmluZSBfUFRSRElGRl9UXyAKI2RlZmluZSBfQlNEX1BUUkRJRkZfVF8gCiNk ZWZpbmUgX19faW50X3B0cmRpZmZfdF9oIAojZGVmaW5lIF9HQ0NfUFRSRElGRl9UIAojZGVm aW5lIF9QVFJESUZGX1RfREVDTEFSRUQgCiNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAK CgoKCiMgMTQ1ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5z dGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4w L2luY2x1ZGUvc3RkZGVmLmgiIDMgNAp0eXBlZGVmIGxvbmcgaW50IHB0cmRpZmZfdDsKIyAx NTggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29w dGltaXplL3Vzci9saWIvZ2NjL2xvb25nYXJjaDY0LWxpbnV4LWdudS8xNC4wLjAvaW5jbHVk ZS9zdGRkZWYuaCIgMyA0CiN1bmRlZiBfX25lZWRfcHRyZGlmZl90CiMgMjM3ICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv bGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1nbnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgi IDMgNAojdW5kZWYgX19uZWVkX3NpemVfdAojIDM0OSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsv dG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdh cmNoNjQtbGludXgtZ251LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9f bmVlZF93Y2hhcl90CiMgMzk5ICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBz dHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvbGliL2djYy9sb29uZ2FyY2g2NC1saW51eC1n bnUvMTQuMC4wL2luY2x1ZGUvc3RkZGVmLmgiIDMgNAojdW5kZWYgTlVMTAoKI2RlZmluZSBO VUxMIF9fbnVsbAojIDQxMCAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3Ry ZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2xpYi9nY2MvbG9vbmdhcmNoNjQtbGludXgtZ251 LzE0LjAuMC9pbmNsdWRlL3N0ZGRlZi5oIiAzIDQKI3VuZGVmIF9fbmVlZF9OVUxMCgoKCgoj dW5kZWYgb2Zmc2V0b2YKI2RlZmluZSBvZmZzZXRvZihUWVBFLE1FTUJFUikgX19idWlsdGlu X29mZnNldG9mIChUWVBFLCBNRU1CRVIpCiMgMjggImRhdGFhcnJheS5oIiAyCgoKCiMgMSAi c3B4ZGVmaW5lcy5oIiAxCiMgMzIgImRhdGFhcnJheS5oIiAyCiMgMSAic3B4YWxsb2MuaCIg MQojIDI0ICJzcHhhbGxvYy5oIgojZGVmaW5lIF9TUFhBTExPQ19IXyAKCgojIDEgIi9ob21l L2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9pbnN0YWxsL29wdGltaXplL3Vz ci9pbmNsdWRlL2MrKy8xNC4wLjAvc3RkbGliLmgiIDEgMwojIDM0ICIvaG9tZS9jaGVuZ2x1 bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVk ZS9jKysvMTQuMC4wL3N0ZGxpYi5oIiAzCiNkZWZpbmUgX0dMSUJDWFhfU1RETElCX0ggMQoK IyAxICIvaG9tZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9v cHRpbWl6ZS91c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NzdGRsaWIiIDEgMwojIDM5ICIvaG9t ZS9jaGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91 c3IvaW5jbHVkZS9jKysvMTQuMC4wL2NzdGRsaWIiIDMKICAgICAgIAojIDQwICIvaG9tZS9j aGVuZ2x1bHUvd29yay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3Iv aW5jbHVkZS9jKysvMTQuMC4wL2NzdGRsaWIiIDMKCgoKCiNkZWZpbmUgX0dMSUJDWFhfQ1NU RExJQiAxCiMgNzggIi9ob21lL2NoZW5nbHVsdS93b3JrL3Rvb2xjaGFpbi11cHN0cmVhbS9p bnN0YWxsL29wdGltaXplL3Vzci9pbmNsdWRlL2MrKy8xNC4wLjAvY3N0ZGxpYiIgMwojZGVm aW5lIF9HTElCQ1hYX0lOQ0xVREVfTkVYVF9DX0hFQURFUlMgCgojdW5kZWYgX0dMSUJDWFhf SU5DTFVERV9ORVhUX0NfSEVBREVSUwoKCgojdW5kZWYgYWJvcnQKCgoKI3VuZGVmIGF0ZXhp dAoKCgoKCiN1bmRlZiBhdG9mCiN1bmRlZiBhdG9pCiN1bmRlZiBhdG9sCiN1bmRlZiBic2Vh cmNoCiN1bmRlZiBjYWxsb2MKI3VuZGVmIGRpdgojdW5kZWYgZXhpdAojdW5kZWYgZnJlZQoj dW5kZWYgZ2V0ZW52CiN1bmRlZiBsYWJzCiN1bmRlZiBsZGl2CiN1bmRlZiBtYWxsb2MKI3Vu ZGVmIG1ibGVuCiN1bmRlZiBtYnN0b3djcwojdW5kZWYgbWJ0b3djCiN1bmRlZiBxc29ydAoK CgoKCiN1bmRlZiByYW5kCiN1bmRlZiByZWFsbG9jCiN1bmRlZiBzcmFuZAojdW5kZWYgc3Ry dG9kCiN1bmRlZiBzdHJ0b2wKI3VuZGVmIHN0cnRvdWwKI3VuZGVmIHN5c3RlbQojdW5kZWYg d2NzdG9tYnMKI3VuZGVmIHdjdG9tYgoKZXh0ZXJuICJDKysiCnsKbmFtZXNwYWNlIHN0ZCBf X2F0dHJpYnV0ZV9fICgoX192aXNpYmlsaXR5X18gKCJkZWZhdWx0IikpKQp7CgoKICB1c2lu ZyA6OmRpdl90OwogIHVzaW5nIDo6bGRpdl90OwoKICB1c2luZyA6OmFib3J0OwoKCgogIHVz aW5nIDo6YXRleGl0OwoKCgoKCiAgdXNpbmcgOjphdG9mOwogIHVzaW5nIDo6YXRvaTsKICB1 c2luZyA6OmF0b2w7CiAgdXNpbmcgOjpic2VhcmNoOwogIHVzaW5nIDo6Y2FsbG9jOwogIHVz aW5nIDo6ZGl2OwogIHVzaW5nIDo6ZXhpdDsKICB1c2luZyA6OmZyZWU7CiAgdXNpbmcgOjpn ZXRlbnY7CiAgdXNpbmcgOjpsYWJzOwogIHVzaW5nIDo6bGRpdjsKICB1c2luZyA6Om1hbGxv YzsKCiAgdXNpbmcgOjptYmxlbjsKICB1c2luZyA6Om1ic3Rvd2NzOwogIHVzaW5nIDo6bWJ0 b3djOwoKICB1c2luZyA6OnFzb3J0OwoKCgoKCiAgdXNpbmcgOjpyYW5kOwogIHVzaW5nIDo6 cmVhbGxvYzsKICB1c2luZyA6OnNyYW5kOwogIHVzaW5nIDo6c3RydG9kOwogIHVzaW5nIDo6 c3RydG9sOwogIHVzaW5nIDo6c3RydG91bDsKICB1c2luZyA6OnN5c3RlbTsKCiAgdXNpbmcg Ojp3Y3N0b21iczsKICB1c2luZyA6OndjdG9tYjsKCgoKICBpbmxpbmUgbGRpdl90CiAgZGl2 KGxvbmcgX19pLCBsb25nIF9faikgdGhyb3coKSB7IHJldHVybiBsZGl2KF9faSwgX19qKTsg fQoKCgoKfQoKCgojdW5kZWYgX0V4aXQKI3VuZGVmIGxsYWJzCiN1bmRlZiBsbGRpdgojdW5k ZWYgYXRvbGwKI3VuZGVmIHN0cnRvbGwKI3VuZGVmIHN0cnRvdWxsCiN1bmRlZiBzdHJ0b2YK I3VuZGVmIHN0cnRvbGQKCm5hbWVzcGFjZSBfX2dudV9jeHggX19hdHRyaWJ1dGVfXyAoKF9f dmlzaWJpbGl0eV9fICgiZGVmYXVsdCIpKSkKewoKCgogIHVzaW5nIDo6bGxkaXZfdDsKCgoK CgogIHVzaW5nIDo6X0V4aXQ7CgoKCiAgdXNpbmcgOjpsbGFiczsKCiAgaW5saW5lIGxsZGl2 X3QKICBkaXYobG9uZyBsb25nIF9fbiwgbG9uZyBsb25nIF9fZCkKICB7IGxsZGl2X3QgX19x OyBfX3EucXVvdCA9IF9fbiAvIF9fZDsgX19xLnJlbSA9IF9fbiAlIF9fZDsgcmV0dXJuIF9f cTsgfQoKICB1c2luZyA6OmxsZGl2OwojIDIzMSAiL2hvbWUvY2hlbmdsdWx1L3dvcmsvdG9v bGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1ZGUvYysrLzE0LjAu MC9jc3RkbGliIiAzCiAgdXNpbmcgOjphdG9sbDsKICB1c2luZyA6OnN0cnRvbGw7CiAgdXNp bmcgOjpzdHJ0b3VsbDsKCiAgdXNpbmcgOjpzdHJ0b2Y7CiAgdXNpbmcgOjpzdHJ0b2xkOwoK Cn0KCm5hbWVzcGFjZSBzdGQKewoKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxkaXZfdDsKCiAg dXNpbmcgOjpfX2dudV9jeHg6Ol9FeGl0OwoKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxhYnM7 CiAgdXNpbmcgOjpfX2dudV9jeHg6OmRpdjsKICB1c2luZyA6Ol9fZ251X2N4eDo6bGxkaXY7 CgogIHVzaW5nIDo6X19nbnVfY3h4OjphdG9sbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6c3Ry dG9mOwogIHVzaW5nIDo6X19nbnVfY3h4OjpzdHJ0b2xsOwogIHVzaW5nIDo6X19nbnVfY3h4 OjpzdHJ0b3VsbDsKICB1c2luZyA6Ol9fZ251X2N4eDo6c3RydG9sZDsKfQojIDI3NSAiL2hv bWUvY2hlbmdsdWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUv dXNyL2luY2x1ZGUvYysrLzE0LjAuMC9jc3RkbGliIiAzCn0KIyAzNyAiL2hvbWUvY2hlbmds dWx1L3dvcmsvdG9vbGNoYWluLXVwc3RyZWFtL2luc3RhbGwvb3B0aW1pemUvdXNyL2luY2x1 ZGUvYysrLzE0LjAuMC9zdGRsaWIuaCIgMiAzCgp1c2luZyBzdGQ6OmFib3J0Owp1c2luZyBz dGQ6OmF0ZXhpdDsKdXNpbmcgc3RkOjpleGl0OwojIDU0ICIvaG9tZS9jaGVuZ2x1bHUvd29y ay90b29sY2hhaW4tdXBzdHJlYW0vaW5zdGFsbC9vcHRpbWl6ZS91c3IvaW5jbHVkZS9jKysv MTQuMC4wL3N0ZGxpYi5oIiAzCnVzaW5nIHN0ZDo6ZGl2X3Q7CnVzaW5nIHN0ZDo6bGRpdl90 OwoKdXNpbmcgc3RkOjphYnM7CnVzaW5nIHN0ZDo6YXRvZjsKdXNpbmcgc3RkOjphdG9pOwp1 c2luZyBzdGQ6OmF0b2w7CnVzaW5nIHN0ZDo6YnNlYXJjaDsKdXNpbmcgc3RkOjpjYWxsb2M7 CnVzaW5nIHN0ZDo6ZGl2Owp1c2luZyBzdGQ6OmZyZWU7CnVzaW5nIHN0ZDo6Z2V0ZW52Owp1 c2luZyBzdGQ6OmxhYnM7CnVzaW5nIHN0ZDo6bGRpdjsKdXNpbmcgc3RkOjptYWxsb2M7Cgp1 c2luZyBzdGQ6Om1ibGVuOwp1c2luZyBzdGQ6Om1ic3Rvd2NzOwp1c2luZyBzdGQ6Om1idG93 YzsKCnVzaW5nIHN0ZDo6cXNvcnQ7CnVzaW5nIHN0ZDo6cmFuZDsKdXNpbmcgc3RkOjpyZWFs bG9jOwp1c2luZyBzdGQ6OnNyYW5kOwp1c2luZyBzdGQ6OnN0cnRvZDsKdXNpbmcgc3RkOjpz dHJ0b2w7CnVzaW5nIHN0ZDo6c3RydG91bDsKdXNpbmcgc3RkOjpzeXN0ZW07Cgp1c2luZyBz dGQ6Ondjc3RvbWJzOwp1c2luZyBzdGQ6OndjdG9tYjsKIyAyOCAic3B4YWxsb2MuaCIgMgoj IDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fz c2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FT U0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNT RVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lk PgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHBy KSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o IiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FT VCAoMCkpCiMgMjkgInNweGFsbG9jLmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMzEg InNweGFsbG9jLmgiIDIKCgojIDMyICJzcHhhbGxvYy5oIgpuYW1lc3BhY2Ugc29wbGV4CnsK IyA0NyAic3B4YWxsb2MuaCIKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIHNweF9h bGxvYyhUJiBwLCBpbnQgbikKewogICAKIyA1MCAic3B4YWxsb2MuaCIgMyA0CiAgKHN0YXRp Y19jYXN0PHZvaWQ+ICgwKSkKIyA1MCAic3B4YWxsb2MuaCIKICAgICAgICAgICAgICAgIDsK ICAgCiMgNTEgInNweGFsbG9jLmgiIDMgNAogIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMg NTEgInNweGFsbG9jLmgiCiAgICAgICAgICAgICAgICA7CgogICBpZiAobiA9PSAwKQogICAg ICBuID0gMTsKCiAgIHAgPSByZWludGVycHJldF9jYXN0PFQ+KG1hbGxvYyhzaXplb2YoKnAp ICogbikpOwoKICAgaWYgKDAgPT0gcCkKICAgewogICAgICBzdGQ6OmNlcnIgPDwgIm1hbGxv YzogT3V0IG9mIG1lbW9yeSIgPDwgc3RkOjplbmRsOwogICAgICBhYm9ydCgpOwogICB9Cn0K CgoKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KaW5saW5lIHZvaWQgc3B4X3JlYWxsb2MoVCYgcCwg aW50IG4pCnsKICAgCiMgNzIgInNweGFsbG9jLmgiIDMgNAogIChzdGF0aWNfY2FzdDx2b2lk PiAoMCkpCiMgNzIgInNweGFsbG9jLmgiCiAgICAgICAgICAgICAgICA7CiAgIAojIDczICJz cHhhbGxvYy5oIiAzIDQKICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDczICJzcHhhbGxv Yy5oIgogICAgICAgICAgICAgICAgOwoKICAgcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4ocmVh bGxvYyhwLCBzaXplb2YoKnApICogbikpOwoKICAgaWYgKDAgPT0gcCkKICAgewogICAgICBz dGQ6OmNlcnIgPDwgInJlYWxsb2M6IE91dCBvZiBtZW1vcnkiIDw8IHN0ZDo6ZW5kbDsKICAg ICAgYWJvcnQoKTsKICAgfQp9CgoKdGVtcGxhdGUgPGNsYXNzIFQ+CmlubGluZSB2b2lkIHNw eF9mcmVlKFQmIHApCnsKICAgCiMgODggInNweGFsbG9jLmgiIDMgNAogIChzdGF0aWNfY2Fz dDx2b2lkPiAoMCkpCiMgODggInNweGFsbG9jLmgiCiAgICAgICAgICAgICAgICA7CgogICBm cmVlKHApOwoKICAgcCA9IDA7Cn0KCgp9CiMgMzMgImRhdGFhcnJheS5oIiAyCiMgMSAibWVz c2FnZS5oIiAxCiMgMjAgIm1lc3NhZ2UuaCIKbmFtZXNwYWNlIHNvcGxleAp7CgpleHRlcm4g Ym9vbCBtc2dpbmNvbnNpc3RlbnQoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZmls ZSwgaW50IGxpbmUpOwoKI2RlZmluZSBNU0dpbmNvbnNpc3RlbnQobmFtZSkgbXNnaW5jb25z aXN0ZW50KG5hbWUsIF9fRklMRV9fLCBfX0xJTkVfXykKCn0KIyAzNCAiZGF0YWFycmF5Lmgi IDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDY3ICJkYXRhYXJyYXkuaCIKdGVtcGxhdGUgPCBj bGFzcyBUID4KY2xhc3MgRGF0YUFycmF5CnsKcHJpdmF0ZToKICAgaW50IHRoZXNpemU7CiAg IGludCB0aGVtYXg7CiAgIFQqIGRhdGE7Cgpwcm90ZWN0ZWQ6CgoKCgoKCiAgIFJlYWwgbWVt RmFjdG9yOwoKcHVibGljOgoKCiAgIFQmIG9wZXJhdG9yW10oaW50IG4pCiAgIHsKICAgICAg CiMgODkgImRhdGFhcnJheS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQoj IDg5ICJkYXRhYXJyYXkuaCIKICAgICAgICAgICAgICAgICAgIDsKICAgICAgCiMgOTAgImRh dGFhcnJheS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDkwICJkYXRh YXJyYXkuaCIKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gZGF0YVtu XTsKICAgfQoKICAgY29uc3QgVCYgb3BlcmF0b3JbXShpbnQgbikgY29uc3QKICAgewogICAg ICAKIyA5NiAiZGF0YWFycmF5LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkp CiMgOTYgImRhdGFhcnJheS5oIgogICAgICAgICAgICAgICAgICAgOwogICAgICAKIyA5NyAi ZGF0YWFycmF5LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgOTcgImRh dGFhcnJheS5oIgogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiBkYXRh W25dOwogICB9CgoKICAgVCYgbGFzdCgpCiAgIHsKICAgICAgCiMgMTA0ICJkYXRhYXJyYXku aCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxMDQgImRhdGFhcnJheS5o IgogICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiBkYXRhW3RoZXNpemUg LTFdOwogICB9CgogICBjb25zdCBUJiBsYXN0KCkgY29uc3QKICAgewogICAgICAKIyAxMTAg ImRhdGFhcnJheS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDExMCAi ZGF0YWFycmF5LmgiCiAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIGRh dGFbdGhlc2l6ZSAtMV07CiAgIH0KCgogICBUKiBnZXRfcHRyKCkKICAgewogICAgICByZXR1 cm4gZGF0YTsKICAgfQoKICAgY29uc3QgVCogZ2V0X2NvbnN0X3B0cigpIGNvbnN0CiAgIHsK ICAgICAgcmV0dXJuIGRhdGE7CiAgIH0KCgogICB2b2lkIGFwcGVuZChjb25zdCBUJiB0KQog ICB7CiAgICAgIGluc2VydCh0aGVzaXplLCAxLCAmdCk7CiAgIH0KCiAgIHZvaWQgYXBwZW5k KGludCBuLCBjb25zdCBUIHRbXSkKICAgewogICAgICBpbnNlcnQodGhlc2l6ZSwgbiwgdCk7 CiAgIH0KCiAgIHZvaWQgYXBwZW5kKGNvbnN0IERhdGFBcnJheTxUPiYgdCkKICAgewogICAg ICBpbnNlcnQodGhlc2l6ZSwgdCk7CiAgIH0KCgogICB2b2lkIGluc2VydChpbnQgaSwgaW50 IG4pCiAgIHsKICAgICAgaW50IGogPSBzaXplKCk7CiAgICAgIHJlU2l6ZSh0aGVzaXplICsg bik7CiAgICAgIHdoaWxlIChpIDwgai0tKQogICAgICAgICBkYXRhW2ogKyBuXSA9IGRhdGFb al07CiAgIH0KCgogICB2b2lkIGluc2VydChpbnQgaSwgaW50IG4sIGNvbnN0IFQgdFtdKQog ICB7CiAgICAgIGlmIChuID4gMCkKICAgICAgewogICAgICAgICBpbnNlcnQoaSwgbik7CiAg ICAgICAgIG1lbWNweSgmKGRhdGFbaV0pLCB0LCBuKnNpemVvZihUKSk7CiAgICAgIH0KICAg fQoKCiAgIHZvaWQgaW5zZXJ0KGludCBpLCBjb25zdCBEYXRhQXJyYXk8VD4mIHQpCiAgIHsK ICAgICAgaWYgKHQuc2l6ZSgpKQogICAgICB7CiAgICAgICAgIGluc2VydChpLCB0LnNpemUo KSk7CiAgICAgICAgIG1lbWNweSgmKGRhdGFbaV0pLCB0LmRhdGEsIHQuc2l6ZSgpKnNpemVv ZihUKSk7CiAgICAgIH0KICAgfQoKCiAgIHZvaWQgcmVtb3ZlKGludCBuID0gMCwgaW50IG0g PSAxKQogICB7CiAgICAgIAojIDE3MyAiZGF0YWFycmF5LmgiIDMgNAogICAgIChzdGF0aWNf Y2FzdDx2b2lkPiAoMCkpCiMgMTczICJkYXRhYXJyYXkuaCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwogICAgICBpZiAobiArIG0gPCBzaXplKCkpCiAgICAgICAgIG1l bWNweSgmKGRhdGFbbl0pLCAmKGRhdGFbbiArIG1dKSwgKHNpemUoKSAtIChuICsgbSkpICog c2l6ZW9mKFQpKTsKICAgICAgZWxzZQogICAgICAgICBtID0gc2l6ZSgpIC0gbjsKICAgICAg dGhlc2l6ZSAtPSBtOwogICB9CgogICB2b2lkIHJlbW92ZUxhc3QoaW50IG0gPSAxKQogICB7 CiAgICAgIAojIDE4MyAiZGF0YWFycmF5LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lk PiAoMCkpCiMgMTgzICJkYXRhYXJyYXkuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgdGhlc2l6ZSAtPSBtOwogICB9CgogICB2b2lkIGNsZWFyKCkKICAg ewogICAgICB0aGVzaXplID0gMDsKICAgfQoKCiAgIGludCBzaXplKCkgY29uc3QKICAgewog ICAgICByZXR1cm4gdGhlc2l6ZTsKICAgfQojIDIwNSAiZGF0YWFycmF5LmgiCiAgIHZvaWQg cmVTaXplKGludCBuZXdzaXplKQogICB7CiAgICAgIAojIDIwNyAiZGF0YWFycmF5LmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjA3ICJkYXRhYXJyYXkuaCIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICBpZiAobmV3c2l6ZSA+IHRoZW1heCkK ICAgICAgICAgcmVNYXgoaW50KG1lbUZhY3RvciAqIG5ld3NpemUpLCBuZXdzaXplKTsKICAg ICAgZWxzZSBpZiAobmV3c2l6ZSA8IDApCiAgICAgICAgIHRoZXNpemUgPSAwOwogICAgICBl bHNlCiAgICAgICAgIHRoZXNpemUgPSBuZXdzaXplOwogICB9CgoKCgoKCiAgIGludCBtYXgo KSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVtYXg7CiAgIH0KIyAyMzkgImRhdGFhcnJh eS5oIgogICBwdHJkaWZmX3QgcmVNYXgoaW50IG5ld01heCA9IDEsIGludCBuZXdTaXplID0g LTEpCiAgIHsKICAgICAgaWYgKG5ld1NpemUgPj0gMCkKICAgICAgICAgdGhlc2l6ZSA9IG5l d1NpemU7CiAgICAgIGlmIChuZXdNYXggPCBuZXdTaXplKQogICAgICAgICBuZXdNYXggPSBu ZXdTaXplOwogICAgICBpZiAobmV3TWF4IDwgMSkKICAgICAgICAgbmV3TWF4ID0gMTsKICAg ICAgaWYgKG5ld01heCA9PSB0aGVtYXgpCiAgICAgICAgIHJldHVybiAwOwogICAgICB0aGVt YXggPSBuZXdNYXg7CiAgICAgIFQqIG9sZGRhdGEgPSBkYXRhOwogICAgICBpZiAodGhlc2l6 ZSA8PSAwKQogICAgICB7CiAgICAgICAgIHNweF9mcmVlKGRhdGEpOwogICAgICAgICBzcHhf YWxsb2MoZGF0YSwgdGhlbWF4KTsKICAgICAgfQogICAgICBlbHNlCiAgICAgICAgIHNweF9y ZWFsbG9jKGRhdGEsIHRoZW1heCk7CgogICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj aGFyKj4oZGF0YSkgLSByZWludGVycHJldF9jYXN0PGNoYXIqPihvbGRkYXRhKTsKICAgfQoK ICAgRGF0YUFycmF5JiBvcGVyYXRvcj0oY29uc3QgRGF0YUFycmF5JiByaHMpCiAgIHsKICAg ICAgaWYgKHRoaXMgIT0gJnJocykKICAgICAgewogICAgICAgICByZVNpemUocmhzLnNpemUo KSk7CiAgICAgICAgIG1lbWNweShkYXRhLCByaHMuZGF0YSwgc2l6ZSgpICogc2l6ZW9mKFQp KTsKICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgogICBib29sIGlzQ29uc2lz dGVudCgpIGNvbnN0CiAgIHsKICAgICAgaWYgKCAoZGF0YSA9PSAwKQogICAgICAgICB8fCAo dGhlbWF4IDwgMSkKICAgICAgICAgfHwgKHRoZW1heCA8IHRoZXNpemUpCiAgICAgICAgIHx8 ICh0aGVzaXplIDwgMCkKICAgICAgICAgfHwgKG1lbUZhY3RvciA8IDEuMCkpCiAgICAgICAg IHJldHVybiBtc2dpbmNvbnNpc3RlbnQoIkRhdGFBcnJheSIsICJkYXRhYXJyYXkuaCIsIDI4 MCk7CgogICAgICByZXR1cm4gdHJ1ZTsKICAgfQoKCiAgIERhdGFBcnJheShjb25zdCBEYXRh QXJyYXkmIG9sZCkKICAgICAgOiB0aGVzaXplKG9sZC50aGVzaXplKQogICAgICAsIHRoZW1h eCAob2xkLnRoZW1heCkKICAgICAgLCBkYXRhICgwKQogICAgICAsIG1lbUZhY3RvciAob2xk Lm1lbUZhY3RvcikKICAgewogICAgICBzcHhfYWxsb2MoZGF0YSwgbWF4KCkpOwoKICAgICAg aWYgKHRoZXNpemUpCiAgICAgICAgIG1lbWNweShkYXRhLCBvbGQuZGF0YSwgdGhlc2l6ZSAq IHNpemVvZihUKSk7CgogICAgICAKIyAyOTcgImRhdGFhcnJheS5oIiAzIDQKICAgICAoc3Rh dGljX2Nhc3Q8dm9pZD4gKDApKQojIDI5NyAiZGF0YWFycmF5LmgiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsKICAgfQojIDMwOSAiZGF0YWFycmF5LmgiCiAgIGV4cGxpY2l0IERh dGFBcnJheShpbnQgcF9zaXplID0gMCwgaW50IHBfbWF4ID0gMCwgUmVhbCBwX2ZhYyA9IDEu MikKICAgICAgOiBkYXRhICgwKQogICAgICAsIG1lbUZhY3RvcihwX2ZhYykKICAgewogICAg ICB0aGVzaXplID0gKHBfc2l6ZSA8IDApID8gMCA6IHBfc2l6ZTsKICAgICAgaWYgKHBfbWF4 ID4gdGhlc2l6ZSkKICAgICAgICAgdGhlbWF4ID0gcF9tYXg7CiAgICAgIGVsc2UKICAgICAg ICAgdGhlbWF4ID0gKHRoZXNpemUgPT0gMCkgPyAxIDogdGhlc2l6ZTsKCiAgICAgIHNweF9h bGxvYyhkYXRhLCB0aGVtYXgpOwoKICAgICAgCiMgMzIxICJkYXRhYXJyYXkuaCIgMyA0CiAg ICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAzMjEgImRhdGFhcnJheS5oIgogICAgICAg ICAgICAgICAgICAgICAgICAgICA7CiAgIH0KCgogICB+RGF0YUFycmF5KCkKICAgewogICAg ICBzcHhfZnJlZShkYXRhKTsKICAgfQp9OwoKfQojIDMxICJkYXRhc2V0LmgiIDIKIyAxICJk YXRha2V5LmgiIDEKIyAzMiAiZGF0YXNldC5oIiAyCiMgMSAic3B4YWxsb2MuaCIgMQojIDMz ICJkYXRhc2V0LmgiIDIKIyAxICJtZXNzYWdlLmgiIDEKIyAyMCAibWVzc2FnZS5oIgpuYW1l c3BhY2Ugc29wbGV4CnsKCmV4dGVybiBib29sIG1zZ2luY29uc2lzdGVudChjb25zdCBjaGFy KiBuYW1lLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSk7CgojZGVmaW5lIE1TR2luY29u c2lzdGVudChuYW1lKSBtc2dpbmNvbnNpc3RlbnQobmFtZSwgX19GSUxFX18sIF9fTElORV9f KQoKfQojIDM0ICJkYXRhc2V0LmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDg3ICJkYXRh c2V0LmgiCnRlbXBsYXRlPGNsYXNzIERBVEE+CmNsYXNzIERhdGFTZXQKewpwcm90ZWN0ZWQ6 CiAgIHN0cnVjdCBJdGVtCiAgIHsKICAgICAgREFUQSBkYXRhOwogICAgICBpbnQgaW5mbzsK CiAgIH0qIHRoZWl0ZW07CgogICBEYXRhS2V5KiB0aGVrZXk7CgogICBpbnQgdGhlbWF4Owog ICBpbnQgdGhlc2l6ZTsKICAgaW50IHRoZW51bTsKICAgaW50IGZpcnN0ZnJlZTsKCnB1Ymxp YzoKIyAxMTQgImRhdGFzZXQuaCIKICAgdm9pZCBhZGQoRGF0YUtleSYgbmV3a2V5LCBjb25z dCBEQVRBJiBpdGVtKQogICB7CiAgICAgIERBVEEqIGRhdGEgPSBjcmVhdGUobmV3a2V5KTsK CiAgICAgIAojIDExOCAiZGF0YXNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4g KDApKQojIDExOCAiZGF0YXNldC5oIgogICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAg KmRhdGEgPSBpdGVtOwogICB9CgoKCiAgIHZvaWQgYWRkKGNvbnN0IERBVEEmIGl0ZW0pCiAg IHsKICAgICAgREFUQSogZGF0YSA9IGNyZWF0ZSgpOwoKICAgICAgCiMgMTI5ICJkYXRhc2V0 LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTI5ICJkYXRhc2V0Lmgi CiAgICAgICAgICAgICAgICAgICAgICA7CgogICAgICAqZGF0YSA9IGl0ZW07CiAgIH0KCgog ICB2b2lkIGFkZChEYXRhS2V5IG5ld2tleVtdLCBjb25zdCBEQVRBKiBpdGVtLCBpbnQgbikK ICAgewogICAgICAKIyAxMzcgImRhdGFzZXQuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZv aWQ+ICgwKSkKIyAxMzcgImRhdGFzZXQuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg OwogICAgICAKIyAxMzggImRhdGFzZXQuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ ICgwKSkKIyAxMzggImRhdGFzZXQuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKCiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgICBhZGQobmV3 a2V5W2ldLCBpdGVtW2ldKTsKICAgfQoKCiAgIHZvaWQgYWRkKGNvbnN0IERBVEEqIGl0ZW1z LCBpbnQgbikKICAgewogICAgICAKIyAxNDcgImRhdGFzZXQuaCIgMyA0CiAgICAgKHN0YXRp Y19jYXN0PHZvaWQ+ICgwKSkKIyAxNDcgImRhdGFzZXQuaCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgOwogICAgICAKIyAxNDggImRhdGFzZXQuaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyAxNDggImRhdGFzZXQuaCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKCiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAg ICBhZGQoaXRlbXNbaV0pOwogICB9CgoKICAgdm9pZCBhZGQoRGF0YUtleSBuZXdrZXlbXSwg Y29uc3QgRGF0YVNldCA8IERBVEEgPiAmIHNldCkKICAgewogICAgICAKIyAxNTcgImRhdGFz ZXQuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxNTcgImRhdGFzZXQu aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBzZXQubnVtKCk7ICsraSkKICAgICAgICAgYWRkKG5ld2tleVtp XSwgc2V0W2ldKTsKICAgfQoKCiAgIHZvaWQgYWRkKGNvbnN0IERhdGFTZXQgPCBEQVRBID4g JiBzZXQpCiAgIHsKICAgICAgCiMgMTY2ICJkYXRhc2V0LmgiIDMgNAogICAgIChzdGF0aWNf Y2FzdDx2b2lkPiAoMCkpCiMgMTY2ICJkYXRhc2V0LmgiCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsKCiAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2V0Lm51 bSgpOyArK2kpCiAgICAgICAgIGFkZChzZXRbaV0pOwogICB9CgoKCgogICBEQVRBKiBjcmVh dGUoRGF0YUtleSYgbmV3a2V5KQogICB7CiAgICAgIGlmIChudW0oKSA+PSBtYXgoKSkKICAg ICAgICAgYWJvcnQoKTsKCiAgICAgIGlmIChmaXJzdGZyZWUgIT0gLXRoZW1heCAtIDEpCiAg ICAgIHsKICAgICAgICAgbmV3a2V5LmlkeCA9IC1maXJzdGZyZWUgLSAxOwogICAgICAgICBm aXJzdGZyZWUgPSB0aGVpdGVtW25ld2tleS5pZHhdLmluZm87CiAgICAgIH0KICAgICAgZWxz ZQogICAgICAgICBuZXdrZXkuaWR4ID0gdGhlc2l6ZSsrOwoKICAgICAgdGhla2V5W3RoZW51 bV0gPSBuZXdrZXk7CiAgICAgIHRoZWl0ZW1bbmV3a2V5LmlkeF0uaW5mbyA9IHRoZW51bTsK ICAgICAgKyt0aGVudW07CgogICAgICByZXR1cm4gJih0aGVpdGVtW25ld2tleS5pZHhdLmRh dGEpOwogICB9CgoKCiAgIERBVEEqIGNyZWF0ZSgpCiAgIHsKICAgICAgRGF0YUtleSB0bXA7 CiAgICAgIHJldHVybiBjcmVhdGUodG1wKTsKICAgfQojIDIxOSAiZGF0YXNldC5oIgogICB2 b2lkIHJlbW92ZShpbnQgcmVtb3ZlbnVtKQogICB7CiAgICAgIGlmIChoYXMocmVtb3ZlbnVt KSkKICAgICAgewogICAgICAgICBpbnQgaWR4ID0gdGhla2V5W3JlbW92ZW51bV0uaWR4OwoK ICAgICAgICAgdGhlaXRlbVtpZHhdLmluZm8gPSBmaXJzdGZyZWU7CiAgICAgICAgIGZpcnN0 ZnJlZSA9IC1pZHggLSAxOwoKICAgICAgICAgd2hpbGUgKC1maXJzdGZyZWUgPT0gdGhlc2l6 ZSkKICAgICAgICAgewogICAgICAgICAgICBmaXJzdGZyZWUgPSB0aGVpdGVtWyAtZmlyc3Rm cmVlIC0gMV0uaW5mbzsKICAgICAgICAgICAgLS10aGVzaXplOwogICAgICAgICB9CgogICAg ICAgICAtLXRoZW51bTsKICAgICAgICAgaWYgKHJlbW92ZW51bSAhPSB0aGVudW0pCiAgICAg ICAgIHsKICAgICAgICAgICAgdGhla2V5W3JlbW92ZW51bV0gPSB0aGVrZXlbdGhlbnVtXTsK ICAgICAgICAgICAgdGhlaXRlbVt0aGVrZXlbcmVtb3ZlbnVtXS5pZHhdLmluZm8gPSByZW1v dmVudW07CiAgICAgICAgIH0KICAgICAgfQogICB9CgoKICAgdm9pZCByZW1vdmUoY29uc3Qg RGF0YUtleSYgcmVtb3Zla2V5KQogICB7CiAgICAgIHJlbW92ZShudW1iZXIocmVtb3Zla2V5 KSk7CiAgIH0KCgoKCgoKICAgdm9pZCByZW1vdmUoaW50IHBlcm1bXSkKICAgewogICAgICBp bnQgaywgaiwgZmlyc3QgPSAtMTsKCiAgICAgIGZvciAoayA9IGogPSAwOyBrIDwgbnVtKCk7 ICsraykKICAgICAgewogICAgICAgICBpZiAocGVybVtrXSA+PSAwKQogICAgICAgICAgICBw ZXJtW2tdID0gaisrOwogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgaW50 IGlkeCA9IHRoZWtleVtrXS5pZHg7CiAgICAgICAgICAgIHRoZWl0ZW1baWR4XS5pbmZvID0g Zmlyc3RmcmVlOwogICAgICAgICAgICBmaXJzdGZyZWUgPSAtaWR4IC0gMTsKICAgICAgICAg ICAgaWYgKGZpcnN0IDwgMCkKICAgICAgICAgICAgICAgZmlyc3QgPSBrOwogICAgICAgICB9 CiAgICAgIH0KICAgICAgaWYgKGZpcnN0ID49IDApCiAgICAgIHsKICAgICAgICAgZm9yIChr ID0gZmlyc3QsIGogPSBudW0oKTsgayA8IGo7ICsraykKICAgICAgICAgewogICAgICAgICAg ICBpZiAocGVybVtrXSA+PSAwKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHRoZWtl eVtwZXJtW2tdXSA9IHRoZWtleVtrXTsKICAgICAgICAgICAgICAgdGhlaXRlbVt0aGVrZXlb a10uaWR4XS5pbmZvID0gcGVybVtrXTsKICAgICAgICAgICAgICAgdGhla2V5W2tdLmlkeCA9 IC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgLS10 aGVudW07CiAgICAgICAgIH0KICAgICAgfQogICB9CgoKICAgdm9pZCByZW1vdmUoRGF0YUtl eSAqa2V5cywgaW50IG4sIGludCogcGVybSkKICAgewogICAgICAKIyAyOTAgImRhdGFzZXQu aCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAyOTAgImRhdGFzZXQuaCIK ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgZm9yIChpbnQgaSA9IG51bSgpIC0gMTsg aSA+PSAwOyAtLWkpCiAgICAgICAgIHBlcm1baV0gPSBpOwogICAgICB3aGlsZSAoLS1uID49 IDApCiAgICAgICAgIHBlcm1bbnVtYmVyKGtleXNbbl0pXSA9IC0xOwogICAgICByZW1vdmUo cGVybSk7CiAgIH0KCiAgIHZvaWQgcmVtb3ZlKERhdGFLZXkgKmtleXMsIGludCBuKQogICB7 CiAgICAgIERhdGFBcnJheTxpbnQ+IHBlcm0obnVtKCkpOwogICAgICByZW1vdmUoa2V5cywg biwgcGVybS5nZXRfcHRyKCkpOwogICB9CgogICB2b2lkIHJlbW92ZShpbnQgKm51bXMsIGlu dCBuLCBpbnQqIHBlcm0pCiAgIHsKICAgICAgCiMgMzA2ICJkYXRhc2V0LmgiIDMgNAogICAg IChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzA2ICJkYXRhc2V0LmgiCiAgICAgICAgICAg ICAgICAgICAgICA7CiAgICAgIGZvciAoaW50IGkgPSBudW0oKSAtIDE7IGkgPj0gMDsgLS1p KQogICAgICAgICBwZXJtW2ldID0gaTsKICAgICAgd2hpbGUgKC0tbiA+PSAwKQogICAgICAg ICBwZXJtW251bXNbbl1dID0gLTE7CiAgICAgIHJlbW92ZShwZXJtKTsKICAgfQoKICAgdm9p ZCByZW1vdmUoaW50ICpudW1zLCBpbnQgbikKICAgewogICAgICBEYXRhQXJyYXk8aW50PiBw ZXJtKG51bSgpKTsKICAgICAgcmVtb3ZlKG51bXMsIG4sIHBlcm0uZ2V0X3B0cigpKTsKICAg fQoKCiAgIHZvaWQgY2xlYXIoKQogICB7CiAgICAgIHRoZXNpemUgPSAwOwogICAgICB0aGVu dW0gPSAwOwogICAgICBmaXJzdGZyZWUgPSAtdGhlbWF4IC0gMTsKICAgfQojIDMzNyAiZGF0 YXNldC5oIgogICBEQVRBJiBvcGVyYXRvcltdKGludCBuKQogICB7CiAgICAgIAojIDMzOSAi ZGF0YXNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDMzOSAiZGF0 YXNldC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gdGhlaXRl bVt0aGVrZXlbbl0uaWR4XS5kYXRhOwogICB9CgogICBjb25zdCBEQVRBJiBvcGVyYXRvcltd KGludCBuKSBjb25zdAogICB7CiAgICAgIAojIDM0NSAiZGF0YXNldC5oIiAzIDQKICAgICAo c3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDM0NSAiZGF0YXNldC5oIgogICAgICAgICAgICAg ICAgICAgICAgICAgOwogICAgICByZXR1cm4gdGhlaXRlbVt0aGVrZXlbbl0uaWR4XS5kYXRh OwogICB9CgoKICAgREFUQSYgb3BlcmF0b3JbXShjb25zdCBEYXRhS2V5JiBrKQogICB7CiAg ICAgIAojIDM1MiAiZGF0YXNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDAp KQojIDM1MiAiZGF0YXNldC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAg ICAgIHJldHVybiB0aGVpdGVtW2suaWR4XS5kYXRhOwogICB9CgogICBjb25zdCBEQVRBJiBv cGVyYXRvcltdKGNvbnN0IERhdGFLZXkmIGspIGNvbnN0CiAgIHsKICAgICAgCiMgMzU4ICJk YXRhc2V0LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzU4ICJkYXRh c2V0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHRo ZWl0ZW1bay5pZHhdLmRhdGE7CiAgIH0KCgoKCgogICBpbnQgbWF4KCkgY29uc3QKICAgewog ICAgICByZXR1cm4gdGhlbWF4OwogICB9CgoKICAgaW50IG51bSgpIGNvbnN0CiAgIHsKICAg ICAgcmV0dXJuIHRoZW51bTsKICAgfQoKCiAgIGludCBzaXplKCkgY29uc3QKICAgewogICAg ICByZXR1cm4gdGhlc2l6ZTsKICAgfQoKCiAgIERhdGFLZXkga2V5KGludCBuKSBjb25zdAog ICB7CiAgICAgIAojIDM4NiAiZGF0YXNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9p ZD4gKDApKQojIDM4NiAiZGF0YXNldC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsKICAgICAgcmV0dXJuIHRoZWtleVtuXTsKICAgfQoKCiAgIERhdGFLZXkga2V5KGNv bnN0IERBVEEqIGl0ZW0pIGNvbnN0CiAgIHsKICAgICAgCiMgMzkzICJkYXRhc2V0LmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzkzICJkYXRhc2V0LmgiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHRoZWtleVtudW1iZXIo aXRlbSldOwogICB9CgoKCiAgIGludCBudW1iZXIoY29uc3QgRGF0YUtleSYgaykgY29uc3QK ICAgewogICAgICByZXR1cm4gKGsuaWR4IDwgMCB8fCBrLmlkeCA+PSBzaXplKCkpID8gLTEK ICAgICAgICAgIDogdGhlaXRlbVtrLmlkeF0uaW5mbzsKICAgfQoKCgoKICAgaW50IG51bWJl cihjb25zdCBEQVRBKiBpdGVtKSBjb25zdAogICB7CiAgICAgIHB0cmRpZmZfdCBpZHggPSBy ZWludGVycHJldF9jYXN0PGNvbnN0IHN0cnVjdCBJdGVtKj4oaXRlbSkgLSB0aGVpdGVtOwoK ICAgICAgaWYoIGlkeCA8IDAgfHwgaWR4ID49IHNpemUoKSkKICAgICAgICAgcmV0dXJuIC0x OwojIDQyNiAiZGF0YXNldC5oIgogICAgICByZXR1cm4gdGhlaXRlbVtpZHhdLmluZm87CiAg IH0KCgogICBpbnQgaGFzKGNvbnN0IERhdGFLZXkmIGspIGNvbnN0CiAgIHsKICAgICAgcmV0 dXJuIHRoZWl0ZW1bay5pZHhdLmluZm8gPj0gMDsKICAgfQoKCiAgIGludCBoYXMoaW50IG4p IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIChuID49IDAgJiYgbiA8IG51bSgpKTsKICAgfQoK CiAgIGludCBoYXMoY29uc3QgREFUQSogaXRlbSkgY29uc3QKICAgewogICAgICByZXR1cm4g bnVtYmVyKGl0ZW0pID49IDA7CiAgIH0KIyA0NTggImRhdGFzZXQuaCIKICAgcHRyZGlmZl90 IHJlTWF4KGludCBuZXdtYXggPSAwKQogICB7CiAgICAgIHN0cnVjdCBJdGVtICogb2xkX3Ro ZWl0ZW0gPSB0aGVpdGVtOwogICAgICBuZXdtYXggPSAobmV3bWF4IDwgc2l6ZSgpKSA/IHNp emUoKSA6IG5ld21heDsKCiAgICAgIGludCogbGFzdGZyZWUgPSAmZmlyc3RmcmVlOwogICAg ICB3aGlsZSAoKmxhc3RmcmVlICE9IC10aGVtYXggLSAxKQogICAgICAgICBsYXN0ZnJlZSA9 ICYodGhlaXRlbVsgLTEgLSAqbGFzdGZyZWVdLmluZm8pOwogICAgICAqbGFzdGZyZWUgPSAt bmV3bWF4IC0gMTsKCiAgICAgIHRoZW1heCA9IG5ld21heDsKCiAgICAgIHNweF9yZWFsbG9j KHRoZWl0ZW0sIHRoZW1heCk7CiAgICAgIHNweF9yZWFsbG9jKHRoZWtleSwgdGhlbWF4KTsK CiAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGVpdGVtKQogICAgICAg ICAtIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG9sZF90aGVpdGVtKTsKICAgfQoKCiAgIGJv b2wgaXNDb25zaXN0ZW50KCkgY29uc3QKICAgewogICAgICBpZiAodGhlaXRlbSA9PSAwIHx8 IHRoZWtleSA9PSAwKQogICAgICAgICByZXR1cm4gbXNnaW5jb25zaXN0ZW50KCJEYXRhU2V0 IiwgImRhdGFzZXQuaCIsIDQ4MSk7CgogICAgICBpZiAodGhlc2l6ZSA+IHRoZW1heCB8fCB0 aGVudW0gPiB0aGVtYXggfHwgdGhlbnVtID4gdGhlc2l6ZSkKICAgICAgICAgcmV0dXJuIG1z Z2luY29uc2lzdGVudCgiRGF0YVNldCIsICJkYXRhc2V0LmgiLCA0ODQpOwoKICAgICAgaWYg KHRoZXNpemUgPT0gdGhlbnVtICYmIGZpcnN0ZnJlZSAhPSAtdGhlbWF4IC0gMSkKICAgICAg ICAgcmV0dXJuIG1zZ2luY29uc2lzdGVudCgiRGF0YVNldCIsICJkYXRhc2V0LmgiLCA0ODcp OwoKICAgICAgaWYgKHRoZXNpemUgIT0gdGhlbnVtICYmIGZpcnN0ZnJlZSA9PSAtdGhlbWF4 IC0gMSkKICAgICAgICAgcmV0dXJuIG1zZ2luY29uc2lzdGVudCgiRGF0YVNldCIsICJkYXRh c2V0LmgiLCA0OTApOwoKICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGVudW07ICsraSkK ICAgICAgICAgaWYgKHRoZWl0ZW1bdGhla2V5W2ldLmlkeF0uaW5mbyAhPSBpKQogICAgICAg ICAgICByZXR1cm4gbXNnaW5jb25zaXN0ZW50KCJEYXRhU2V0IiwgImRhdGFzZXQuaCIsIDQ5 NCk7CgogICAgICByZXR1cm4gdHJ1ZTsKICAgfQoKCgoKCgogICBEYXRhU2V0KGludCBwbWF4 ID0gOCkKICAgICAgOiB0aGVpdGVtKCAwICkKICAgICAgLCB0aGVrZXkgKCAwICkKICAgICAg LCB0aGVtYXggKCBwbWF4IDwgMSA/IDggOiBwbWF4ICkKICAgICAgLCB0aGVzaXplKCAwICkK ICAgICAgLCB0aGVudW0gKCAwICkKCiAgIHsKICAgICAgZmlyc3RmcmVlID0gLXRoZW1heCAt IDE7CgogICAgICBzcHhfYWxsb2ModGhlaXRlbSwgdGhlbWF4KTsKICAgICAgc3B4X2FsbG9j KHRoZWtleSwgdGhlbWF4KTsKICAgfQoKCiAgIERhdGFTZXQoY29uc3QgRGF0YVNldCYgb2xk KQogICAgICA6IHRoZWl0ZW0oIDAgKQogICAgICAsIHRoZWtleSAoIDAgKQogICAgICAsIHRo ZW1heCAoIG9sZC50aGVtYXggKQogICAgICAsIHRoZXNpemUoIG9sZC50aGVzaXplICkKICAg ICAgLCB0aGVudW0gKCBvbGQudGhlbnVtICkKICAgewogICAgICBmaXJzdGZyZWUgPSAob2xk LmZpcnN0ZnJlZSA9PSAtb2xkLnRoZW1heCAtIDEpCiAgICAgICAgID8gLXRoZW1heCAtIDEK ICAgICAgICAgOiBvbGQuZmlyc3RmcmVlOwoKICAgICAgc3B4X2FsbG9jKHRoZWl0ZW0sIHRo ZW1heCk7CiAgICAgIHNweF9hbGxvYyh0aGVrZXksIHRoZW1heCk7CgogICAgICBtZW1jcHko dGhlaXRlbSwgb2xkLnRoZWl0ZW0sIHRoZW1heCAqIHNpemVvZigqdGhlaXRlbSkpOwogICAg ICBtZW1jcHkodGhla2V5LCBvbGQudGhla2V5LCB0aGVtYXggKiBzaXplb2YoKnRoZWtleSkp OwogICB9CgoKCgoKCgogICBEYXRhU2V0IDwgREFUQSA+ICYgb3BlcmF0b3I9KGNvbnN0IERh dGFTZXQgPCBEQVRBID4gJiByaHMpCiAgIHsKICAgICAgaWYgKHRoaXMgIT0gJnJocykKICAg ICAgewogICAgICAgICBpbnQgaTsKCiAgICAgICAgIGlmIChyaHMuc2l6ZSgpID4gbWF4KCkp CiAgICAgICAgICAgIHJlTWF4KHJocy5zaXplKCkpOwoKICAgICAgICAgY2xlYXIoKTsKCiAg ICAgICAgIGZvciAoaSA9IDA7IGkgPCByaHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgIG1l bWNweSgmdGhlaXRlbVtpXSwgJnJocy50aGVpdGVtW2ldLCBzaXplb2YoKnRoZWl0ZW0pKTsK CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCByaHMubnVtKCk7ICsraSkKICAgICAgICAgICAg dGhla2V5W2ldID0gcmhzLnRoZWtleVtpXTsKCiAgICAgICAgIGlmIChyaHMuZmlyc3RmcmVl ID09IC1yaHMudGhlbWF4IC0gMSkKICAgICAgICAgICAgZmlyc3RmcmVlID0gLXRoZW1heCAt IDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICBmaXJzdGZyZWUgPSBy aHMuZmlyc3RmcmVlOwogICAgICAgICAgICBpID0gcmhzLmZpcnN0ZnJlZTsKCiAgICAgICAg ICAgIHdoaWxlIChyaHMudGhlaXRlbVsgLWkgLSAxXS5pbmZvICE9IC1yaHMudGhlbWF4IC0g MSkKICAgICAgICAgICAgICAgaSA9IHJocy50aGVpdGVtWyAtaSAtIDFdLmluZm87CiAgICAg ICAgICAgIHRoZWl0ZW1bIC1pIC0gMV0uaW5mbyA9IC10aGVtYXggLSAxOwogICAgICAgICB9 CiAgICAgICAgIHRoZW51bSA9IHJocy50aGVudW07CiAgICAgICAgIHRoZXNpemUgPSByaHMu dGhlc2l6ZTsKICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgogICB+RGF0YVNl dCgpCiAgIHsKICAgICAgc3B4X2ZyZWUodGhlaXRlbSk7CiAgICAgIHNweF9mcmVlKHRoZWtl eSk7CiAgIH0KCn07Cgp9CiMgMzIgInN2c2V0LmgiIDIKIyAxICJkYXRhYXJyYXkuaCIgMQoj IDMzICJzdnNldC5oIiAyCiMgMSAiaWRsaXN0LmgiIDEKIyAyNCAiaWRsaXN0LmgiCiNkZWZp bmUgX0lETElTVF9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0 ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBh c3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9y CgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNU IHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNk ZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAo X19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyNyAiaWRsaXN0LmgiIDIKCiMgMSAic3B4ZGVm aW5lcy5oIiAxCiMgMjkgImlkbGlzdC5oIiAyCiMgMSAiaXNsaXN0LmgiIDEKIyAyNCAiaXNs aXN0LmgiCiNkZWZpbmUgX0lTTElTVF9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o IiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VS VF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBh c3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NF UlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDAp KQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJy b3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyNyAiaXNsaXN0LmgiIDIK CgojIDEgIm1lc3NhZ2UuaCIgMQojIDIwICJtZXNzYWdlLmgiCm5hbWVzcGFjZSBzb3BsZXgK ewoKZXh0ZXJuIGJvb2wgbXNnaW5jb25zaXN0ZW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0 IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKCiNkZWZpbmUgTVNHaW5jb25zaXN0ZW50KG5hbWUp IG1zZ2luY29uc2lzdGVudChuYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pCgp9CiMgMzAgImlz bGlzdC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0MiAiaXNsaXN0LmgiCnRlbXBsYXRl IDwgY2xhc3MgVCA+CmNsYXNzIElzRWxlbWVudCA6IHB1YmxpYyBUCnsKcHJvdGVjdGVkOgog ICBJc0VsZW1lbnQ8VD4qIHRoZV9uZXh0OwoKcHVibGljOgoKICAgSXNFbGVtZW50PFQ+KiYg bmV4dCgpCiAgIHsKICAgICAgcmV0dXJuIHRoZV9uZXh0OwogICB9CgogICBJc0VsZW1lbnQ8 VD4qIG5leHQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVfbmV4dDsKICAgfQoKCiAg IElzRWxlbWVudCgpCiAgIHt9CgoKICAgSXNFbGVtZW50KGNvbnN0IFQmIG9sZCkKICAgICAg OiBUKG9sZCkKICAgICAgICAgLCB0aGVfbmV4dCgwKQogICB7fQoKCgoKICAgSXNFbGVtZW50 KGNvbnN0IElzRWxlbWVudDxUPiYgb2xkKQogICAgICA6IFQob2xkKQogICAgICAsIHRoZV9u ZXh0KDApCiAgIHt9Cgp9OwojIDkxICJpc2xpc3QuaCIKdGVtcGxhdGUgPCBjbGFzcyBUID4K Y2xhc3MgSXNMaXN0CnsKcHJvdGVjdGVkOgogICBUKiB0aGVfZmlyc3Q7CiAgIFQqIHRoZV9s YXN0OwoKcHVibGljOgogICB0eXBlZGVmIElzRWxlbWVudDxUPiBFbGVtZW50OwoKCgoKICAg dm9pZCBhcHBlbmQoVCogZWxlbSkKICAgewogICAgICBpZiAodGhlX2xhc3QpCiAgICAgICAg IHRoZV9sYXN0LT5uZXh0KCkgPSBlbGVtOwogICAgICBlbHNlCiAgICAgICAgIHRoZV9maXJz dCA9IGVsZW07CiAgICAgIHRoZV9sYXN0ID0gZWxlbTsKICAgfQoKCiAgIHZvaWQgcHJlcGVu ZChUKiBlbGVtKQogICB7CiAgICAgIGlmICh0aGVfZmlyc3QpCiAgICAgICAgIGVsZW0tPm5l eHQoKSA9IHRoZV9maXJzdDsKICAgICAgZWxzZQogICAgICAgICB0aGVfbGFzdCA9IGVsZW07 CiAgICAgIHRoZV9maXJzdCA9IGVsZW07CiAgIH0KCgogICB2b2lkIGluc2VydChUKiBlbGVt LCBUKiBhZnRlcikKICAgewogICAgICAKIyAxMjYgImlzbGlzdC5oIiAzIDQKICAgICAoc3Rh dGljX2Nhc3Q8dm9pZD4gKDApKQojIDEyNiAiaXNsaXN0LmgiCiAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgaWYgKGFmdGVyID09IHRoZV9sYXN0KQogICAgICAgICBhcHBlbmQo ZWxlbSk7CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICBlbGVtLT5uZXh0KCkgPSBhZnRl ci0+bmV4dCgpOwogICAgICAgICBhZnRlci0+bmV4dCgpID0gZWxlbTsKICAgICAgfQogICB9 CiMgMTQzICJpc2xpc3QuaCIKICAgdm9pZCBhcHBlbmQoSXNMaXN0PFQ+JiBsaXN0KQogICB7 CiAgICAgIGlmIChsaXN0LnRoZV9maXJzdCkKICAgICAgewogICAgICAgICBhcHBlbmQobGlz dC50aGVfZmlyc3QpOwogICAgICAgICB0aGVfbGFzdCA9IGxpc3QudGhlX2xhc3Q7CiAgICAg IH0KICAgfQojIDE1OSAiaXNsaXN0LmgiCiAgIHZvaWQgcHJlcGVuZChJc0xpc3Q8VD4mIGxp c3QpCiAgIHsKICAgICAgaWYgKGxpc3QudGhlX2ZpcnN0KQogICAgICB7CiAgICAgICAgIHBy ZXBlbmQobGlzdC50aGVfbGFzdCk7CiAgICAgICAgIHRoZV9maXJzdCA9IGxpc3QudGhlX2Zp cnN0OwogICAgICB9CiAgIH0KIyAxNzUgImlzbGlzdC5oIgogICB2b2lkIGluc2VydChJc0xp c3Q8VD4mIGxpc3QsIFQqYWZ0ZXIpCiAgIHsKICAgICAgCiMgMTc3ICJpc2xpc3QuaCIgMyA0 CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxNzcgImlzbGlzdC5oIgogICAgICAg ICAgICAgICAgICAgICAgICA7CiAgICAgIGlmIChsaXN0LnRoZV9maXJzdCkKICAgICAgewog ICAgICAgICBsaXN0LnRoZV9sYXN0LT5uZXh0KCkgPSBhZnRlci0+bmV4dCgpOwogICAgICAg ICBhZnRlci0+bmV4dCgpID0gbGlzdC5maXJzdCgpOwogICAgICAgICBpZiAoYWZ0ZXIgPT0g bGFzdCgpKQogICAgICAgICAgICB0aGVfbGFzdCA9IGxpc3QubGFzdCgpOwogICAgICB9CiAg IH0KCgoKCgogICB2b2lkIHJlbW92ZV9uZXh0KFQgKmFmdGVyKQogICB7CiAgICAgIAojIDE5 MyAiaXNsaXN0LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTkzICJp c2xpc3QuaCIKICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICBpZiAoYWZ0ZXItPm5l eHQoKSkKICAgICAgewogICAgICAgICBpZiAoYWZ0ZXItPm5leHQoKSA9PSBsYXN0KCkpCiAg ICAgICAgICAgIHRoZV9sYXN0ID0gYWZ0ZXI7CiAgICAgICAgIGFmdGVyLT5uZXh0KCkgPSBh ZnRlci0+bmV4dCgpLT5uZXh0KCk7CiAgICAgIH0KICAgfQoKCiAgIHZvaWQgcmVtb3ZlKGNv bnN0IFQgKmVsZW0pCiAgIHsKICAgICAgaWYgKHRoZV9maXJzdCkKICAgICAgewogICAgICAg ICBpZiAoZWxlbSA9PSB0aGVfZmlyc3QpCiAgICAgICAgIHsKICAgICAgICAgICAgdGhlX2Zp cnN0ID0gbmV4dChlbGVtKTsKICAgICAgICAgICAgaWYgKHRoZV9maXJzdCA9PSAwKQogICAg ICAgICAgICAgICB0aGVfbGFzdCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAg ICAgICB7CiAgICAgICAgICAgIFQgKmFmdGVyID0gdGhlX2ZpcnN0OwogICAgICAgICAgICBm b3IgKDsgYWZ0ZXIgIT0gdGhlX2xhc3Q7IGFmdGVyID0gYWZ0ZXItPm5leHQoKSkKICAgICAg ICAgICAgICAgaWYgKGFmdGVyLT5uZXh0KCkgPT0gZWxlbSkKICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICByZW1vdmVfbmV4dChhZnRlcik7CiAgICAgICAgICAgICAgICAg IHJldHVybjsKICAgICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgIH0KICAgfQoKCgoK CgoKICAgdm9pZCByZW1vdmUoY29uc3QgSXNMaXN0PFQ+JiBsaXN0KQogICB7CiAgICAgIGlm ICh0aGVfZmlyc3QgIT0gMCAmJiBsaXN0LnRoZV9maXJzdCAhPSAwKQogICAgICB7CiAgICAg ICAgIAojIDIzNiAiaXNsaXN0LmgiIDMgNAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAo MCkpCiMgMjM2ICJpc2xpc3QuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDsKICAgICAgICAgCiMgMjM3ICJpc2xpc3QuaCIgMyA0CiAgICAgICAgKHN0YXRpY19jYXN0 PHZvaWQ+ICgwKSkKIyAyMzcgImlzbGlzdC5oIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CiAgICAgICAgIGlmICh0aGVfZmlyc3QgPT0gbGlzdC50aGVfZmlyc3QpCiAg ICAgICAgIHsKICAgICAgICAgICAgaWYgKHRoZV9sYXN0ID09IGxpc3QudGhlX2xhc3QpCiAg ICAgICAgICAgICAgIHRoZV9maXJzdCA9IHRoZV9sYXN0ID0gMDsKICAgICAgICAgICAgZWxz ZQogICAgICAgICAgICAgICB0aGVfZmlyc3QgPSBsaXN0LnRoZV9sYXN0LT5uZXh0KCk7CiAg ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgIFQgKmFmdGVy ID0gdGhlX2ZpcnN0OwogICAgICAgICAgICBmb3IgKDsgYWZ0ZXItPm5leHQoKSAhPSBsaXN0 LnRoZV9maXJzdDsgYWZ0ZXIgPSBhZnRlci0+bmV4dCgpKQogICAgICAgICAgICAgIDsKICAg ICAgICAgICAgaWYgKHRoZV9sYXN0ID09IGxpc3QudGhlX2xhc3QpCiAgICAgICAgICAgICAg IHRoZV9sYXN0ID0gYWZ0ZXI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgYWZ0 ZXItPm5leHQoKSA9IGxpc3QudGhlX2xhc3QtPm5leHQoKTsKICAgICAgICAgfQogICAgICB9 CiAgIH0KCgogICB2b2lkIGNsZWFyKCkKICAgewogICAgICB0aGVfZmlyc3QgPSB0aGVfbGFz dCA9IDA7CiAgIH0KCgoKCgogICBUKiBmaXJzdCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJu IHRoZV9maXJzdDsKICAgfQoKCiAgIFQqIGxhc3QoKSBjb25zdAogICB7CiAgICAgIHJldHVy biB0aGVfbGFzdDsKICAgfQojIDI4OCAiaXNsaXN0LmgiCiAgIFQqIG5leHQoY29uc3QgVCAq ZWxlbSkgY29uc3QKICAgewogICAgICByZXR1cm4gKGVsZW0gPT0gdGhlX2xhc3QpID8gMCA6 IGVsZW0tPm5leHQoKTsKICAgfQoKCiAgIGludCBsZW5ndGgoKSBjb25zdAogICB7CiAgICAg IGludCBudW07CiAgICAgIGlmICh0aGVfZmlyc3QpCiAgICAgIHsKICAgICAgICAgVCAqdGVz dCA9IHRoZV9maXJzdDsKICAgICAgICAgZm9yIChudW0gPSAxOyB0ZXN0ICE9IHRoZV9sYXN0 OyB0ZXN0ID0gdGVzdC0+bmV4dCgpKQogICAgICAgICAgICArK251bTsKICAgICAgICAgcmV0 dXJuIG51bTsKICAgICAgfQogICAgICByZXR1cm4gMDsKICAgfQoKCiAgIGludCBmaW5kKGNv bnN0IFQqIGVsZW0pIGNvbnN0CiAgIHsKICAgICAgVCAqdGVzdCA9IHRoZV9maXJzdDsKICAg ICAgZG8KICAgICAgewogICAgICAgICBpZiAodGVzdCA9PSBlbGVtKQogICAgICAgICAgICBy ZXR1cm4gMTsKICAgICAgfQogICAgICB3aGlsZSAoKHRlc3QgPSBuZXh0KHRlc3QpKSk7CiAg ICAgIHJldHVybiAwOwogICB9CgoKCgoKCgogICBJc0xpc3Q8VD5zdWJsaXN0KGNvbnN0IFQq IHN0YXJ0ID0gMCwgY29uc3QgVCogZW5kID0gMCkgY29uc3QKICAgewogICAgICBJc0xpc3Q8 VD5wYXJ0ID0gKnRoaXM7CiAgICAgIGlmIChzdGFydCkKICAgICAgewogICAgICAgICAKIyAz MzEgImlzbGlzdC5oIiAzIDQKICAgICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDMz MSAiaXNsaXN0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgcGFy dC50aGVfZmlyc3QgPSBjb25zdF9jYXN0PFQqPihzdGFydCk7CiAgICAgIH0KICAgICAgaWYg KGVuZCkKICAgICAgewogICAgICAgICAKIyAzMzYgImlzbGlzdC5oIiAzIDQKICAgICAgICAo c3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDMzNiAiaXNsaXN0LmgiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsKICAgICAgICAgcGFydC50aGVfbGFzdCA9IGNvbnN0X2Nhc3Q8 VCo+KGVuZCk7CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcnQ7CiAgIH0KIyAzNTQgImlzbGlz dC5oIgogICB2b2lkIG1vdmUocHRyZGlmZl90IGRlbHRhKQogICB7CiAgICAgIGlmICh0aGVf Zmlyc3QpCiAgICAgIHsKICAgICAgICAgVCogZWxlbTsKICAgICAgICAgdGhlX2xhc3QgPSBy ZWludGVycHJldF9jYXN0PFQqPihyZWludGVycHJldF9jYXN0PGNoYXIqPih0aGVfbGFzdCkg KyBkZWx0YSk7CiAgICAgICAgIHRoZV9maXJzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHJl aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHRoZV9maXJzdCkgKyBkZWx0YSk7CiAgICAgICAgIGZv ciAoZWxlbSA9IGZpcnN0KCk7IGVsZW07IGVsZW0gPSBuZXh0KGVsZW0pKQogICAgICAgICAg ICBpZiAoZWxlbSAhPSBsYXN0KCkpCiAgICAgICAgICAgICAgIGVsZW0tPm5leHQoKSA9IHJl aW50ZXJwcmV0X2Nhc3Q8VCo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGVsZW0tPm5leHQo KSkgKyBkZWx0YSk7CiAgICAgIH0KICAgfQoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29u c3QKICAgewogICAgICBpZiAoZmlyc3QoKSAhPSAwICYmIGxhc3QoKSA9PSAwKQogICAgICAg ICByZXR1cm4gbXNnaW5jb25zaXN0ZW50KCJJc0xpc3QiLCAiaXNsaXN0LmgiLCAzNzEpOwoK ICAgICAgaWYgKGZpcnN0KCkgPT0gMCAmJiBsYXN0KCkgIT0gMCkKICAgICAgICAgcmV0dXJu IG1zZ2luY29uc2lzdGVudCgiSXNMaXN0IiwgImlzbGlzdC5oIiwgMzc0KTsKCiAgICAgIGlm IChmaXJzdCgpICYmIGZpbmQobGFzdCgpKSA9PSAwKQogICAgICAgICByZXR1cm4gbXNnaW5j b25zaXN0ZW50KCJJc0xpc3QiLCAiaXNsaXN0LmgiLCAzNzcpOwoKICAgICAgcmV0dXJuIHRy dWU7CiAgIH0KIyAzOTAgImlzbGlzdC5oIgogICBJc0xpc3QoVCogcGZpcnN0ID0gMCwgVCog cGxhc3QgPSAwKQogICAgICA6IHRoZV9maXJzdChwZmlyc3QpLCB0aGVfbGFzdChwbGFzdCkK ICAgewogICAgICBpZiAocGZpcnN0KQogICAgICB7CiAgICAgICAgIAojIDM5NSAiaXNsaXN0 LmgiIDMgNAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzk1ICJpc2xpc3Qu aCIKICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgICAgIAojIDM5NiAiaXNsaXN0 LmgiIDMgNAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzk2ICJpc2xpc3Qu aCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICB9CiAgIH0KCn07Cgp9CiMg MzAgImlkbGlzdC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA1MCAiaWRsaXN0LmgiCnRl bXBsYXRlIDwgY2xhc3MgVCA+CmNsYXNzIElkRWxlbWVudCA6IHB1YmxpYyBUCnsKICAgSWRF bGVtZW50PFQ+KiB0aGVwcmV2OwogICBJZEVsZW1lbnQ8VD4qIHRoZW5leHQ7CnB1YmxpYzoK CiAgIElkRWxlbWVudDxUPiomIG5leHQoKQogICB7CiAgICAgIHJldHVybiB0aGVuZXh0Owog ICB9CgogICBJZEVsZW1lbnQ8VD4qY29uc3QmIG5leHQoKSBjb25zdAogICB7CiAgICAgIHJl dHVybiB0aGVuZXh0OwogICB9CgoKICAgSWRFbGVtZW50PFQ+KiYgcHJldigpCiAgIHsKICAg ICAgcmV0dXJuIHRoZXByZXY7CiAgIH0KCiAgIElkRWxlbWVudDxUPipjb25zdCYgcHJldigp IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHRoZXByZXY7CiAgIH0KCgogICBJZEVsZW1lbnQo KQogICAgICA6IHRoZXByZXYoMCkKICAgICAgLCB0aGVuZXh0KDApCiAgIHt9CgoKCgoKICAg SWRFbGVtZW50KGNvbnN0IFQmIG9sZCkKICAgICAgOiBUKG9sZCkKICAgICAgLCB0aGVwcmV2 KDApCiAgICAgICwgdGhlbmV4dCgwKQogICB7fQp9OwojIDEwNCAiaWRsaXN0LmgiCnRlbXBs YXRlIDwgY2xhc3MgVCA+CmNsYXNzIElkTGlzdCA6IHB1YmxpYyBJc0xpc3Q8VD4KewpwdWJs aWM6CgoKCgogICBUKiBmaXJzdCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHN0YXRpY19j YXN0PFQqPih0aGlzLT50aGVfZmlyc3QpOwogICB9CgoKICAgVCogbGFzdCgpIGNvbnN0CiAg IHsKICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPih0aGlzLT50aGVfbGFzdCk7CiAgIH0K CgogICBUKiBuZXh0KGNvbnN0IFQgKmVsZW0pIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIChl bGVtID09IGxhc3QoKSkgPyAwIDogZWxlbS0+bmV4dCgpOwogICB9CgoKICAgVCogcHJldihj b25zdCBUICplbGVtKSBjb25zdAogICB7CiAgICAgIHJldHVybiAoZWxlbSA9PSBmaXJzdCgp KSA/IDAgOiBlbGVtLT5wcmV2KCk7CiAgIH0KCgoKCgoKICAgdm9pZCBhcHBlbmQgKFQqIGVs ZW0pCiAgIHsKICAgICAgaWYgKGxhc3QoKSkKICAgICAgewogICAgICAgICBsYXN0KCktPm5l eHQoKSA9IGVsZW07CiAgICAgICAgIGVsZW0tPnByZXYoKSA9IGxhc3QoKTsKICAgICAgfQog ICAgICBlbHNlCiAgICAgICAgIHRoaXMtPnRoZV9maXJzdCA9IGVsZW07CiAgICAgIHRoaXMt PnRoZV9sYXN0ID0gZWxlbTsKICAgfQoKCiAgIHZvaWQgcHJlcGVuZChUKiBlbGVtKQogICB7 CiAgICAgIGlmIChmaXJzdCgpKQogICAgICB7CiAgICAgICAgIGVsZW0tPm5leHQoKSA9IGZp cnN0KCk7CiAgICAgICAgIGZpcnN0KCktPnByZXYoKSA9IGVsZW07CiAgICAgIH0KICAgICAg ZWxzZQogICAgICAgICB0aGlzLT50aGVfbGFzdCA9IGVsZW07CiAgICAgIHRoaXMtPnRoZV9m aXJzdCA9IGVsZW07CiAgIH0KCgogICB2b2lkIGluc2VydCAoVCogZWxlbSwgVCogYWZ0ZXIp CiAgIHsKICAgICAgCiMgMTY4ICJpZGxpc3QuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZv aWQ+ICgwKSkKIyAxNjggImlkbGlzdC5oIgogICAgICAgICAgICAgICAgICAgICAgICA7CiAg ICAgIGlmIChhZnRlciA9PSBsYXN0KCkpCiAgICAgICAgIGFwcGVuZChlbGVtKTsKICAgICAg ZWxzZQogICAgICB7CiAgICAgICAgIGVsZW0tPm5leHQoKSA9IGFmdGVyLT5uZXh0KCk7CiAg ICAgICAgIGVsZW0tPnByZXYoKSA9IGFmdGVyOwogICAgICAgICBhZnRlci0+bmV4dCgpID0g ZWxlbS0+bmV4dCgpLT5wcmV2KCkgPSBlbGVtOwogICAgICB9CiAgIH0KCgogICB2b2lkIGFw cGVuZCAoSWRMaXN0PFQ+JiBsaXN0KQogICB7CiAgICAgIGlmIChsaXN0LmZpcnN0KCkpCiAg ICAgIHsKICAgICAgICAgYXBwZW5kKGxpc3QuZmlyc3QoKSk7CiAgICAgICAgIHRoaXMtPnRo ZV9sYXN0ID0gbGlzdC5sYXN0KCk7CiAgICAgIH0KICAgfQoKCiAgIHZvaWQgcHJlcGVuZChJ ZExpc3Q8VD4mIGxpc3QpCiAgIHsKICAgICAgaWYgKGxpc3QuZmlyc3QoKSkKICAgICAgewog ICAgICAgICBwcmVwZW5kKGxpc3QubGFzdCgpKTsKICAgICAgICAgdGhpcy0+dGhlX2ZpcnN0 ID0gbGlzdC50aGVfZmlyc3Q7CiAgICAgIH0KICAgfQoKCiAgIHZvaWQgaW5zZXJ0IChJZExp c3Q8VD4mIGxpc3QsIFQqIGFmdGVyKQogICB7CiAgICAgIAojIDIwMiAiaWRsaXN0LmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjAyICJpZGxpc3QuaCIKICAgICAg ICAgICAgICAgICAgICAgICAgOwogICAgICBpZiAobGlzdC5maXJzdCgpKQogICAgICB7CiAg ICAgICAgIGxpc3QubGFzdCgpLT5uZXh0KCkgPSBhZnRlci0+bmV4dCgpOwogICAgICAgICBs aXN0LmZpcnN0KCktPnByZXYoKSA9IGFmdGVyOwogICAgICAgICBhZnRlci0+bmV4dCgpID0g bGlzdC5maXJzdCgpOwogICAgICAgICBpZiAoYWZ0ZXIgPT0gbGFzdCgpKQogICAgICAgICAg ICB0aGlzLT50aGVfbGFzdCA9IGxpc3QubGFzdCgpOwogICAgICAgICBlbHNlCiAgICAgICAg ICAgIGxpc3QubGFzdCgpLT5uZXh0KCktPnByZXYoKSA9IGxpc3QubGFzdCgpOwogICAgICB9 CiAgIH0KCgoKCgogICB2b2lkIHJlbW92ZV9uZXh0KFQqIGFmdGVyKQogICB7CiAgICAgIHJl bW92ZShuZXh0KGFmdGVyKSk7CiAgIH0KCgogICB2b2lkIHJlbW92ZShUKiBlbGVtKQogICB7 CiAgICAgIGlmIChlbGVtID09IGZpcnN0KCkpCiAgICAgIHsKICAgICAgICAgdGhpcy0+dGhl X2ZpcnN0ID0gbmV4dChlbGVtKTsKICAgICAgICAgaWYgKGZpcnN0KCkgPT0gMCkKICAgICAg ICAgICAgdGhpcy0+dGhlX2xhc3QgPSAwOwogICAgICB9CiAgICAgIGVsc2UgaWYgKGVsZW0g PT0gbGFzdCgpKQogICAgICAgICB0aGlzLT50aGVfbGFzdCA9IGVsZW0tPnByZXYoKTsKICAg ICAgZWxzZQogICAgICB7CiAgICAgICAgIGVsZW0tPm5leHQoKS0+cHJldigpID0gZWxlbS0+ cHJldigpOwogICAgICAgICBlbGVtLT5wcmV2KCktPm5leHQoKSA9IGVsZW0tPm5leHQoKTsK ICAgICAgfQogICB9CgoKICAgdm9pZCByZW1vdmUoSWRMaXN0PFQ+JiBsaXN0KQogICB7CiAg ICAgIGlmIChmaXJzdCgpICE9IDAgJiYgbGlzdC5maXJzdCgpICE9IDApCiAgICAgIHsKICAg ICAgICAgCiMgMjQ3ICJpZGxpc3QuaCIgMyA0CiAgICAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ ICgwKSkKIyAyNDcgImlkbGlzdC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOwogICAgICAgICAKIyAyNDggImlkbGlzdC5oIiAzIDQKICAgICAgICAoc3RhdGljX2Nh c3Q8dm9pZD4gKDApKQojIDI0OCAiaWRsaXN0LmgiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKICAgICAgICAgaWYgKGZpcnN0KCkgPT0gbGlzdC5maXJzdCgpKQogICAg ICAgICB7CiAgICAgICAgICAgIGlmIChsYXN0KCkgPT0gbGlzdC5sYXN0KCkpCiAgICAgICAg ICAgICAgIHRoaXMtPnRoZV9maXJzdCA9IHRoaXMtPnRoZV9sYXN0ID0gMDsKICAgICAgICAg ICAgZWxzZQogICAgICAgICAgICAgICB0aGlzLT50aGVfZmlyc3QgPSBsaXN0Lmxhc3QoKS0+ bmV4dCgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGxhc3QoKSA9PSBsaXN0Lmxh c3QoKSkKICAgICAgICAgICAgdGhpcy0+dGhlX2xhc3QgPSBsaXN0Lmxhc3QoKS0+cHJldigp OwogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgVCogYWZ0ZXIgPSBmaXJz dCgpOwogICAgICAgICAgICBmb3IgKDsgYWZ0ZXItPm5leHQoKSAhPSBsaXN0LmZpcnN0KCk7 IGFmdGVyID0gYWZ0ZXItPm5leHQoKSkKICAgICAgICAgICAgICA7CiAgICAgICAgICAgIGlm IChsYXN0KCkgPT0gbGlzdC5sYXN0KCkpCiAgICAgICAgICAgICAgIHRoaXMtPnRoZV9sYXN0 ID0gYWZ0ZXI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgYWZ0ZXItPm5leHQo KSA9IGxpc3QubGFzdCgpLT5uZXh0KCk7CiAgICAgICAgIH0KICAgICAgfQogICB9CiMgMjgw ICJpZGxpc3QuaCIKICAgdm9pZCBtb3ZlKHB0cmRpZmZfdCBkZWx0YSkKICAgewogICAgICBp ZiAodGhpcy0+dGhlX2ZpcnN0KQogICAgICB7CiAgICAgICAgIFQqIGVsZW07CiAgICAgICAg IElzTGlzdDxUPjo6bW92ZShkZWx0YSk7CiAgICAgICAgIGZvciAoZWxlbSA9IGxhc3QoKTsg ZWxlbTsgZWxlbSA9IHByZXYoZWxlbSkpCiAgICAgICAgICAgIGlmIChlbGVtICE9IGZpcnN0 KCkpCiAgICAgICAgICAgICAgIGVsZW0tPnByZXYoKSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+ KAogICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNoYXIqPihlbGVtLT5wcmV2 KCkpICsgZGVsdGEpOwogICAgICB9CiAgIH0KCgogICBib29sIGlzQ29uc2lzdGVudCgpIGNv bnN0CiAgIHsKICAgICAgZm9yIChUICogaXQgPSBmaXJzdCgpOyBpdDsgaXQgPSBuZXh0KGl0 KSkKICAgICAgewogICAgICAgICBpZiAoaXQgIT0gZmlyc3QoKSAmJiBpdC0+cHJldigpLT5u ZXh0KCkgIT0gaXQpCiAgICAgICAgICAgIHJldHVybiBtc2dpbmNvbnNpc3RlbnQoIklkTGlz dCIsICJpZGxpc3QuaCIsIDI5OSk7CgogICAgICAgICBpZiAoaXQgIT0gbGFzdCgpICYmIGl0 LT5uZXh0KCktPnByZXYoKSAhPSBpdCkKICAgICAgICAgICAgcmV0dXJuIG1zZ2luY29uc2lz dGVudCgiSWRMaXN0IiwgImlkbGlzdC5oIiwgMzAyKTsKICAgICAgfQogICAgICByZXR1cm4g SXNMaXN0PFQ+Ojppc0NvbnNpc3RlbnQoKTsKICAgfQojIDMxNSAiaWRsaXN0LmgiCiAgIElk TGlzdChUKiBwZmlyc3QgPSAwLCBUKiBwbGFzdCA9IDApCiAgICAgIDogSXNMaXN0PFQ+KHBm aXJzdCwgcGxhc3QpCiAgIHt9CgoKfTsKCn0KIyAzNCAic3ZzZXQuaCIgMgojIDEgImRhdGFr ZXkuaCIgMQojIDM1ICJzdnNldC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKdHlwZWRlZiBE YXRhQXJyYXkgPCBTVmVjdG9yOjpFbGVtZW50ID4gU1ZTZXRCYXNlOwojIDY5ICJzdnNldC5o IgpjbGFzcyBTVlNldCA6IHByb3RlY3RlZCBTVlNldEJhc2UKewpwcml2YXRlOgojIDkwICJz dnNldC5oIgogICBjbGFzcyBETFBTViA6IHB1YmxpYyBTVmVjdG9yCiAgIHsKICAgcHJpdmF0 ZToKICAgICAgRExQU1YgKnRoZW5leHQ7CiAgICAgIERMUFNWICp0aGVwcmV2OwoKICAgcHVi bGljOgoKICAgICAgRExQU1YqJiBuZXh0KCkKICAgICAgewogICAgICAgICByZXR1cm4gdGhl bmV4dDsKICAgICAgfQoKICAgICAgRExQU1YqY29uc3QmIG5leHQoKSBjb25zdAogICAgICB7 CiAgICAgICAgIHJldHVybiB0aGVuZXh0OwogICAgICB9CgogICAgICBETFBTVipjb25zdCYg cHJldigpIGNvbnN0CiAgICAgIHsKICAgICAgICAgcmV0dXJuIHRoZXByZXY7CiAgICAgIH0K CiAgICAgIERMUFNWKiYgcHJldigpCiAgICAgIHsKICAgICAgICAgcmV0dXJuIHRoZXByZXY7 CiAgICAgIH0KCiAgICAgIFNWZWN0b3ImIHN2ZWN0b3IoKQogICAgICB7CiAgICAgICAgIHJl dHVybiAqdGhpczsKICAgICAgfQoKICAgICAgRExQU1YoKSA6IFNWZWN0b3IoKQogICAgICB7 fQoKICAgICAgRExQU1YoY29uc3QgRExQU1YmIGNvcHkpIDogU1ZlY3Rvcihjb3B5KQogICAg ICB7fQogICB9OwogICBEYXRhU2V0IDwgRExQU1YgPiBzZXQ7CiAgIElkTGlzdCA8IERMUFNW ID4gbGlzdDsKCgogICB2b2lkIGVuc3VyZVBTVmVjKGludCBuKQogICB7CiAgICAgIGlmIChu dW0oKSArIG4gPiBtYXgoKSkKICAgICAgewogICAgICAgICAKIyAxMzcgInN2c2V0LmgiIDMg NAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTM3ICJzdnNldC5oIgogICAg ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgICAgcmVNYXgoaW50KGZhY3RvciptYXgo KSkgKyA4ICsgbik7CiAgICAgIH0KICAgfQoKCiAgIHZvaWQgZW5zdXJlTWVtKGludCBuKTsK CgpwdWJsaWM6CiMgMTU1ICJzdnNldC5oIgogICBSZWFsIGZhY3RvcjsKCgoKCgoKICAgUmVh bCYgbWVtRmFjdG9yOwojIDE3MyAic3ZzZXQuaCIKICAgdm9pZCBhZGQoY29uc3QgU1ZlY3Rv ciYgc3ZlYykKICAgewogICAgICBlbnN1cmVQU1ZlYygxKTsKICAgICAgU1ZlY3RvciogbmV3 X3N2ZWMgPSBjcmVhdGUoc3ZlYy5zaXplKCkpOwogICAgICAqbmV3X3N2ZWMgPSBzdmVjOwog ICB9CiMgMTg4ICJzdnNldC5oIgogICB2b2lkIGFkZChEYXRhS2V5JiBua2V5LCBjb25zdCBT VmVjdG9yJiBzdmVjKQogICB7CiAgICAgIGVuc3VyZVBTVmVjKDEpOwogICAgICBTVmVjdG9y KiBuZXdfc3ZlYyA9IGNyZWF0ZShua2V5LCBzdmVjLnNpemUoKSk7CiAgICAgICpuZXdfc3Zl YyA9IHN2ZWM7CiAgIH0KCgoKCiAgIHZvaWQgYWRkKGNvbnN0IFNWZWN0b3Igc3ZlY1tdLCBp bnQgbik7CiMgMjA3ICJzdnNldC5oIgogICB2b2lkIGFkZChEYXRhS2V5IG5rZXlbXSwgY29u c3QgU1ZlY3RvciBzdmVjW10sIGludCBuKTsKCgogICB2b2lkIGFkZChjb25zdCBTVlNldCYg cHNldCk7CiMgMjE5ICJzdnNldC5oIgogICB2b2lkIGFkZChEYXRhS2V5IG5rZXlbXSwgY29u c3QgU1ZTZXQmIHBzZXQpOwoKCgoKICAgU1ZlY3RvciogY3JlYXRlKGludCBpZHhtYXggPSAt MSk7CgoKCgoKCiAgIFNWZWN0b3IqIGNyZWF0ZShEYXRhS2V5JiBua2V5LCBpbnQgaWR4bWF4 ID0gLTEpOwoKCgoKICAgdm9pZCB4dGVuZChTVmVjdG9yJiBzdmVjLCBpbnQgbmV3bWF4KTsK CgoKCgoKCiAgIHZvaWQgYWRkMihTVmVjdG9yICZzdmVjLCBpbnQgaWR4LCBSZWFsIHZhbCk7 CgoKCgoKCgogICB2b2lkIGFkZDIoU1ZlY3RvciAmc3ZlYywgaW50IG4sIGNvbnN0IGludCBp ZHhbXSwgY29uc3QgUmVhbCB2YWxbXSk7CgoKCgoKCgogICB2b2lkIHJlbW92ZShEYXRhS2V5 IHJlbW92ZWtleSk7CgoKCiAgIHZvaWQgcmVtb3ZlKGludCByZW1vdmVudW0pCiAgIHsKICAg ICAgcmVtb3ZlKGtleShyZW1vdmVudW0pKTsKICAgfQoKCgogICB2b2lkIHJlbW92ZShTVmVj dG9yICpzdmVjKQogICB7CiAgICAgIHJlbW92ZShrZXkoc3ZlYykpOwogICB9CiMgMjg0ICJz dnNldC5oIgogICB2b2lkIHJlbW92ZShpbnQgcGVybVtdKTsKCgoKCgogICB2b2lkIHJlbW92 ZShEYXRhS2V5IGtleXNbXSwgaW50IG4pCiAgIHsKICAgICAgRGF0YUFycmF5IDwgaW50ID4g cGVybShudW0oKSk7CiAgICAgIHJlbW92ZShrZXlzLCBuLCBwZXJtLmdldF9wdHIoKSk7CiAg IH0KCgoKCgogICB2b2lkIHJlbW92ZShpbnQgbnVtc1tdLCBpbnQgbikKICAgewogICAgICBE YXRhQXJyYXkgPCBpbnQgPiBwZXJtKG51bSgpKTsKICAgICAgcmVtb3ZlKG51bXMsIG4sIHBl cm0uZ2V0X3B0cigpKTsKICAgfQoKCiAgIHZvaWQgcmVtb3ZlKERhdGFLZXkga2V5c1tdLCBp bnQgbiwgaW50KiBwZXJtKTsKIyAzMTcgInN2c2V0LmgiCiAgIHZvaWQgcmVtb3ZlKGludCBu dW1zW10sIGludCBuLCBpbnQqIHBlcm0pOwoKCiAgIHZvaWQgY2xlYXIoKQogICB7CiAgICAg IERhdGFBcnJheSA8IFNWZWN0b3I6OkVsZW1lbnQgPiA6OmNsZWFyKCk7CiAgICAgIERhdGFB cnJheSA8IFNWZWN0b3I6OkVsZW1lbnQgPiA6OnJlTWF4KDEwMDAwKTsKICAgICAgc2V0LmNs ZWFyKCk7CiAgICAgIGxpc3QuY2xlYXIoKTsKICAgfQoKCgoKCgogICBTVmVjdG9yJiBvcGVy YXRvcltdKGludCBuKQogICB7CiAgICAgIHJldHVybiBzZXRbbl07CiAgIH0KCgogICBjb25z dCBTVmVjdG9yJiBvcGVyYXRvcltdKGludCBuKSBjb25zdAogICB7CiAgICAgIHJldHVybiBz ZXRbbl07CiAgIH0KCgogICBTVmVjdG9yJiBvcGVyYXRvcltdKGNvbnN0IERhdGFLZXkmIGsp CiAgIHsKICAgICAgcmV0dXJuIHNldFtrXTsKICAgfQoKCiAgIGNvbnN0IFNWZWN0b3ImIG9w ZXJhdG9yW10oY29uc3QgRGF0YUtleSYgaykgY29uc3QKICAgewogICAgICByZXR1cm4gc2V0 W2tdOwogICB9CgoKCgoKCiAgIGludCBudW0oKSBjb25zdAogICB7CiAgICAgIHJldHVybiBz ZXQubnVtKCk7CiAgIH0KCgogICBpbnQgbWF4KCkgY29uc3QKICAgewogICAgICByZXR1cm4g c2V0Lm1heCgpOwogICB9CgoKICAgRGF0YUtleSBrZXkoaW50IG4pIGNvbnN0CiAgIHsKICAg ICAgcmV0dXJuIHNldC5rZXkobik7CiAgIH0KCgogICBEYXRhS2V5IGtleShjb25zdCBTVmVj dG9yKiBzdmVjKSBjb25zdAogICB7CiAgICAgIHJldHVybiBzZXQua2V5KHN0YXRpY19jYXN0 PGNvbnN0IERMUFNWKj4oc3ZlYykpOwogICB9CgoKICAgaW50IG51bWJlcihjb25zdCBEYXRh S2V5JiBrKSBjb25zdAogICB7CiAgICAgIHJldHVybiBzZXQubnVtYmVyKGspOwogICB9CgoK ICAgaW50IG51bWJlcihjb25zdCBTVmVjdG9yKiBzdmVjKSBjb25zdAogICB7CiAgICAgIHJl dHVybiBzZXQubnVtYmVyKHN0YXRpY19jYXN0PGNvbnN0IERMUFNWKj4oc3ZlYykpOwogICB9 CgoKICAgaW50IGhhcyhjb25zdCBEYXRhS2V5JiBrKSBjb25zdAogICB7CiAgICAgIHJldHVy biBzZXQuaGFzKGspOwogICB9CgoKICAgaW50IGhhcyhpbnQgbikgY29uc3QKICAgewogICAg ICByZXR1cm4gc2V0LmhhcyhuKTsKICAgfQoKCiAgIGludCBoYXMoY29uc3QgU1ZlY3Rvciog c3ZlYykgY29uc3QKICAgewogICAgICByZXR1cm4gc2V0LmhhcyhzdGF0aWNfY2FzdDxjb25z dCBETFBTVio+KHN2ZWMpKTsKICAgfQoKCgoKCiAgIGludCBtZW1TaXplKCkgY29uc3QKICAg ewogICAgICByZXR1cm4gRGF0YUFycmF5IDwgU1ZlY3Rvcjo6RWxlbWVudCA+IDo6c2l6ZSgp OwogICB9CgoKICAgaW50IG1lbU1heCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIERhdGFB cnJheSA8IFNWZWN0b3I6OkVsZW1lbnQgPiA6Om1heCgpOwogICB9CgoKICAgdm9pZCBtZW1S ZW1heChpbnQgbmV3bWF4KTsKCgogICB2b2lkIG1lbVBhY2soKTsKCgoKCgoKICAgdm9pZCBy ZU1heChpbnQgbmV3bWF4ID0gMCk7CgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdDsK CgogICBTVlNldCYgb3BlcmF0b3I9KGNvbnN0IFNWU2V0JiByaHMpOwoKCiAgIFNWU2V0KGNv bnN0IFNWU2V0JiBvbGQpOwoKCiAgIFNWU2V0KGludCBwbWF4ID0gLTEsCiAgICAgICAgIGlu dCBwbWVtbWF4ID0gLTEsCiAgICAgICAgIFJlYWwgcGZhYyA9IDEuMSwKICAgICAgICAgUmVh bCBwbWVtRmFjID0gMS4yKQogICAgICA6IERhdGFBcnJheSA8IFNWZWN0b3I6OkVsZW1lbnQg PgogICAgICAgICAoMCwgKHBtZW1tYXggPiAwKSA/IHBtZW1tYXggOiA4ICogKChwbWF4ID4g MCkgPyBwbWF4IDogOCksIHBtZW1GYWMpCiAgICAgICAgICwgc2V0ICgocG1heCA+IDApID8g cG1heCA6IDgpCiAgICAgICAgICwgZmFjdG9yIChwZmFjKQogICAgICAgICAsIG1lbUZhY3Rv ciAoRGF0YUFycmF5IDwgU1ZlY3Rvcjo6RWxlbWVudCA+IDo6bWVtRmFjdG9yKQogICB7IH0K Cn07Cgp9CiMgMzUgInNweGxwLmgiIDIKIyAxICJkYXRhYXJyYXkuaCIgMQojIDM2ICJzcHhs cC5oIiAyCiMgMSAibHByb3cuaCIgMQojIDI0ICJscHJvdy5oIgojZGVmaW5lIF9MUFJPV19I XyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1 ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVm IF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5l IF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0 PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0 KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNz ZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9J RF9DQVNUICgwKSkKIyAyNyAibHByb3cuaCIgMgoKIyAxICJzcHhkZWZpbmVzLmgiIDEKIyAy OSAibHByb3cuaCIgMgojIDEgImRzdmVjdG9yLmgiIDEKIyAyNCAiZHN2ZWN0b3IuaCIKI2Rl ZmluZSBfRFNWRUNUT1JfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQK IyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5k ZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3Bl cnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURf Q0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMg NAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAi L3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51 bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcgImRzdmVjdG9yLmgiIDIKCiMgMSAi c3B4ZGVmaW5lcy5oIiAxCiMgMjkgImRzdmVjdG9yLmgiIDIKIyAxICJzdmVjdG9yLmgiIDEK IyAzMCAiZHN2ZWN0b3IuaCIgMgojIDEgInNzdmVjdG9yLmgiIDEKIyAyNSAic3N2ZWN0b3Iu aCIKI2RlZmluZSBfU1NWRUNUT1JfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRf SAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNz ZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJU X1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkK IyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9y KGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjggInNzdmVjdG9yLmgiIDIK CiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMzAgInNzdmVjdG9yLmgiIDIKIyAxICJkdmVjdG9y LmgiIDEKIyAzMSAic3N2ZWN0b3IuaCIgMgojIDEgInN2ZWN0b3IuaCIgMQojIDMyICJzc3Zl Y3Rvci5oIiAyCiMgMSAiZGlkeHNldC5oIiAxCiMgMjQgImRpZHhzZXQuaCIKI2RlZmluZSBf RElEWFNFVF9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIv dXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3Nl cnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoK CgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0 YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZp bmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2lu Y2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19B U1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyNyAiZGlkeHNldC5oIiAyCgojIDEgImlkeHNldC5o IiAxCiMgMjQgImlkeHNldC5oIgojZGVmaW5lIF9JRFhTRVRfSF8gCgojIDEgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQK I3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NB U1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgoj ZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRf Vk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmlu ZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcg ImlkeHNldC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA1OCAiaWR4c2V0LmgiCmNsYXNz IElkeFNldAp7CnByb3RlY3RlZDoKICAgaW50IG51bTsKICAgaW50IGxlbjsKICAgaW50KiBp ZHg7CgpwdWJsaWM6CgogICBpbnQgaW5kZXgoaW50IG4pIGNvbnN0CiAgIHsKICAgICAgCiMg NjkgImlkeHNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDY5ICJp ZHhzZXQuaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1 cm4gaWR4W25dOwogICB9CgogICBpbnQgc2l6ZSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJu IG51bTsKICAgfQoKICAgaW50IG1heCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGxlbjsK ICAgfQoKCiAgIGludCBkaW0oKSBjb25zdDsKCgoKCgoKICAgaW50IG51bWJlcihpbnQgaSkg Y29uc3Q7CgoKICAgdm9pZCBhZGQoaW50IG4pCiAgIHsKICAgICAgCiMgOTYgImlkeHNldC5o IiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDk2ICJpZHhzZXQuaCIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICBudW0gKz0g bjsKICAgfQoKCiAgIHZvaWQgYWRkKGNvbnN0IElkeFNldCYgc2V0KQogICB7CiAgICAgIGFk ZChzZXQuc2l6ZSgpLCBzZXQuaWR4KTsKICAgfQoKCiAgIHZvaWQgYWRkKGludCBuLCBjb25z dCBpbnQgaVtdKTsKCgogICB2b2lkIGFkZElkeChpbnQgaSkKICAgewogICAgICAKIyAxMTIg ImlkeHNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDExMiAiaWR4 c2V0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgaWR4W251bSsrXSA9 IGk7CiAgIH0KCiAgIHZvaWQgcmVtb3ZlKGludCBuLCBpbnQgbSk7CgoKICAgdm9pZCByZW1v dmUoaW50IG4pCiAgIHsKCiAgICAgIGlmIChuIDwgc2l6ZSgpICYmIG4gPj0gMCkKICAgICAg ICAgaWR4W25dID0gaWR4Wy0tbnVtXTsKICAgfQoKCiAgIHZvaWQgY2xlYXIoKQogICB7CiAg ICAgIG51bSA9IDA7CiAgIH0KCgoKCgoKCiAgIElkeFNldChpbnQgbiwgaW50IGltZW1bXSwg aW50IGwgPSAwKQogICAgICA6IG51bShsKSwgbGVuKG4pLCBpZHgoaW1lbSkKICAgewogICAg ICAKIyAxNDEgImlkeHNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQoj IDE0MSAiaWR4c2V0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgfQoKCgoK CgogICBJZHhTZXQoKQogICAgICA6IG51bSgwKSwgbGVuKDApLCBpZHgoMCkKICAgewogICAg ICAKIyAxNTIgImlkeHNldC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQoj IDE1MiAiaWR4c2V0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgfQoKCgoK CgogICBJZHhTZXQmIG9wZXJhdG9yPShjb25zdCBJZHhTZXQmIHNldCk7CgoKICAgYm9vbCBp c0NvbnNpc3RlbnQoKSBjb25zdDsKCnByaXZhdGU6CgogICBJZHhTZXQoY29uc3QgSWR4U2V0 Jik7Cn07Cgp9CiMgMjkgImRpZHhzZXQuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNDYg ImRpZHhzZXQuaCIKY2xhc3MgRElkeFNldCA6IHB1YmxpYyBJZHhTZXQKewpwdWJsaWM6Cgog ICB2b2lkIGFkZChpbnQgbikKICAgewogICAgICBpZiAobWF4KCkgLSBzaXplKCkgPCBuKQog ICAgICAgICBzZXRNYXgoc2l6ZSgpICsgbik7CiAgICAgIElkeFNldDo6YWRkKG4pOwogICB9 CgoKICAgdm9pZCBhZGQoY29uc3QgSWR4U2V0JiBzdikKICAgewogICAgICBpbnQgbiA9IHN2 LnNpemUoKTsKICAgICAgaWYgKG1heCgpIC0gc2l6ZSgpIDwgbikKICAgICAgICAgc2V0TWF4 KHNpemUoKSArIG4pOwogICAgICBJZHhTZXQ6OmFkZChzdik7CiAgIH0KCgogICB2b2lkIGFk ZChpbnQgbiwgY29uc3QgaW50ICppKQogICB7CiAgICAgIGlmIChtYXgoKSAtIHNpemUoKSA8 IG4pCiAgICAgICAgIHNldE1heChzaXplKCkgKyBuKTsKICAgICAgSWR4U2V0OjphZGQobiwg aSk7CiAgIH0KCgogICB2b2lkIGFkZElkeChpbnQgaSkKICAgewogICAgICBpZiAobWF4KCkg PD0gc2l6ZSgpKQogICAgICAgICBzZXRNYXgoc2l6ZSgpICsgMSk7CiAgICAgIElkeFNldDo6 YWRkSWR4KGkpOwogICB9CgoKCgoKCiAgIHZvaWQgc2V0TWF4KGludCBuZXdtYXggPSAxKTsK CgogICBleHBsaWNpdCBESWR4U2V0KGludCBuID0gOCk7CgoKICAgZXhwbGljaXQgRElkeFNl dChjb25zdCBJZHhTZXQmIG9sZCk7CgoKICAgRElkeFNldChjb25zdCBESWR4U2V0JiBvbGQp OwoKCiAgIERJZHhTZXQmIG9wZXJhdG9yPShjb25zdCBJZHhTZXQmIHN2KQogICB7CiAgICAg IGlmICh0aGlzICE9ICZzdikKICAgICAgewogICAgICAgICBzZXRNYXgoIHN2LnNpemUoKSAp OwogICAgICAgICBJZHhTZXQ6Om9wZXJhdG9yPShzdik7CiAgICAgIH0KICAgICAgcmV0dXJu ICp0aGlzOwogICB9CiAgIERJZHhTZXQmIG9wZXJhdG9yPShjb25zdCBESWR4U2V0JiBzdikK ICAgewogICAgICBpZiAodGhpcyAhPSAmc3YpCiAgICAgIHsKICAgICAgICAgc2V0TWF4KCBz di5zaXplKCkgKTsKICAgICAgICAgSWR4U2V0OjpvcGVyYXRvcj0oc3YpOwogICAgICB9CiAg ICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgfkRJZHhTZXQoKTsKfTsKCn0KIyAzMyAic3N2 ZWN0b3IuaCIgMgojIDEgInNweGFsbG9jLmgiIDEKIyAzNCAic3N2ZWN0b3IuaCIgMgoKbmFt ZXNwYWNlIHNvcGxleAp7CmNsYXNzIFNWU2V0OwojIDUwICJzc3ZlY3Rvci5oIgpjbGFzcyBT U1ZlY3RvciA6IHByb3RlY3RlZCBEVmVjdG9yLCBwcm90ZWN0ZWQgSWR4U2V0CnsKcHJpdmF0 ZToKICAgYm9vbCBzZXR1cFN0YXR1czsKCiAgIGZyaWVuZCBjbGFzcyBEVmVjdG9yOwogICBm cmllbmQgY2xhc3MgVmVjdG9yOwogICBmcmllbmQgY2xhc3MgRFNWZWN0b3I7CgogICB2b2lk IHNldE1heChpbnQgbmV3bWF4KTsKCnB1YmxpYzoKCgogICBSZWFsIGVwc2lsb247CiMgODUg InNzdmVjdG9yLmgiCiAgIFJlYWwqIGdldF9wdHIoKQogICB7CiAgICAgIHJldHVybiBEVmVj dG9yOjpnZXRfcHRyKCk7CiAgIH0KCgogICBib29sIGlzU2V0dXAoKSBjb25zdAogICB7CiAg ICAgIHJldHVybiBzZXR1cFN0YXR1czsKICAgfQoKCiAgIHZvaWQgdW5TZXR1cCgpCiAgIHsK ICAgICAgc2V0dXBTdGF0dXMgPSBmYWxzZTsKICAgfQoKCgoKCiAgIHZvaWQgc2V0dXAoKTsK CgogICB2b2lkIGZvcmNlU2V0dXAoKQogICB7CiAgICAgIHNldHVwU3RhdHVzID0gdHJ1ZTsK ICAgfQoKCgoKCgogICBpbnQgaW5kZXgoaW50IG4pIGNvbnN0CiAgIHsKICAgICAgCiMgMTIx ICJzc3ZlY3Rvci5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDEyMSAi c3N2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIElkeFNl dDo6aW5kZXgobik7CiAgIH0KCgogICBSZWFsIHZhbHVlKGludCBuKSBjb25zdAogICB7CiAg ICAgIAojIDEyOCAic3N2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgw KSkKIyAxMjggInNzdmVjdG9yLmgiCiAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIAoj IDEyOSAic3N2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAx MjkgInNzdmVjdG9yLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg ICAgcmV0dXJuIHZhbFtpZHhbbl1dOwogICB9CgoKICAgaW50IG51bWJlcihpbnQgaSkgY29u c3QKICAgewogICAgICAKIyAxMzYgInNzdmVjdG9yLmgiIDMgNAogICAgIChzdGF0aWNfY2Fz dDx2b2lkPiAoMCkpCiMgMTM2ICJzc3ZlY3Rvci5oIgogICAgICAgICAgICAgICAgICAgICAg OwogICAgICByZXR1cm4gSWR4U2V0OjpudW1iZXIoaSk7CiAgIH0KCgogICBpbnQgc2l6ZSgp IGNvbnN0CiAgIHsKICAgICAgCiMgMTQzICJzc3ZlY3Rvci5oIiAzIDQKICAgICAoc3RhdGlj X2Nhc3Q8dm9pZD4gKDApKQojIDE0MyAic3N2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAg ICAgIDsKICAgICAgcmV0dXJuIElkeFNldDo6c2l6ZSgpOwogICB9CgoKCgogICB2b2lkIGFk ZChpbnQgaSwgUmVhbCB4KQogICB7CiAgICAgIAojIDE1MiAic3N2ZWN0b3IuaCIgMyA0CiAg ICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxNTIgInNzdmVjdG9yLmgiCiAgICAgICAg ICAgICAgICAgICAgICAgIDsKICAgICAgCiMgMTUzICJzc3ZlY3Rvci5oIiAzIDQKICAgICAo c3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDE1MyAic3N2ZWN0b3IuaCIKICAgICAgICAgICAg ICAgICAgICAgICAgICA7CiAgICAgIGFkZElkeChpKTsKICAgICAgdmFsW2ldID0geDsKICAg fQoKCiAgIHZvaWQgc2V0VmFsdWUoaW50IGksIFJlYWwgeCk7CgoKICAgdm9pZCBjbGVhcklk eChpbnQgaSkKICAgewogICAgICBpZiAoaXNTZXR1cCgpKQogICAgICB7CiAgICAgICAgIGlu dCBuID0gbnVtYmVyKGkpOwogICAgICAgICBpZiAobiA+PSAwKQogICAgICAgICAgICByZW1v dmUobik7CiAgICAgIH0KICAgICAgdmFsW2ldID0gMDsKICAgfQoKCiAgIHZvaWQgY2xlYXJO dW0oaW50IG4pCiAgIHsKICAgICAgCiMgMTc2ICJzc3ZlY3Rvci5oIiAzIDQKICAgICAoc3Rh dGljX2Nhc3Q8dm9pZD4gKDApKQojIDE3NiAic3N2ZWN0b3IuaCIKICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgCiMgMTc3ICJzc3ZlY3Rvci5oIiAzIDQKICAgICAoc3RhdGljX2Nh c3Q8dm9pZD4gKDApKQojIDE3NyAic3N2ZWN0b3IuaCIKICAgICAgICAgICAgICAgICAgICAg ICAgICA7CiAgICAgIHZhbFtpbmRleChuKV0gPSAwOwogICAgICByZW1vdmUobik7CiAgIH0K CgoKCgoKICAgUmVhbCBvcGVyYXRvcltdKGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVy biB2YWxbaV07CiAgIH0KCgogICBjb25zdCBpbnQqIGluZGV4TWVtKCkgY29uc3QKICAgewog ICAgICByZXR1cm4gaWR4OwogICB9CgoKICAgY29uc3QgUmVhbCogdmFsdWVzKCkgY29uc3QK ICAgewogICAgICByZXR1cm4gdmFsOwogICB9CgoKICAgY29uc3QgSWR4U2V0JiBpbmRpY2Vz KCkgY29uc3QKICAgewogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgogICBpbnQqIGFsdElu ZGV4TWVtKCkKICAgewogICAgICB1blNldHVwKCk7CiAgICAgIHJldHVybiBpZHg7CiAgIH0K CgogICBSZWFsKiBhbHRWYWx1ZXMoKQogICB7CiAgICAgIHVuU2V0dXAoKTsKICAgICAgcmV0 dXJuIHZhbDsKICAgfQoKCiAgIElkeFNldCYgYWx0SW5kaWNlcygpCiAgIHsKICAgICAgdW5T ZXR1cCgpOwogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgoKCgoKICAgU1NWZWN0b3ImIG9w ZXJhdG9yKz0oY29uc3QgVmVjdG9yJiB2ZWMpOwoKICAgU1NWZWN0b3ImIG9wZXJhdG9yKz0o Y29uc3QgU1ZlY3RvciYgdmVjKTsKCiAgIFNTVmVjdG9yJiBvcGVyYXRvcis9KGNvbnN0IFNT VmVjdG9yJiB2ZWMpOwoKCiAgIFNTVmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFZlY3RvciYg dmVjKTsKCiAgIFNTVmVjdG9yJiBvcGVyYXRvci09KGNvbnN0IFNWZWN0b3ImIHZlYyk7Cgog ICBTU1ZlY3RvciYgb3BlcmF0b3ItPShjb25zdCBTU1ZlY3RvciYgdmVjKTsKCgogICBTU1Zl Y3RvciYgb3BlcmF0b3IqPShSZWFsIHgpOwoKCiAgIFNTVmVjdG9yJiBtdWx0QWRkKFJlYWwg eCwgY29uc3QgU1NWZWN0b3ImIHZlYyk7CgogICBTU1ZlY3RvciYgbXVsdEFkZChSZWFsIHgs IGNvbnN0IFNWZWN0b3ImIHZlYyk7CgogICBTU1ZlY3RvciYgbXVsdEFkZChSZWFsIHgsIGNv bnN0IFZlY3RvciYgdmVjKTsKCgogICBTU1ZlY3RvciYgYXNzaWduMnByb2R1Y3QoY29uc3Qg U1NWZWN0b3ImIHgsIGNvbnN0IFNWU2V0JiBBKTsKCiAgIFNTVmVjdG9yJiBhc3NpZ24ycHJv ZHVjdDRzZXR1cChjb25zdCBTVlNldCYgQSwgY29uc3QgU1NWZWN0b3ImIHgpOwoKICAgU1NW ZWN0b3ImIGFzc2lnbjJwcm9kdWN0QW5kU2V0dXAoY29uc3QgU1ZTZXQmIEEsIFNTVmVjdG9y JiB4KTsKCgogICBSZWFsIG1heEFicygpIGNvbnN0OwoKICAgUmVhbCBsZW5ndGgoKSBjb25z dDsKCiAgIFJlYWwgbGVuZ3RoMigpIGNvbnN0OwoKCgoKCgogICBpbnQgZGltKCkgY29uc3QK ICAgewogICAgICByZXR1cm4gZGltZW47CiAgIH0KCgogICB2b2lkIHJlRGltIChpbnQgbmV3 ZGltKTsKCgogICB2b2lkIHNldFNpemUoaW50IG4pCiAgIHsKICAgICAgCiMgMjg5ICJzc3Zl Y3Rvci5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDI4OSAic3N2ZWN0 b3IuaCIKICAgICAgICAgICAgICAgICAgIDsKICAgICAgCiMgMjkwICJzc3ZlY3Rvci5oIiAz IDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDI5MCAic3N2ZWN0b3IuaCIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgdW5TZXR1cCgpOwogICAgICBu dW0gPSBuOwogICB9CgoKICAgdm9pZCByZU1lbShpbnQgbmV3c2l6ZSk7CgoKICAgdm9pZCBj bGVhciAoKTsKCgogICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0OwoKCgoKCgogICBleHBs aWNpdCBTU1ZlY3RvcihpbnQgcF9kaW0sIFJlYWwgcF9lcHMgPSBQYXJhbTo6ZXBzaWxvbigp KQogICAgICA6IERWZWN0b3IgKHBfZGltKQogICAgICAsIElkeFNldCAoKQogICAgICAsIHNl dHVwU3RhdHVzKHRydWUpCiAgICAgICwgZXBzaWxvbiAocF9lcHMpCiAgIHsKICAgICAgbGVu ID0gKHBfZGltIDwgMSkgPyAxIDogcF9kaW07CiAgICAgIHNweF9hbGxvYyhpZHgsIGxlbik7 CgogICAgICBWZWN0b3I6OmNsZWFyKCk7CiAgIH0KCgogICBTU1ZlY3Rvcihjb25zdCBTU1Zl Y3RvciYgdmVjKQogICAgICA6IERWZWN0b3IgKHZlYykKICAgICAgLCBJZHhTZXQgKCkKICAg ICAgLCBzZXR1cFN0YXR1cyh2ZWMuc2V0dXBTdGF0dXMpCiAgICAgICwgZXBzaWxvbiAodmVj LmVwc2lsb24pCiAgIHsKICAgICAgbGVuID0gKHZlYy5kaW0oKSA8IDEpID8gMSA6IHZlYy5k aW0oKTsKICAgICAgc3B4X2FsbG9jKGlkeCwgbGVuKTsKICAgICAgSWR4U2V0OjpvcGVyYXRv cj0gKCB2ZWMgKTsKICAgfQoKCiAgIGV4cGxpY2l0IFNTVmVjdG9yKGNvbnN0IFZlY3RvciYg dmVjLCBSZWFsIGVwcyA9IFBhcmFtOjplcHNpbG9uKCkpCiAgICAgIDogRFZlY3RvciAodmVj KQogICAgICAsIElkeFNldCAoKQogICAgICAsIHNldHVwU3RhdHVzKGZhbHNlKQogICAgICAs IGVwc2lsb24gKGVwcykKICAgewogICAgICBsZW4gPSAodmVjLmRpbSgpIDwgMSkgPyAxIDog dmVjLmRpbSgpOwogICAgICBzcHhfYWxsb2MoaWR4LCBsZW4pOwogICB9CgoKICAgdm9pZCBz ZXR1cF9hbmRfYXNzaWduKFNTVmVjdG9yJiByaHMpOwoKCiAgIFNTVmVjdG9yJiBhc3NpZ24o Y29uc3QgU1ZlY3RvciYgcmhzKTsKCgogICBTU1ZlY3RvciYgb3BlcmF0b3I9KGNvbnN0IFNT VmVjdG9yJiByaHMpOwoKICAgU1NWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBTVmVjdG9yJiBy aHMpOwoKICAgU1NWZWN0b3ImIG9wZXJhdG9yPShjb25zdCBWZWN0b3ImIHJocykKICAgewog ICAgICB1blNldHVwKCk7CiAgICAgIFZlY3Rvcjo6b3BlcmF0b3I9KHJocyk7CiAgICAgIHJl dHVybiAqdGhpczsKICAgfQoKICAgflNTVmVjdG9yKCkKICAgewogICAgICBpZiAoIGlkeCAp CiAgICAgICAgIHNweF9mcmVlKGlkeCk7CiAgIH0KCgoKcHJpdmF0ZToKICAgU1NWZWN0b3Im IGFzc2lnbjJwcm9kdWN0MShjb25zdCBTVlNldCYgQSwgY29uc3QgU1NWZWN0b3ImIHgpOwog ICBTU1ZlY3RvciYgYXNzaWduMnByb2R1Y3RTaG9ydChjb25zdCBTVlNldCYgQSwgY29uc3Qg U1NWZWN0b3ImIHgpOwogICBTU1ZlY3RvciYgYXNzaWduMnByb2R1Y3RGdWxsKGNvbnN0IFNW U2V0JiBBLCBjb25zdCBTU1ZlY3RvciYgeCk7Cn07CgoKCgppbmxpbmUgVmVjdG9yJiBWZWN0 b3I6Om11bHRBZGQoUmVhbCB4LCBjb25zdCBTU1ZlY3RvciYgc3ZlYykKewogICAKIyAzODEg InNzdmVjdG9yLmgiIDMgNAogIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMzgxICJzc3Zl Y3Rvci5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgIGlmIChzdmVjLmlz U2V0dXAoKSkKICAgewogICAgICBjb25zdCBpbnQqIGlkeCA9IHN2ZWMuaW5kZXhNZW0oKTsK CiAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzdmVjLnNpemUoKTsgaSsrKQogICAgICAgICB2 YWxbaWR4W2ldXSArPSB4ICogc3ZlY1tpZHhbaV1dOwogICB9CiAgIGVsc2UKICAgewogICAg ICAKIyAzOTIgInNzdmVjdG9yLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkp CiMgMzkyICJzc3ZlY3Rvci5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK CiAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBkaW0oKTsgaSsrKQogICAgICAgICB2YWxbaV0g Kz0geCAqIHN2ZWMudmFsW2ldOwogICB9CgoKICAgcmV0dXJuICp0aGlzOwp9CgppbmxpbmUg VmVjdG9yJiBWZWN0b3I6OmFzc2lnbihjb25zdCBTU1ZlY3RvciYgc3ZlYykKewogICAKIyA0 MDQgInNzdmVjdG9yLmgiIDMgNAogIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNDA0ICJz c3ZlY3Rvci5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgIGlmIChzdmVj LmlzU2V0dXAoKSkKICAgewogICAgICBjb25zdCBpbnQqIGlkeCA9IHN2ZWMuaW5kZXhNZW0o KTsKCiAgICAgIGZvcihpbnQgaSA9IHN2ZWMuc2l6ZSgpOyBpID4gMDsgaS0tKQogICAgICB7 CiAgICAgICAgIHZhbFsqaWR4XSA9IHN2ZWMudmFsWyppZHhdOwogICAgICAgICBpZHgrKzsK ICAgICAgfQogICB9CiAgIGVsc2UKICAgICAgb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxjb25z dCBWZWN0b3ImPihzdmVjKSk7CgogICByZXR1cm4gKnRoaXM7Cn0KCmlubGluZSBWZWN0b3Im IFZlY3Rvcjo6b3BlcmF0b3I9KGNvbnN0IFNTVmVjdG9yJiB2ZWMpCnsKICAgaWYgKHZlYy5p c1NldHVwKCkpCiAgIHsKICAgICAgY2xlYXIgKCk7CiAgICAgIGFzc2lnbih2ZWMpOwogICB9 CiAgIGVsc2UKICAgICAgb3BlcmF0b3I9IChzdGF0aWNfY2FzdDxjb25zdCBWZWN0b3ImPih2 ZWMpKTsKCiAgIHJldHVybiAqdGhpczsKfQoKaW5saW5lIFJlYWwgVmVjdG9yOjpvcGVyYXRv ciooY29uc3QgU1NWZWN0b3ImIHYpIGNvbnN0CnsKICAgCiMgNDM3ICJzc3ZlY3Rvci5oIiAz IDQKICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDQzNyAic3N2ZWN0b3IuaCIKICAgICAg ICAgICAgICAgICAgICAgICAgICA7CgogICBpZiAodi5pc1NldHVwKCkpCiAgIHsKICAgICAg Y29uc3QgaW50KiBpZHggPSB2LmluZGV4TWVtKCk7CiAgICAgIFJlYWwgeCA9IDA7CgogICAg ICBmb3IoaW50IGkgPSB2LnNpemUoKTsgaSA+IDA7IGktLSkKICAgICAgewogICAgICAgICB4 ICs9IHZhbFsqaWR4XSAqIHYudmFsWyppZHhdOwogICAgICAgICBpZHgrKzsKICAgICAgfQog ICAgICByZXR1cm4geDsKICAgfQogICBlbHNlCiAgICAgIHJldHVybiBvcGVyYXRvciooc3Rh dGljX2Nhc3Q8Y29uc3QgVmVjdG9yJj4odikpOwp9Cn0KIyAzMSAiZHN2ZWN0b3IuaCIgMgoK bmFtZXNwYWNlIHNvcGxleAp7CiMgNDYgImRzdmVjdG9yLmgiCmNsYXNzIERTVmVjdG9yIDog cHVibGljIFNWZWN0b3IKewogICBmcmllbmQgY2xhc3MgU0xpblNvbHZlcjsKCnByaXZhdGU6 CiAgIEVsZW1lbnQqIHRoZWVsZW07CgoKICAgdm9pZCBhbGxvY01lbShpbnQgbik7CgoKICAg dm9pZCBtYWtlTWVtKGludCBuKQogICB7CiAgICAgIGlmIChtYXgoKSAtIHNpemUoKSA8ICsr bikKICAgICAgICAgc2V0TWF4KHNpemUoKSArIG4pOwogICB9CgpwdWJsaWM6CgogICBEU1Zl Y3RvciYgb3BlcmF0b3I9KGNvbnN0IFNTVmVjdG9yJiBzdikKICAgewogICAgICBpbnQgbiA9 IHN2LnNpemUoKTsKICAgICAgY2xlYXIoKTsKICAgICAgbWFrZU1lbShuKTsKICAgICAgU1Zl Y3Rvcjo6b3BlcmF0b3I9KHN2KTsKICAgICAgcmV0dXJuICp0aGlzOwogICB9CgogICBEU1Zl Y3RvciYgb3BlcmF0b3I9KGNvbnN0IFNWZWN0b3ImIHN2KQogICB7CiAgICAgIGludCBuID0g c3Yuc2l6ZSgpOwogICAgICBjbGVhcigpOwogICAgICBtYWtlTWVtKG4pOwogICAgICBTVmVj dG9yOjpvcGVyYXRvcj0oc3YpOwogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCiAgIERTVmVj dG9yJiBvcGVyYXRvcj0oY29uc3QgRFNWZWN0b3ImIHN2KQogICB7CiAgICAgIGlmICh0aGlz ICE9ICZzdikKICAgICAgewogICAgICAgICBpbnQgbiA9IHN2LnNpemUoKTsKICAgICAgICAg Y2xlYXIoKTsKICAgICAgICAgbWFrZU1lbShuKTsKICAgICAgICAgU1ZlY3Rvcjo6b3BlcmF0 b3I9KHN2KTsKICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCiAgIERTVmVjdG9y JiBvcGVyYXRvcj0oY29uc3QgVmVjdG9yJiB2ZWMpOwoKCiAgIHZvaWQgYWRkKGNvbnN0IFNW ZWN0b3ImIHN2KQogICB7CiAgICAgIGludCBuID0gc3Yuc2l6ZSgpOwogICAgICBjbGVhcigp OwogICAgICBtYWtlTWVtKG4pOwogICAgICBTVmVjdG9yOjphZGQoc3YpOwogICB9CgoKICAg dm9pZCBhZGQoaW50IGksIFJlYWwgdikKICAgewogICAgICBtYWtlTWVtKDEpOwogICAgICBT VmVjdG9yOjphZGQoaSwgdik7CiAgIH0KCgogICB2b2lkIGFkZChpbnQgbiwgY29uc3QgaW50 IGlbXSwgY29uc3QgUmVhbCB2W10pCiAgIHsKICAgICAgbWFrZU1lbShuKTsKICAgICAgU1Zl Y3Rvcjo6YWRkKG4sIGksIHYpOwogICB9CgoKCgoKCiAgIHZvaWQgc2V0TWF4KGludCBuZXdt YXggPSAxKTsKCgogICBleHBsaWNpdCBEU1ZlY3Rvcihjb25zdCBWZWN0b3ImIHZlYyk7Cgog ICBleHBsaWNpdCBEU1ZlY3Rvcihjb25zdCBTVmVjdG9yJiBvbGQpOwoKICAgZXhwbGljaXQg RFNWZWN0b3IoY29uc3QgU1NWZWN0b3ImIG9sZCk7CgoKICAgRFNWZWN0b3IoY29uc3QgRFNW ZWN0b3ImIG9sZCk7CgoKCgoKICAgZXhwbGljaXQgRFNWZWN0b3IoaW50IG4gPSA4KTsKCgog ICB+RFNWZWN0b3IoKTsKCgogICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0Owp9Owp9CiMg MzAgImxwcm93LmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDYxICJscHJvdy5oIgpjbGFz cyBMUFJvdwp7CnByaXZhdGU6CiAgIFJlYWwgbGVmdDsKICAgUmVhbCByaWdodDsKICAgRFNW ZWN0b3IgdmVjOwoKcHVibGljOgoKCgoKICAgZW51bSBUeXBlCiAgIHsKICAgICAgTEVTU19F UVVBTCwKICAgICAgRVFVQUwsCiAgICAgIEdSRUFURVJfRVFVQUwsCiAgICAgIFJBTkdFCiAg IH07CgoKICAgVHlwZSB0eXBlKCkgY29uc3Q7CgoKICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlw ZSk7CgoKCgoKCiAgIFJlYWwgdmFsdWUoKSBjb25zdDsKCgogICBSZWFsIGxocygpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIGxlZnQ7CiAgIH0KCgogICB2b2lkIHNldExocyhSZWFsIHBf bGVmdCkKICAgewogICAgICBsZWZ0ID0gcF9sZWZ0OwogICB9CgoKICAgUmVhbCByaHMoKSBj b25zdAogICB7CiAgICAgIHJldHVybiByaWdodDsKICAgfQoKCiAgIHZvaWQgc2V0UmhzKFJl YWwgcF9yaWdodCkKICAgewogICAgICByaWdodCA9IHBfcmlnaHQ7CiAgIH0KCgogICBjb25z dCBTVmVjdG9yJiByb3dWZWN0b3IoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB2ZWM7CiAg IH0KCgogICB2b2lkIHNldFJvd1ZlY3Rvcihjb25zdCBEU1ZlY3RvciYgcF92ZWMpCiAgIHsK ICAgICAgdmVjID0gcF92ZWM7CiAgIH0KCgogICBleHBsaWNpdCBMUFJvdyhpbnQgZGVmRGlt ID0gMCkKICAgICAgOiBsZWZ0KDApLCByaWdodChpbmZpbml0eSksIHZlYyhkZWZEaW0pCiAg IHt9CgoKICAgTFBSb3coY29uc3QgTFBSb3cmIHJvdykKICAgICAgOiBsZWZ0KHJvdy5sZWZ0 KSwgcmlnaHQocm93LnJpZ2h0KSwgdmVjKHJvdy52ZWMpCiAgIHt9CgoKCiAgIExQUm93KFJl YWwgcF9saHMsIGNvbnN0IFNWZWN0b3ImIHBfcm93VmVjdG9yLCBSZWFsIHBfcmhzKQogICAg ICA6IGxlZnQocF9saHMpLCByaWdodChwX3JocyksIHZlYyhwX3Jvd1ZlY3RvcikKICAge30K CgogICBMUFJvdyhjb25zdCBTVmVjdG9yJiByb3dWZWN0b3IsIFR5cGUgdHlwZSwgUmVhbCB2 YWx1ZSk7CgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdAogICB7CiAgICAgIHJldHVy biB2ZWMuaXNDb25zaXN0ZW50KCk7CiAgIH0KfTsKCn0KIyAzNyAic3B4bHAuaCIgMgojIDEg ImxwY29sLmgiIDEKIyAyNCAibHBjb2wuaCIKI2RlZmluZSBfTFBDT0xfSF8gCgojIDEgIi91 c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o IiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9W T0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0gg MQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUw ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19B U1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQK I2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkp CiMgMjcgImxwY29sLmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMjkgImxwY29sLmgi IDIKIyAxICJkc3ZlY3Rvci5oIiAxCiMgMzAgImxwY29sLmgiIDIKCm5hbWVzcGFjZSBzb3Bs ZXgKewojIDUwICJscGNvbC5oIgpjbGFzcyBMUENvbAp7CnByaXZhdGU6CiAgIFJlYWwgdXA7 CiAgIFJlYWwgbG93OwogICBSZWFsIG9iamVjdDsKICAgRFNWZWN0b3IgdmVjOwoKcHVibGlj OgoKICAgUmVhbCBvYmooKSBjb25zdAogICB7CiAgICAgIHJldHVybiBvYmplY3Q7CiAgIH0K CiAgIHZvaWQgc2V0T2JqKFJlYWwgcF9vYmplY3QpCiAgIHsKICAgICAgb2JqZWN0ID0gcF9v YmplY3Q7CiAgIH0KCgogICBSZWFsIHVwcGVyKCkgY29uc3QKICAgewogICAgICByZXR1cm4g dXA7CiAgIH0KCiAgIHZvaWQgc2V0VXBwZXIoUmVhbCBwX3VwKQogICB7CiAgICAgIHVwID0g cF91cDsKICAgfQoKCiAgIFJlYWwgbG93ZXIoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBs b3c7CiAgIH0KCiAgIHZvaWQgc2V0TG93ZXIoUmVhbCBwX2xvdykKICAgewogICAgICBsb3cg PSBwX2xvdzsKICAgfQoKCiAgIGNvbnN0IFNWZWN0b3ImIGNvbFZlY3RvcigpIGNvbnN0CiAg IHsKICAgICAgcmV0dXJuIHZlYzsKICAgfQoKCiAgIHZvaWQgc2V0Q29sVmVjdG9yKGNvbnN0 IFNWZWN0b3ImIHBfdmVjKQogICB7CiAgICAgIHZlYyA9IHBfdmVjOwogICB9CgoKICAgTFBD b2woY29uc3QgTFBDb2wmIG9sZCkKICAgICAgOiB1cChvbGQudXApLCBsb3cob2xkLmxvdyks IG9iamVjdChvbGQub2JqZWN0KSwgdmVjKG9sZC52ZWMpCiAgIHt9CgoKCgoKICAgZXhwbGlj aXQgTFBDb2woaW50IGRlZkRpbSA9IDApCiAgICAgIDogdXAoaW5maW5pdHkpLCBsb3coMCks IG9iamVjdCgwKSwgdmVjKGRlZkRpbSkKICAge30KCgoKCgogICBMUENvbChSZWFsIHBfb2Jq LCBjb25zdCBTVmVjdG9yJiBwX3ZlY3RvciwgUmVhbCBwX3VwcGVyLCBSZWFsIHBfbG93ZXIp CiAgICAgIDogdXAocF91cHBlciksIGxvdyhwX2xvd2VyKSwgb2JqZWN0KHBfb2JqKSwgdmVj KHBfdmVjdG9yKQogICB7fQoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3QKICAgewog ICAgICByZXR1cm4gdmVjLmlzQ29uc2lzdGVudCgpOwogICB9Cn07Cn0KIyAzOCAic3B4bHAu aCIgMgojIDEgImxwcm93c2V0LmgiIDEKIyAyNCAibHByb3dzZXQuaCIKI2RlZmluZSBfTFBS T1dTRVRfSF8gCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91 c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2Vy dAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoK CiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3Rh dGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmlu ZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FT U0VSVF9WT0lEX0NBU1QgKDApKQojIDI4ICJscHJvd3NldC5oIiAyCgojIDEgInNweGRlZmlu ZXMuaCIgMQojIDMwICJscHJvd3NldC5oIiAyCiMgMSAibHByb3cuaCIgMQojIDMxICJscHJv d3NldC5oIiAyCiMgMSAiZHZlY3Rvci5oIiAxCiMgMzIgImxwcm93c2V0LmgiIDIKIyAxICJz dnNldC5oIiAxCiMgMzMgImxwcm93c2V0LmgiIDIKIyAxICJkYXRha2V5LmgiIDEKIyAzNCAi bHByb3dzZXQuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNTEgImxwcm93c2V0LmgiCmNs YXNzIExQUm93U2V0IDogcHJvdGVjdGVkIFNWU2V0CnsKcHJpdmF0ZToKICAgRFZlY3RvciBs ZWZ0OwogICBEVmVjdG9yIHJpZ2h0OwoKcHVibGljOgoKCgoKICAgaW50IG51bSgpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIFNWU2V0OjpudW0oKTsKICAgfQoKCiAgIGludCBtYXgoKSBj b25zdAogICB7CiAgICAgIHJldHVybiBTVlNldDo6bWF4KCk7CiAgIH0KCgogICBjb25zdCBW ZWN0b3ImIGxocygpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGxlZnQ7CiAgIH0KCiAgIFZl Y3RvciYgbGhzKCkKICAgewogICAgICByZXR1cm4gbGVmdDsKICAgfQoKCiAgIFJlYWwgbGhz KGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVybiBsZWZ0W2ldOwogICB9CgogICBSZWFs JiBsaHMoaW50IGkpCiAgIHsKICAgICAgcmV0dXJuIGxlZnRbaV07CiAgIH0KCgogICBSZWFs IGxocyhjb25zdCBEYXRhS2V5JiBrKSBjb25zdAogICB7CiAgICAgIHJldHVybiBsZWZ0W251 bWJlcihrKV07CiAgIH0KCiAgIFJlYWwmIGxocyhjb25zdCBEYXRhS2V5JiBrKQogICB7CiAg ICAgIHJldHVybiBsZWZ0W251bWJlcihrKV07CiAgIH0KCgogICBjb25zdCBWZWN0b3ImIHJo cygpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHJpZ2h0OwogICB9CgogICBWZWN0b3ImIHJo cygpCiAgIHsKICAgICAgcmV0dXJuIHJpZ2h0OwogICB9CgoKICAgUmVhbCByaHMoaW50IGkp IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHJpZ2h0W2ldOwogICB9CgogICBSZWFsJiByaHMo aW50IGkpCiAgIHsKICAgICAgcmV0dXJuIHJpZ2h0W2ldOwogICB9CgoKICAgUmVhbCByaHMo Y29uc3QgRGF0YUtleSYgaykgY29uc3QKICAgewogICAgICByZXR1cm4gcmlnaHRbbnVtYmVy KGspXTsKICAgfQoKICAgUmVhbCYgcmhzKGNvbnN0IERhdGFLZXkmIGspCiAgIHsKICAgICAg cmV0dXJuIHJpZ2h0W251bWJlcihrKV07CiAgIH0KCgogICBTVmVjdG9yJiByb3dWZWN0b3Jf dyhpbnQgaSkKICAgewogICAgICByZXR1cm4gb3BlcmF0b3JbXShpKTsKICAgfQoKCiAgIGNv bnN0IFNWZWN0b3ImIHJvd1ZlY3RvcihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4g b3BlcmF0b3JbXShpKTsKICAgfQoKCiAgIFNWZWN0b3ImIHJvd1ZlY3Rvcl93KGNvbnN0IERh dGFLZXkmIGspCiAgIHsKICAgICAgcmV0dXJuIG9wZXJhdG9yW10oayk7CiAgIH0KCgogICBj b25zdCBTVmVjdG9yJiByb3dWZWN0b3IoY29uc3QgRGF0YUtleSYgaykgY29uc3QKICAgewog ICAgICByZXR1cm4gb3BlcmF0b3JbXShrKTsKICAgfQoKCiAgIExQUm93OjpUeXBlIHR5cGUo aW50IGkpIGNvbnN0CiAgIHsKICAgICAgaWYgKHJocyhpKSA+PSBpbmZpbml0eSkKICAgICAg ICAgcmV0dXJuIExQUm93OjpHUkVBVEVSX0VRVUFMOwogICAgICBpZiAobGhzKGkpIDw9IC1p bmZpbml0eSkKICAgICAgICAgcmV0dXJuIExQUm93OjpMRVNTX0VRVUFMOwogICAgICBpZiAo bGhzKGkpID09IHJocyhpKSkKICAgICAgICAgcmV0dXJuIExQUm93OjpFUVVBTDsKICAgICAg cmV0dXJuIExQUm93OjpSQU5HRTsKICAgfQoKCiAgIExQUm93OjpUeXBlIHR5cGUoY29uc3Qg RGF0YUtleSYgaykgY29uc3QKICAgewogICAgICByZXR1cm4gdHlwZShudW1iZXIoaykpOwog ICB9CgoKICAgdm9pZCBzZXRUeXBlKGludCBpLCBMUFJvdzo6VHlwZSB0eXBlKTsKCgogICBS ZWFsIHZhbHVlKGludCBpKSBjb25zdAogICB7CiAgICAgIGlmIChyaHMoaSkgPCBpbmZpbml0 eSkKICAgICAgICAgcmV0dXJuIHJocyhpKTsKICAgICAgZWxzZQogICAgICB7CiAgICAgICAg IAojIDE5MSAibHByb3dzZXQuaCIgMyA0CiAgICAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgw KSkKIyAxOTEgImxwcm93c2V0LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CiAgICAgICAgIHJldHVybiBsaHMoaSk7CiAgICAgIH0KICAgfQoKCgoKCgogICBSZWFs IHZhbHVlKGNvbnN0IERhdGFLZXkmIGspIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHZhbHVl KG51bWJlcihrKSk7CiAgIH0KCgogICBEYXRhS2V5IGtleShpbnQgaSkgY29uc3QKICAgewog ICAgICByZXR1cm4gU1ZTZXQ6OmtleShpKTsKICAgfQoKCiAgIGludCBudW1iZXIoY29uc3Qg RGF0YUtleSYgaykgY29uc3QKICAgewogICAgICByZXR1cm4gU1ZTZXQ6Om51bWJlcihrKTsK ICAgfQoKCiAgIGludCBoYXMoY29uc3QgRGF0YUtleSYgaykgY29uc3QKICAgewogICAgICBy ZXR1cm4gU1ZTZXQ6OmhhcyhrKTsKICAgfQojIDIzNCAibHByb3dzZXQuaCIKICAgdm9pZCBh ZGQoY29uc3QgTFBSb3cmIHJvdykKICAgewogICAgICBEYXRhS2V5IGs7CiAgICAgIGFkZChr LCByb3cpOwogICB9CgogICB2b2lkIGFkZChEYXRhS2V5JiBwa2V5LCBjb25zdCBMUFJvdyYg cHJvdykKICAgewogICAgICBhZGQocGtleSwgcHJvdy5saHMoKSwgcHJvdy5yb3dWZWN0b3Io KSwgcHJvdy5yaHMoKSk7CiAgIH0KCgogICB2b2lkIGFkZChSZWFsIHBsaHMsIGNvbnN0IFNW ZWN0b3ImIHByb3dWZWN0b3IsIFJlYWwgcHJocykKICAgewogICAgICBEYXRhS2V5IGs7CiAg ICAgIGFkZChrLCBwbGhzLCBwcm93VmVjdG9yLCBwcmhzKTsKICAgfQoKICAgdm9pZCBhZGQo RGF0YUtleSYga2V5LCBSZWFsIGxocywgY29uc3QgU1ZlY3RvciYgcm93VmVjdG9yLCBSZWFs IHJocyk7CgoKICAgdm9pZCBhZGQoY29uc3QgTFBSb3dTZXQmIHNldCk7CgogICB2b2lkIGFk ZChEYXRhS2V5IGtleVtdLCBjb25zdCBMUFJvd1NldCYgc2V0KTsKCgogICB2b2lkIHh0ZW5k KGludCBuLCBpbnQgbmV3bWF4KQogICB7CiAgICAgIFNWU2V0Ojp4dGVuZChyb3dWZWN0b3Jf dyhuKSwgbmV3bWF4KTsKICAgfQoKCiAgIHZvaWQgeHRlbmQoY29uc3QgRGF0YUtleSYgcGtl eSwgaW50IHBuZXdtYXgpCiAgIHsKICAgICAgU1ZTZXQ6Onh0ZW5kKHJvd1ZlY3Rvcl93KHBr ZXkpLCBwbmV3bWF4KTsKICAgfQoKCiAgIHZvaWQgYWRkMihjb25zdCBEYXRhS2V5JiBrLCBp bnQgbiwgaW50IGlkeFtdLCBSZWFsIHZhbFtdKQogICB7CiAgICAgIFNWU2V0OjphZGQyKHJv d1ZlY3Rvcl93KGspLCBuLCBpZHgsIHZhbCk7CiAgIH0KCgogICB2b2lkIGFkZDIoaW50IGks IGludCBuLCBpbnQgaWR4W10sIFJlYWwgdmFsW10pCiAgIHsKICAgICAgU1ZTZXQ6OmFkZDIo cm93VmVjdG9yX3coaSksIG4sIGlkeCwgdmFsKTsKICAgfQoKCiAgIFNWZWN0b3ImIGNyZWF0 ZShpbnQgcG5vbnplcm9zID0gMCwgUmVhbCBwbGhzID0gMCwgUmVhbCBwcmhzID0gMSkKICAg ewogICAgICBEYXRhS2V5IGs7CiAgICAgIHJldHVybiBjcmVhdGUoaywgcG5vbnplcm9zLCBw bGhzLCBwcmhzKTsKICAgfQoKICAgU1ZlY3RvciYgY3JlYXRlKERhdGFLZXkmIG5rZXksIGlu dCBub256ZXJvcyA9IDAsIFJlYWwgbGhzID0gMCwgUmVhbCByaHMgPSAxKTsKIyAzMDAgImxw cm93c2V0LmgiCiAgIHZvaWQgcmVtb3ZlKGludCBpKTsKCiAgIHZvaWQgcmVtb3ZlKGNvbnN0 IERhdGFLZXkmIGspCiAgIHsKICAgICAgcmVtb3ZlKG51bWJlcihrKSk7CiAgIH0KCgoKICAg dm9pZCByZW1vdmUoaW50IHBlcm1bXSk7CgoKICAgdm9pZCByZW1vdmUoaW50IG51bXNbXSwg aW50IG4pCiAgIHsKICAgICAgRGF0YUFycmF5PGludD4gcGVybShudW0oKSk7CiAgICAgIHJl bW92ZShudW1zLCBuLCBwZXJtLmdldF9wdHIoKSk7CiAgIH0KCgogICB2b2lkIHJlbW92ZShp bnQgbnVtc1tdLCBpbnQgbiwgaW50KiBwZXJtKTsKCgogICB2b2lkIGNsZWFyKCk7CiMgMzMz ICJscHJvd3NldC5oIgogICB2b2lkIHJlTWF4KGludCBuZXdtYXggPSAwKQogICB7CiAgICAg IFNWU2V0OjpyZU1heChuZXdtYXgpOwogICAgICBsZWZ0LnJlU2l6ZSAobWF4KCkpOwogICAg ICByaWdodC5yZVNpemUobWF4KCkpOwogICB9CgoKICAgaW50IG1lbVNpemUoKSBjb25zdAog ICB7CiAgICAgIHJldHVybiBTVlNldDo6bWVtU2l6ZSgpOwogICB9CgoKICAgaW50IG1lbU1h eCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIFNWU2V0OjptZW1NYXgoKTsKICAgfQoKCiAg IHZvaWQgbWVtUmVtYXgoaW50IG5ld21heCkKICAgewogICAgICBTVlNldDo6bWVtUmVtYXgo bmV3bWF4KTsKICAgfQoKCiAgIHZvaWQgbWVtUGFjaygpCiAgIHsKICAgICAgU1ZTZXQ6Om1l bVBhY2soKTsKICAgfQoKCgogICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0OwojIDM3NyAi bHByb3dzZXQuaCIKICAgTFBSb3dTZXQoaW50IHBtYXggPSAtMSwgaW50IHBtZW1tYXggPSAt MSkKICAgICAgOiBTVlNldChwbWF4LCBwbWVtbWF4KSwgbGVmdCgwKSwgcmlnaHQoMCkKICAg eyB9CgoKICAgTFBSb3dTZXQmIG9wZXJhdG9yPShjb25zdCBMUFJvd1NldCYgcnMpCiAgIHsK ICAgICAgaWYgKHRoaXMgIT0gJnJzKQogICAgICB7CiAgICAgICAgIFNWU2V0OjpvcGVyYXRv cj0ocnMpOwogICAgICAgICBsZWZ0ID0gcnMubGVmdDsKICAgICAgICAgcmlnaHQgPSBycy5y aWdodDsKICAgICAgfQogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCn07Cn0KIyAzOSAic3B4 bHAuaCIgMgojIDEgImxwY29sc2V0LmgiIDEKIyAyNCAibHBjb2xzZXQuaCIKI2RlZmluZSBf TFBDT0xTRVRfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAi L3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNz ZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoK CgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBz dGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVm aW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9p bmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9f QVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcgImxwY29sc2V0LmgiIDIKCiMgMSAic3B4ZGVm aW5lcy5oIiAxCiMgMjkgImxwY29sc2V0LmgiIDIKIyAxICJscGNvbC5oIiAxCiMgMzAgImxw Y29sc2V0LmgiIDIKIyAxICJkdmVjdG9yLmgiIDEKIyAzMSAibHBjb2xzZXQuaCIgMgojIDEg InN2c2V0LmgiIDEKIyAzMiAibHBjb2xzZXQuaCIgMgojIDEgImRhdGFrZXkuaCIgMQojIDMz ICJscGNvbHNldC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA1MCAibHBjb2xzZXQuaCIK Y2xhc3MgTFBDb2xTZXQgOiBwcm90ZWN0ZWQgU1ZTZXQKewpwcml2YXRlOgogICBEVmVjdG9y IGxvdzsKICAgRFZlY3RvciB1cDsKICAgRFZlY3RvciBvYmplY3Q7CgpwdWJsaWM6CgoKCgog ICBpbnQgbnVtKCkgY29uc3QKICAgewogICAgICByZXR1cm4gU1ZTZXQ6Om51bSgpOwogICB9 CgoKICAgaW50IG1heCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIFNWU2V0OjptYXgoKTsK ICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgb2JqKCkgY29uc3QKICAgewogICAgICByZXR1cm4g b2JqZWN0OwogICB9CgogICBWZWN0b3ImIG9iaigpCiAgIHsKICAgICAgcmV0dXJuIG9iamVj dDsKICAgfQoKCiAgIFJlYWwgb2JqKGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVybiBv YmplY3RbaV07CiAgIH0KCiAgIFJlYWwmIG9iaihpbnQgaSkKICAgewogICAgICByZXR1cm4g b2JqZWN0W2ldOwogICB9CgoKICAgUmVhbCBvYmooY29uc3QgRGF0YUtleSYgaykgY29uc3QK ICAgewogICAgICByZXR1cm4gb2JqZWN0W251bWJlcihrKV07CiAgIH0KCiAgIFJlYWwmIG9i aihjb25zdCBEYXRhS2V5JiBrKQogICB7CiAgICAgIHJldHVybiBvYmplY3RbbnVtYmVyKGsp XTsKICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgbG93ZXIoKSBjb25zdAogICB7CiAgICAgIHJl dHVybiBsb3c7CiAgIH0KCiAgIFZlY3RvciYgbG93ZXIoKQogICB7CiAgICAgIHJldHVybiBs b3c7CiAgIH0KCgogICBSZWFsIGxvd2VyKGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVy biBsb3dbaV07CiAgIH0KCiAgIFJlYWwmIGxvd2VyKGludCBpKQogICB7CiAgICAgIHJldHVy biBsb3dbaV07CiAgIH0KCgogICBSZWFsIGxvd2VyKGNvbnN0IERhdGFLZXkmIGspIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIGxvd1tudW1iZXIoayldOwogICB9CgogICBSZWFsJiBsb3dl cihjb25zdCBEYXRhS2V5JiBrKQogICB7CiAgICAgIHJldHVybiBsb3dbbnVtYmVyKGspXTsK ICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgdXBwZXIoKSBjb25zdAogICB7CiAgICAgIHJldHVy biB1cDsKICAgfQoKICAgVmVjdG9yJiB1cHBlcigpCiAgIHsKICAgICAgcmV0dXJuIHVwOwog ICB9CgoKICAgUmVhbCB1cHBlcihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gdXBb aV07CiAgIH0KCiAgIFJlYWwmIHVwcGVyKGludCBpKQogICB7CiAgICAgIHJldHVybiB1cFtp XTsKICAgfQoKCiAgIFJlYWwgdXBwZXIoY29uc3QgRGF0YUtleSYgaykgY29uc3QKICAgewog ICAgICByZXR1cm4gdXBbbnVtYmVyKGspXTsKICAgfQoKICAgUmVhbCYgdXBwZXIoY29uc3Qg RGF0YUtleSYgaykKICAgewogICAgICByZXR1cm4gdXBbbnVtYmVyKGspXTsKICAgfQoKCiAg IFNWZWN0b3ImIGNvbFZlY3Rvcl93KGludCBpKQogICB7CiAgICAgIHJldHVybiBvcGVyYXRv cltdKGkpOwogICB9CgogICBjb25zdCBTVmVjdG9yJiBjb2xWZWN0b3IoaW50IGkpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIG9wZXJhdG9yW10oaSk7CiAgIH0KCgogICBTVmVjdG9yJiBj b2xWZWN0b3Jfdyhjb25zdCBEYXRhS2V5JiBrKQogICB7CiAgICAgIHJldHVybiBvcGVyYXRv cltdKGspOwogICB9CgoKICAgY29uc3QgU1ZlY3RvciYgY29sVmVjdG9yKGNvbnN0IERhdGFL ZXkmIGspIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIG9wZXJhdG9yW10oayk7CiAgIH0KCgog ICBEYXRhS2V5IGtleShpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gU1ZTZXQ6Omtl eShpKTsKICAgfQoKCiAgIGludCBudW1iZXIoY29uc3QgRGF0YUtleSYgaykgY29uc3QKICAg ewogICAgICByZXR1cm4gU1ZTZXQ6Om51bWJlcihrKTsKICAgfQoKCiAgIGludCBoYXMoY29u c3QgRGF0YUtleSYgaykgY29uc3QKICAgewogICAgICByZXR1cm4gU1ZTZXQ6OmhhcyhrKTsK ICAgfQojIDIyMyAibHBjb2xzZXQuaCIKICAgdm9pZCBhZGQoY29uc3QgTFBDb2wmIHBjb2wp CiAgIHsKICAgICAgRGF0YUtleSBrOwogICAgICBhZGQoaywgcGNvbCk7CiAgIH0KCiAgIHZv aWQgYWRkKERhdGFLZXkmIHBrZXksIGNvbnN0IExQQ29sJiBwY29sKQogICB7CiAgICAgIGFk ZChwa2V5LCBwY29sLm9iaigpLCBwY29sLmxvd2VyKCksCiAgICAgICAgICAgcGNvbC5jb2xW ZWN0b3IoKSwgcGNvbC51cHBlcigpKTsKICAgfQoKCiAgIHZvaWQgYWRkKFJlYWwgcG9iaiwg UmVhbCBwbG93ZXIsIGNvbnN0IFNWZWN0b3ImIHBjb2xWZWN0b3IsIFJlYWwgcHVwcGVyKQog ICB7CiAgICAgIERhdGFLZXkgazsKICAgICAgYWRkKGssIHBvYmosIHBsb3dlciwgcGNvbFZl Y3RvciwgcHVwcGVyKTsKICAgfQoKICAgdm9pZCBhZGQgKERhdGFLZXkmIGtleSwKICAgICAg ICAgICAgIFJlYWwgb2JqLAogICAgICAgICAgICAgUmVhbCBsb3dlciwKICAgICAgICAgICAg IGNvbnN0IFNWZWN0b3ImIGNvbFZlY3RvciwKICAgICAgICAgICAgIFJlYWwgdXBwZXIpOwoK CiAgIHZvaWQgYWRkKGNvbnN0IExQQ29sU2V0JiBzZXQpOwoKICAgdm9pZCBhZGQoRGF0YUtl eSBrZXlbXSwgY29uc3QgTFBDb2xTZXQmIHNldCk7CgoKICAgdm9pZCB4dGVuZChpbnQgbiwg aW50IG5ld21heCkKICAgewogICAgICBTVlNldDo6eHRlbmQoY29sVmVjdG9yX3cobiksIG5l d21heCk7CiAgIH0KCgogICB2b2lkIHh0ZW5kKGNvbnN0IERhdGFLZXkmIHBrZXksIGludCBw bmV3bWF4KQogICB7CiAgICAgIFNWU2V0Ojp4dGVuZChjb2xWZWN0b3Jfdyhwa2V5KSwgcG5l d21heCk7CiAgIH0KCgogICB2b2lkIGFkZDIoY29uc3QgRGF0YUtleSYgaywgaW50IG4sIGlu dCBpZHhbXSwgUmVhbCB2YWxbXSkKICAgewogICAgICBTVlNldDo6YWRkMihjb2xWZWN0b3Jf dyhrKSwgbiwgaWR4LCB2YWwpOwogICB9CgogICB2b2lkIGFkZDIoaW50IGksIGludCBuLCBp bnQgaWR4W10sIFJlYWwgdmFsW10pCiAgIHsKICAgICAgU1ZTZXQ6OmFkZDIoY29sVmVjdG9y X3coaSksIG4sIGlkeCwgdmFsKTsKICAgfQoKCiAgIFNWZWN0b3ImIGNyZWF0ZShpbnQgcG5v bnplcm9zID0gMCwgUmVhbCBwb2JqID0gMSwgUmVhbCBwbHcgPSAwLCBSZWFsIHB1cHAgPSAx KQogICB7CiAgICAgIERhdGFLZXkgazsKICAgICAgcmV0dXJuIGNyZWF0ZShrLCBwbm9uemVy b3MsIHBvYmosIHBsdywgcHVwcCk7CiAgIH0KCiAgIFNWZWN0b3ImIGNyZWF0ZShEYXRhS2V5 JiBua2V5LCBpbnQgbm9uemVyb3MgPSAwLCBSZWFsIG9iaiA9IDEsIFJlYWwgbG93ID0gMCwg UmVhbCB1cCA9IDEpOwojIDI5MyAibHBjb2xzZXQuaCIKICAgdm9pZCByZW1vdmUoaW50IGkp OwoKCiAgIHZvaWQgcmVtb3ZlKGNvbnN0IERhdGFLZXkmIGspCiAgIHsKICAgICAgcmVtb3Zl KG51bWJlcihrKSk7CiAgIH0KCgogICB2b2lkIHJlbW92ZShpbnQgcGVybVtdKTsKCgogICB2 b2lkIHJlbW92ZShpbnQgbnVtc1tdLCBpbnQgbikKICAgewogICAgICBEYXRhQXJyYXkgPCBp bnQgPiBwZXJtKG51bSgpKTsKICAgICAgcmVtb3ZlKG51bXMsIG4sIHBlcm0uZ2V0X3B0cigp KTsKICAgfQoKICAgdm9pZCByZW1vdmUoaW50IG51bXNbXSwgaW50IG4sIGludCogcGVybSk7 CgoKICAgdm9pZCBjbGVhcigpOwojIDMyMyAibHBjb2xzZXQuaCIKICAgdm9pZCByZU1heChp bnQgbmV3bWF4ID0gMCkKICAgewogICAgICBTVlNldDo6cmVNYXggKG5ld21heCk7CiAgICAg IHVwLnJlU2l6ZSAobWF4KCkpOwogICAgICBsb3cucmVTaXplIChtYXgoKSk7CiAgICAgIG9i amVjdC5yZVNpemUobWF4KCkpOwogICB9CgoKICAgaW50IG1lbVNpemUoKSBjb25zdAogICB7 CiAgICAgIHJldHVybiBTVlNldDo6bWVtU2l6ZSgpOwogICB9CgoKICAgaW50IG1lbU1heCgp IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIFNWU2V0OjptZW1NYXgoKTsKICAgfQoKCiAgIHZv aWQgbWVtUmVtYXgoaW50IG5ld21heCkKICAgewogICAgICBTVlNldDo6bWVtUmVtYXgobmV3 bWF4KTsKICAgfQoKCiAgIHZvaWQgbWVtUGFjaygpCiAgIHsKICAgICAgU1ZTZXQ6Om1lbVBh Y2soKTsKICAgfQoKCgoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7CiMgMzcxICJs cGNvbHNldC5oIgogICBMUENvbFNldChpbnQgcG1heCA9IC0xLCBpbnQgcG1lbW1heCA9IC0x KQogICAgICA6IFNWU2V0KHBtYXgsIHBtZW1tYXgpLCBsb3coMCksIHVwKDApLCBvYmplY3Qo MCkKICAgeyB9CgoKICAgTFBDb2xTZXQmIG9wZXJhdG9yPShjb25zdCBMUENvbFNldCYgcnMp CiAgIHsKICAgICAgaWYgKHRoaXMgIT0gJnJzKQogICAgICB7CiAgICAgICAgIFNWU2V0Ojpv cGVyYXRvcj0ocnMpOwogICAgICAgICBsb3cgPSBycy5sb3c7CiAgICAgICAgIHVwID0gcnMu dXA7CiAgICAgICAgIG9iamVjdCA9IHJzLm9iamVjdDsKICAgICAgfQogICAgICByZXR1cm4g KnRoaXM7CiAgIH0KCgp9OwoKCn0KIyA0MCAic3B4bHAuaCIgMgojIDEgIm5hbWVzZXQuaCIg MQojIDI0ICJuYW1lc2V0LmgiCiNkZWZpbmUgX05BTUVTRVRfSF8gCgojIDEgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQK I3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NB U1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgoj ZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRf Vk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmlu ZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcg Im5hbWVzZXQuaCIgMgoKIyAxICJzcHhkZWZpbmVzLmgiIDEKIyAyOSAibmFtZXNldC5oIiAy CiMgMSAiZGF0YXNldC5oIiAxCiMgMzAgIm5hbWVzZXQuaCIgMgojIDEgImRhdGFoYXNodGFi bGUuaCIgMQojIDI0ICJkYXRhaGFzaHRhYmxlLmgiCiNkZWZpbmUgX0RBVEFIQUhTVEFCTEVf SF8gCgoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5k ZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZp bmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nh c3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3Nl cnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9h c3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9W T0lEX0NBU1QgKDApKQojIDI4ICJkYXRhaGFzaHRhYmxlLmgiIDIKCiMgMSAic3B4ZGVmaW5l cy5oIiAxCiMgMzAgImRhdGFoYXNodGFibGUuaCIgMgojIDEgIm1lc3NhZ2UuaCIgMQojIDIw ICJtZXNzYWdlLmgiCm5hbWVzcGFjZSBzb3BsZXgKewoKZXh0ZXJuIGJvb2wgbXNnaW5jb25z aXN0ZW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsK CiNkZWZpbmUgTVNHaW5jb25zaXN0ZW50KG5hbWUpIG1zZ2luY29uc2lzdGVudChuYW1lLCBf X0ZJTEVfXywgX19MSU5FX18pCgp9CiMgMzEgImRhdGFoYXNodGFibGUuaCIgMgoKbmFtZXNw YWNlIHNvcGxleAp7CiMgNzYgImRhdGFoYXNodGFibGUuaCIKdGVtcGxhdGUgPCBjbGFzcyBI YXNoSXRlbSwgY2xhc3MgSW5mbyA+CmNsYXNzIERhdGFIYXNoVGFibGUKewpwcml2YXRlOgoK ICAgdGVtcGxhdGUgPCBjbGFzcyBFbGVtSGFzaEl0ZW0sIGNsYXNzIEVsZW1JbmZvID4KICAg Y2xhc3MgRWxlbWVudAogICB7CiAgIHB1YmxpYzoKICAgICAgRWxlbUhhc2hJdGVtIGl0ZW07 CiAgICAgIEVsZW1JbmZvIGluZm87CiAgICAgIGVudW0KICAgICAgewogICAgICAgICBGUkVF LAogICAgICAgICBSRUxFQVNFRCwKICAgICAgICAgVVNFRAogICAgICB9IHN0YXQ7CiAgIH07 CiAgIHR5cGVkZWYgRWxlbWVudDwgSGFzaEl0ZW0sIEluZm8gPiBFbGVtOwoKCiAgIERhdGFB cnJheSA8IEVsZW0gPiBtX2VsZW07CgogICBpbnQgbV9oYXNoc2l6ZTsKICAgaW50IG1fdXNl ZDsKCgogICBpbnQgKCptX2hhc2hmdW4pIChjb25zdCBIYXNoSXRlbSopOwoKCiAgIFJlYWwg bV9tZW1mYWN0b3I7CgpwdWJsaWM6CgogICBib29sIGhhcyhjb25zdCBIYXNoSXRlbSYgaCkg Y29uc3QKICAgewogICAgICByZXR1cm4gaW5kZXgoaCkgPj0gMDsKICAgfQoKCgoKCgogICBj b25zdCBJbmZvKiBnZXQoY29uc3QgSGFzaEl0ZW0mIGgpIGNvbnN0CiAgIHsKICAgICAgaW50 IGkgPSBpbmRleChoKTsKCiAgICAgIHJldHVybiAoaSA+PSAwKSA/ICZtX2VsZW1baV0uaW5m byA6IDA7CiAgIH0KCgoKCgoKCiAgIGNvbnN0IEluZm8mIG9wZXJhdG9yW10oY29uc3QgSGFz aEl0ZW0mIGgpIGNvbnN0CiAgIHsKICAgICAgCiMgMTM1ICJkYXRhaGFzaHRhYmxlLmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTM1ICJkYXRhaGFzaHRhYmxlLmgi CiAgICAgICAgICAgICAgICAgICA7CgogICAgICByZXR1cm4gbV9lbGVtW2luZGV4KGgpXS5p bmZvOwogICB9CgoKCgoKCgogICB2b2lkIGFkZChjb25zdCBIYXNoSXRlbSYgaCwgY29uc3Qg SW5mbyYgaW5mbykKICAgewogICAgICAKIyAxNDggImRhdGFoYXNodGFibGUuaCIgMyA0CiAg ICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxNDggImRhdGFoYXNodGFibGUuaCIKICAg ICAgICAgICAgICAgICAgICA7CgogICAgICBpZiAobV91c2VkID49IG1fZWxlbS5zaXplKCkp CiAgICAgICAgIHJlTWF4KGludChtX21lbWZhY3RvciAqIG1fdXNlZCkgKyAxKTsKCiAgICAg IAojIDE1MyAiZGF0YWhhc2h0YWJsZS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4g KDApKQojIDE1MyAiZGF0YWhhc2h0YWJsZS5oIgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsKCiAgICAgIGludCBpOwoKICAgICAgZm9yKGkgPSAoKm1faGFzaGZ1biko JmgpICUgbV9lbGVtLnNpemUoKTsKICAgICAgICAgIG1fZWxlbVtpXS5zdGF0ID09IEVsZW06 OlVTRUQ7CiAgICAgICAgICBpID0gKGkgKyBtX2hhc2hzaXplKSAlIG1fZWxlbS5zaXplKCkp CiAgICAgICAgIDsKCiAgICAgIAojIDE2MiAiZGF0YWhhc2h0YWJsZS5oIiAzIDQKICAgICAo c3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDE2MiAiZGF0YWhhc2h0YWJsZS5oIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKCiAgICAgIG1fZWxlbVtpXS5z dGF0ID0gRWxlbTo6VVNFRDsKICAgICAgbV9lbGVtW2ldLmluZm8gPSBpbmZvOwogICAgICBt X2VsZW1baV0uaXRlbSA9IGg7CgogICAgICBtX3VzZWQrKzsKCiAgICAgIAojIDE3MCAiZGF0 YWhhc2h0YWJsZS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDE3MCAi ZGF0YWhhc2h0YWJsZS5oIgogICAgICAgICAgICAgICAgICAgOwogICB9CgoKICAgdm9pZCBy ZW1vdmUoY29uc3QgSGFzaEl0ZW0mIGgpCiAgIHsKICAgICAgCiMgMTc2ICJkYXRhaGFzaHRh YmxlLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTc2ICJkYXRhaGFz aHRhYmxlLmgiCiAgICAgICAgICAgICAgICAgICA7CiAgICAgIG1fZWxlbVtpbmRleChoKV0u c3RhdCA9IEVsZW06OlJFTEVBU0VEOwogICAgICBtX3VzZWQtLTsKICAgICAgCiMgMTc5ICJk YXRhaGFzaHRhYmxlLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTc5 ICJkYXRhaGFzaHRhYmxlLmgiCiAgICAgICAgICAgICAgICAgICAgOwogICB9CgoKICAgdm9p ZCBjbGVhcigpCiAgIHsKICAgICAgZm9yKGludCBpID0gMDsgaSA8IG1fZWxlbS5zaXplKCk7 IGkrKykKICAgICAgICAgbV9lbGVtW2ldLnN0YXQgPSBFbGVtOjpGUkVFOwogICAgICBtX3Vz ZWQgPSAwOwogICB9CgoKCgoKCiAgIHZvaWQgcmVNYXggKGludCBuZXdTaXplID0gLTEsIGlu dCBuZXdIYXNoU2l6ZSA9IDApCiAgIHsKICAgICAgRGF0YUFycmF5PCBFbGVtID4gc2F2ZSht X2VsZW0pOwoKICAgICAgbV9lbGVtLnJlU2l6ZShuZXdTaXplIDwgbV91c2VkID8gbV91c2Vk IDogbmV3U2l6ZSk7CgogICAgICBjbGVhcigpOwoKICAgICAgbV9oYXNoc2l6ZSA9IChuZXdI YXNoU2l6ZSA8IDEpID8gYXV0b0hhc2hTaXplKCkgOiBuZXdIYXNoU2l6ZTsKCiAgICAgIGZv cihpbnQgaSA9IDA7IGkgPCBzYXZlLnNpemUoKTsgaSsrKQogICAgICAgICBpZiAoc2F2ZVtp XS5zdGF0ID09IEVsZW06OlVTRUQpCiAgICAgICAgICAgIGFkZChzYXZlW2ldLml0ZW0sIHNh dmVbaV0uaW5mbyk7CiAgIH0KCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3QKICAgewog ICAgICBpbnQgdG90YWwgPSAwOwoKICAgICAgZm9yKGludCBpID0gMDsgaSA8IG1fZWxlbS5z aXplKCk7IGkrKykKICAgICAgewogICAgICAgICBpZiAobV9lbGVtW2ldLnN0YXQgPT0gRWxl bTo6VVNFRCkKICAgICAgICAgewogICAgICAgICAgICB0b3RhbCsrOwogICAgICAgICAgICBp ZiAoIWhhcyhtX2VsZW1baV0uaXRlbSkpCiAgICAgICAgICAgICAgIHJldHVybiBtc2dpbmNv bnNpc3RlbnQoIkRhdGFIYXNoVGFibGUiLCAiZGF0YWhhc2h0YWJsZS5oIiwgMjIwKTsKICAg ICAgICAgfQogICAgICB9CiAgICAgIGlmICh0b3RhbCAhPSBtX3VzZWQpCiAgICAgICAgIHJl dHVybiBtc2dpbmNvbnNpc3RlbnQoIkRhdGFIYXNoVGFibGUiLCAiZGF0YWhhc2h0YWJsZS5o IiwgMjI0KTsKCiAgICAgIHJldHVybiBtX2VsZW0uaXNDb25zaXN0ZW50KCk7CiAgIH0KIyAy NDEgImRhdGFoYXNodGFibGUuaCIKICAgZXhwbGljaXQgRGF0YUhhc2hUYWJsZSgKICAgICAg aW50ICgqaGFzaGZ1bikoY29uc3QgSGFzaEl0ZW0qKSwKICAgICAgaW50IG1heHNpemUgPSAy NTYsCiAgICAgIGludCBoYXNoc2l6ZSA9IDAsCiAgICAgIFJlYWwgZmFjdG9yID0gMi4wKQog ICAgICA6IG1fZWxlbShtYXhzaXplKQogICAgICAsIG1faGFzaGZ1bihoYXNoZnVuKQogICAg ICAsIG1fbWVtZmFjdG9yKGZhY3RvcikKICAgewogICAgICBjbGVhcigpOwoKICAgICAgbV9o YXNoc2l6ZSA9IChoYXNoc2l6ZSA8IDEpID8gYXV0b0hhc2hTaXplKCkgOiBoYXNoc2l6ZTsK CiAgICAgIAojIDI1NCAiZGF0YWhhc2h0YWJsZS5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8 dm9pZD4gKDApKQojIDI1NCAiZGF0YWhhc2h0YWJsZS5oIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7CiAgIH0KCnByaXZhdGU6CgoKCgoKCiAgIGludCBhdXRvSGFzaFNpemUo KSBjb25zdAogICB7CiAgICAgIERhdGFBcnJheTwgYm9vbCA+IHByaW1lKG1fZWxlbS5zaXpl KCkpOwogICAgICBpbnQgaGFzaHNpemUgPSAxOwogICAgICBpbnQgbWF4c2l6ZSA9IG1fZWxl bS5zaXplKCk7CiAgICAgIGludCBpOwoKICAgICAgZm9yIChpID0gMjsgaSA8IG1heHNpemU7 IGkrKykKICAgICAgICAgcHJpbWVbaV0gPSB0cnVlOwoKICAgICAgZm9yIChpID0gMjsgaSA8 IG1heHNpemU7ICsraSkKICAgICAgewogICAgICAgICBpZiAocHJpbWVbaV0pCiAgICAgICAg IHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPCBtYXhzaXplOyBqICs9IGkpCiAg ICAgICAgICAgICAgIHByaW1lW2pdID0gZmFsc2U7CgogICAgICAgICAgICBpZiAobV9lbGVt LnNpemUoKSAlIGkgIT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICBoYXNoc2l6 ZSAqPSBpOwoKICAgICAgICAgICAgICAgaWYgKGhhc2hzaXplID4gbWF4c2l6ZSkKICAgICAg ICAgICAgICAgewogICAgICAgICAgICAgICAgICBoYXNoc2l6ZSAvPSBpOwogICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg IH0KICAgICAgfQogICAgICByZXR1cm4gaGFzaHNpemU7CiAgIH0KIyAzMDYgImRhdGFoYXNo dGFibGUuaCIKICAgaW50IGluZGV4KGNvbnN0IEhhc2hJdGVtJiBoKSBjb25zdAogICB7CiAg ICAgIGlmIChtX3VzZWQgPT0gMCkKICAgICAgICAgcmV0dXJuIC0xOwoKICAgICAgCiMgMzEx ICJkYXRhaGFzaHRhYmxlLmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMg MzExICJkYXRhaGFzaHRhYmxlLmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsK CiAgICAgIGludCBpID0gKCptX2hhc2hmdW4pKCZoKSAlIG1fZWxlbS5zaXplKCk7CiAgICAg IGludCBqID0gaTsKCiAgICAgIHdoaWxlKG1fZWxlbVtpXS5zdGF0ICE9IEVsZW06OkZSRUUp CiAgICAgIHsKICAgICAgICAgaWYgKCAobV9lbGVtW2ldLnN0YXQgPT0gRWxlbTo6VVNFRCkK ICAgICAgICAgICAgJiYgKG1fZWxlbVtpXS5pdGVtID09IGgpKQogICAgICAgICAgICByZXR1 cm4gaTsKCiAgICAgICAgIGkgPSAoaSArIG1faGFzaHNpemUpICUgbV9lbGVtLnNpemUoKTsK CiAgICAgICAgIGlmIChpID09IGopCiAgICAgICAgICAgIGJyZWFrOwogICAgICB9CiAgICAg IHJldHVybiAtMTsKICAgfQoKICAgRGF0YUhhc2hUYWJsZSYgb3BlcmF0b3I9KGNvbnN0IERh dGFIYXNoVGFibGUmIGJhc2UpOwoKCiAgIERhdGFIYXNoVGFibGUoY29uc3QgRGF0YUhhc2hU YWJsZSYgYmFzZSk7Cn07Cn0KIyAzMSAibmFtZXNldC5oIiAyCiMgMSAiZGF0YWtleS5oIiAx CiMgMzIgIm5hbWVzZXQuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNjMgIm5hbWVzZXQu aCIKY2xhc3MgTmFtZVNldAp7CnB1YmxpYzoKCgoKCgoKICAgY2xhc3MgTmFtZQogICB7CiAg IHByaXZhdGU6CiAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGRlZmx0OwoKICAgcHVibGljOgog ICAgICBjb25zdCBjaGFyICpuYW1lOwoKCiAgICAgIGZyaWVuZCBpbnQgb3BlcmF0b3I9PShj b25zdCBOYW1lJiBuMSwgY29uc3QgTmFtZSYgbjIpCiAgICAgIHsKICAgICAgICAgcmV0dXJu IChzdHJjbXAgKG4xLm5hbWUsIG4yLm5hbWUpID09IDApOwogICAgICB9CgogICAgICBmcmll bmQgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBO YW1lJiBuKQogICAgICB7CiAgICAgICAgIHJldHVybiBvdXQgPDwgbi5uYW1lOwogICAgICB9 CgogICAgICBib29sIGlzQ29uc2lzdGVudCAoKSBjb25zdAogICAgICB7CiAgICAgICAgIHJl dHVybiAobmFtZSAhPSAwKTsKICAgICAgfQoKICAgICAgTmFtZSgpCiAgICAgICAgIDogbmFt ZSgmZGVmbHQpCiAgICAgIHt9CgoKCiAgICAgIE5hbWUgKGNvbnN0IE5hbWUmIHN0cikKICAg ICAgICAgOiBuYW1lKHN0ci5uYW1lKQogICAgICB7fQoKICAgICAgTmFtZSAoY29uc3QgY2hh ciogc3RyKQogICAgICAgICA6IG5hbWUoc3RyKQogICAgICB7fQogICB9OwoKcHJpdmF0ZToK ICAgRGF0YVNldCA8IGludCA+IHNldDsKICAgY2hhciogbWVtOwogICBpbnQgbWVtbWF4Owog ICBpbnQgbWVtdXNlZDsKCgoKCgogICBEYXRhSGFzaFRhYmxlIDwgTmFtZSwgRGF0YUtleSA+ IGhhc2h0YWI7CgpwdWJsaWM6CgoKCiAgIGNvbnN0IGNoYXIqIG9wZXJhdG9yW10oaW50IHBu dW0pIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuICZtZW1bc2V0W3BudW1dXTsKICAgfQoKCiAg IGNvbnN0IGNoYXIqIG9wZXJhdG9yW10oRGF0YUtleSBwa2V5KSBjb25zdAogICB7CiAgICAg IHJldHVybiAmbWVtW3NldFtwa2V5XV07CiAgIH0KCgogICBpbnQgbnVtKCkgY29uc3QKICAg ewogICAgICByZXR1cm4gc2V0Lm51bSgpOwogICB9CgoKICAgaW50IG1heCgpIGNvbnN0CiAg IHsKICAgICAgcmV0dXJuIHNldC5tYXgoKTsKICAgfQoKCiAgIGludCBzaXplKCkgY29uc3QK ICAgewogICAgICByZXR1cm4gc2V0LnNpemUoKTsKICAgfQoKCiAgIGludCBtZW1NYXgoKSBj b25zdAogICB7CiAgICAgIHJldHVybiBtZW1tYXg7CiAgIH0KCgogICBpbnQgbWVtU2l6ZSgp IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIG1lbXVzZWQ7CiAgIH0KCgogICBEYXRhS2V5IGtl eShpbnQgcG51bSkgY29uc3QKICAgewogICAgICByZXR1cm4gc2V0LmtleShwbnVtKTsKICAg fQoKCgoKICAgRGF0YUtleSBrZXkoY29uc3QgY2hhciogc3RyKSBjb25zdAogICB7CiAgICAg IGNvbnN0IE5hbWUgbmFtKHN0cik7CiAgICAgIHJldHVybiAoKmhhc2h0YWIuZ2V0KG5hbSkp OwogICB9CgoKICAgaW50IG51bWJlcihEYXRhS2V5IHBrZXkpIGNvbnN0CiAgIHsKICAgICAg cmV0dXJuIHNldC5udW1iZXIocGtleSk7CiAgIH0KCgogICBpbnQgbnVtYmVyKGNvbnN0IGNo YXIgKnN0cikgY29uc3QKICAgewogICAgICBjb25zdCBOYW1lIG5hbShzdHIpOwogICAgICBp ZiAoaGFzaHRhYi5oYXMobmFtKSkKICAgICAgICAgcmV0dXJuIG51bWJlcigqaGFzaHRhYi5n ZXQobmFtKSk7CiAgICAgIGVsc2UKICAgICAgICAgcmV0dXJuIC0xOwogICB9CgoKICAgaW50 IGhhcyhpbnQgcG51bSkgY29uc3QKICAgewogICAgICByZXR1cm4gc2V0LmhhcyhwbnVtKTsK ICAgfQoKCiAgIGludCBoYXMoY29uc3QgY2hhciogc3RyKSBjb25zdAogICB7CiAgICAgIGNv bnN0IE5hbWUgbmFtKHN0cik7CiAgICAgIHJldHVybiBoYXNodGFiLmhhcyhuYW0pOwogICB9 CgoKICAgaW50IGhhcyhEYXRhS2V5IHBrZXkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHNl dC5oYXMocGtleSk7CiAgIH0KCgoKCgogICB2b2lkIGFkZChjb25zdCBjaGFyKiBzdHIpOwoK ICAgdm9pZCBhZGQoRGF0YUtleSYga2V5LCBjb25zdCBjaGFyKiBzdHIpOwoKCiAgIHZvaWQg YWRkKGNvbnN0IE5hbWVTZXQmIHNldCk7CgogICB2b2lkIGFkZChEYXRhS2V5IGtleVtdLCBj b25zdCBOYW1lU2V0JiBuc2V0KTsKCgoKCgoKICAgdm9pZCByZW1vdmUoRGF0YUtleSBrZXkp OwoKCiAgIHZvaWQgcmVtb3ZlKGludCBwbnVtKQogICB7CiAgICAgIHJlbW92ZShrZXkocG51 bSkpOwogICB9CgoKICAgdm9pZCByZW1vdmUoY29uc3QgY2hhciogc3RyKTsKCgogICB2b2lk IHJlbW92ZShEYXRhS2V5IGtleXNbXSwgaW50IG4pOwoKCiAgIHZvaWQgcmVtb3ZlKGludCBu dW1zW10sIGludCBuKTsKCgogICB2b2lkIHJlbW92ZShpbnQgZHN0YXRbXSk7CgoKICAgdm9p ZCBjbGVhcigpOwoKCgoKCgogICB2b2lkIHJlTWF4KGludCBuZXdtYXggPSAwKTsKCgogICB2 b2lkIG1lbVJlbWF4KGludCBuZXdtYXggPSAwKTsKCgogICB2b2lkIG1lbVBhY2soKTsKIyAy ODIgIm5hbWVzZXQuaCIKICAgUmVhbCBmYWN0b3I7CgoKCgoKCgogICBSZWFsIG1lbUZhY3Rv cjsKCgoKCgogICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0OwojIDMwOCAibmFtZXNldC5o IgogICBOYW1lU2V0KGludCBtYXggPSAxMDAwMCwKICAgICAgICAgICBpbnQgbW1heCA9IC0x LAogICAgICAgICAgIFJlYWwgZmFjID0gMiwKICAgICAgICAgICBSZWFsIG1lbUZhYyA9IDIp OwoKCiAgIH5OYW1lU2V0KCk7Cgpwcml2YXRlOgoKICAgTmFtZVNldChjb25zdCBOYW1lU2V0 JiBvbGQpOwoKCiAgIE5hbWVTZXQmIG9wZXJhdG9yPShjb25zdCBOYW1lU2V0JiByaHMpOwoK Cn07CgpleHRlcm4gc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgcywg Y29uc3QgTmFtZVNldCYgbnNldCk7Cgp9CiMgNDEgInNweGxwLmgiIDIKCm5hbWVzcGFjZSBz b3BsZXgKewpjbGFzcyBTb1BsZXg7CiMgNzIgInNweGxwLmgiCmNsYXNzIFNQeExQIDogcHJv dGVjdGVkIExQUm93U2V0LCBwcm90ZWN0ZWQgTFBDb2xTZXQKewogICBmcmllbmQgY2xhc3Mg U1B4QmFzaXM7CiAgIGZyaWVuZCBjbGFzcyBTUHhTY2FsZXI7CiAgIGZyaWVuZCBjbGFzcyBT UHhFcXVpbGk7CiAgIGZyaWVuZCBpbnQgZ2V0bWFyc3ogKFNvUGxleCopOwogICBmcmllbmQg aW50IGdldG1hcnR6IChTb1BsZXgqKTsKCgogICBmcmllbmQgc3RkOjpvc3RyZWFtJiBvcGVy YXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGNvbnN0IFNQeExQJiBscCk7CgoKCgoKCgpwdWJs aWM6CgogICBlbnVtIFNQeFNlbnNlCiAgIHsKICAgICAgTUFYSU1JWkUgPSAxLAogICAgICBN SU5JTUlaRSA9IC0xCiAgIH07CnByaXZhdGU6CiAgIFNQeFNlbnNlIHRoZXNlbnNlOwoKcHVi bGljOgoKCgoKICAgaW50IG5Sb3dzKCkgY29uc3QKICAgewogICAgICByZXR1cm4gTFBSb3dT ZXQ6Om51bSgpOwogICB9CgoKICAgaW50IG5Db2xzKCkgY29uc3QKICAgewogICAgICByZXR1 cm4gTFBDb2xTZXQ6Om51bSgpOwogICB9CgoKICAgdm9pZCBnZXRSb3coaW50IGksIExQUm93 JiByb3cpIGNvbnN0OwoKCiAgIHZvaWQgZ2V0Um93KFNQeFJvd0lkIGlkLCBMUFJvdyYgcm93 KSBjb25zdAogICB7CiAgICAgIGdldFJvdyhudW1iZXIoaWQpLCByb3cpOwogICB9CgoKICAg dm9pZCBnZXRSb3dzKGludCBzdGFydCwgaW50IGVuZCwgTFBSb3dTZXQmIHNldCkgY29uc3Q7 CgoKICAgY29uc3QgU1ZlY3RvciYgcm93VmVjdG9yKGludCBpKSBjb25zdAogICB7CiAgICAg IHJldHVybiBMUFJvd1NldDo6cm93VmVjdG9yKGkpOwogICB9CgoKICAgY29uc3QgU1ZlY3Rv ciYgcm93VmVjdG9yKFNQeFJvd0lkJiBpZCkgY29uc3QKICAgewogICAgICByZXR1cm4gTFBS b3dTZXQ6OnJvd1ZlY3RvcihpZCk7CiAgIH0KCgogICBjb25zdCBWZWN0b3ImIHJocygpIGNv bnN0CiAgIHsKICAgICAgcmV0dXJuIExQUm93U2V0OjpyaHMoKTsKICAgfQoKCiAgIFJlYWwg cmhzKGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUFJvd1NldDo6cmhzKGkpOwog ICB9CgogICBSZWFsJiByaHMoaW50IGkpCiAgIHsKICAgICAgcmV0dXJuIExQUm93U2V0Ojpy aHMoaSk7CiAgIH0KCgogICBSZWFsIHJocyhTUHhSb3dJZCYgaWQpIGNvbnN0CiAgIHsKICAg ICAgcmV0dXJuIExQUm93U2V0OjpyaHMoaWQpOwogICB9CgoKICAgY29uc3QgVmVjdG9yJiBs aHMoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUFJvd1NldDo6bGhzKCk7CiAgIH0KCgog ICBSZWFsIGxocyhpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gTFBSb3dTZXQ6Omxo cyhpKTsKICAgfQoKICAgUmVhbCYgbGhzKGludCBpKQogICB7CiAgICAgIHJldHVybiBMUFJv d1NldDo6bGhzKGkpOwogICB9CgoKICAgUmVhbCBsaHMoU1B4Um93SWQmIGlkKSBjb25zdAog ICB7CiAgICAgIHJldHVybiBMUFJvd1NldDo6bGhzKGlkKTsKICAgfQoKCiAgIExQUm93OjpU eXBlIHJvd1R5cGUoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIExQUm93U2V0Ojp0 eXBlKGkpOwogICB9CgoKICAgTFBSb3c6OlR5cGUgcm93VHlwZShjb25zdCBTUHhSb3dJZCYg aWQpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIExQUm93U2V0Ojp0eXBlKGlkKTsKICAgfQoK CiAgIHZvaWQgZ2V0Q29sKGludCBpLCBMUENvbCYgY29sdW1uKSBjb25zdDsKCgogICB2b2lk IGdldENvbChTUHhDb2xJZCBpZCwgTFBDb2wmIGNvbCkgY29uc3QKICAgewogICAgICBnZXRD b2wobnVtYmVyKGlkKSwgY29sKTsKICAgfQoKCiAgIHZvaWQgZ2V0Q29scyhpbnQgc3RhcnQs IGludCBlbmQsIExQQ29sU2V0JiBzZXQpIGNvbnN0OwoKCiAgIGNvbnN0IFNWZWN0b3ImIGNv bFZlY3RvcihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gTFBDb2xTZXQ6OmNvbFZl Y3RvcihpKTsKICAgfQoKCiAgIGNvbnN0IFNWZWN0b3ImIGNvbFZlY3RvcihTUHhDb2xJZCYg aWQpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIExQQ29sU2V0Ojpjb2xWZWN0b3IoaWQpOwog ICB9CgoKICAgdm9pZCBnZXRPYmooVmVjdG9yJiBvYmopIGNvbnN0OwoKCiAgIFJlYWwgb2Jq KGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVybiBzcHhTZW5zZSgpICogbWF4T2JqKGkp OwogICB9CgoKICAgUmVhbCBvYmooU1B4Q29sSWQmIGlkKSBjb25zdAogICB7CiAgICAgIHJl dHVybiBzcHhTZW5zZSgpICogbWF4T2JqKGlkKTsKICAgfQoKCgoKCgoKICAgY29uc3QgVmVj dG9yJiBtYXhPYmooKSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUENvbFNldDo6b2JqKCk7 CiAgIH0KCgogICBSZWFsIG1heE9iaihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4g TFBDb2xTZXQ6Om9iaihpKTsKICAgfQoKICAgUmVhbCYgbWF4T2JqKGludCBpKQogICB7CiAg ICAgIHJldHVybiBMUENvbFNldDo6b2JqKGkpOwogICB9CgoKCiAgIFJlYWwgbWF4T2JqKFNQ eENvbElkJiBpZCkgY29uc3QKICAgewogICAgICByZXR1cm4gTFBDb2xTZXQ6Om9iaihpZCk7 CiAgIH0KCgogICBjb25zdCBWZWN0b3ImIHVwcGVyKCkgY29uc3QKICAgewogICAgICByZXR1 cm4gTFBDb2xTZXQ6OnVwcGVyKCk7CiAgIH0KCgogICBSZWFsIHVwcGVyKGludCBpKSBjb25z dAogICB7CiAgICAgIHJldHVybiBMUENvbFNldDo6dXBwZXIoaSk7CiAgIH0KCiAgIFJlYWwm IHVwcGVyKGludCBpKQogICB7CiAgICAgIHJldHVybiBMUENvbFNldDo6dXBwZXIoaSk7CiAg IH0KCgogICBSZWFsIHVwcGVyKFNQeENvbElkJiBpZCkgY29uc3QKICAgewogICAgICByZXR1 cm4gTFBDb2xTZXQ6OnVwcGVyKGlkKTsKICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgbG93ZXIo KSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUENvbFNldDo6bG93ZXIoKTsKICAgfQoKCiAg IFJlYWwgbG93ZXIoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIExQQ29sU2V0Ojps b3dlcihpKTsKICAgfQoKICAgUmVhbCYgbG93ZXIoaW50IGkpCiAgIHsKICAgICAgcmV0dXJu IExQQ29sU2V0Ojpsb3dlcihpKTsKICAgfQoKCiAgIFJlYWwgbG93ZXIoU1B4Q29sSWQmIGlk KSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUENvbFNldDo6bG93ZXIoaWQpOwogICB9CgoK ICAgU1B4U2Vuc2Ugc3B4U2Vuc2UoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVzZW5z ZTsKICAgfQoKCiAgIGludCBudW1iZXIoY29uc3QgU1B4Um93SWQmIGlkKSBjb25zdAogICB7 CiAgICAgIHJldHVybiBMUFJvd1NldDo6bnVtYmVyKGlkKTsKICAgfQoKCiAgIGludCBudW1i ZXIoY29uc3QgU1B4Q29sSWQmIGlkKSBjb25zdAogICB7CiAgICAgIHJldHVybiBMUENvbFNl dDo6bnVtYmVyKGlkKTsKICAgfQoKCiAgIGludCBudW1iZXIoY29uc3QgU1B4SWQmIGlkKSBj b25zdAogICB7CiAgICAgIHJldHVybiAoaWQudHlwZSgpID09IFNQeElkOjpDT0xfSUQpCiAg ICAgICAgID8gTFBDb2xTZXQ6Om51bWJlcihpZCkKICAgICAgICAgOiBMUFJvd1NldDo6bnVt YmVyKGlkKTsKICAgfQoKCiAgIFNQeFJvd0lkIHJJZChpbnQgbikgY29uc3QKICAgewogICAg ICByZXR1cm4gU1B4Um93SWQoTFBSb3dTZXQ6OmtleShuKSk7CiAgIH0KCgogICBTUHhDb2xJ ZCBjSWQoaW50IG4pIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIFNQeENvbElkKExQQ29sU2V0 OjprZXkobikpOwogICB9CgoKCgoKCiAgIHZpcnR1YWwgdm9pZCBhZGRSb3coY29uc3QgTFBS b3cmIHJvdykKICAgewogICAgICBkb0FkZFJvdyhyb3cpOwogICB9CgogICB2aXJ0dWFsIHZv aWQgYWRkUm93KFNQeFJvd0lkJiBpZCwgY29uc3QgTFBSb3cmIHJvdykKICAgewogICAgICBh ZGRSb3cocm93KTsKICAgICAgaWQgPSBySWQoblJvd3MoKSAtIDEpOwogICB9CgoKICAgdmly dHVhbCB2b2lkIGFkZFJvd3MoY29uc3QgTFBSb3dTZXQmIHBzZXQpCiAgIHsKICAgICAgZG9B ZGRSb3dzKHBzZXQpOwogICB9CgogICB2aXJ0dWFsIHZvaWQgYWRkUm93cyhTUHhSb3dJZCBp ZFtdLCBjb25zdCBMUFJvd1NldCYgc2V0KTsKCgogICB2aXJ0dWFsIHZvaWQgYWRkQ29sKGNv bnN0IExQQ29sJiBjb2wpCiAgIHsKICAgICAgZG9BZGRDb2woY29sKTsKICAgfQoKICAgdmly dHVhbCB2b2lkIGFkZENvbChTUHhDb2xJZCYgaWQsIGNvbnN0IExQQ29sJiBjb2wpCiAgIHsK ICAgICAgYWRkQ29sKGNvbCk7CiAgICAgIGlkID0gY0lkKG5Db2xzKCkgLSAxKTsKICAgfQoK CiAgIHZpcnR1YWwgdm9pZCBhZGRDb2xzKGNvbnN0IExQQ29sU2V0JiBwc2V0KQogICB7CiAg ICAgIGRvQWRkQ29scyhwc2V0KTsKICAgfQoKICAgdmlydHVhbCB2b2lkIGFkZENvbHMoU1B4 Q29sSWQgaWRbXSwgY29uc3QgTFBDb2xTZXQmIHNldCk7CgoKCgoKCgogICB2aXJ0dWFsIHZv aWQgcmVtb3ZlUm93KGludCBpKQogICB7CiAgICAgIGRvUmVtb3ZlUm93KGkpOwogICB9CgoK ICAgdmlydHVhbCB2b2lkIHJlbW92ZVJvdyhTUHhSb3dJZCBpZCkKICAgewogICAgICByZW1v dmVSb3cobnVtYmVyKGlkKSk7CiAgIH0KIyA0MTcgInNweGxwLmgiCiAgIHZpcnR1YWwgdm9p ZCByZW1vdmVSb3dzKGludCBwZXJtW10pCiAgIHsKICAgICAgZG9SZW1vdmVSb3dzKHBlcm0p OwogICB9CgoKICAgdmlydHVhbCB2b2lkIHJlbW92ZVJvd3MoU1B4Um93SWQgaWRbXSwgaW50 IG4sIGludCBwZXJtW10gPSAwKTsKIyA0MzMgInNweGxwLmgiCiAgIHZpcnR1YWwgdm9pZCBy ZW1vdmVSb3dzKGludCBudW1zW10sIGludCBuLCBpbnQgcGVybVtdID0gMCk7CgoKICAgdmly dHVhbCB2b2lkIHJlbW92ZVJvd1JhbmdlKGludCBzdGFydCwgaW50IGVuZCwgaW50IHBlcm1b XSA9IDApOwoKCiAgIHZpcnR1YWwgdm9pZCByZW1vdmVDb2woaW50IGkpCiAgIHsKICAgICAg ZG9SZW1vdmVDb2woaSk7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ29sKFNQeENv bElkIGlkKQogICB7CiAgICAgIHJlbW92ZUNvbChudW1iZXIoaWQpKTsKICAgfQojIDQ1NyAi c3B4bHAuaCIKICAgdmlydHVhbCB2b2lkIHJlbW92ZUNvbHMoaW50IHBlcm1bXSkKICAgewog ICAgICBkb1JlbW92ZUNvbHMocGVybSk7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgcmVtb3Zl Q29scyhTUHhDb2xJZCBpZFtdLCBpbnQgbiwgaW50IHBlcm1bXSA9IDApOwojIDQ3MyAic3B4 bHAuaCIKICAgdmlydHVhbCB2b2lkIHJlbW92ZUNvbHMoaW50IG51bXNbXSwgaW50IG4sIGlu dCBwZXJtW10gPSAwKTsKCgogICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ29sUmFuZ2UoaW50IHN0 YXJ0LCBpbnQgZW5kLCBpbnQgcGVybVtdID0gMCk7CgoKICAgdmlydHVhbCB2b2lkIGNsZWFy KCk7CgoKCgoKCgogICB2aXJ0dWFsIGJvb2wgcmVhZCAoc3RkOjppc3RyZWFtJiBpbiwKICAg ICAgTmFtZVNldCogcm93TmFtZXMgPSAwLCBOYW1lU2V0KiBjb2xOYW1lcyA9IDAsIERJZHhT ZXQqIGludFZhcnMgPSAwKTsKCgogICB2aXJ0dWFsIGJvb2wgcmVhZExQRiAoc3RkOjppc3Ry ZWFtJiBpbiwKICAgICAgTmFtZVNldCogcm93TmFtZXMgPSAwLCBOYW1lU2V0KiBjb2xOYW1l cyA9IDAsIERJZHhTZXQqIGludFZhcnMgPSAwKTsKCgogICB2aXJ0dWFsIGJvb2wgcmVhZE1Q UyhzdGQ6OmlzdHJlYW0mIGluLAogICAgICBOYW1lU2V0KiByb3dOYW1lcyA9IDAsIE5hbWVT ZXQqIGNvbE5hbWVzID0gMCwgRElkeFNldCogaW50VmFycyA9IDApOwoKICAgdmlydHVhbCB2 b2lkIHdyaXRlTVBTKHN0ZDo6b3N0cmVhbSYgb3V0LAogICAgICBjb25zdCBOYW1lU2V0KiBy b3dOYW1lcywgY29uc3QgTmFtZVNldCogY29sTmFtZXMsCiAgICAgIGNvbnN0IERJZHhTZXQq IHBfaW50dmFycyA9IDApIGNvbnN0OwoKCgoKCgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZU9i aihjb25zdCBWZWN0b3ImIG5ld09iaik7CgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZU9iaihp bnQgaSwgUmVhbCBuZXdWYWwpOwoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VPYmooU1B4Q29s SWQgaWQsIFJlYWwgbmV3VmFsKQogICB7CiAgICAgIGNoYW5nZU9iaihudW1iZXIoaWQpLCBu ZXdWYWwpOwogICB9CgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZUxvd2VyKGNvbnN0IFZlY3Rv ciYgbmV3TG93ZXIpOwoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VMb3dlcihpbnQgaSwgUmVh bCBuZXdMb3dlcik7CgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZUxvd2VyKFNQeENvbElkIGlk LCBSZWFsIG5ld0xvd2VyKQogICB7CiAgICAgIGNoYW5nZUxvd2VyKG51bWJlcihpZCksIG5l d0xvd2VyKTsKICAgfQoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VVcHBlcihjb25zdCBWZWN0 b3ImIG5ld1VwcGVyKTsKCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlVXBwZXIoaW50IGksIFJl YWwgbmV3VXBwZXIpOwoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VVcHBlcihTUHhDb2xJZCBp ZCwgUmVhbCBuZXdVcHBlcikKICAgewogICAgICBjaGFuZ2VVcHBlcihudW1iZXIoaWQpLCBu ZXdVcHBlcik7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlQm91bmRzKGNvbnN0IFZl Y3RvciYgbmV3TG93ZXIsIGNvbnN0IFZlY3RvciYgbmV3VXBwZXIpOwoKCiAgIHZpcnR1YWwg dm9pZCBjaGFuZ2VCb3VuZHMoaW50IGksIFJlYWwgbmV3TG93ZXIsIFJlYWwgbmV3VXBwZXIp OwoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VCb3VuZHMoU1B4Q29sSWQgaWQsIFJlYWwgbmV3 TG93ZXIsIFJlYWwgbmV3VXBwZXIpCiAgIHsKICAgICAgY2hhbmdlQm91bmRzKG51bWJlcihp ZCksIG5ld0xvd2VyLCBuZXdVcHBlcik7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdl TGhzKGNvbnN0IFZlY3RvciYgbmV3TGhzKTsKCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlTGhz KGludCBpLCBSZWFsIG5ld0xocyk7CgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZUxocyhTUHhS b3dJZCBpZCwgUmVhbCBuZXdMaHMpCiAgIHsKICAgICAgY2hhbmdlTGhzKG51bWJlcihpZCks IG5ld0xocyk7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmhzKGNvbnN0IFZlY3Rv ciYgbmV3UmhzKTsKCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmhzKGludCBpLCBSZWFsIG5l d1Jocyk7CgoKICAgdmlydHVhbCB2b2lkIGNoYW5nZVJocyhTUHhSb3dJZCBpZCwgUmVhbCBu ZXdSaHMpCiAgIHsKICAgICAgY2hhbmdlUmhzKG51bWJlcihpZCksIG5ld1Jocyk7CiAgIH0K CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmFuZ2UoY29uc3QgVmVjdG9yJiBuZXdMaHMsIGNv bnN0IFZlY3RvciYgbmV3UmhzKTsKCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmFuZ2UoaW50 IGksIFJlYWwgbmV3TGhzLCBSZWFsIG5ld1Jocyk7CgoKICAgdmlydHVhbCB2b2lkIGNoYW5n ZVJhbmdlKFNQeFJvd0lkIGlkLCBSZWFsIG5ld0xocywgUmVhbCBuZXdSaHMpCiAgIHsKICAg ICAgY2hhbmdlUmFuZ2UobnVtYmVyKGlkKSwgbmV3TGhzLCBuZXdSaHMpOwogICB9CgoKICAg dmlydHVhbCB2b2lkIGNoYW5nZVJvdyhpbnQgaSwgY29uc3QgTFBSb3cmIG5ld1Jvdyk7CgoK ICAgdmlydHVhbCB2b2lkIGNoYW5nZVJvdyhTUHhSb3dJZCBpZCwgY29uc3QgTFBSb3cmIG5l d1JvdykKICAgewogICAgICBjaGFuZ2VSb3cobnVtYmVyKGlkKSwgbmV3Um93KTsKICAgfQoK CiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VDb2woaW50IGksIGNvbnN0IExQQ29sJiBuZXdDb2wp OwoKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VDb2woU1B4Q29sSWQgaWQsIGNvbnN0IExQQ29s JiBuZXdDb2wpCiAgIHsKICAgICAgY2hhbmdlQ29sKG51bWJlcihpZCksIG5ld0NvbCk7CiAg IH0KCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlRWxlbWVudChpbnQgaSwgaW50IGosIFJlYWwg dmFsKTsKCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlRWxlbWVudChTUHhSb3dJZCByaWQsIFNQ eENvbElkIGNpZCwgUmVhbCB2YWwpCiAgIHsKICAgICAgY2hhbmdlRWxlbWVudChudW1iZXIo cmlkKSwgbnVtYmVyKGNpZCksIHZhbCk7CiAgIH0KCgogICB2aXJ0dWFsIHZvaWQgY2hhbmdl U2Vuc2UoU1B4U2Vuc2Ugc25zKQogICB7CiAgICAgIGlmIChzbnMgIT0gdGhlc2Vuc2UpCiAg ICAgICAgIExQQ29sU2V0OjpvYmooKSAqPSAtMTsKICAgICAgdGhlc2Vuc2UgPSBzbnM7CiAg IH0KCgoKCgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdDsKCgpwcm90ZWN0ZWQ6Cgog ICBjb25zdCBMUFJvd1NldCogbHByb3dzZXQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBz dGF0aWNfY2FzdDxjb25zdCBMUFJvd1NldCo+KHRoaXMpOwogICB9CgoKICAgY29uc3QgTFBD b2xTZXQqIGxwY29sc2V0KCkgY29uc3QKICAgewogICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8 Y29uc3QgTFBDb2xTZXQqPih0aGlzKTsKICAgfQoKCgoKICAgU1ZTZXQqIHJvd3NldCgpCiAg IHsKICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U1ZTZXQqPihzdGF0aWNfY2FzdDxM UFJvd1NldCo+KHRoaXMpKTsKICAgfQogICBTVlNldCogY29sc2V0KCkKICAgewogICAgICBy ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxTVlNldCo+KHN0YXRpY19jYXN0PExQQ29sU2V0Kj4o dGhpcykpOwogICB9CgoKCiAgIHZpcnR1YWwgdm9pZCBkb1JlbW92ZVJvdyhpbnQgaSk7Cgog ICB2aXJ0dWFsIHZvaWQgZG9SZW1vdmVDb2xzKGludCBwZXJtW10pOwoKICAgdmlydHVhbCB2 b2lkIGRvUmVtb3ZlUm93cyhpbnQgcGVybVtdKTsKCiAgIHZpcnR1YWwgdm9pZCBkb1JlbW92 ZUNvbChpbnQgaSk7CgoKICAgdmlydHVhbCB2b2lkIGFkZGVkUm93cyhpbnQpCiAgIHt9Cgog ICB2aXJ0dWFsIHZvaWQgYWRkZWRDb2xzKGludCkKICAge30KCiAgIHZvaWQgYWRkZWQyU2V0 KFNWU2V0JiBzZXQsIGNvbnN0IFNWU2V0JiBhZGQsIGludCBuKTsKCgpwcml2YXRlOgogICBT VmVjdG9yJiBjb2xWZWN0b3JfdyhpbnQgaSkKICAgewogICAgICByZXR1cm4gTFBDb2xTZXQ6 OmNvbFZlY3Rvcl93KGkpOwogICB9CiAgIFNWZWN0b3ImIHJvd1ZlY3Rvcl93KGludCBpKQog ICB7CiAgICAgIHJldHVybiBMUFJvd1NldDo6cm93VmVjdG9yX3coaSk7CiAgIH0KCiAgIHZv aWQgZG9BZGRSb3cgKGNvbnN0IExQUm93JiByb3cpOwogICB2b2lkIGRvQWRkUm93cyhjb25z dCBMUFJvd1NldCYgc2V0KTsKICAgdm9pZCBkb0FkZENvbCAoY29uc3QgTFBDb2wmIGNvbCk7 CiAgIHZvaWQgZG9BZGRDb2xzKGNvbnN0IExQQ29sU2V0JiBzZXQpOwoKCgogICBjb25zdCBW ZWN0b3ImIG9iaigpIGNvbnN0OwoKCgoKCgpwdWJsaWM6CgoKCiAgIFNQeExQKCkKICAgewog ICAgICBTUHhMUDo6Y2xlYXIoKTsKICAgfQoKCiAgIHZpcnR1YWwgflNQeExQKCkKICAge30K CgogICBTUHhMUCYgb3BlcmF0b3I9KGNvbnN0IFNQeExQJiBvbGQpCiAgIHsKICAgICAgaWYg KHRoaXMgIT0gJm9sZCkKICAgICAgewogICAgICAgICBMUFJvd1NldDo6b3BlcmF0b3I9KG9s ZCk7CiAgICAgICAgIExQQ29sU2V0OjpvcGVyYXRvcj0ob2xkKTsKICAgICAgICAgdGhlc2Vu c2UgPSBvbGQudGhlc2Vuc2U7CiAgICAgIH0KICAgICAgcmV0dXJuICp0aGlzOwogICB9CgoK Cn07CgoKfQojIDMxICJzb3BsZXguaCIgMgojIDEgInNweGJhc2lzLmgiIDEKIyAyNCAic3B4 YmFzaXMuaCIKI2RlZmluZSBfU1BYQkFTSVNfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9B U1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5k ZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9f QVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUv YXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNU ICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRf cGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcgInNweGJhc2lz LmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMjkgInNweGJhc2lzLmgiIDIKIyAxICJz cHhscC5oIiAxCiMgMzAgInNweGJhc2lzLmgiIDIKIyAxICJzdmVjdG9yLmgiIDEKIyAzMSAi c3B4YmFzaXMuaCIgMgojIDEgInNzdmVjdG9yLmgiIDEKIyAzMiAic3B4YmFzaXMuaCIgMgoj IDEgImRhdGFhcnJheS5oIiAxCiMgMzMgInNweGJhc2lzLmgiIDIKIyAxICJzbGluc29sdmVy LmgiIDEKIyAyNCAic2xpbnNvbHZlci5oIgojZGVmaW5lIF9TTElOU09MVkVSX0hfIAoKCiMg MSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNz ZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNT RVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NF UlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+ CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIp IChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi IDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNU ICgwKSkKIyAyOCAic2xpbnNvbHZlci5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDMw ICJzbGluc29sdmVyLmgiIDIKIyAxICJzdmVjdG9yLmgiIDEKIyAzMSAic2xpbnNvbHZlci5o IiAyCiMgMSAic3N2ZWN0b3IuaCIgMQojIDMyICJzbGluc29sdmVyLmgiIDIKIyAxICJkc3Zl Y3Rvci5oIiAxCiMgMzMgInNsaW5zb2x2ZXIuaCIgMgojIDEgImR2ZWN0b3IuaCIgMQojIDM0 ICJzbGluc29sdmVyLmgiIDIKIyAxICJkaWR4c2V0LmgiIDEKIyAzNSAic2xpbnNvbHZlci5o IiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0NiAic2xpbnNvbHZlci5oIgpjbGFzcyBTTGlu U29sdmVyCnsKcHVibGljOgoKICAgZW51bSBTdGF0dXMKICAgewoKCiAgICAgIE9LID0gMCwK CgogICAgICBJTlNUQUJMRSA9IDEsCgogICAgICBTSU5HVUxBUiA9IDIsCgogICAgICBVTkxP QURFRCA9IDQsCgogICAgICBFUlJPUiA9IDgKICAgfTsKCgoKCiAgIHZpcnR1YWwgU3RhdHVz IHN0YXR1cygpIGNvbnN0ID0gMDsKCgogICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSA9IDA7CgoK ICAgdmlydHVhbCBpbnQgbWVtb3J5KCkgY29uc3QgPSAwOwoKCiAgIHZpcnR1YWwgaW50IGRp bSgpIGNvbnN0ID0gMDsKCgoKCgogICB2aXJ0dWFsIFN0YXR1cyBsb2FkKGNvbnN0IFNWZWN0 b3IqIHZlY1tdLCBpbnQgZGltKSA9IDA7CgoKCgoKICAgdmlydHVhbCBSZWFsIHN0YWJpbGl0 eSgpIGNvbnN0ID0gMDsKCgoKCgoKCiAgIHZpcnR1YWwgU3RhdHVzIGNoYW5nZShpbnQgaWR4 LCBjb25zdCBTVmVjdG9yJiBzdWJzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IFNTVmVjdG9yKiBldGEgPSAwKSA9IDA7CgoKICAgdmlydHVhbCBib29sIGlzQ29uc2lzdGVu dCgpIGNvbnN0ID0gMDsKIyAxMzAgInNsaW5zb2x2ZXIuaCIKICAgdmlydHVhbCB2b2lkIHNv bHZlMnJpZ2h0KFZlY3RvciYgeCwgVmVjdG9yJiBiKSA9IDA7CgogICB2aXJ0dWFsIHZvaWQg c29sdmUycmlnaHQoVmVjdG9yJiB4LCBTU1ZlY3RvciYgYikgPSAwOwoKICAgdmlydHVhbCB2 b2lkIHNvbHZlMnJpZ2h0KFNTVmVjdG9yJiB4LCBWZWN0b3ImIGIpID0gMDsKCiAgIHZpcnR1 YWwgdm9pZCBzb2x2ZTJyaWdodChTU1ZlY3RvciYgeCwgU1NWZWN0b3ImIGIpID0gMDsKCgog ICB2aXJ0dWFsIHZvaWQgc29sdmVSaWdodCAoVmVjdG9yJiB4LCBjb25zdCBWZWN0b3ImIGIp ID0gMDsKCiAgIHZpcnR1YWwgdm9pZCBzb2x2ZVJpZ2h0IChWZWN0b3ImIHgsIGNvbnN0IFNW ZWN0b3ImIGIpID0gMDsKCiAgIHZpcnR1YWwgdm9pZCBzb2x2ZVJpZ2h0IChTU1ZlY3RvciYg eCwgY29uc3QgVmVjdG9yJiBiKSA9IDA7CgogICB2aXJ0dWFsIHZvaWQgc29sdmVSaWdodCAo U1NWZWN0b3ImIHgsIGNvbnN0IFNWZWN0b3ImIGIpID0gMDsKCgoKCgoKICAgdmlydHVhbCB2 b2lkIHNvbHZlUmlnaHQ0dXBkYXRlKFNTVmVjdG9yJiB4LCBjb25zdCBTVmVjdG9yJiBiKSA9 IDA7CgoKICAgdmlydHVhbCB2b2lkIHNvbHZlMnJpZ2h0NHVwZGF0ZShTU1ZlY3RvciYgeCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3ImIHR3bywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVmVjdG9yJiBiLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTVmVjdG9yJiByaHMpID0gMDsKCgogICB2 aXJ0dWFsIHZvaWQgc29sdmUybGVmdChWZWN0b3ImIHgsIFZlY3RvciYgYikgPSAwOwoKICAg dmlydHVhbCB2b2lkIHNvbHZlMmxlZnQoVmVjdG9yJiB4LCBTU1ZlY3RvciYgYikgPSAwOwoK ICAgdmlydHVhbCB2b2lkIHNvbHZlMmxlZnQoU1NWZWN0b3ImIHgsIFZlY3RvciYgYikgPSAw OwoKICAgdmlydHVhbCB2b2lkIHNvbHZlMmxlZnQoU1NWZWN0b3ImIHgsIFNTVmVjdG9yJiBi KSA9IDA7CgoKICAgdmlydHVhbCB2b2lkIHNvbHZlTGVmdCAoVmVjdG9yJiB4LCBjb25zdCBT VmVjdG9yJiBiKSA9IDA7CgogICB2aXJ0dWFsIHZvaWQgc29sdmVMZWZ0IChWZWN0b3ImIHgs IGNvbnN0IFZlY3RvciYgYikgPSAwOwoKICAgdmlydHVhbCB2b2lkIHNvbHZlTGVmdCAoU1NW ZWN0b3ImIHgsIGNvbnN0IFNWZWN0b3ImIGIpID0gMDsKCiAgIHZpcnR1YWwgdm9pZCBzb2x2 ZUxlZnQgKFNTVmVjdG9yJiB4LCBjb25zdCBWZWN0b3ImIGIpID0gMDsKCgogICB2aXJ0dWFs IHZvaWQgc29sdmVMZWZ0IChTU1ZlY3RvciYgeCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgVmVjdG9yJiB0d28sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNWZWN0 b3ImIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTVmVjdG9yJiByaHMyKSA9IDA7 CgoKCgoKCiAgIHZpcnR1YWwgflNMaW5Tb2x2ZXIoKQogICB7fQoKCn07Cgp9CiMgMzQgInNw eGJhc2lzLmgiIDIKIyAxICJuYW1lc2V0LmgiIDEKIyAzNSAic3B4YmFzaXMuaCIgMgoKbmFt ZXNwYWNlIHNvcGxleAp7CmNsYXNzIFNvUGxleDsKIyA3MSAic3B4YmFzaXMuaCIKY2xhc3Mg U1B4QmFzaXMKewpwdWJsaWM6CgoKCgoKICAgZW51bSBTUHhTdGF0dXMKICAgewogICAgICBO T19QUk9CTEVNID0gLTIsCiAgICAgIFNJTkdVTEFSID0gLTEsCiAgICAgIFJFR1VMQVIgPSAw LAogICAgICBEVUFMID0gMSwKICAgICAgUFJJTUFMID0gMiwKICAgICAgT1BUSU1BTCA9IDMs CiAgICAgIFVOQk9VTkRFRCA9IDQsCiAgICAgIElORkVBU0lCTEUgPSA1CiAgIH07CgoKCiAg IGNsYXNzIERlc2MKICAgewogICBwdWJsaWM6CiMgMTcwICJzcHhiYXNpcy5oIgogICAgICBl bnVtIFN0YXR1cwogICAgICB7CiAgICAgICAgIFBfT05fTE9XRVIgPSAtNCwKICAgICAgICAg UF9PTl9VUFBFUiA9IC0yLAogICAgICAgICBQX0ZSRUUgPSAtMSwKCiAgICAgICAgIFBfRklY RUQgPSBQX09OX1VQUEVSICsgUF9PTl9MT1dFUiwKICAgICAgICAgRF9GUkVFID0gMSwKICAg ICAgICAgRF9PTl9VUFBFUiA9IDIsCiAgICAgICAgIERfT05fTE9XRVIgPSA0LAoKICAgICAg ICAgRF9PTl9CT1RIID0gRF9PTl9MT1dFUiArIERfT05fVVBQRVIsCiAgICAgICAgIERfVU5E RUZJTkVEID0gOAogICAgICB9OwogICAgICBmcmllbmQgY2xhc3MgU1B4QmFzaXM7CiAgICAg IGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29u c3QgU3RhdHVzJiBzdGF0KTsKCnByaXZhdGU6CiAgICAgIERhdGFBcnJheSA8IFN0YXR1cyA+ IHJvd3N0YXQ7CiAgICAgIERhdGFBcnJheSA8IFN0YXR1cyA+IGNvbHN0YXQ7CiAgICAgIERh dGFBcnJheSA8IFN0YXR1cyA+ICogc3RhdDsKICAgICAgRGF0YUFycmF5IDwgU3RhdHVzID4g KiBjb3N0YXQ7CgpwdWJsaWM6CgogICAgICBpbnQgbkNvbHMoKSBjb25zdAogICAgICB7CiAg ICAgICAgIHJldHVybiBjb2xzdGF0LnNpemUoKTsKICAgICAgfQoKICAgICAgaW50IG5Sb3dz KCkgY29uc3QKICAgICAgewogICAgICAgICByZXR1cm4gcm93c3RhdC5zaXplKCk7CiAgICAg IH0KCgogICAgICBpbnQgZGltKCkgY29uc3QKICAgICAgewogICAgICAgICByZXR1cm4gc3Rh dC0+c2l6ZSgpOwogICAgICB9CgoKICAgICAgaW50IGNvRGltKCkgY29uc3QKICAgICAgewog ICAgICAgICByZXR1cm4gY29zdGF0LT5zaXplKCk7CiAgICAgIH0KCgogICAgICBTdGF0dXMm IHJvd1N0YXR1cyhpbnQgaSkKICAgICAgewogICAgICAgICByZXR1cm4gcm93c3RhdFtpXTsK ICAgICAgfQoKICAgICAgU3RhdHVzIHJvd1N0YXR1cyhpbnQgaSkgY29uc3QKICAgICAgewog ICAgICAgICByZXR1cm4gcm93c3RhdFtpXTsKICAgICAgfQoKCiAgICAgIGNvbnN0IFN0YXR1 cyogcm93U3RhdHVzKHZvaWQpIGNvbnN0CiAgICAgIHsKICAgICAgICAgcmV0dXJuIHJvd3N0 YXQuZ2V0X2NvbnN0X3B0cigpOwogICAgICB9CgoKICAgICAgU3RhdHVzJiBjb2xTdGF0dXMo aW50IGkpCiAgICAgIHsKICAgICAgICAgcmV0dXJuIGNvbHN0YXRbaV07CiAgICAgIH0KCiAg ICAgIFN0YXR1cyBjb2xTdGF0dXMoaW50IGkpIGNvbnN0CiAgICAgIHsKICAgICAgICAgcmV0 dXJuIGNvbHN0YXRbaV07CiAgICAgIH0KCgogICAgICBjb25zdCBTdGF0dXMqIGNvbFN0YXR1 cyh2b2lkKSBjb25zdAogICAgICB7CiAgICAgICAgIHJldHVybiBjb2xzdGF0LmdldF9jb25z dF9wdHIoKTsKICAgICAgfQoKCiAgICAgIFN0YXR1cyYgc3RhdHVzKGludCBpKQogICAgICB7 CiAgICAgICAgIHJldHVybiAoKnN0YXQpW2ldOwogICAgICB9CgogICAgICBTdGF0dXMgc3Rh dHVzKGludCBpKSBjb25zdAogICAgICB7CiAgICAgICAgIHJldHVybiAoKnN0YXQpW2ldOwog ICAgICB9CgoKICAgICAgY29uc3QgU3RhdHVzKiBzdGF0dXModm9pZCkgY29uc3QKICAgICAg ewogICAgICAgICByZXR1cm4gc3RhdC0+Z2V0X2NvbnN0X3B0cigpOwogICAgICB9CgoKICAg ICAgU3RhdHVzJiBjb1N0YXR1cyhpbnQgaSkKICAgICAgewogICAgICAgICByZXR1cm4gKCpj b3N0YXQpW2ldOwogICAgICB9CgogICAgICBTdGF0dXMgY29TdGF0dXMoaW50IGkpIGNvbnN0 CiAgICAgIHsKICAgICAgICAgcmV0dXJuICgqY29zdGF0KVtpXTsKICAgICAgfQoKCiAgICAg IGNvbnN0IFN0YXR1cyogY29TdGF0dXModm9pZCkgY29uc3QKICAgICAgewogICAgICAgICBy ZXR1cm4gY29zdGF0LT5nZXRfY29uc3RfcHRyKCk7CiAgICAgIH0KCgogICAgICB2b2lkIHJl U2l6ZShpbnQgcm93RGltLCBpbnQgY29sRGltKTsKCgogICAgICB2b2lkIGR1bXAoKSBjb25z dDsKCgogICAgICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0OwogICB9OwoKcHJvdGVjdGVk OgogICBTb1BsZXgqIHRoZUxQOwojIDMwNyAic3B4YmFzaXMuaCIKICAgRGF0YUFycmF5IDwg U1B4SWQgPiB0aGVCYXNlSWQ7CgoKICAgRGF0YUFycmF5IDwgY29uc3QgU1ZlY3RvciogPiBt YXRyaXg7CgoKICAgYm9vbCBtYXRyaXhJc1NldHVwOwoKCgoKICAgU0xpblNvbHZlciogZmFj dG9yOwogICBib29sIGZhY3Rvcml6ZWQ7CiMgMzI4ICJzcHhiYXNpcy5oIgogICBpbnQgbWF4 VXBkYXRlczsKCgoKCgoKICAgUmVhbCBub256ZXJvRmFjdG9yOwoKCgoKCiAgIGludCBpdGVy Q291bnQ7CiAgIGludCB1cGRhdGVDb3VudDsKICAgaW50IG56Q291bnQ7CiAgIFJlYWwgbnpG YWM7CiAgIFJlYWwgbGFzdEZpbGw7CgogICBTUHhJZCBsYXN0aW47CiAgIFNQeElkIGxhc3Rv dXQ7CiAgIGludCBsYXN0aWR4OwoKcHJpdmF0ZToKICAgU1B4U3RhdHVzIHRoZXN0YXR1czsK ICAgRGVzYyB0aGVkZXNjOwoKcHVibGljOgoKCgogICBTUHhTdGF0dXMgc3RhdHVzKCkgY29u c3QKICAgewogICAgICByZXR1cm4gdGhlc3RhdHVzOwogICB9CgoKICAgdm9pZCBzZXRTdGF0 dXMoU1B4U3RhdHVzIHN0YXQpCiAgIHsKICAgICAgOwogICAgIAoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHRoZXN0YXR1 cyA9IHN0YXQ7CiAgICAgIGlmKCBzdGF0ID09IE5PX1BST0JMRU0gKQogICAgICAgICBpbnZh bGlkYXRlKCk7CiAgIH0KCgogICBjb25zdCBEZXNjJiBkZXNjKCkgY29uc3QKICAgewogICAg ICByZXR1cm4gdGhlZGVzYzsKICAgfQoKICAgRGVzYyYgZGVzYygpCiAgIHsKICAgICAgcmV0 dXJuIHRoZWRlc2M7CiAgIH0KCgogICBEZXNjOjpTdGF0dXMgZHVhbENvbFN0YXR1cyhpbnQg aSkgY29uc3Q7CgoKICAgRGVzYzo6U3RhdHVzIGR1YWxTdGF0dXMoY29uc3QgU1B4Q29sSWQm IGlkKSBjb25zdDsKCgogICBEZXNjOjpTdGF0dXMgZHVhbFJvd1N0YXR1cyhpbnQgaSkgY29u c3Q7CgoKICAgRGVzYzo6U3RhdHVzIGR1YWxTdGF0dXMoY29uc3QgU1B4Um93SWQmIGlkKSBj b25zdDsKCgoKCgoKICAgRGVzYzo6U3RhdHVzIGR1YWxTdGF0dXMoY29uc3QgU1B4SWQmIGlk KSBjb25zdAogICB7CiAgICAgIHJldHVybiBpZC5pc1NQeFJvd0lkKCkKICAgICAgICAgPyBk dWFsU3RhdHVzKFNQeFJvd0lkKGlkKSkKICAgICAgICAgOiBkdWFsU3RhdHVzKFNQeENvbElk KGlkKSk7CiAgIH0KCgoKCgoKICAgU1B4SWQmIGJhc2VJZChpbnQgaSkKICAgewogICAgICBy ZXR1cm4gdGhlQmFzZUlkW2ldOwogICB9CgogICBTUHhJZCBiYXNlSWQoaW50IGkpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIHRoZUJhc2VJZFtpXTsKICAgfQoKCiAgIGNvbnN0IFNWZWN0 b3ImIGJhc2VWZWMoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgCiMgNDI5ICJzcHhiYXNpcy5o IiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDQyOSAic3B4YmFzaXMuaCIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuICptYXRyaXhbaV07 CiAgIH0KCgogICBTUHhJZCBsYXN0RW50ZXJlZCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJu IGxhc3RpbjsKICAgfQoKCiAgIFNQeElkIGxhc3RMZWZ0KCkgY29uc3QKICAgewogICAgICBy ZXR1cm4gbGFzdG91dDsKICAgfQoKCiAgIGludCBsYXN0SW5kZXgoKSBjb25zdAogICB7CiAg ICAgIHJldHVybiBsYXN0aWR4OwogICB9CgoKICAgaW50IGxhc3RVcGRhdGUoKSBjb25zdAog ICB7CiAgICAgIHJldHVybiB1cGRhdGVDb3VudDsKICAgfQoKCiAgIGludCBpdGVyYXRpb24o KSBjb25zdAogICB7CiAgICAgIHJldHVybiBpdGVyQ291bnQ7CiAgIH0KCgogICBTb1BsZXgq IHNvbHZlcigpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHRoZUxQOwogICB9CiMgNDgxICJz cHhiYXNpcy5oIgogICBWZWN0b3ImIG11bHRCYXNlV2l0aChWZWN0b3ImIHgpIGNvbnN0Owoj IDQ5MiAic3B4YmFzaXMuaCIKICAgVmVjdG9yJiBtdWx0V2l0aEJhc2UoVmVjdG9yJiB4KSBj b25zdDsKCgogICBSZWFsIHN0YWJpbGl0eSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGZh Y3Rvci0+c3RhYmlsaXR5KCk7CiAgIH0KCgoKICAgdm9pZCBzb2x2ZTIgKFZlY3RvciYgeCwg VmVjdG9yJiByaHMpCiAgIHsKICAgICAgOwogICAgICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rv cml6ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlMnJpZ2h0KHgsIHJocyk7CiAgIH0KCiAgIHZv aWQgc29sdmUyIChWZWN0b3ImIHgsIFNTVmVjdG9yJiByaHMpCiAgIHsKICAgICAgOwogICAg ICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlMnJp Z2h0KHgsIHJocyk7CiAgIH0KCiAgIHZvaWQgc29sdmUyIChTU1ZlY3RvciYgeCwgVmVjdG9y JiByaHMpCiAgIHsKICAgICAgOwogICAgICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgp OwogICAgICBmYWN0b3ItPnNvbHZlMnJpZ2h0KHgsIHJocyk7CiAgIH0KCiAgIHZvaWQgc29s dmUyIChTU1ZlY3RvciYgeCwgU1NWZWN0b3ImIHJocykKICAgewogICAgICA7CiAgICAgIGlm ICghZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7CiAgICAgIGZhY3Rvci0+c29sdmUycmlnaHQo eCwgcmhzKTsKICAgfQoKICAgdm9pZCBzb2x2ZSAoVmVjdG9yJiB4LCBjb25zdCBWZWN0b3Im IHJocykKICAgewogICAgICA7CiAgICAgIGlmICghZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7 CiAgICAgIGZhY3Rvci0+c29sdmVSaWdodCh4LCByaHMpOwogICB9CgogICB2b2lkIHNvbHZl IChWZWN0b3ImIHgsIGNvbnN0IFNWZWN0b3ImIHJocykKICAgewogICAgICA7CiAgICAgICBp ZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgpOwogICAgICAgZmFjdG9yLT5zb2x2ZVJpZ2h0 KHgsIHJocyk7CiAgIH0KCiAgIHZvaWQgc29sdmUgKFNTVmVjdG9yJiB4LCBjb25zdCBTVmVj dG9yJiByaHMpCiAgIHsKICAgICAgOwogICAgICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6 ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlUmlnaHQoeCwgcmhzKTsKICAgfQoKICAgdm9pZCBz b2x2ZSAoU1NWZWN0b3ImIHgsIGNvbnN0IFZlY3RvciYgcmhzKQogICB7CiAgICAgIDsKICAg ICAgaWYgKCFmYWN0b3JpemVkKSBmYWN0b3JpemUoKTsKICAgICAgZmFjdG9yLT5zb2x2ZVJp Z2h0KHgsIHJocyk7CiAgIH0KIyA1NjcgInNweGJhc2lzLmgiCiAgIHZvaWQgc29sdmU0dXBk YXRlKFNTVmVjdG9yJiB4LCBjb25zdCBTVmVjdG9yJiByaHMpCiAgIHsKICAgICAgOwogICAg ICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlUmln aHQ0dXBkYXRlKHgsIHJocyk7CiAgIH0KCiAgIHZvaWQgc29sdmU0dXBkYXRlKFNTVmVjdG9y JiB4LCBWZWN0b3ImIHksCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNWZWN0b3ImIHJo c3gsIFNTVmVjdG9yJiByaHN5KQogICB7CiAgICAgIDsKICAgICAgaWYgKCFmYWN0b3JpemVk KSBmYWN0b3JpemUoKTsKICAgICAgZmFjdG9yLT5zb2x2ZTJyaWdodDR1cGRhdGUoeCwgeSwg cmhzeCwgcmhzeSk7CiAgIH0KCgoKCgogICB2b2lkIGNvU29sdmUyKFZlY3RvciYgeCwgVmVj dG9yJiByaHMpCiAgIHsKICAgICAgOwogICAgICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6 ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlMmxlZnQoeCwgcmhzKTsKICAgfQoKICAgdm9pZCBj b1NvbHZlMihWZWN0b3ImIHgsIFNTVmVjdG9yJiByaHMpCiAgIHsKICAgICAgOwogICAgICBp ZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgpOwogICAgICBmYWN0b3ItPnNvbHZlMmxlZnQo eCwgcmhzKTsKICAgfQoKICAgdm9pZCBjb1NvbHZlMihTU1ZlY3RvciYgeCwgVmVjdG9yJiBy aHMpCiAgIHsKICAgICAgOwogICAgICBpZiAoIWZhY3Rvcml6ZWQpIGZhY3Rvcml6ZSgpOwog ICAgICBmYWN0b3ItPnNvbHZlMmxlZnQoeCwgcmhzKTsKICAgfQoKICAgdm9pZCBjb1NvbHZl MihTU1ZlY3RvciYgeCwgU1NWZWN0b3ImIHJocykKICAgewogICAgICA7CiAgICAgIGlmICgh ZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7CiAgICAgIGZhY3Rvci0+c29sdmUybGVmdCh4LCBy aHMpOwogICB9CgogICB2b2lkIGNvU29sdmUoVmVjdG9yJiB4LCBjb25zdCBWZWN0b3ImIHJo cykKICAgewogICAgICA7CiAgICAgIGlmICghZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7CiAg ICAgIGZhY3Rvci0+c29sdmVMZWZ0KHgsIHJocyk7CiAgIH0KCiAgIHZvaWQgY29Tb2x2ZShW ZWN0b3ImIHgsIGNvbnN0IFNWZWN0b3ImIHJocykKICAgewogICAgICA7CiAgICAgIGlmICgh ZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7CiAgICAgIGZhY3Rvci0+c29sdmVMZWZ0KHgsIHJo cyk7CiAgIH0KCiAgIHZvaWQgY29Tb2x2ZShTU1ZlY3RvciYgeCwgY29uc3QgU1ZlY3RvciYg cmhzKQogICB7CiAgICAgIDsKICAgICAgaWYgKCFmYWN0b3JpemVkKSBmYWN0b3JpemUoKTsK ICAgICAgZmFjdG9yLT5zb2x2ZUxlZnQoeCwgcmhzKTsKICAgfQojIDY0OCAic3B4YmFzaXMu aCIKICAgdm9pZCBjb1NvbHZlKFNTVmVjdG9yJiB4LCBjb25zdCBWZWN0b3ImIHJocykKICAg ewogICAgICA7CiAgICAgIGlmICghZmFjdG9yaXplZCkgZmFjdG9yaXplKCk7CiAgICAgIGZh Y3Rvci0+c29sdmVMZWZ0KHgsIHJocyk7CiAgIH0KCgogICB2b2lkIGNvU29sdmUoU1NWZWN0 b3ImIHgsIFZlY3RvciYgeSwKICAgICAgICAgICAgICAgICBjb25zdCBTVmVjdG9yJiByaHN4 LCBTU1ZlY3RvciYgcmhzeSkKICAgewogICAgICA7CiAgICAgIGlmICghZmFjdG9yaXplZCkg ZmFjdG9yaXplKCk7CiAgICAgIGZhY3Rvci0+c29sdmVMZWZ0KHgsIHksIHJoc3gsIHJoc3kp OwogICB9CiMgNjcxICJzcHhiYXNpcy5oIgogICB2b2lkIGFkZGVkUm93cyhpbnQgbik7Cgog ICB2b2lkIHJlbW92ZWRSb3coaW50IGkpOwoKCiAgIHZvaWQgcmVtb3ZlZFJvd3MoaW50IHBl cm1bXSk7CgogICB2b2lkIGFkZGVkQ29scyhpbnQgbik7CgogICB2b2lkIHJlbW92ZWRDb2wo aW50IGkpOwoKCiAgIHZvaWQgcmVtb3ZlZENvbHMoaW50IHBlcm1bXSk7CgogICB2b2lkIGNo YW5nZWRSb3coaW50KTsKCiAgIHZvaWQgY2hhbmdlZENvbChpbnQpOwoKICAgdm9pZCBjaGFu Z2VkRWxlbWVudChpbnQsIGludCk7CiMgNzIzICJzcHhiYXNpcy5oIgogICB2aXJ0dWFsIHZv aWQgY2hhbmdlKGludCBpLCBTUHhJZCYgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IFNWZWN0b3IqIGVudGVyVmVjLCBjb25zdCBTU1ZlY3RvciogZXRhID0gMCk7CgoKICAg dmlydHVhbCBib29sIHJlYWRCYXNpcyhzdGQ6OmlzdHJlYW0mIGluLAogICAgICBjb25zdCBO YW1lU2V0JiByb3dOYW1lcywgY29uc3QgTmFtZVNldCYgY29sTmFtZXMpOwoKCiAgIHZpcnR1 YWwgdm9pZCB3cml0ZUJhc2lzKHN0ZDo6b3N0cmVhbSYgb3MsCiAgICAgIGNvbnN0IE5hbWVT ZXQmIHJvd25hbWVzLCBjb25zdCBOYW1lU2V0JiBjb2xuYW1lcyk7CgoKCgoKCiAgIHZpcnR1 YWwgdm9pZCBsb2FkRGVzYyhjb25zdCBEZXNjJik7CgoKICAgdmlydHVhbCB2b2lkIGxvYWRT b2x2ZXIoU0xpblNvbHZlciogc29sdmVyKTsKCgoKCgogICB2aXJ0dWFsIHZvaWQgbG9hZChT b1BsZXgqIGxwKTsKCgogICB2aXJ0dWFsIHZvaWQgdW5Mb2FkKCkKICAgewogICAgICA7CiAg ICAgIHRoZUxQID0gMDsKICAgICAgc2V0U3RhdHVzKE5PX1BST0JMRU0pOwogICB9CgoKCgoK ICAgdm9pZCBpbnZhbGlkYXRlKCk7CgoKICAgdm9pZCBkdW1wKCk7CgoKICAgYm9vbCBpc0Nv bnNpc3RlbnQoKSBjb25zdDsKCgoKCgoKICAgU1B4QmFzaXMoKTsKCgogICB2aXJ0dWFsIH5T UHhCYXNpcygpCiAgIHt9CgoKCnByb3RlY3RlZDoKCgoKCiAgIHZvaWQgbG9hZE1hdHJpeFZl Y3MoKTsKCgoKCgoKCiAgIHZvaWQgcmVEaW0oKTsKCgogICB2aXJ0dWFsIGludCBkb0ZhY3Rv cml6ZSgpOwoKCiAgIHZpcnR1YWwgdm9pZCBmYWN0b3JpemUoKTsKCgogICB2b2lkIHNldFJl cCgpOwoKfTsKCn0KIyAzMiAic29wbGV4LmgiIDIKIyAxICJhcnJheS5oIiAxCiMgMjQgImFy cmF5LmgiCiNkZWZpbmUgX0FSUkFZX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0Lmgi IDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJU X0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFz c2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VS VF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2Vy dC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkp CiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJv cihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJhcnJheS5oIiAyCgoj IDEgIm1lc3NhZ2UuaCIgMQojIDIwICJtZXNzYWdlLmgiCm5hbWVzcGFjZSBzb3BsZXgKewoK ZXh0ZXJuIGJvb2wgbXNnaW5jb25zaXN0ZW50KGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IGNo YXIqIGZpbGUsIGludCBsaW5lKTsKCiNkZWZpbmUgTVNHaW5jb25zaXN0ZW50KG5hbWUpIG1z Z2luY29uc2lzdGVudChuYW1lLCBfX0ZJTEVfXywgX19MSU5FX18pCgp9CiMgMjkgImFycmF5 LmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDY0ICJhcnJheS5oIgp0ZW1wbGF0ZSA8IGNs YXNzIFQgPgpjbGFzcyBBcnJheQp7CnByb3RlY3RlZDoKICAgaW50IG51bTsKICAgVCogZGF0 YTsKCnB1YmxpYzoKCiAgIFQmIG9wZXJhdG9yW10oaW50IG4pCiAgIHsKICAgICAgCiMgNzUg ImFycmF5LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNzUgImFycmF5 LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIGRh dGFbbl07CiAgIH0KCiAgIGNvbnN0IFQmIG9wZXJhdG9yW10oaW50IG4pIGNvbnN0CiAgIHsK ICAgICAgCiMgODEgImFycmF5LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkp CiMgODEgImFycmF5LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAg ICAgcmV0dXJuIGRhdGFbbl07CiAgIH0KCgogICB2b2lkIGFwcGVuZChpbnQgbikKICAgewog ICAgICBpbnNlcnQoc2l6ZSgpLCBuKTsKICAgfQoKICAgdm9pZCBhcHBlbmQoaW50IG4sIGNv bnN0IFQqIHBfYXJyYXkpCiAgIHsKICAgICAgaW5zZXJ0KHNpemUoKSwgbiwgcF9hcnJheSk7 CiAgIH0KCiAgIHZvaWQgYXBwZW5kKGNvbnN0IEFycmF5PFQ+JiBwX2FycmF5KQogICB7CiAg ICAgIGluc2VydChzaXplKCksIHBfYXJyYXkpOwogICB9CgoKICAgdm9pZCBpbnNlcnQoaW50 IGksIGludCBuKQogICB7CiAgICAgIAojIDEwNCAiYXJyYXkuaCIgMyA0CiAgICAgKHN0YXRp Y19jYXN0PHZvaWQ+ICgwKSkKIyAxMDQgImFycmF5LmgiCiAgICAgICAgICAgICAgICAgICAg ICAgIDsKICAgICAgaWYgKG4gPiAwKQogICAgICB7CiAgICAgICAgIGludCBrOwogICAgICAg ICBUICpvbGRkYXRhID0gZGF0YTsKICAgICAgICAgZGF0YSA9IG5ldyBUW3NpemUoKSArIG5d OwogICAgICAgICAKIyAxMTAgImFycmF5LmgiIDMgNAogICAgICAgIChzdGF0aWNfY2FzdDx2 b2lkPiAoMCkpCiMgMTEwICJhcnJheS5oIgogICAgICAgICAgICAgICAgICAgICAgICAgOwog ICAgICAgICBpZiAoc2l6ZSgpID4gMCkKICAgICAgICAgewogICAgICAgICAgICBmb3IgKGsg PSAwOyBrIDwgaTsgKytrKQogICAgICAgICAgICAgICBkYXRhW2tdID0gb2xkZGF0YVtrXTsK ICAgICAgICAgICAgZm9yICg7IGsgPCBzaXplKCk7ICsraykKICAgICAgICAgICAgICAgZGF0 YVtrICsgbl0gPSBvbGRkYXRhW2tdOwogICAgICAgICAgICBkZWxldGVbXSBvbGRkYXRhOwog ICAgICAgICB9CiAgICAgICAgIG51bSArPSBuOwogICAgICB9CiAgIH0KCgogICB2b2lkIGlu c2VydChpbnQgaSwgaW50IG4sIGNvbnN0IFQqIHBfYXJyYXkpCiAgIHsKICAgICAgaW5zZXJ0 KGksIG4pOwogICAgICBmb3IgKG4tLTsgbiA+PSAwOyAtLW4pCiAgICAgICAgIGRhdGFbbiAr IGldID0gcF9hcnJheVtuXTsKICAgfQoKCiAgIHZvaWQgaW5zZXJ0KGludCBpLCBjb25zdCBB cnJheTxUPiYgcF9hcnJheSkKICAgewogICAgICBpbnQgbiA9IHBfYXJyYXkuc2l6ZSgpOwog ICAgICBpbnNlcnQoaSwgbik7CiAgICAgIGZvciAobi0tOyBuID49IDA7IC0tbikKICAgICAg ICAgZGF0YVtuICsgaV0gPSBwX2FycmF5LmRhdGFbbl07CiAgIH0KCgogICB2b2lkIHJlbW92 ZShpbnQgbiA9IDAsIGludCBtID0gMSkKICAgewogICAgICAKIyAxNDMgImFycmF5LmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTQzICJhcnJheS5oIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgaWYgKG0gPiAwICYmIG4gPCBzaXplKCkp CiAgICAgIHsKICAgICAgICAgVCAqb2xkZGF0YSA9IGRhdGE7CiAgICAgICAgIG0gLT0gKG4g KyBtIDw9IHNpemUoKSkgPyAwIDogbiArIG0gLSBzaXplKCk7CiAgICAgICAgIG51bSAtPSBt OwogICAgICAgICBpZiAobnVtID4gMCkKICAgICAgICAgewogICAgICAgICAgICBpbnQgaTsK ICAgICAgICAgICAgZGF0YSA9IG5ldyBUW251bV07CiAgICAgICAgICAgIGZvciAoaSA9IDA7 IGkgPCBuOyArK2kpCiAgICAgICAgICAgICAgIGRhdGFbaV0gPSBvbGRkYXRhW2ldOwogICAg ICAgICAgICBmb3IgKDsgaSA8IG51bTsgKytpKQogICAgICAgICAgICAgICBkYXRhW2ldID0g b2xkZGF0YVtpICsgbV07CiAgICAgICAgIH0KICAgICAgICAgZGVsZXRlW10gb2xkZGF0YTsK ICAgICAgfQogICB9CgoKICAgdm9pZCBjbGVhcigpCiAgIHsKICAgICAgaWYgKG51bSA+IDAp CiAgICAgIHsKICAgICAgICAgbnVtID0gMDsKICAgICAgICAgZGVsZXRlW10gZGF0YTsKICAg ICAgfQogICB9CgoKICAgaW50IHNpemUoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBudW07 CiAgIH0KCgogICB2b2lkIHJlU2l6ZShpbnQgbmV3c2l6ZSkKICAgewogICAgICBpZiAobmV3 c2l6ZSA8IHNpemUoKSkKICAgICAgICAgcmVtb3ZlKG5ld3NpemUsIHNpemUoKSAtIG5ld3Np emUpOwogICAgICBlbHNlIGlmIChuZXdzaXplID4gc2l6ZSgpKQogICAgICAgICBhcHBlbmQo bmV3c2l6ZSAtIHNpemUoKSk7CiAgIH0KCgoKCgoKICAgQXJyYXk8VD4mIG9wZXJhdG9yPShj b25zdCBBcnJheTxUPiYgcmhzKQogICB7CiAgICAgIGlmICh0aGlzICE9ICZyaHMpCiAgICAg IHsKICAgICAgICAgcmVTaXplKHJocy5zaXplKCkpOwogICAgICAgICBmb3IgKGludCBpID0g MDsgaSA8IHNpemUoKTsgKytpKQogICAgICAgICAgICBkYXRhW2ldID0gcmhzLmRhdGFbaV07 CiAgICAgIH0KICAgICAgcmV0dXJuICp0aGlzOwogICB9CgoKCgogICBBcnJheShpbnQgbiA9 IDApCiAgICAgIDogZGF0YSgwKQogICB7CiAgICAgIAojIDIwOSAiYXJyYXkuaCIgMyA0CiAg ICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAyMDkgImFycmF5LmgiCiAgICAgICAgICAg ICAgICAgICA7CiAgICAgIG51bSA9IG47CiAgICAgIGlmIChudW0gPiAwKQogICAgICB7CiAg ICAgICAgIGRhdGEgPSBuZXcgVFtudW1dOwogICAgICAgICAKIyAyMTQgImFycmF5LmgiIDMg NAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjE0ICJhcnJheS5oIgogICAg ICAgICAgICAgICAgICAgICAgICAgOwogICAgICB9CiAgIH0KCgogICBBcnJheShjb25zdCBB cnJheTxUPiYgb2xkKQogICAgICA6IG51bShvbGQubnVtKQogICB7CiAgICAgIGlmIChudW0g PiAwKQogICAgICB7CiAgICAgICAgIGRhdGEgPSBuZXcgVFtudW1dOwogICAgICAgICAKIyAy MjUgImFycmF5LmgiIDMgNAogICAgICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMjI1 ICJhcnJheS5oIgogICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAqdGhpcyA9 IG9sZDsKICAgICAgfQogICB9CgoKICAgfkFycmF5KCkKICAgewogICAgICBpZiAobnVtID4g MCkKICAgICAgICAgZGVsZXRlW10gZGF0YTsKICAgfQoKCiAgIGJvb2wgaXNDb25zaXN0ZW50 KCkgY29uc3QKICAgewogICAgICBpZiAobnVtIDwgMCB8fCAobnVtID4gMCAmJiBkYXRhID09 IDApKQogICAgICAgICByZXR1cm4gbXNnaW5jb25zaXN0ZW50KCJBcnJheSIsICJhcnJheS5o IiwgMjQxKTsKCiAgICAgIHJldHVybiB0cnVlOwogICB9Cn07Cn0KIyAzMyAic29wbGV4Lmgi IDIKIyAxICJyYW5kb20uaCIgMQojIDI0ICJyYW5kb20uaCIKI2RlZmluZSBfUkFORE9NX0hf IAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVk ZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYg X19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUg X0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8 dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQo ZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lE X0NBU1QgKDApKQojIDI3ICJyYW5kb20uaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiNkZWZp bmUgUlNURVAgMTEwMzUxNTI0NQojZGVmaW5lIFJESVZJREUgNjU1MzYKI2RlZmluZSBSQURE IDEyMzQ1CiNkZWZpbmUgUk1VTFQgMzI3NjgKIyA0MiAicmFuZG9tLmgiCmNsYXNzIFJhbmRv bQp7CnByaXZhdGU6CiAgIFJlYWwgdGhlbWluOwogICBSZWFsIHRoZW1heDsKCiAgIHVuc2ln bmVkIGxvbmcgbmV4dDsKCgogICBSZWFsIG5leHRfcmFuZG9tICgpCiAgIHsKICAgICAgbmV4 dCA9IG5leHQgKiAxMTAzNTE1MjQ1ICsgMTIzNDU7CiAgICAgIHJldHVybiBsYXN0X3JhbmRv bSgpOwogICB9CgoKICAgUmVhbCBsYXN0X3JhbmRvbSgpIGNvbnN0CiAgIHsKICAgICAgUmVh bCBpID0gaW50ICgobmV4dCAvIDY1NTM2KSAlIDMyNzY4KTsKICAgICAgcmV0dXJuICggaSAv IDMyNzY4ICk7CiAgIH0KCnB1YmxpYzoKCiAgIFJlYWwgbWluKCkgY29uc3QKICAgewogICAg ICByZXR1cm4gdGhlbWluOwogICB9CgogICBSZWFsIG1heCgpIGNvbnN0CiAgIHsKICAgICAg cmV0dXJuIHRoZW1heDsKICAgfQoKCgoKCgogICBvcGVyYXRvciBSZWFsKCkKICAgewogICAg ICByZXR1cm4gKHRoZW1pbiArICh0aGVtYXggLSB0aGVtaW4pICogbmV4dF9yYW5kb20oKSk7 CiAgIH0KCgogICBSZWFsIGxhc3QoKSBjb25zdAogICB7CiAgICAgIHJldHVybiAodGhlbWlu ICsgKHRoZW1heCAtIHRoZW1pbikgKiBsYXN0X3JhbmRvbSgpKTsKICAgfQoKCiAgIHZvaWQg c2V0TWluKFJlYWwgcF9taW4pCiAgIHsKICAgICAgdGhlbWluID0gcF9taW47CiAgIH0KCgog ICB2b2lkIHNldE1heChSZWFsIHBfbWF4KQogICB7CiAgICAgIHRoZW1heCA9IHBfbWF4Owog ICB9CgoKICAgdm9pZCBzZXRTZWVkKFJlYWwgc2VlZCkKICAgewogICAgICBzZWVkID0gKHNl ZWQgLSB0aGVtaW4pIC8gKHRoZW1heCAtIHRoZW1pbik7CiAgICAgIG5leHQgPSBzdGF0aWNf Y2FzdDx1bnNpZ25lZCBpbnQ+KHNlZWQgKiAzMjc2OCAqIDY1NTM2KTsKICAgfQoKCiAgIGJv b2wgaXNDb25zaXN0ZW50KCkgY29uc3QKICAgewogICAgICByZXR1cm4gdGhlbWluIDw9IHRo ZW1heDsKICAgfQoKCgoKCgogICBSYW5kb20oUmVhbCBwX21pbiA9IDAsIFJlYWwgcF9tYXgg PSAxLCBSZWFsIHBfc2VlZCA9IDAuNSkKICAgICAgOiB0aGVtaW4ocF9taW4pLCB0aGVtYXgo cF9tYXgpCiAgIHsKICAgICAgaWYgKHBfc2VlZCA8IHBfbWluIHx8IHBfc2VlZCA+IHBfbWF4 KQogICAgICAgICBwX3NlZWQgPSAocF9taW4gKyBwX21heCkgLyAyOwogICAgICBzZXRTZWVk KHBfc2VlZCk7CiAgIH0KfTsKCn0KIyAzNCAic29wbGV4LmgiIDIKIyAxICJ1bml0dmVjdG9y LmgiIDEKIyAyNSAidW5pdHZlY3Rvci5oIgojZGVmaW5lIF9VTklUVkVDVE9SX0hfIAoKIyAx ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NF UlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VS VF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4K IyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikg KF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1Qg KDApKQojIDI4ICJ1bml0dmVjdG9yLmgiIDIKIyAxICJzcHhkZWZpbmVzLmgiIDEKIyAyOSAi dW5pdHZlY3Rvci5oIiAyCiMgMSAic3ZlY3Rvci5oIiAxCiMgMzAgInVuaXR2ZWN0b3IuaCIg MgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNDYgInVuaXR2ZWN0b3IuaCIKY2xhc3MgVW5pdFZl Y3RvciA6IHB1YmxpYyBTVmVjdG9yCnsKcHJpdmF0ZToKICAgRWxlbWVudCB0aGVtZW07CiAg IEVsZW1lbnQgdGhlbWVtMTsKCnB1YmxpYzoKCgoKCiAgIFJlYWwgdmFsdWUoaW50IG4pIGNv bnN0CiAgIHsKICAgICAgCiMgNTkgInVuaXR2ZWN0b3IuaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyA1OSAidW5pdHZlY3Rvci5oIgogICAgICAgICAgICAgICAgICAg ICA7CiAgICAgIHJldHVybiAxOwogICB9CgoKICAgVW5pdFZlY3RvcihpbnQgaSA9IDApCiAg ICAgIDogU1ZlY3RvcigyLCAmdGhlbWVtKQogICB7CiAgICAgIGFkZChpLCAxLjApOwogICB9 CgoKICAgVW5pdFZlY3Rvcihjb25zdCBVbml0VmVjdG9yJiByaHMpCiAgICAgIDogU1ZlY3Rv cigyLCAmdGhlbWVtKQogICAgICAsIHRoZW1lbSAocmhzLnRoZW1lbSkKICAgICAgLCB0aGVt ZW0xKHJocy50aGVtZW0xKQogICB7fQoKCiAgIFVuaXRWZWN0b3ImIG9wZXJhdG9yPShjb25z dCBVbml0VmVjdG9yJiByaHMpCiAgIHsKICAgICAgaWYgKCB0aGlzICE9ICZyaHMgKQogICAg ICAgICB0aGVtZW0xID0gcmhzLnRoZW1lbTE7CiAgICAgIHJldHVybiAqdGhpczsKICAgfQoK CiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7Cn07CgoKfQojIDM1ICJzb3BsZXguaCIg MgojIDEgInVwZGF0ZXZlY3Rvci5oIiAxCiMgMjUgInVwZGF0ZXZlY3Rvci5oIgojZGVmaW5l IF9VUERBVEVWRUNUT1JfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQK IyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5k ZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3Bl cnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURf Q0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMg NAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAi L3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51 bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjggInVwZGF0ZXZlY3Rvci5oIiAyCgoK IyAxICJzcHhkZWZpbmVzLmgiIDEKIyAzMSAidXBkYXRldmVjdG9yLmgiIDIKIyAxICJkdmVj dG9yLmgiIDEKIyAzMiAidXBkYXRldmVjdG9yLmgiIDIKIyAxICJzc3ZlY3Rvci5oIiAxCiMg MzMgInVwZGF0ZXZlY3Rvci5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA1NyAidXBkYXRl dmVjdG9yLmgiCmNsYXNzIFVwZGF0ZVZlY3RvciA6IHB1YmxpYyBEVmVjdG9yCnsKICAgUmVh bCB0aGV2YWw7CiAgIFNTVmVjdG9yIHRoZWRlbHRhOwoKcHVibGljOgoKICAgUmVhbCYgdmFs dWUoKQogICB7CiAgICAgIHJldHVybiB0aGV2YWw7CiAgIH0KCiAgIFJlYWwgdmFsdWUoKSBj b25zdAogICB7CiAgICAgIHJldHVybiB0aGV2YWw7CiAgIH0KCgogICBTU1ZlY3RvciYgZGVs dGEoKQogICB7CiAgICAgIHJldHVybiB0aGVkZWx0YTsKICAgfQoKICAgY29uc3QgU1NWZWN0 b3ImIGRlbHRhKCkgY29uc3QKICAgewogICAgICByZXR1cm4gdGhlZGVsdGE7CiAgIH0KCgog ICBjb25zdCBJZHhTZXQmIGlkeCgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHRoZWRlbHRh LmluZGljZXMoKTsKICAgfQoKCgoKCgogICB2b2lkIHVwZGF0ZSgpCiAgIHsKICAgICAgbXVs dEFkZCh0aGV2YWwsIHRoZWRlbHRhKTsKICAgfQoKCiAgIHZvaWQgY2xlYXIoKQogICB7CiAg ICAgIERWZWN0b3I6OmNsZWFyKCk7CiAgICAgIGNsZWFyVXBkYXRlKCk7CiAgIH0KCgogICB2 b2lkIGNsZWFyVXBkYXRlKCkKICAgewogICAgICB0aGVkZWx0YS5jbGVhcigpOwogICAgICB0 aGV2YWwgPSAwOwogICB9CgoKCiAgIHZvaWQgcmVEaW0oaW50IG5ld2RpbSkKICAgewogICAg ICBEVmVjdG9yOjpyZURpbShuZXdkaW0pOwogICAgICB0aGVkZWx0YS5yZURpbShuZXdkaW0p OwogICB9CgoKICAgVXBkYXRlVmVjdG9yJiBvcGVyYXRvcj0oY29uc3QgRFZlY3RvciYgcmhz KQogICB7CiAgICAgIGlmICggdGhpcyAhPSAmIHJocyApCiAgICAgICAgIERWZWN0b3I6Om9w ZXJhdG9yPShyaHMpOwogICAgICByZXR1cm4gKnRoaXM7CiAgIH0KCgogICBVcGRhdGVWZWN0 b3ImIG9wZXJhdG9yPShjb25zdCBVcGRhdGVWZWN0b3ImIHJocyk7CgoKICAgVXBkYXRlVmVj dG9yKGludCBwX2RpbSAsIFJlYWwgcF9lcHMgKQogICAgICA6IERWZWN0b3IgKHBfZGltKQog ICAgICAsIHRoZXZhbCAoMCkKICAgICAgLCB0aGVkZWx0YShwX2RpbSwgcF9lcHMpCiAgIHt9 CgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdDsKfTsKCgp9CiMgMzYgInNvcGxleC5o IiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKY2xhc3MgU1B4UHJpY2VyOwpjbGFzcyBTUHhSYXRp b1Rlc3RlcjsKY2xhc3MgU1B4U3RhcnRlcjsKY2xhc3MgU1B4U2NhbGVyOwpjbGFzcyBTUHhT aW1wbGlmaWVyOwojIDc3ICJzb3BsZXguaCIKY2xhc3MgU29QbGV4IDogcHVibGljIFNQeExQ LCBwcm90ZWN0ZWQgU1B4QmFzaXMKewogICBmcmllbmQgY2xhc3MgU1B4RmFzdFJUOwoKcHVi bGljOgojIDk0ICJzb3BsZXguaCIKICAgZW51bSBSZXByZXNlbnRhdGlvbgogICB7CiAgICAg IFJPVyA9IC0xLAogICAgICBDT0xVTU4gPSAxCiAgIH07CiMgMTEzICJzb3BsZXguaCIKICAg ZW51bSBUeXBlCiAgIHsKIyAxMjMgInNvcGxleC5oIgogICAgICBFTlRFUiA9IC0xLAojIDEz MiAic29wbGV4LmgiCiAgICAgIExFQVZFID0gMQogICB9OwoKCgoKCgoKICAgZW51bSBQcmlj aW5nCiAgIHsKCgoKCgoKICAgICAgRlVMTCwKIyAxNjIgInNvcGxleC5oIgogICAgICBQQVJU SUFMCiAgIH07CgogICBlbnVtIFZhclN0YXR1cwogICB7CiAgICAgIE9OX1VQUEVSLAogICAg ICBPTl9MT1dFUiwKICAgICAgRklYRUQsCiAgICAgIFpFUk8sCiAgICAgIEJBU0lDCiAgIH07 CgoKCgogICBlbnVtIFN0YXR1cwogICB7CiAgICAgIEVSUk9SID0gLTksCiAgICAgIE5PVF9J TklUID0gLTgsCiAgICAgIEFCT1JUX1RJTUUgPSAtNywKICAgICAgQUJPUlRfSVRFUiA9IC02 LAogICAgICBBQk9SVF9WQUxVRSA9IC01LAogICAgICBTSU5HVUxBUiA9IC00LAogICAgICBO T19QUk9CTEVNID0gLTMsCiAgICAgIFJFR1VMQVIgPSAtMiwKICAgICAgUlVOTklORyA9IC0x LAogICAgICBVTktOT1dOID0gMCwKICAgICAgT1BUSU1BTCA9IDEsCiAgICAgIFVOQk9VTkRF RCA9IDIsCiAgICAgIElORkVBU0lCTEUgPSAzCiAgIH07CgoKcHJpdmF0ZToKICAgVHlwZSB0 aGVUeXBlOwogICBQcmljaW5nIHRoZVByaWNpbmc7CiAgIFJlcHJlc2VudGF0aW9uIHRoZXJl cDsKICAgVGltZXIgdGhlVGltZTsKICAgaW50IG1heEl0ZXJzOwogICBSZWFsIG1heFRpbWU7 CiAgIFJlYWwgbWF4VmFsdWU7CiAgIFN0YXR1cyBtX3N0YXR1czsKCiAgIFJlYWwgdGhlZGVs dGE7CiAgIFJlYWwgdGhlU2hpZnQ7CiAgIFJlYWwgbGFzdFNoaWZ0OwogICBpbnQgbV9tYXhD eWNsZTsKICAgaW50IG1fbnVtQ3ljbGU7CiAgIGJvb2wgaW5pdGlhbGl6ZWQ7CgogICBWZWN0 b3IqIHNvbHZlVmVjdG9yMjsKICAgU1NWZWN0b3IqIHNvbHZlVmVjdG9yMnJoczsKICAgVmVj dG9yKiBjb1NvbHZlVmVjdG9yMjsKICAgU1NWZWN0b3IqIGNvU29sdmVWZWN0b3IycmhzOwoK ICAgUmVhbCBjYWNoZVByb2R1Y3RGYWN0b3I7Cgpwcm90ZWN0ZWQ6CiAgIEFycmF5IDwgVW5p dFZlY3RvciA+IHVuaXRWZWNzOwogICBjb25zdCBTVlNldCogdGhldmVjdG9yczsKICAgY29u c3QgU1ZTZXQqIHRoZWNvdmVjdG9yczsKCiAgIGludCBuTlpFczsKICAgaW50IGNvVmVjRGlt OwoKICAgRFZlY3RvciBwcmltUmhzOwogICBVcGRhdGVWZWN0b3IgcHJpbVZlYzsKICAgRFZl Y3RvciBkdWFsUmhzOwogICBVcGRhdGVWZWN0b3IgZHVhbFZlYzsKICAgVXBkYXRlVmVjdG9y IGFkZFZlYzsKCiAgIERWZWN0b3IgdGhlVVJib3VuZDsKICAgRFZlY3RvciB0aGVMUmJvdW5k OwogICBEVmVjdG9yIHRoZVVDYm91bmQ7CiAgIERWZWN0b3IgdGhlTENib3VuZDsKCgoKCgoK ICAgRFZlY3RvciB0aGVVQmJvdW5kOwogICBEVmVjdG9yIHRoZUxCYm91bmQ7CgogICBEVmVj dG9yKiB0aGVGcmhzOwogICBVcGRhdGVWZWN0b3IqIHRoZUZ2ZWM7CgogICBEVmVjdG9yKiB0 aGVDb1ByaHM7CiAgIFVwZGF0ZVZlY3RvciogdGhlQ29QdmVjOwogICBVcGRhdGVWZWN0b3Iq IHRoZVB2ZWM7CgoKICAgVXBkYXRlVmVjdG9yKiB0aGVSUHZlYzsKCiAgIFVwZGF0ZVZlY3Rv ciogdGhlQ1B2ZWM7CgoKCiAgIERWZWN0b3IqIHRoZVVib3VuZDsKICAgRFZlY3RvciogdGhl TGJvdW5kOwogICBEVmVjdG9yKiB0aGVDb1Vib3VuZDsKICAgRFZlY3RvciogdGhlQ29MYm91 bmQ7CgoKICAgRFZlY3RvciB0aGVDb1Rlc3Q7CiAgIERWZWN0b3IgdGhlVGVzdDsKCiAgIGlu dCBsZWF2ZUNvdW50OwogICBpbnQgZW50ZXJDb3VudDsKCiAgIFNQeFByaWNlciogdGhlcHJp Y2VyOwogICBTUHhSYXRpb1Rlc3RlciogdGhlcmF0aW90ZXN0ZXI7CiAgIFNQeFN0YXJ0ZXIq IHRoZXN0YXJ0ZXI7CiAgIFNQeFNjYWxlciogdGhlc2NhbGVyOwogICBTUHhTaW1wbGlmaWVy KiB0aGVzaW1wbGlmaWVyOwoKcHVibGljOgoKICAgaW50IHZlcnNpb24oKSBjb25zdAogICB7 CiAgICAgIHJldHVybiAxMjE7CiAgIH0KCiAgIFJlcHJlc2VudGF0aW9uIHJlcCgpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIHRoZXJlcDsKICAgfQoKCiAgIFR5cGUgdHlwZSgpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIHRoZVR5cGU7CiAgIH0KCgogICBQcmljaW5nIHByaWNpbmco KSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVQcmljaW5nOwogICB9CiMgMzI5ICJzb3Bs ZXguaCIKICAgdmlydHVhbCBib29sIHJlYWQoc3RkOjppc3RyZWFtJiBpbiwgTmFtZVNldCog cm93TmFtZXMgPSAwLAogICAgICBOYW1lU2V0KiBjb2xOYW1lcyA9IDAsIERJZHhTZXQqIGlu dFZhcnMgPSAwKTsKCgogICB2aXJ0dWFsIHZvaWQgbG9hZExQKGNvbnN0IFNQeExQJiBMUCk7 CgogICB2aXJ0dWFsIHZvaWQgc2V0U29sdmVyKFNMaW5Tb2x2ZXIqIHNsdSk7CgogICB2aXJ0 dWFsIHZvaWQgc2V0UHJpY2VyKFNQeFByaWNlciopOwoKICAgdmlydHVhbCB2b2lkIHNldFRl c3RlcihTUHhSYXRpb1Rlc3RlciopOwoKICAgdmlydHVhbCB2b2lkIHNldFN0YXJ0ZXIoU1B4 U3RhcnRlciopOwoKICAgdmlydHVhbCB2b2lkIHNldFNjYWxlcihTUHhTY2FsZXIqKTsKCiAg IHZpcnR1YWwgdm9pZCBzZXRTaW1wbGlmaWVyKFNQeFNpbXBsaWZpZXIqKTsKCiAgIHZpcnR1 YWwgdm9pZCBsb2FkQmFzaXMoY29uc3QgU1B4QmFzaXM6OkRlc2MmKTsKCgogICB2b2lkIHNl dFJlcCAoUmVwcmVzZW50YXRpb24gcF9yZXApOwoKICAgdm9pZCBzZXRUeXBlKFR5cGUgdHAp OwoKICAgdm9pZCBzZXRQcmljaW5nKFByaWNpbmcgcHIpOwoKCiAgIHZpcnR1YWwgdm9pZCBy ZUxvYWQoKTsKCgogICB2aXJ0dWFsIGJvb2wgcmVhZEZpbGUoY29uc3QgY2hhciogZmlsZW5h bWUsIE5hbWVTZXQqIHJvd05hbWVzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIE5h bWVTZXQqIGNvbE5hbWVzID0gMCwgRElkeFNldCogaW50VmFycyA9IDApOwoKCiAgIHZpcnR1 YWwgdm9pZCBkdW1wRmlsZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3Q7CgoKICAgdmly dHVhbCB2b2lkIGNsZWFyKCk7CgoKICAgdmlydHVhbCBib29sIHJlYWRCYXNpc0ZpbGUoY29u c3QgY2hhciogZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IE5hbWVTZXQmIHJvd05hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBOYW1lU2V0JiBjb2xOYW1lcyk7CiMgMzgzICJzb3BsZXguaCIKICAgdmlydHVhbCBTdGF0 dXMgc29sdmUoKTsKCgogICBTdGF0dXMgc3RhdHVzKCkgY29uc3Q7CgoKCgoKICAgdmlydHVh bCBSZWFsIHZhbHVlKCkgY29uc3Q7CiMgNDAxICJzb3BsZXguaCIKICAgdmlydHVhbCBTdGF0 dXMgZ2V0UHJpbWFsKFZlY3RvciYgdmVjdG9yKSBjb25zdDsKCgoKCiAgIHZpcnR1YWwgU3Rh dHVzIGdldFByaW1hbFVuc2NhbGVkKFZlY3RvciYgdmVjdG9yKSBjb25zdDsKIyA0MjEgInNv cGxleC5oIgogICB2aXJ0dWFsIFN0YXR1cyBnZXRTbGFja3MgKFZlY3RvciYgdmVjdG9yKSBj b25zdDsKIyA0NDcgInNvcGxleC5oIgogICB2aXJ0dWFsIFN0YXR1cyBnZXREdWFsIChWZWN0 b3ImIHZlY3RvcikgY29uc3Q7CiMgNDYwICJzb3BsZXguaCIKICAgdmlydHVhbCBTdGF0dXMg Z2V0UmRDb3N0IChWZWN0b3ImIHZlY3RvcikgY29uc3Q7CiMgNDc4ICJzb3BsZXguaCIKICAg dmlydHVhbCBib29sIHRlcm1pbmF0ZSAoKTsKIyA0ODcgInNvcGxleC5oIgogICBSZWFsIGVw c2lsb24oKSBjb25zdAogICB7CiAgICAgIHJldHVybiBwcmltVmVjLmRlbHRhKCkuZXBzaWxv bjsKICAgfQoKCgoKCiAgIFJlYWwgZGVsdGEoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0 aGVkZWx0YTsKICAgfQoKICAgdm9pZCBzZXREZWx0YShSZWFsIGQpOwojIDUxNCAic29wbGV4 LmgiCiAgIGludCBtYXhDeWNsZSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIG1fbWF4Q3lj bGU7CiAgIH0KCiAgIGludCBudW1DeWNsZSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIG1f bnVtQ3ljbGU7CiAgIH0KIyA1MzEgInNvcGxleC5oIgpwcml2YXRlOgoKICAgdm9pZCBsb2Nh bEFkZFJvd3MoaW50IHN0YXJ0KTsKCiAgIHZvaWQgbG9jYWxBZGRDb2xzKGludCBzdGFydCk7 Cgpwcm90ZWN0ZWQ6CgogICB2aXJ0dWFsIHZvaWQgYWRkZWRSb3dzKGludCBuKTsKCiAgIHZp cnR1YWwgdm9pZCBhZGRlZENvbHMoaW50IG4pOwoKCiAgIHZpcnR1YWwgdm9pZCBkb1JlbW92 ZVJvdyhpbnQgaSk7CgogICB2aXJ0dWFsIHZvaWQgZG9SZW1vdmVSb3dzKGludCBwZXJtW10p OwoKICAgdmlydHVhbCB2b2lkIGRvUmVtb3ZlQ29sKGludCBpKTsKCiAgIHZpcnR1YWwgdm9p ZCBkb1JlbW92ZUNvbHMoaW50IHBlcm1bXSk7CgpwdWJsaWM6CgogICB2aXJ0dWFsIHZvaWQg Y2hhbmdlT2JqKGNvbnN0IFZlY3RvciYgbmV3T2JqKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFu Z2VPYmooaW50IGksIFJlYWwgbmV3VmFsKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VPYmoo U1B4Q29sSWQgcF9pZCwgUmVhbCBwX25ld1ZhbCkKICAgewogICAgICBjaGFuZ2VPYmoobnVt YmVyKHBfaWQpLCBwX25ld1ZhbCk7CiAgIH0KCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VMb3dl cihjb25zdCBWZWN0b3ImIG5ld0xvd2VyKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VMb3dl cihpbnQgaSwgUmVhbCBuZXdMb3dlcik7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlTG93ZXIo U1B4Q29sSWQgcF9pZCwgUmVhbCBwX25ld0xvd2VyKQogICB7CiAgICAgIGNoYW5nZUxvd2Vy KG51bWJlcihwX2lkKSwgcF9uZXdMb3dlcik7CiAgIH0KCiAgIHZpcnR1YWwgdm9pZCBjaGFu Z2VVcHBlcihjb25zdCBWZWN0b3ImIG5ld1VwcGVyKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFu Z2VVcHBlcihpbnQgaSwgUmVhbCBuZXdVcHBlcik7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdl VXBwZXIoU1B4Q29sSWQgcF9pZCwgUmVhbCBwX25ld1VwcGVyKQogICB7CiAgICAgIGNoYW5n ZVVwcGVyKG51bWJlcihwX2lkKSwgcF9uZXdVcHBlcik7CiAgIH0KCiAgIHZpcnR1YWwgdm9p ZCBjaGFuZ2VCb3VuZHMoY29uc3QgVmVjdG9yJiBuZXdMb3dlciwgY29uc3QgVmVjdG9yJiBu ZXdVcHBlcik7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlQm91bmRzKGludCBpLCBSZWFsIG5l d0xvd2VyLCBSZWFsIG5ld1VwcGVyKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VCb3VuZHMo CiAgICAgIFNQeENvbElkIHBfaWQsIFJlYWwgcF9uZXdMb3dlciwgUmVhbCBwX25ld1VwcGVy KQogICB7CiAgICAgIGNoYW5nZUJvdW5kcyhudW1iZXIocF9pZCksIHBfbmV3TG93ZXIsIHBf bmV3VXBwZXIpOwogICB9CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlTGhzKGNvbnN0IFZlY3Rv ciYgbmV3TGhzKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VMaHMoaW50IGksIFJlYWwgbmV3 TGhzKTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VMaHMoU1B4Um93SWQgcF9pZCwgUmVhbCBw X25ld0xocykKICAgewogICAgICBjaGFuZ2VMaHMobnVtYmVyKHBfaWQpLCBwX25ld0xocyk7 CiAgIH0KCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VSaHMoY29uc3QgVmVjdG9yJiBuZXdSaHMp OwoKICAgdmlydHVhbCB2b2lkIGNoYW5nZVJocyhpbnQgaSwgUmVhbCBuZXdSaHMpOwoKICAg dmlydHVhbCB2b2lkIGNoYW5nZVJocyhTUHhSb3dJZCBwX2lkLCBSZWFsIHBfbmV3UmhzKQog ICB7CiAgICAgIGNoYW5nZVJocyhudW1iZXIocF9pZCksIHBfbmV3UmhzKTsKICAgfQoKICAg dmlydHVhbCB2b2lkIGNoYW5nZVJhbmdlKGNvbnN0IFZlY3RvciYgbmV3TGhzLCBjb25zdCBW ZWN0b3ImIG5ld1Jocyk7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmFuZ2UoaW50IGksIFJl YWwgbmV3TGhzLCBSZWFsIG5ld1Jocyk7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUmFuZ2Uo CiAgICAgIFNQeFJvd0lkIHBfaWQsIFJlYWwgcF9uZXdMaHMsIFJlYWwgcF9uZXdSaHMpCiAg IHsKICAgICAgY2hhbmdlUmFuZ2UobnVtYmVyKHBfaWQpLCBwX25ld0xocywgcF9uZXdSaHMp OwogICB9CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlUm93KGludCBpLCBjb25zdCBMUFJvdyYg bmV3Um93KTsKCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VSb3coU1B4Um93SWQgcF9pZCwgY29u c3QgTFBSb3cmIHBfbmV3Um93KQogICB7CiAgICAgIGNoYW5nZVJvdyhudW1iZXIocF9pZCks IHBfbmV3Um93KTsKICAgfQoKICAgdmlydHVhbCB2b2lkIGNoYW5nZUNvbChpbnQgaSwgY29u c3QgTFBDb2wmIG5ld0NvbCk7CgogICB2aXJ0dWFsIHZvaWQgY2hhbmdlQ29sKFNQeENvbElk IHBfaWQsIGNvbnN0IExQQ29sJiBwX25ld0NvbCkKICAgewogICAgICBjaGFuZ2VDb2wobnVt YmVyKHBfaWQpLCBwX25ld0NvbCk7CiAgIH0KCiAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VFbGVt ZW50KGludCBpLCBpbnQgaiwgUmVhbCB2YWwpOwoKICAgdmlydHVhbCB2b2lkIGNoYW5nZUVs ZW1lbnQoCiAgICAgIFNQeFJvd0lkIHJpZCwgU1B4Q29sSWQgY2lkLCBSZWFsIHZhbCkKICAg ewogICAgICBjaGFuZ2VFbGVtZW50KG51bWJlcihyaWQpLCBudW1iZXIoY2lkKSwgdmFsKTsK ICAgfQoKICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbnNlKFNQeFNlbnNlIHNucyk7CgoKCiAg IGludCBkaW0oKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVjb3ZlY3RvcnMtPm51bSgp OwogICB9CgogICBpbnQgY29EaW0oKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGV2ZWN0 b3JzLT5udW0oKTsKICAgfQojIDY2NiAic29wbGV4LmgiCiAgIFNQeElkIGlkKGludCBpKSBj b25zdAogICB7CiAgICAgIGlmIChyZXAoKSA9PSBST1cpCiAgICAgIHsKICAgICAgICAgU1B4 Um93SWQgcmlkID0gU1B4TFA6OnJJZChpKTsKICAgICAgICAgcmV0dXJuIFNQeElkKHJpZCk7 CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgIFNQeENvbElkIGNpZCA9IFNQ eExQOjpjSWQoaSk7CiAgICAgICAgIHJldHVybiBTUHhJZChjaWQpOwogICAgICB9CiAgIH0K CgoKCgoKICAgU1B4SWQgY29JZChpbnQgaSkgY29uc3QKICAgewogICAgICBpZiAocmVwKCkg PT0gUk9XKQogICAgICB7CiAgICAgICAgIFNQeENvbElkIGNpZCA9IFNQeExQOjpjSWQoaSk7 CiAgICAgICAgIHJldHVybiBTUHhJZChjaWQpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAg ewogICAgICAgICBTUHhSb3dJZCByaWQgPSBTUHhMUDo6cklkKGkpOwogICAgICAgICByZXR1 cm4gU1B4SWQocmlkKTsKICAgICAgfQogICB9CgoKCgoKICAgaW50IGlzSWQoU1B4SWQgcF9p ZCkgY29uc3QKICAgewogICAgICByZXR1cm4gcF9pZC5pbmZvICogdGhlcmVwID4gMDsKICAg fQoKCgoKCiAgIGludCBpc0NvSWQoU1B4SWQgcF9pZCkgY29uc3QKICAgewogICAgICByZXR1 cm4gcF9pZC5pbmZvICogdGhlcmVwIDwgMDsKICAgfQojIDcyNCAic29wbGV4LmgiCiAgIGNv bnN0IFNWZWN0b3ImIHZlY3RvcihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gKCp0 aGV2ZWN0b3JzKVtpXTsKICAgfQoKCiAgIGNvbnN0IFNWZWN0b3ImIHZlY3Rvcihjb25zdCBT UHhSb3dJZCYgcmlkKSBjb25zdAogICB7CiAgICAgIAojIDczMiAic29wbGV4LmgiIDMgNAog ICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNzMyICJzb3BsZXguaCIKICAgICAgICAg ICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiAocmVwKCkgPT0gUk9XKQogICAgICAg ICAgICAgPyAoKnRoZXZlY3RvcnMpW251bWJlcihyaWQpXQogICAgICAgICAgOiBzdGF0aWNf Y2FzdDxjb25zdCBTVmVjdG9yJj4odW5pdFZlY3NbbnVtYmVyKHJpZCldKTsKICAgfQoKICAg Y29uc3QgU1ZlY3RvciYgdmVjdG9yKGNvbnN0IFNQeENvbElkJiBjaWQpIGNvbnN0CiAgIHsK ICAgICAgCiMgNzQwICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgw KSkKIyA3NDAgInNvcGxleC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAg cmV0dXJuIChyZXAoKSA9PSBDT0xVTU4pCiAgICAgICAgICAgICA/ICgqdGhldmVjdG9ycylb bnVtYmVyKGNpZCldCiAgICAgICAgICA6IHN0YXRpY19jYXN0PGNvbnN0IFNWZWN0b3ImPih1 bml0VmVjc1tudW1iZXIoY2lkKV0pOwogICB9CiMgNzU1ICJzb3BsZXguaCIKICAgY29uc3Qg U1ZlY3RvciYgdmVjdG9yKGNvbnN0IFNQeElkJiBwX2lkKSBjb25zdAogICB7CiAgICAgIAoj IDc1NyAic29wbGV4LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNzU3 ICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgICAgcmV0dXJu IHBfaWQuaXNTUHhSb3dJZCgpCiAgICAgICAgID8gdmVjdG9yKFNQeFJvd0lkKHBfaWQpKQog ICAgICAgICA6IHZlY3RvcihTUHhDb2xJZChwX2lkKSk7CiAgIH0KCgoKCgogICBjb25zdCBT VmVjdG9yJiBjb1ZlY3RvcihpbnQgaSkgY29uc3QKICAgewogICAgICByZXR1cm4gKCp0aGVj b3ZlY3RvcnMpW2ldOwogICB9CgogICBjb25zdCBTVmVjdG9yJiBjb1ZlY3Rvcihjb25zdCBT UHhSb3dJZCYgcmlkKSBjb25zdAogICB7CiAgICAgIAojIDc3NSAic29wbGV4LmgiIDMgNAog ICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNzc1ICJzb3BsZXguaCIKICAgICAgICAg ICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiAocmVwKCkgPT0gQ09MVU1OKQogICAg ICAgICAgICAgPyAoKnRoZWNvdmVjdG9ycylbbnVtYmVyKHJpZCldCiAgICAgICAgICA6IHN0 YXRpY19jYXN0PGNvbnN0IFNWZWN0b3ImPih1bml0VmVjc1tudW1iZXIocmlkKV0pOwogICB9 CgogICBjb25zdCBTVmVjdG9yJiBjb1ZlY3Rvcihjb25zdCBTUHhDb2xJZCYgY2lkKSBjb25z dAogICB7CiAgICAgIAojIDc4MyAic29wbGV4LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2 b2lkPiAoMCkpCiMgNzgzICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAgICA7 CiAgICAgIHJldHVybiAocmVwKCkgPT0gUk9XKQogICAgICAgICAgICAgPyAoKnRoZWNvdmVj dG9ycylbbnVtYmVyKGNpZCldCiAgICAgICAgICA6IHN0YXRpY19jYXN0PGNvbnN0IFNWZWN0 b3ImPih1bml0VmVjc1tudW1iZXIoY2lkKV0pOwogICB9CgoKCgoKCgogICBjb25zdCBTVmVj dG9yJiBjb1ZlY3Rvcihjb25zdCBTUHhJZCYgcF9pZCkgY29uc3QKICAgewogICAgICAKIyA3 OTcgInNvcGxleC5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDc5NyAi c29wbGV4LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHBf aWQuaXNTUHhSb3dJZCgpCiAgICAgICAgICAgICA/IGNvVmVjdG9yKFNQeFJvd0lkKHBfaWQp KQogICAgICAgICAgOiBjb1ZlY3RvcihTUHhDb2xJZChwX2lkKSk7CiAgIH0KCiAgIGNvbnN0 IFNWZWN0b3ImIHVuaXRWZWN0b3IoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHVu aXRWZWNzW2ldOwogICB9CiMgODE2ICJzb3BsZXguaCIKICAgU1B4QmFzaXM6OkRlc2M6OlN0 YXR1cyB2YXJTdGF0dXMoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGRlc2MoKS5z dGF0dXMoaSk7CiAgIH0KCgogICBTUHhCYXNpczo6RGVzYzo6U3RhdHVzIGNvdmFyU3RhdHVz KGludCBpKSBjb25zdAogICB7CiAgICAgIHJldHVybiBkZXNjKCkuY29TdGF0dXMoaSk7CiAg IH0KCgogICBpbnQgaXNCYXNpYyhTUHhCYXNpczo6RGVzYzo6U3RhdHVzIHN0YXQpIGNvbnN0 CiAgIHsKICAgICAgcmV0dXJuIChzdGF0ICogcmVwKCkgPiAwKTsKICAgfQoKCiAgIGludCBp c0Jhc2ljKFNQeElkIHBfaWQpIGNvbnN0CiAgIHsKICAgICAgCiMgODM2ICJzb3BsZXguaCIg MyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyA4MzYgInNvcGxleC5oIgogICAg ICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiBwX2lkLmlzU1B4Um93SWQo KQogICAgICAgICA/IGlzQmFzaWMoU1B4Um93SWQocF9pZCkpCiAgICAgICAgIDogaXNCYXNp YyhTUHhDb2xJZChwX2lkKSk7CiAgIH0KCgogICBpbnQgaXNCYXNpYyhTUHhSb3dJZCByaWQp IGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGlzQmFzaWMoZGVzYygpLnJvd1N0YXR1cyhudW1i ZXIocmlkKSkpOwogICB9CgoKICAgaW50IGlzQmFzaWMoU1B4Q29sSWQgY2lkKSBjb25zdAog ICB7CiAgICAgIHJldHVybiBpc0Jhc2ljKGRlc2MoKS5jb2xTdGF0dXMobnVtYmVyKGNpZCkp KTsKICAgfQoKCiAgIGludCBpc1Jvd0Jhc2ljKGludCBpKSBjb25zdAogICB7CiAgICAgIHJl dHVybiBpc0Jhc2ljKGRlc2MoKS5yb3dTdGF0dXMoaSkpOwogICB9CgoKICAgaW50IGlzQ29s QmFzaWMoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGlzQmFzaWMoZGVzYygpLmNv bFN0YXR1cyhpKSk7CiAgIH0KCgogICBpbnQgaXNCYXNpYyhpbnQgaSkgY29uc3QKICAgewog ICAgICByZXR1cm4gaXNCYXNpYyhkZXNjKCkuc3RhdHVzKGkpKTsKICAgfQoKCiAgIGludCBp c0NvQmFzaWMoaW50IGkpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGlzQmFzaWMoZGVzYygp LmNvU3RhdHVzKGkpKTsKICAgfQojIDg4OCAic29wbGV4LmgiCiAgIFVwZGF0ZVZlY3RvciYg ZlZlYygpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuICp0aGVGdmVjOwogICB9CiMgOTAxICJz b3BsZXguaCIKICAgY29uc3QgVmVjdG9yJiBmUmhzKCkgY29uc3QKICAgewogICAgICByZXR1 cm4gKnRoZUZyaHM7CiAgIH0KCiAgIGNvbnN0IFZlY3RvciYgdWJCb3VuZCgpIGNvbnN0CiAg IHsKICAgICAgcmV0dXJuIHRoZVVCYm91bmQ7CiAgIH0KIyA5MTkgInNvcGxleC5oIgogICBW ZWN0b3ImIHViQm91bmQoKQogICB7CiAgICAgIHJldHVybiB0aGVVQmJvdW5kOwogICB9Cgog ICBjb25zdCBWZWN0b3ImIGxiQm91bmQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVM QmJvdW5kOwogICB9CiMgOTM3ICJzb3BsZXguaCIKICAgVmVjdG9yJiBsYkJvdW5kKCkKICAg ewogICAgICByZXR1cm4gdGhlTEJib3VuZDsKICAgfQojIDk1MCAic29wbGV4LmgiCiAgIGNv bnN0IFZlY3RvciYgZlRlc3QoKSBjb25zdAogICB7CiAgICAgIAojIDk1MiAic29wbGV4Lmgi IDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgOTUyICJzb3BsZXguaCIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHRoZUNvVGVzdDsKICAg fQojIDk2MyAic29wbGV4LmgiCiAgIFVwZGF0ZVZlY3RvciYgY29QdmVjKCkgY29uc3QKICAg ewogICAgICByZXR1cm4gKnRoZUNvUHZlYzsKICAgfQojIDk3NiAic29wbGV4LmgiCiAgIGNv bnN0IFZlY3RvciYgY29QcmhzKCkgY29uc3QKICAgewogICAgICByZXR1cm4gKnRoZUNvUHJo czsKICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgdWNCb3VuZCgpIGNvbnN0CiAgIHsKICAgICAg CiMgOTg0ICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyA5 ODQgInNvcGxleC5oIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0 dXJuICp0aGVDb1Vib3VuZDsKICAgfQojIDk5NiAic29wbGV4LmgiCiAgIFZlY3RvciYgdWNC b3VuZCgpCiAgIHsKICAgICAgCiMgOTk4ICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyA5OTggInNvcGxleC5oIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgcmV0dXJuICp0aGVDb1Vib3VuZDsKICAgfQoKCiAgIGNvbnN0IFZl Y3RvciYgbGNCb3VuZCgpIGNvbnN0CiAgIHsKICAgICAgCiMgMTAwNSAic29wbGV4LmgiIDMg NAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTAwNSAic29wbGV4LmgiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gKnRoZUNvTGJvdW5kOwog ICB9CiMgMTAxNyAic29wbGV4LmgiCiAgIFZlY3RvciYgbGNCb3VuZCgpCiAgIHsKICAgICAg CiMgMTAxOSAic29wbGV4LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMg MTAxOSAic29wbGV4LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICBy ZXR1cm4gKnRoZUNvTGJvdW5kOwogICB9CiMgMTAzMCAic29wbGV4LmgiCiAgIGNvbnN0IFZl Y3RvciYgY29UZXN0KCkgY29uc3QKICAgewogICAgICAKIyAxMDMyICJzb3BsZXguaCIgMyA0 CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxMDMyICJzb3BsZXguaCIKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHRoZUNvVGVzdDsKICAgfQoj IDEwNDMgInNvcGxleC5oIgogICBVcGRhdGVWZWN0b3ImIHBWZWMoKSBjb25zdAogICB7CiAg ICAgIHJldHVybiAqdGhlUHZlYzsKICAgfQoKICAgY29uc3QgVmVjdG9yJiB1cEJvdW5kKCkg Y29uc3QKICAgewogICAgICAKIyAxMDUwICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyAxMDUwICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CiAgICAgIHJldHVybiAqdGhlVWJvdW5kOwogICB9CiMgMTA2MiAic29wbGV4 LmgiCiAgIFZlY3RvciYgdXBCb3VuZCgpCiAgIHsKICAgICAgCiMgMTA2NCAic29wbGV4Lmgi IDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTA2NCAic29wbGV4LmgiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1cm4gKnRoZVVib3VuZDsK ICAgfQoKCiAgIGNvbnN0IFZlY3RvciYgbHBCb3VuZCgpIGNvbnN0CiAgIHsKICAgICAgCiMg MTA3MSAic29wbGV4LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTA3 MSAic29wbGV4LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICByZXR1 cm4gKnRoZUxib3VuZDsKICAgfQojIDEwODMgInNvcGxleC5oIgogICBWZWN0b3ImIGxwQm91 bmQoKQogICB7CiAgICAgIAojIDEwODUgInNvcGxleC5oIiAzIDQKICAgICAoc3RhdGljX2Nh c3Q8dm9pZD4gKDApKQojIDEwODUgInNvcGxleC5oIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgcmV0dXJuICp0aGVMYm91bmQ7CiAgIH0KIyAxMDk2ICJzb3BsZXgu aCIKICAgY29uc3QgVmVjdG9yJiB0ZXN0KCkgY29uc3QKICAgewogICAgICAKIyAxMDk4ICJz b3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxMDk4ICJzb3Bs ZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgcmV0dXJuIHRoZVRl c3Q7CiAgIH0KCgogICBSZWFsIGNvbXB1dGVQdmVjKGludCBpKTsKCiAgIHZvaWQgY29tcHV0 ZVB2ZWMoKTsKCiAgIFJlYWwgY29tcHV0ZVRlc3QoaW50IGkpOwoKICAgdm9pZCBjb21wdXRl VGVzdCgpOwojIDExMzUgInNvcGxleC5oIgogICB2b2lkIHNoaWZ0RnZlYygpOwoKICAgdm9p ZCBzaGlmdFB2ZWMoKTsKCgogICB2b2lkIHNoaWZ0VUJib3VuZChpbnQgaSwgUmVhbCB0bykK ICAgewogICAgICAKIyAxMTQyICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZv aWQ+ICgwKSkKIyAxMTQyICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7CiAgICAgIHRoZVNoaWZ0ICs9IHRvIC0gdGhlVUJib3VuZFtpXTsKICAgICAgdGhlVUJi b3VuZFtpXSA9IHRvOwogICB9CgogICB2b2lkIHNoaWZ0TEJib3VuZChpbnQgaSwgUmVhbCB0 bykKICAgewogICAgICAKIyAxMTQ5ICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0 PHZvaWQ+ICgwKSkKIyAxMTQ5ICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7CiAgICAgIHRoZVNoaWZ0ICs9IHRoZUxCYm91bmRbaV0gLSB0bzsKICAgICAgdGhl TEJib3VuZFtpXSA9IHRvOwogICB9CgogICB2b2lkIHNoaWZ0VVBib3VuZChpbnQgaSwgUmVh bCB0bykKICAgewogICAgICAKIyAxMTU2ICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyAxMTU2ICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA7CiAgICAgIHRoZVNoaWZ0ICs9IHRvIC0gKCp0aGVVYm91bmQpW2ldOwogICAg ICAoKnRoZVVib3VuZClbaV0gPSB0bzsKICAgfQoKICAgdm9pZCBzaGlmdExQYm91bmQoaW50 IGksIFJlYWwgdG8pCiAgIHsKICAgICAgCiMgMTE2MyAic29wbGV4LmgiIDMgNAogICAgIChz dGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTE2MyAic29wbGV4LmgiCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOwogICAgICB0aGVTaGlmdCArPSAoKnRoZUxib3VuZClbaV0gLSB0 bzsKICAgICAgKCp0aGVMYm91bmQpW2ldID0gdG87CiAgIH0KCiAgIHZvaWQgc2hpZnRVQ2Jv dW5kKGludCBpLCBSZWFsIHRvKQogICB7CiAgICAgIAojIDExNzAgInNvcGxleC5oIiAzIDQK ICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDExNzAgInNvcGxleC5oIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgdGhlU2hpZnQgKz0gdG8gLSAoKnRoZUNv VWJvdW5kKVtpXTsKICAgICAgKCp0aGVDb1Vib3VuZClbaV0gPSB0bzsKICAgfQoKICAgdm9p ZCBzaGlmdExDYm91bmQoaW50IGksIFJlYWwgdG8pCiAgIHsKICAgICAgCiMgMTE3NyAic29w bGV4LmgiIDMgNAogICAgIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgMTE3NyAic29wbGV4 LmgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICB0aGVTaGlmdCArPSAo KnRoZUNvTGJvdW5kKVtpXSAtIHRvOwogICAgICAoKnRoZUNvTGJvdW5kKVtpXSA9IHRvOwog ICB9CgogICB2b2lkIHRlc3RCb3VuZHMoKSBjb25zdDsKCgogICB2aXJ0dWFsIFJlYWwgc2hp ZnQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVTaGlmdDsKICAgfQoKICAgdmlydHVh bCB2b2lkIHVuU2hpZnQodm9pZCk7CgoKICAgdmlydHVhbCB2b2lkIHF1YWxDb25zdHJhaW50 VmlvbGF0aW9uKAogICAgICBkb3VibGUmIG1heHZpb2wsIGRvdWJsZSYgc3VtdmlvbCkgY29u c3Q7CgoKICAgdmlydHVhbCB2b2lkIHF1YWxDb25zdHJhaW50VmlvbGF0aW9uVW5zY2FsZWQo CiAgICAgIGRvdWJsZSYgbWF4dmlvbCwgZG91YmxlJiBzdW12aW9sKSBjb25zdDsKCgogICB2 aXJ0dWFsIHZvaWQgcXVhbEJvdW5kVmlvbGF0aW9uKAogICAgICBkb3VibGUmIG1heHZpb2ws IGRvdWJsZSYgc3VtdmlvbCkgY29uc3Q7CgoKICAgdmlydHVhbCB2b2lkIHF1YWxCb3VuZFZp b2xhdGlvblVuc2NhbGVkKAogICAgICBkb3VibGUmIG1heHZpb2wsIGRvdWJsZSYgc3Vtdmlv bCkgY29uc3Q7CgoKICAgdmlydHVhbCB2b2lkIHF1YWxTbGFja1Zpb2xhdGlvbihkb3VibGUm IG1heHZpb2wsIGRvdWJsZSYgc3VtdmlvbCkgY29uc3Q7CgoKICAgdmlydHVhbCB2b2lkIHF1 YWxSZENvc3RWaW9sYXRpb24oZG91YmxlJiBtYXh2aW9sLCBkb3VibGUmIHN1bXZpb2wpIGNv bnN0OwoKcHJpdmF0ZToKCiAgIHZvaWQgcGVydHVyYk1pbigKICAgICAgY29uc3QgVXBkYXRl VmVjdG9yJiB2ZWMsIFZlY3RvciYgbG93LCBWZWN0b3ImIHVwLCBSZWFsIGVwcywKICAgICAg aW50IHN0YXJ0ID0gMCwgaW50IGluY3IgPSAxKTsKCiAgIHZvaWQgcGVydHVyYk1heCgKICAg ICAgY29uc3QgVXBkYXRlVmVjdG9yJiB2ZWMsIFZlY3RvciYgbG93LCBWZWN0b3ImIHVwLCBS ZWFsIGVwcywKICAgICAgaW50IHN0YXJ0ID0gMCwgaW50IGluY3IgPSAxKTsKCiAgIFJlYWwg cGVydHVyYk1pbihjb25zdCBVcGRhdGVWZWN0b3ImIHV2ZWMsCiAgICAgIFZlY3RvciYgbG93 LCBWZWN0b3ImIHVwLCBSZWFsIGVwcywgUmVhbCBkZWx0YSwKICAgICAgY29uc3QgU1B4QmFz aXM6OkRlc2M6OlN0YXR1cyogc3RhdCwgaW50IHN0YXJ0LCBpbnQgaW5jcik7CgogICBSZWFs IHBlcnR1cmJNYXgoY29uc3QgVXBkYXRlVmVjdG9yJiB1dmVjLAogICAgICBWZWN0b3ImIGxv dywgVmVjdG9yJiB1cCwgUmVhbCBlcHMsIFJlYWwgZGVsdGEsCiAgICAgIGNvbnN0IFNQeEJh c2lzOjpEZXNjOjpTdGF0dXMqIHN0YXQsIGludCBzdGFydCwgaW50IGluY3IpOwojIDEyNTAg InNvcGxleC5oIgpwdWJsaWM6CiMgMTI1OSAic29wbGV4LmgiCiAgIHZvaWQgc2V0dXA0c29s dmUoVmVjdG9yKiBwX3ksIFNTVmVjdG9yKiBwX3JocykKICAgewogICAgICAKIyAxMjYxICJz b3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAxMjYxICJzb3Bs ZXguaCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKICAgICAgc29sdmVWZWN0b3Iy ID0gcF95OwogICAgICBzb2x2ZVZlY3RvcjJyaHMgPSBwX3JoczsKICAgfQojIDEyNzMgInNv cGxleC5oIgogICB2b2lkIHNldHVwNGNvU29sdmUoVmVjdG9yKiBwX3ksIFNTVmVjdG9yKiBw X3JocykKICAgewogICAgICAKIyAxMjc1ICJzb3BsZXguaCIgMyA0CiAgICAgKHN0YXRpY19j YXN0PHZvaWQ+ICgwKSkKIyAxMjc1ICJzb3BsZXguaCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgICAgY29Tb2x2ZVZlY3RvcjIgPSBwX3k7CiAgICAgIGNvU29sdmVWZWN0 b3IycmhzID0gcF9yaHM7CiAgIH0KCgoKCgoKCiAgIHZpcnR1YWwgUmVhbCBtYXhJbmZlYXMo KSBjb25zdDsKCgoKCgoKCiAgIGNvbnN0IFNQeEJhc2lzJiBiYXNpcygpIGNvbnN0CiAgIHsK ICAgICAgcmV0dXJuICp0aGlzOwogICB9CgogICBTUHhCYXNpcyYgYmFzaXMoKQogICB7CiAg ICAgIHJldHVybiAqdGhpczsKICAgfQoKICAgY29uc3QgU1B4UHJpY2VyKiBwcmljZXIoKSBj b25zdAogICB7CiAgICAgIHJldHVybiB0aGVwcmljZXI7CiAgIH0KCiAgIGNvbnN0IFNMaW5T b2x2ZXIqIHNsaW5Tb2x2ZXIoKSBjb25zdAogICB7CiAgICAgIHJldHVybiBTUHhCYXNpczo6 ZmFjdG9yOwogICB9CgogICBjb25zdCBTUHhSYXRpb1Rlc3RlciogcmF0aW90ZXN0ZXIoKSBj b25zdAogICB7CiAgICAgIHJldHVybiB0aGVyYXRpb3Rlc3RlcjsKICAgfQoKICAgY29uc3Qg U1B4U3RhcnRlciogc3RhcnRlcigpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHRoZXN0YXJ0 ZXI7CiAgIH0KCiAgIGNvbnN0IFNQeFNpbXBsaWZpZXIqIHNpbXBsaWZpZXIoKSBjb25zdAog ICB7CiAgICAgIHJldHVybiB0aGVzaW1wbGlmaWVyOwogICB9Cgpwcm90ZWN0ZWQ6CgogICB2 aXJ0dWFsIHZvaWQgZmFjdG9yaXplKCk7Cgpwcml2YXRlOgogICBpbnQgbGVhdmUoaW50IGkp OwogICBpbnQgZW50ZXIoU1B4SWQmIGlkKTsKCgogICBSZWFsIGNvVGVzdChpbnQsIFNQeEJh c2lzOjpEZXNjOjpTdGF0dXMpIGNvbnN0OwoKICAgdm9pZCBjb21wdXRlQ29UZXN0KCk7Cgog ICB2b2lkIHVwZGF0ZUNvVGVzdCgpOwoKCiAgIFJlYWwgdGVzdChpbnQgaSwgU1B4QmFzaXM6 OkRlc2M6OlN0YXR1cyBzdGF0KSBjb25zdDsKCiAgIHZvaWQgdXBkYXRlVGVzdCgpOwoKCiAg IHZvaWQgY29tcHV0ZUZ0ZXN0KCk7CgogICB2b2lkIHVwZGF0ZUZ0ZXN0KCk7CiMgMTM2NSAi c29wbGV4LmgiCnByb3RlY3RlZDoKCgoKCgoKCiAgIGJvb2wgaXNJbml0aWFsaXplZCgpIGNv bnN0CiAgIHsKICAgICAgcmV0dXJuIGluaXRpYWxpemVkOwogICB9CnB1YmxpYzoKIyAxMzg4 ICJzb3BsZXguaCIKICAgdmlydHVhbCB2b2lkIGluaXQoKTsKCnByb3RlY3RlZDoKCiAgIHZp cnR1YWwgdm9pZCB1bkluaXQoKQogICB7CiAgICAgIGluaXRpYWxpemVkID0gZmFsc2U7CiAg IH0KCgogICB2aXJ0dWFsIHZvaWQgcmVEaW0oKTsKCiAgIHZvaWQgY29tcHV0ZUZyaHMoKTsK CiAgIHZpcnR1YWwgdm9pZCBjb21wdXRlRnJoc1h0cmEoKTsKCiAgIHZpcnR1YWwgdm9pZCBj b21wdXRlRnJoczEoY29uc3QgVmVjdG9yJiwgY29uc3QgVmVjdG9yJik7CgogICB2b2lkIGNv bXB1dGVGcmhzMihjb25zdCBWZWN0b3ImLCBjb25zdCBWZWN0b3ImKTsKCiAgIHZpcnR1YWwg dm9pZCBjb21wdXRlRW50ZXJDb1ByaHMoKTsKCiAgIHZvaWQgY29tcHV0ZUVudGVyQ29Qcmhz NFJvdyhpbnQgaSwgaW50IG4pOwoKICAgdm9pZCBjb21wdXRlRW50ZXJDb1ByaHM0Q29sKGlu dCBpLCBpbnQgbik7CgogICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUxlYXZlQ29QcmhzKCk7Cgog ICB2b2lkIGNvbXB1dGVMZWF2ZUNvUHJoczRSb3coaW50IGksIGludCBuKTsKCiAgIHZvaWQg Y29tcHV0ZUxlYXZlQ29QcmhzNENvbChpbnQgaSwgaW50IG4pOwoKCgoKCgogICBSZWFsIG5v bmJhc2ljVmFsdWUoKSBjb25zdDsKCgogICB2aXJ0dWFsIGNvbnN0IFNWZWN0b3IqIGVudGVy VmVjdG9yKGNvbnN0IFNQeElkJiBwX2lkKQogICB7CiAgICAgIAojIDE0MzAgInNvcGxleC5o IiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQojIDE0MzAgInNvcGxleC5oIgog ICAgICAgICAgICAgICAgICAgICAgICAgICA7CiAgICAgIHJldHVybiBwX2lkLmlzU1B4Um93 SWQoKQogICAgICAgICA/ICZ2ZWN0b3IoU1B4Um93SWQocF9pZCkpIDogJnZlY3RvcihTUHhD b2xJZChwX2lkKSk7CiAgIH0KCiAgIHZpcnR1YWwgdm9pZCBnZXRMZWF2ZVZhbHMoaW50IGks CiAgICAgIFNQeEJhc2lzOjpEZXNjOjpTdGF0dXMmIGxlYXZlU3RhdCwgU1B4SWQmIGxlYXZl SWQsCiAgICAgIFJlYWwmIGxlYXZlTWF4LCBSZWFsJiBsZWF2ZWJvdW5kLCBpbnQmIGxlYXZl TnVtKTsKCiAgIHZpcnR1YWwgdm9pZCBnZXRMZWF2ZVZhbHMyKFJlYWwgbGVhdmVNYXgsIFNQ eElkIGVudGVySWQsCiAgICAgIFJlYWwmIGVudGVyQm91bmQsIFJlYWwmIG5ld1VCYm91bmQs CiAgICAgIFJlYWwmIG5ld0xCYm91bmQsIFJlYWwmIG5ld0NvUHJocyk7CgogICB2aXJ0dWFs IHZvaWQgZ2V0RW50ZXJWYWxzKFNQeElkIGlkLCBSZWFsJiBlbnRlclRlc3QsCiAgICAgIFJl YWwmIGVudGVyVUIsIFJlYWwmIGVudGVyTEIsIFJlYWwmIGVudGVyVmFsLCBSZWFsJiBlbnRl ck1heCwKICAgICAgUmVhbCYgZW50ZXJQcmljLCBTUHhCYXNpczo6RGVzYzo6U3RhdHVzJiBl bnRlclN0YXQsIFJlYWwmIGVudGVyUk8pOwoKICAgdmlydHVhbCB2b2lkIGdldEVudGVyVmFs czIoaW50IGxlYXZlSWR4LAogICAgICBSZWFsIGVudGVyTWF4LCBSZWFsJiBsZWF2ZUJvdW5k KTsKCiAgIHZpcnR1YWwgdm9pZCB1bmdldEVudGVyVmFsKFNQeElkIGVudGVySWQsIFNQeEJh c2lzOjpEZXNjOjpTdGF0dXMgZW50ZXJTdGF0LAogICAgICBSZWFsIGxlYXZlVmFsLCBjb25z dCBTVmVjdG9yJiB2ZWMpOwoKICAgdmlydHVhbCB2b2lkIHJlamVjdEVudGVyKFNQeElkIGVu dGVySWQsCiAgICAgIFJlYWwgZW50ZXJUZXN0LCBTUHhCYXNpczo6RGVzYzo6U3RhdHVzIGVu dGVyU3RhdCk7CgogICB2aXJ0dWFsIHZvaWQgcmVqZWN0TGVhdmUoaW50IGxlYXZlTnVtLCBT UHhJZCBsZWF2ZUlkLAogICAgICBTUHhCYXNpczo6RGVzYzo6U3RhdHVzIGxlYXZlU3RhdCwg Y29uc3QgU1ZlY3RvciogbmV3VmVjID0gMCk7CgogICB2aXJ0dWFsIHZvaWQgc2V0dXBQdXBk YXRlKHZvaWQpOwoKICAgdmlydHVhbCB2b2lkIGRvUHVwZGF0ZSh2b2lkKTsKCiAgIHZpcnR1 YWwgdm9pZCBjbGVhclVwZGF0ZVZlY3Modm9pZCk7CgogICB2aXJ0dWFsIHZvaWQgcGVydHVy Yk1pbkVudGVyKHZvaWQpOwoKICAgdmlydHVhbCB2b2lkIHBlcnR1cmJNYXhFbnRlcih2b2lk KTsKCiAgIHZpcnR1YWwgdm9pZCBwZXJ0dXJiTWluTGVhdmUodm9pZCk7CgogICB2aXJ0dWFs IHZvaWQgcGVydHVyYk1heExlYXZlKHZvaWQpOwoKCgoKCgogICB2b2lkIGNsZWFyRHVhbEJv dW5kcyhTUHhCYXNpczo6RGVzYzo6U3RhdHVzLCBSZWFsJiwgUmVhbCYpOwoKICAgdm9pZCBz ZXREdWFsQ29sQm91bmRzKCk7CiAgIHZvaWQgc2V0RHVhbFJvd0JvdW5kcygpOwogICB2b2lk IHNldFByaW1hbEJvdW5kcygpOwoKICAgdm9pZCBzZXRFbnRlckJvdW5kNENvbChpbnQsIGlu dCk7CiAgIHZvaWQgc2V0RW50ZXJCb3VuZDRSb3coaW50LCBpbnQpOwogICB2aXJ0dWFsIHZv aWQgc2V0RW50ZXJCb3VuZHMoKTsKCiAgIHZvaWQgc2V0TGVhdmVCb3VuZDRSb3coaW50IGks IGludCBuKTsKICAgdm9pZCBzZXRMZWF2ZUJvdW5kNENvbChpbnQgaSwgaW50IG4pOwogICB2 aXJ0dWFsIHZvaWQgc2V0TGVhdmVCb3VuZHMoKTsKCgpwdWJsaWM6CgogICB2aXJ0dWFsIHZv aWQgc2V0VGVybWluYXRpb25UaW1lKFJlYWwgdGltZSA9IGluZmluaXR5KTsKCgogICB2aXJ0 dWFsIFJlYWwgdGVybWluYXRpb25UaW1lKCkgY29uc3Q7CgoKICAgdmlydHVhbCB2b2lkIHNl dFRlcm1pbmF0aW9uSXRlcihpbnQgaXRlcmF0aW9uID0gLTEpOwoKCiAgIHZpcnR1YWwgaW50 IHRlcm1pbmF0aW9uSXRlcigpIGNvbnN0OwoKCiAgIHZpcnR1YWwgdm9pZCBzZXRUZXJtaW5h dGlvblZhbHVlKFJlYWwgdmFsdWUgPSBpbmZpbml0eSk7CgoKICAgdmlydHVhbCBSZWFsIHRl cm1pbmF0aW9uVmFsdWUoKSBjb25zdDsKCgogICB2aXJ0dWFsIFJlYWwgb2JqVmFsdWUoKSBj b25zdAogICB7CiAgICAgIHJldHVybiB2YWx1ZSgpOwogICB9CgoKICAgU3RhdHVzIGdldFJl c3VsdChSZWFsKiB2YWx1ZSA9IDAsIFZlY3RvciogcHJpbWFsID0gMCwKICAgICAgVmVjdG9y KiBzbGFja3MgPSAwLCBWZWN0b3IqIGR1YWwgPSAwLCBWZWN0b3IqIHJlZHVDb3N0ID0gMCkg Y29uc3Q7Cgpwcm90ZWN0ZWQ6CgoKICAgVmFyU3RhdHVzIGJhc2lzU3RhdHVzVG9WYXJTdGF0 dXMoIFNQeEJhc2lzOjpEZXNjOjpTdGF0dXMgc3RhdCApIGNvbnN0OwoKCiAgIFNQeEJhc2lz OjpEZXNjOjpTdGF0dXMgdmFyU3RhdHVzVG9CYXNpc1N0YXR1c1JvdyggaW50IHJvdywgVmFy U3RhdHVzIHN0YXQgKQogICAgICBjb25zdDsKCgogICBTUHhCYXNpczo6RGVzYzo6U3RhdHVz IHZhclN0YXR1c1RvQmFzaXNTdGF0dXNDb2woIGludCBjb2wsIFZhclN0YXR1cyBzdGF0ICkK ICAgICAgY29uc3Q7CgpwdWJsaWM6CgogICBWYXJTdGF0dXMgZ2V0QmFzaXNSb3dTdGF0dXMo IGludCByb3cgKSBjb25zdDsKCgogICBWYXJTdGF0dXMgZ2V0QmFzaXNDb2xTdGF0dXMoIGlu dCBjb2wgKSBjb25zdDsKCgogICBTdGF0dXMgZ2V0QmFzaXMoVmFyU3RhdHVzIHJvd3NbXSwg VmFyU3RhdHVzIGNvbHNbXSkgY29uc3Q7CgoKICAgdm9pZCBzZXRCYXNpcyhjb25zdCBWYXJT dGF0dXMgcm93c1tdLCBjb25zdCBWYXJTdGF0dXMgY29sc1tdKTsKCgogICBpbnQgaXRlcmF0 aW9ucygpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIGJhc2lzKCkuaXRlcmF0aW9uKCk7CiAg IH0KCgogICBSZWFsIHRpbWUoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVUaW1lLnVz ZXJUaW1lKCk7CiAgIH0KCiAgIGNvbnN0IExQUm93U2V0JiByb3dzKCkgY29uc3QKICAgewog ICAgICByZXR1cm4gKmxwcm93c2V0KCk7CiAgIH0KCgogICBjb25zdCBMUENvbFNldCYgY29s cygpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuICpscGNvbHNldCgpOwogICB9CgoKICAgdm9p ZCBnZXRMb3dlcihWZWN0b3ImIGx3KSBjb25zdAogICB7CiAgICAgIGx3ID0gU1B4TFA6Omxv d2VyKCk7CiAgIH0KCiAgIHZvaWQgZ2V0VXBwZXIoVmVjdG9yJiB1cHApIGNvbnN0CiAgIHsK ICAgICAgdXBwID0gU1B4TFA6OnVwcGVyKCk7CiAgIH0KCgogICB2b2lkIGdldExocyhWZWN0 b3ImIHBfbGhzKSBjb25zdAogICB7CiAgICAgIHBfbGhzID0gU1B4TFA6OmxocygpOwogICB9 CgoKICAgdm9pZCBnZXRSaHMoVmVjdG9yJiBwX3JocykgY29uc3QKICAgewogICAgICBwX3Jo cyA9IFNQeExQOjpyaHMoKTsKICAgfQoKCiAgIFNQeFNlbnNlIHNlbnNlKCkgY29uc3QKICAg ewogICAgICByZXR1cm4gc3B4U2Vuc2UoKTsKICAgfQoKCiAgIGludCBub2ZSb3dzKCkgY29u c3QKICAgewogICAgICByZXR1cm4gblJvd3MoKTsKICAgfQoKICAgaW50IG5vZkNvbHMoKSBj b25zdAogICB7CiAgICAgIHJldHVybiBuQ29scygpOwogICB9CgogICBpbnQgbm9mTlpFcygp IGNvbnN0OwoKCiAgIFNQeFJvd0lkIHJvd0lkKGludCBpKSBjb25zdAogICB7CiAgICAgIHJl dHVybiBySWQoaSk7CiAgIH0KCiAgIFNQeENvbElkIGNvbElkKGludCBpKSBjb25zdAogICB7 CiAgICAgIHJldHVybiBjSWQoaSk7CiAgIH0KCgogICBTb1BsZXgoVHlwZSB0eXBlID0gTEVB VkUsIFJlcHJlc2VudGF0aW9uIHJlcCA9IFJPVywKICAgICAgU1B4UHJpY2VyKiBwcmljID0g MCwgU1B4UmF0aW9UZXN0ZXIqIHJ0ID0gMCwKICAgICAgU1B4U3RhcnRlciogc3RhcnQgPSAw LCBTUHhTY2FsZXIqIHNjYWxlciA9IDAsCiAgICAgIFNQeFNpbXBsaWZpZXIqIHNpbXBsZSA9 IDApOwoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7Cgpwcml2YXRlOgoKICAgU29Q bGV4JiBvcGVyYXRvcj0oY29uc3QgU29QbGV4JiBiYXNlKTsKCgogICBTb1BsZXgoY29uc3Qg U29QbGV4JiBiYXNlKTsKCiAgIHZvaWQgdGVzdFZlY3MoKTsKfTsKCn0KIyAzMSAic3B4cHJp Y2VyLmgiIDIKCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA1MiAic3B4cHJpY2VyLmgiCmNsYXNz IFNQeFByaWNlcgp7CnByb3RlY3RlZDoKICAgY29uc3QgY2hhciogbV9uYW1lOwogICBTb1Bs ZXgqIHRoZXNvbHZlcjsKICAgUmVhbCB0aGVlcHM7CgpwdWJsaWM6CgoKCiAgIHZpcnR1YWwg Y29uc3QgY2hhciogZ2V0TmFtZSgpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIG1fbmFtZTsK ICAgfQoKCgoKICAgdmlydHVhbCB2b2lkIGxvYWQoU29QbGV4KiBwX3NvbHZlcikKICAgewog ICAgICB0aGVzb2x2ZXIgPSBwX3NvbHZlcjsKICAgfQoKCiAgIHZpcnR1YWwgdm9pZCBjbGVh cigpCiAgIHsKICAgICAgdGhlc29sdmVyID0gMDsKICAgfQoKCiAgIHZpcnR1YWwgU29QbGV4 KiBzb2x2ZXIoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVzb2x2ZXI7CiAgIH0KCgog ICB2aXJ0dWFsIFJlYWwgZXBzaWxvbigpIGNvbnN0CiAgIHsKICAgICAgcmV0dXJuIHRoZWVw czsKICAgfQoKCgoKICAgdmlydHVhbCB2b2lkIHNldEVwc2lsb24oUmVhbCBlcHMpCiAgIHsK ICAgICAgCiMgOTkgInNweHByaWNlci5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8dm9pZD4g KDApKQojIDk5ICJzcHhwcmljZXIuaCIKICAgICAgICAgICAgICAgICAgICAgICA7CgogICAg ICB0aGVlcHMgPSBlcHM7CiAgIH0KCgoKCgogICB2aXJ0dWFsIHZvaWQgc2V0VHlwZShTb1Bs ZXg6OlR5cGUpCiAgIHt9CgoKCgoKICAgdmlydHVhbCB2b2lkIHNldFJlcChTb1BsZXg6OlJl cHJlc2VudGF0aW9uKQogICB7fQojIDEyNiAic3B4cHJpY2VyLmgiCiAgIHZpcnR1YWwgaW50 IHNlbGVjdExlYXZlKCkgPSAwOwojIDEzOCAic3B4cHJpY2VyLmgiCiAgIHZpcnR1YWwgdm9p ZCBsZWZ0NChpbnQgLCBTUHhJZCApCiAgIHt9CiMgMTUzICJzcHhwcmljZXIuaCIKICAgdmly dHVhbCBTUHhJZCBzZWxlY3RFbnRlcigpID0gMDsKIyAxNjUgInNweHByaWNlci5oIgogICB2 aXJ0dWFsIHZvaWQgZW50ZXJlZDQoU1B4SWQgLCBpbnQgKQogICB7fQoKCgoKCgogICB2aXJ0 dWFsIHZvaWQgYWRkZWRWZWNzIChpbnQgKQogICB7fQoKICAgdmlydHVhbCB2b2lkIGFkZGVk Q29WZWNzKGludCApCiAgIHt9CgoKCgoKICAgdmlydHVhbCB2b2lkIHJlbW92ZWRWZWMoaW50 ICkKICAge30KCiAgIHZpcnR1YWwgdm9pZCByZW1vdmVkVmVjcyhjb25zdCBpbnQqICkKICAg e30KCiAgIHZpcnR1YWwgdm9pZCByZW1vdmVkQ29WZWMoaW50ICkKICAge30KCiAgIHZpcnR1 YWwgdm9pZCByZW1vdmVkQ29WZWNzKGNvbnN0IGludCogKQogICB7fQoKCiAgIHZpcnR1YWwg Ym9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdAogICB7CiAgICAgIHJldHVybiB0aGVzb2x2ZXIg IT0gMDsKICAgfQoKCgoKICAgZXhwbGljaXQgU1B4UHJpY2VyKGNvbnN0IGNoYXIqIHBfbmFt ZSkKICAgICAgOiBtX25hbWUocF9uYW1lKQogICAgICAsIHRoZXNvbHZlcigwKQogICAgICAs IHRoZWVwcygwLjApCiAgIHt9CgoKICAgdmlydHVhbCB+U1B4UHJpY2VyKCkKICAgewogICAg ICBtX25hbWUgPSAwOwogICAgICB0aGVzb2x2ZXIgPSAwOwogICB9CgoKfTsKCgp9CiMgMzIg InNweHN0ZWVwcHIuaCIgMgojIDEgInJhbmRvbS5oIiAxCiMgMzMgInNweHN0ZWVwcHIuaCIg MgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNDUgInNweHN0ZWVwcHIuaCIKY2xhc3MgU1B4U3Rl ZXBQUiA6IHB1YmxpYyBTUHhQcmljZXIKewpwdWJsaWM6CgoKCgoKICAgZW51bSBTZXR1cCB7 CiAgICAgIEVYQUNULAogICAgICBERUZBVUxUCiAgIH07Cgpwcml2YXRlOgogICBEVmVjdG9y IHBlbmFsdHk7CiAgIERWZWN0b3IgY29QZW5hbHR5OwoKICAgRFZlY3RvciB3b3JrVmVjOwog ICBTU1ZlY3RvciB3b3JrUmhzOwoKICAgaW50IGxhc3RJZHg7CiAgIFNQeElkIGxhc3RJZDsK ICAgUmVhbCBwaV9wOwoKCiAgIGludCBwcmVmU2V0dXA7CiAgIERhdGFBcnJheSA8IFJlYWwg PiBjb1ByZWY7CiAgIERhdGFBcnJheSA8IFJlYWwgPiBwcmVmOwogICBEYXRhQXJyYXkgPCBS ZWFsID4gbGVhdmVQcmVmOwoKCiAgIHZvaWQgc2V0dXBQcmVmcyhSZWFsIG11bHQsCiAgICAg IFJlYWwgLCBSZWFsICwKICAgICAgUmVhbCBzaGlmdCwgUmVhbCBjb3NoaWZ0LAogICAgICBp bnQgcnN0YXJ0ID0gMCwgaW50IGNzdGFydCA9IDAsCiAgICAgIGludCByZW5kID0gLTEsIGlu dCBjZW5kID0gLTEpOwoKCiAgIHZvaWQgc2V0dXBQcmVmcyhTb1BsZXg6OlR5cGUpOwoKICAg aW50IHNlbGVjdExlYXZlWChSZWFsJiBiZXN0LCBpbnQgc3RhcnQgPSAwLCBpbnQgaW5jciA9 IDEpOwoKICAgU1B4SWQgc2VsZWN0RW50ZXJYKFJlYWwmIGJlc3QsCiAgICAgIGludCBzdGFy dDEgPSAwLCBpbnQgaW5jcjEgPSAxLCBpbnQgc3RhcnQyID0gMCwgaW50IGluY3IyID0gMSk7 CgogICB2b2lkIGxlZnQ0WChpbnQgbiwgU1B4SWQgaWQsIGludCBzdGFydCwgaW50IGluY3Ip OwoKICAgdm9pZCBlbnRlcmVkNFgoU1B4SWQgaWQsIGludCBuLAogICAgICBpbnQgc3RhcnQx LCBpbnQgaW5jcjEsIGludCBzdGFydDIsIGludCBpbmNyMik7CnB1YmxpYzoKCgogICBTZXR1 cCBzZXR1cDsKCgogICBSZWFsIGFjY3VyYWN5OwoKCiAgIHZpcnR1YWwgdm9pZCBsb2FkKFNv UGxleCogYmFzZSk7CgogICB2aXJ0dWFsIHZvaWQgY2xlYXIoKTsKCiAgIHZpcnR1YWwgdm9p ZCBzZXRUeXBlKFNvUGxleDo6VHlwZSk7CgogICB2aXJ0dWFsIHZvaWQgc2V0UmVwKFNvUGxl eDo6UmVwcmVzZW50YXRpb24gcmVwKTsKCiAgIHZpcnR1YWwgaW50IHNlbGVjdExlYXZlKCk7 CgogICB2aXJ0dWFsIHZvaWQgbGVmdDQoaW50IG4sIFNQeElkIGlkKTsKCiAgIHZpcnR1YWwg U1B4SWQgc2VsZWN0RW50ZXIoKTsKCiAgIHZpcnR1YWwgdm9pZCBlbnRlcmVkNChTUHhJZCBp ZCwgaW50IG4pOwoKICAgdmlydHVhbCB2b2lkIGFkZGVkVmVjcyAoaW50IG4pOwoKICAgdmly dHVhbCB2b2lkIGFkZGVkQ29WZWNzKGludCBuKTsKCiAgIHZpcnR1YWwgdm9pZCByZW1vdmVk VmVjKGludCBpKTsKCiAgIHZpcnR1YWwgdm9pZCByZW1vdmVkQ29WZWNzKGNvbnN0IGludCBw ZXJtW10pOwoKICAgdmlydHVhbCB2b2lkIHJlbW92ZWRWZWNzKGNvbnN0IGludCBwZXJtW10p OwoKICAgdmlydHVhbCB2b2lkIHJlbW92ZWRDb1ZlYyhpbnQgaSk7CgogICB2aXJ0dWFsIGJv b2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7CgoKICAgU1B4U3RlZXBQUigpCiAgICAgIDogU1B4 UHJpY2VyKCJTdGVlcCIpCiAgICAgICwgd29ya1JocyAoMCwgMWUtMTYpCiAgICAgICwgc2V0 dXAgKERFRkFVTFQpCiAgICAgICwgYWNjdXJhY3koMWUtNCkKICAge30KfTsKCn0KIyAyOSAi c3B4c29sdmVyLmgiIDIKIyAxICJzcHhmYXN0cnQuaCIgMQojIDI0ICJzcHhmYXN0cnQuaCIK I2RlZmluZSBfU1BYRkFTVFJUX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEg MyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gK I3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2Vy dF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9W T0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o IiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMg NTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihl cnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhmYXN0cnQuaCIgMgoK IyAxICJzcHhkZWZpbmVzLmgiIDEKIyAyOSAic3B4ZmFzdHJ0LmgiIDIKIyAxICJzcHhyYXRp b3Rlc3Rlci5oIiAxCiMgMjQgInNweHJhdGlvdGVzdGVyLmgiCiNkZWZpbmUgX1NQWFJBVElP VEVTVEVSX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIv dXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3Nl cnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoK CgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0 YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZp bmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2lu Y2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19B U1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyOCAic3B4cmF0aW90ZXN0ZXIuaCIgMgoKIyAxICJz cHhkZWZpbmVzLmgiIDEKIyAzMCAic3B4cmF0aW90ZXN0ZXIuaCIgMgojIDEgInNvcGxleC5o IiAxCiMgMzEgInNweHJhdGlvdGVzdGVyLmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDQ0 ICJzcHhyYXRpb3Rlc3Rlci5oIgpjbGFzcyBTUHhSYXRpb1Rlc3Rlcgp7CnByb3RlY3RlZDoK ICAgU29QbGV4KiB0aGVzb2x2ZXI7CgpwdWJsaWM6CgoKCiAgIHZpcnR1YWwgdm9pZCBsb2Fk KFNvUGxleCogcF9zb2x2ZXIpCiAgIHsKICAgICAgdGhlc29sdmVyID0gcF9zb2x2ZXI7CiAg IH0KCgogICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQogICB7CiAgICAgIHRoZXNvbHZlciA9IDA7 CiAgIH0KCgogICB2aXJ0dWFsIFNvUGxleCogc29sdmVyKCkgY29uc3QKICAgewogICAgICBy ZXR1cm4gdGhlc29sdmVyOwogICB9CiMgODYgInNweHJhdGlvdGVzdGVyLmgiCiAgIHZpcnR1 YWwgaW50IHNlbGVjdExlYXZlKFJlYWwmIHZhbCkgPSAwOwojIDEwNyAic3B4cmF0aW90ZXN0 ZXIuaCIKICAgdmlydHVhbCBTUHhJZCBzZWxlY3RFbnRlcihSZWFsJiB2YWwpID0gMDsKCgoK CgogICB2aXJ0dWFsIHZvaWQgc2V0VHlwZShTb1BsZXg6OlR5cGUpCiAgIHt9CgogICBTUHhS YXRpb1Rlc3RlcigpCiAgICAgIDogdGhlc29sdmVyKDApCiAgIHt9CgogICB2aXJ0dWFsIH5T UHhSYXRpb1Rlc3RlcigpCiAgIHsKICAgICAgdGhlc29sdmVyID0gMDsKICAgfQoKfTsKCgp9 CiMgMzAgInNweGZhc3RydC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0NSAic3B4ZmFz dHJ0LmgiCmNsYXNzIFNQeEZhc3RSVCA6IHB1YmxpYyBTUHhSYXRpb1Rlc3Rlcgp7CnByaXZh dGU6CgogICBSZWFsIG1pblN0YWI7CgogICBSZWFsIGVwc2lsb247CgogICBSZWFsIGRlbHRh OwoKICAgUmVhbCBkZWx0YTA7CgoKICAgdm9pZCByZXNldFRvbHMoKTsKCiAgIHZvaWQgcmVs YXgoKTsKCiAgIHZvaWQgdGlnaHRlbigpOwojIDcyICJzcHhmYXN0cnQuaCIKICAgaW50IG1h eERlbHRhKFJlYWwmIHZhbCwgUmVhbCYgcF9hYnMsIFVwZGF0ZVZlY3RvciYgdXBkLAogICAg ICBWZWN0b3ImIGxvdywgVmVjdG9yJiB1cCwgaW50IHN0YXJ0LCBpbnQgaW5jcik7CgogICBp bnQgbWF4RGVsdGEoUmVhbCYgdmFsLCBSZWFsJiBwX2Ficyk7CgogICBTUHhJZCBtYXhEZWx0 YShpbnQmIG5yLCBSZWFsJiB2YWwsIFJlYWwmIHBfYWJzKTsKIyA4NyAic3B4ZmFzdHJ0Lmgi CiAgIGludCBtaW5EZWx0YShSZWFsJiB2YWwsIFJlYWwmIHBfYWJzLCBVcGRhdGVWZWN0b3Im IHVwZCwKICAgICAgVmVjdG9yJiBsb3csIFZlY3RvciYgdXAsIGludCBzdGFydCwgaW50IGlu Y3IpOwoKCiAgIGludCBtaW5EZWx0YShSZWFsJiB2YWwsIFJlYWwmIHBfYWJzLAogICAgICBV cGRhdGVWZWN0b3ImIHVwZCwgVmVjdG9yJiBsb3csIFZlY3RvciYgdXApCiAgIHsKICAgICAg cmV0dXJuIG1pbkRlbHRhKHZhbCwgcF9hYnMsIHVwZCwgbG93LCB1cCwgMCwgMSk7CiAgIH0K CiAgIGludCBtaW5EZWx0YShSZWFsJiB2YWwsIFJlYWwmIHBfYWJzKTsKCiAgIFNQeElkIG1p bkRlbHRhKGludCYgbnIsIFJlYWwmIHZhbCwgUmVhbCYgcF9hYnMpOwojIDEwOCAic3B4ZmFz dHJ0LmgiCiAgIGludCBtYXhTZWxlY3QoUmVhbCYgdmFsLCBSZWFsJiBzdGFiLCBSZWFsJiBi ZXN0LCBSZWFsJiBiZXN0RGVsdGEsCiAgICAgIFJlYWwgbWF4LCBjb25zdCBVcGRhdGVWZWN0 b3ImIHVwZCwgY29uc3QgVmVjdG9yJiBsb3csCiAgICAgIGNvbnN0IFZlY3RvciYgdXAsIGlu dCBzdGFydCA9IDAsIGludCBpbmNyID0gMSk7CgogICBpbnQgbWF4U2VsZWN0KFJlYWwmIHZh bCwgUmVhbCYgc3RhYiwgUmVhbCYgYmVzdERlbHRhLCBSZWFsIG1heCk7CgogICBTUHhJZCBt YXhTZWxlY3QoaW50JiBuciwgUmVhbCYgdmFsLCBSZWFsJiBzdGFiLAogICAgICBSZWFsJiBi ZXN0RGVsdGEsIFJlYWwgbWF4KTsKIyAxMjQgInNweGZhc3RydC5oIgogICBpbnQgbWluU2Vs ZWN0KFJlYWwmIHZhbCwgUmVhbCYgc3RhYiwgUmVhbCYgYmVzdCwgUmVhbCYgYmVzdERlbHRh LAogICAgICBSZWFsIG1heCwgY29uc3QgVXBkYXRlVmVjdG9yJiB1cGQsIGNvbnN0IFZlY3Rv ciYgbG93LAogICAgICBjb25zdCBWZWN0b3ImIHVwLCBpbnQgc3RhcnQgPSAwLCBpbnQgaW5j ciA9IDEpOwoKICAgaW50IG1pblNlbGVjdChSZWFsJiB2YWwsIFJlYWwmIHN0YWIsCiAgICAg IFJlYWwmIGJlc3REZWx0YSwgUmVhbCBtYXgpOwoKICAgU1B4SWQgbWluU2VsZWN0KGludCYg bnIsIFJlYWwmIHZhbCwgUmVhbCYgc3RhYiwKICAgICAgUmVhbCYgYmVzdERlbHRhLCBSZWFs IG1heCk7CgoKICAgaW50IG1pblJlbGVhdmUoUmVhbCYgc2VsLCBpbnQgbGVhdmUsIFJlYWwg bWF4YWJzKTsKCgoKCiAgIGludCBtYXhSZWxlYXZlKFJlYWwmIHNlbCwgaW50IGxlYXZlLCBS ZWFsIG1heGFicyk7CgoKICAgaW50IG1pblNob3J0TGVhdmUoUmVhbCYgc2VsLCBpbnQgbGVh dmUsIFJlYWwgLCBSZWFsIHBfYWJzKTsKCgoKCgogICBpbnQgbWF4U2hvcnRMZWF2ZShSZWFs JiBzZWwsIGludCBsZWF2ZSwgUmVhbCAsIFJlYWwgcF9hYnMpOwoKCiAgIGludCBtaW5SZWVu dGVyKFJlYWwmIHNlbCwgUmVhbCAsIFJlYWwgbWF4YWJzLAogICAgICAgICAgICAgICAgICAg ICAgICAgIFNQeElkIGlkLCBpbnQgbnIpOwoKCgoKICAgaW50IG1heFJlZW50ZXIoUmVhbCYg c2VsLCBSZWFsICwgUmVhbCBtYXhhYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU1B4 SWQgaWQsIGludCBucik7CiMgMTY5ICJzcHhmYXN0cnQuaCIKICAgaW50IHNob3J0RW50ZXIo U1B4SWQmIGVudGVySWQsIGludCBuciwgUmVhbCBtYXgsIFJlYWwgbWF4YWJzKTsKCnB1Ymxp YzoKCiAgIHZpcnR1YWwgdm9pZCBsb2FkKFNvUGxleCogc29sdmVyKTsKCiAgIHZpcnR1YWwg aW50IHNlbGVjdExlYXZlKFJlYWwmIHZhbCk7CgogICB2aXJ0dWFsIFNQeElkIHNlbGVjdEVu dGVyKFJlYWwmIHZhbCk7CgogICB2aXJ0dWFsIHZvaWQgc2V0VHlwZShTb1BsZXg6OlR5cGUp OwoKICAgU1B4RmFzdFJUKCkKICAgICAgOiBTUHhSYXRpb1Rlc3RlcigpCiAgIHt9Cn07Cn0K IyAzMCAic3B4c29sdmVyLmgiIDIKIyAxICJzcHh3ZWlnaHRzdC5oIiAxCiMgMjUgInNweHdl aWdodHN0LmgiCiNkZWZpbmUgX1NQWFdFSUdIVFNUX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRl L2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5k ZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoK CiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZp bmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lE X0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFz c2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyOSAic3B4 d2VpZ2h0c3QuaCIgMgoKIyAxICJzcHhkZWZpbmVzLmgiIDEKIyAzMSAic3B4d2VpZ2h0c3Qu aCIgMgojIDEgInNweHN0YXJ0ZXIuaCIgMQojIDI1ICJzcHhzdGFydGVyLmgiCiNkZWZpbmUg X1NQWERTVEFSVEVSX0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAoj IDI0ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRl ZiBhc3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVy cm9yCgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9D QVNUIHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0 CiNkZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIv dXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVt KSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyOSAic3B4c3RhcnRlci5oIiAyCgojIDEg InNvcGxleC5oIiAxCiMgMzEgInNweHN0YXJ0ZXIuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7 CiMgNDUgInNweHN0YXJ0ZXIuaCIKY2xhc3MgU1B4U3RhcnRlcgp7CnB1YmxpYzoKCiAgIHZp cnR1YWwgdm9pZCBnZW5lcmF0ZShTb1BsZXgmIGJhc2UpID0gMDsKCgogICB2aXJ0dWFsIH5T UHhTdGFydGVyKCkKICAgeyB9CgoKICAgdmlydHVhbCBib29sIGlzQ29uc2lzdGVudCgpIGNv bnN0Owp9OwoKCn0KIyAzMiAic3B4d2VpZ2h0c3QuaCIgMgojIDEgImRhdGFhcnJheS5oIiAx CiMgMzMgInNweHdlaWdodHN0LmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDYwICJzcHh3 ZWlnaHRzdC5oIgpjbGFzcyBTUHhXZWlnaHRTVCA6IHB1YmxpYyBTUHhTdGFydGVyCnsKICAg RGF0YUFycmF5IDwgaW50ID4gZm9yYmlkZGVuOwoKICAgRGF0YUFycmF5IDwgUmVhbCA+ICog d2VpZ2h0OwogICBEYXRhQXJyYXkgPCBSZWFsID4gKiBjb1dlaWdodDsKICAgdm9pZCBzZXRQ cmltYWxTdGF0dXMoU1B4QmFzaXM6OkRlc2MmLCBjb25zdCBTb1BsZXgmLCBjb25zdCBTUHhJ ZCYpOwoKcHJvdGVjdGVkOgoKICAgRGF0YUFycmF5IDwgUmVhbCA+IHJvd1dlaWdodDsKCiAg IERhdGFBcnJheSA8IFJlYWwgPiBjb2xXZWlnaHQ7CgoKICAgRGF0YUFycmF5IDwgYm9vbCA+ IHJvd1JpZ2h0OwoKICAgRGF0YUFycmF5IDwgYm9vbCA+IGNvbFVwOwoKCgoKCgogICB2aXJ0 dWFsIHZvaWQgc2V0dXBXZWlnaHRzKFNvUGxleCYgYmFzZSk7CgpwdWJsaWM6CgogICB2b2lk IGdlbmVyYXRlKFNvUGxleCYgYmFzZSk7CgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25z dDsKCgogICBTUHhXZWlnaHRTVCgpCiAgIHt9Cn07Cgp9CiMgMzEgInNweHNvbHZlci5oIiAy CiMgMSAic2x1ZmFjdG9yLmgiIDEKIyAyNCAic2x1ZmFjdG9yLmgiCiNkZWZpbmUgX1NMVUZB Q1RPUl9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQK I3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgoj ZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRp Y19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUg YXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1 ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NF UlRfVk9JRF9DQVNUICgwKSkKIyAyNyAic2x1ZmFjdG9yLmgiIDIKCiMgMSAic3B4ZGVmaW5l cy5oIiAxCiMgMjkgInNsdWZhY3Rvci5oIiAyCiMgMSAiZHZlY3Rvci5oIiAxCiMgMzAgInNs dWZhY3Rvci5oIiAyCiMgMSAic2xpbnNvbHZlci5oIiAxCiMgMzEgInNsdWZhY3Rvci5oIiAy CiMgMSAiY2x1ZmFjdG9yLmgiIDEKIyAyMSAiY2x1ZmFjdG9yLmgiCiNkZWZpbmUgX0NMVUZB Q1RPUl9IXyAKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMjQgImNsdWZhY3Rvci5oIiAyCiMg MSAic2xpbnNvbHZlci5oIiAxCiMgMjUgImNsdWZhY3Rvci5oIiAyCiMgMSAic3ZlY3Rvci5o IiAxCiMgMjYgImNsdWZhY3Rvci5oIiAyCgojZGVmaW5lIFdJVEhfTF9ST1dTIDEKCm5hbWVz cGFjZSBzb3BsZXgKewoKCgoKCmNsYXNzIENMVUZhY3Rvcgp7CnB1YmxpYzoKCgoKICAgc3Ry dWN0IERyaW5nCiAgIHsKICAgICAgRHJpbmcqIG5leHQ7CiAgICAgIERyaW5nKiBwcmV2Owog ICAgICBpbnQgaWR4OwogICB9OwoKCiAgIGNsYXNzIFByaW5nCiAgIHsKICAgcHVibGljOgog ICAgICBQcmluZyogbmV4dDsKICAgICAgUHJpbmcqIHByZXY7CiAgICAgIGludCBpZHg7CiAg ICAgIGludCBwb3M7CiAgICAgIGludCBta3d0ejsKCiAgICAgIFByaW5nKCkgOiBuZXh0KDAp LCBwcmV2KDApCiAgICAgIHt9CgogICBwcml2YXRlOgogICAgICBQcmluZyhjb25zdCBQcmlu ZyYpOwogICAgICBQcmluZyYgb3BlcmF0b3I9IChjb25zdCBQcmluZyYpOwogICB9Owpwcm90 ZWN0ZWQ6CgogICBjbGFzcyBUZW1wCiAgIHsKICAgcHVibGljOgogICAgICBpbnQqIHNfbWFy azsKICAgICAgUmVhbCogc19tYXg7CiAgICAgIGludCogc19jYWN0OwogICAgICBpbnQgc3Rh Z2U7CiAgICAgIFByaW5nIHBpdm90czsKICAgICAgUHJpbmcqIHBpdm90X2NvbDsKICAgICAg UHJpbmcqIHBpdm90X2NvbE5aOwogICAgICBQcmluZyogcGl2b3Rfcm93OwogICAgICBQcmlu ZyogcGl2b3Rfcm93Tlo7CgogICAgICBUZW1wKCk7CiAgICAgIH5UZW1wKCk7CiAgICAgIHZv aWQgaW5pdChpbnQgcF9kaW0pOwogICAgICB2b2lkIGNsZWFyKCk7CgogICBwcml2YXRlOgog ICAgICBUZW1wKCBjb25zdCBUZW1wJiApOwogICAgICBUZW1wJiBvcGVyYXRvcj0gKCBjb25z dCBUZW1wJiApOwogICB9OwoKCiAgIHN0cnVjdCBQZXJtCiAgIHsKICAgICAgaW50KiBvcmln OwogICAgICBpbnQqIHBlcm07CiAgIH07CgoKICAgc3RydWN0IFUKICAgewogICAgICBzdHJ1 Y3QgUm93CiAgICAgIHsKICAgICAgICAgRHJpbmcgbGlzdDsKCgogICAgICAgICBEcmluZyAq ZWxlbTsKICAgICAgICAgaW50IHNpemU7CiAgICAgICAgIGludCB1c2VkOwogICAgICAgICBS ZWFsICp2YWw7CiAgICAgICAgIGludCAqaWR4OwogICAgICAgICBpbnQgKnN0YXJ0OwogICAg ICAgICBpbnQgKmxlbjsKICAgICAgICAgaW50ICptYXg7CgoKICAgICAgfSByb3c7CiAgICAg IHN0cnVjdCBDb2wKICAgICAgewogICAgICAgICBEcmluZyBsaXN0OwoKCiAgICAgICAgIERy aW5nICplbGVtOwogICAgICAgICBpbnQgc2l6ZTsKICAgICAgICAgaW50IHVzZWQ7CiAgICAg ICAgIGludCAqaWR4OwogICAgICAgICBSZWFsICp2YWw7CgoKICAgICAgICAgaW50ICpzdGFy dDsKICAgICAgICAgaW50ICpsZW47CiAgICAgICAgIGludCAqbWF4OwoKCiAgICAgIH0gY29s OwogICAgICBpbnQgbGFzdENvbFNpbmc7CiAgICAgIGludCBsYXN0Um93U2luZzsKICAgfTsK CgoKICAgc3RydWN0IEwKICAgewogICAgICBpbnQgc2l6ZTsKICAgICAgUmVhbCAqdmFsOwog ICAgICBpbnQgKmlkeDsKICAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICAgaW50IGZpcnN0VXBk YXRlOwogICAgICBpbnQgZmlyc3RVbnVzZWQ7CiAgICAgIGludCAqc3RhcnQ7CiAgICAgIGlu dCAqcm93OwogICAgICBpbnQgdXBkYXRlVHlwZTsKCgoKCgogICAgICBSZWFsICpydmFsOwog ICAgICBpbnQgKnJpZHg7CiAgICAgIGludCAqcmJlZzsKICAgICAgaW50ICpyb3JpZzsKICAg ICAgaW50ICpycGVybTsKICAgfTsKCiAgIFNMaW5Tb2x2ZXI6OlN0YXR1cyBzdGF0OwoKICAg aW50IHRoZWRpbTsKICAgaW50IG56Q250OwogICBSZWFsIGluaXRNYXhhYnM7CiAgIFJlYWwg bWF4YWJzOwoKICAgUmVhbCByb3dNZW1NdWx0OwogICBSZWFsIGNvbE1lbU11bHQ7CiAgIFJl YWwgbE1lbU11bHQ7CgogICBQZXJtIHJvdzsKICAgUGVybSBjb2w7CgogICBMIGw7CiAgIFJl YWwqIGRpYWc7CiAgIFUgdTsKCiAgIFJlYWwqIHdvcms7CiAgIFJlYWwqIHdvcmsyOwoKICAg aW50IGZhY3RvckNvdW50OwoKcHJpdmF0ZToKICAgVGVtcCB0ZW1wOwoKCgogICB2b2lkIHNv bHZlVXJpZ2h0KFJlYWwqIHdyaywgUmVhbCogdmVjKTsKCiAgIGludCBzb2x2ZVVyaWdodEVw cyhSZWFsKiB2ZWMsIGludCogbm9ueiwgUmVhbCBlcHMsIFJlYWwqIHJocyk7CgogICB2b2lk IHNvbHZlVXJpZ2h0MihSZWFsKiB3b3JrMSwgUmVhbCogdmVjMSwgUmVhbCogd29yazIsIFJl YWwqIHZlYzIpOwoKICAgaW50IHNvbHZlVXJpZ2h0MmVwcyhSZWFsKiB3b3JrMSwgUmVhbCog dmVjMSwgUmVhbCogd29yazIsCiAgICAgIFJlYWwqIHZlYzIsIGludCogbm9ueiwgUmVhbCBl cHMpOwoKICAgdm9pZCBzb2x2ZUxyaWdodDIoUmVhbCogdmVjMSwgUmVhbCogdmVjMik7Cgog ICB2b2lkIHNvbHZlVXBkYXRlUmlnaHQoUmVhbCogdmVjKTsKCiAgIHZvaWQgc29sdmVVcGRh dGVSaWdodDIoUmVhbCogdmVjMSwgUmVhbCogdmVjMik7CgogICB2b2lkIHNvbHZlVWxlZnQo UmVhbCogd29yaywgUmVhbCogdmVjKTsKCiAgIHZvaWQgc29sdmVVbGVmdDIoCiAgICAgIFJl YWwqIHdvcmsxLCBSZWFsKiB2ZWMxLCBSZWFsKiB3b3JrMiwgUmVhbCogdmVjMik7CgogICBp bnQgc29sdmVMbGVmdDJmb3Jlc3QoUmVhbCogdmVjMSwgaW50KiAsCiAgICAgIFJlYWwqIHZl YzIsIFJlYWwgKTsKCiAgIHZvaWQgc29sdmVMbGVmdDIoUmVhbCogdmVjMSwgaW50KiAsCiAg ICAgIFJlYWwqIHZlYzIsIFJlYWwgKTsKCiAgIGludCBzb2x2ZUxsZWZ0Rm9yZXN0KFJlYWwq IHZlYywgaW50KiAsIFJlYWwgKTsKCiAgIHZvaWQgc29sdmVMbGVmdChSZWFsKiB2ZWMpOwoK ICAgaW50IHNvbHZlTGxlZnRFcHMoUmVhbCogdmVjLCBpbnQqIG5vbnosIFJlYWwgZXBzKTsK CiAgIHZvaWQgc29sdmVVcGRhdGVMZWZ0KFJlYWwqIHZlYyk7CgogICB2b2lkIHNvbHZlVXBk YXRlTGVmdDIoUmVhbCogdmVjMSwgUmVhbCogdmVjMik7CgoKCiAgIGludCB2U29sdmVMcmln aHQoUmVhbCogdmVjLCBpbnQqIHJpZHgsIGludCBybiwgUmVhbCBlcHMpOwogICB2b2lkIHZT b2x2ZUxyaWdodDIoUmVhbCogdmVjLCBpbnQqIHJpZHgsIGludCogcm5wdHIsIFJlYWwgZXBz LAogICAgICAgICAgICAgICAgICAgICAgUmVhbCogdmVjMiwgaW50KiByaWR4MiwgaW50KiBy bjJwdHIsIFJlYWwgZXBzMik7CgogICBpbnQgdlNvbHZlVXJpZ2h0KFJlYWwqIHZlYywgaW50 KiB2aWR4LAogICAgICAgICAgICAgICAgICAgIFJlYWwqIHJocywgaW50KiByaWR4LCBpbnQg cm4sIFJlYWwgZXBzKTsKCiAgIHZvaWQgdlNvbHZlVXJpZ2h0Tm9OWihSZWFsKiB2ZWMsCiAg ICAgICAgICAgICAgICAgICAgICAgICBSZWFsKiByaHMsIGludCogcmlkeCwgaW50IHJuLCBS ZWFsIGVwcyk7CgogICBpbnQgdlNvbHZlVXJpZ2h0MihSZWFsKiB2ZWMsIGludCogdmlkeCwg UmVhbCogcmhzLAogICAgICAgICAgICAgICAgICAgICBpbnQqIHJpZHgsIGludCBybiwgUmVh bCBlcHMsCiAgICAgICAgICAgICAgICAgICAgIFJlYWwqIHZlYzIsIFJlYWwqIHJoczIsIGlu dCogcmlkeDIsIGludCBybjIsIFJlYWwgZXBzMik7CgogICBpbnQgdlNvbHZlVXBkYXRlUmln aHQoUmVhbCogdmVjLCBpbnQqIHJpZHgsIGludCBuLCBSZWFsIGVwcyk7CgogICB2b2lkIHZT b2x2ZVVwZGF0ZVJpZ2h0Tm9OWihSZWFsKiB2ZWMsIFJlYWwgKTsKCiAgIGludCBzb2x2ZVVs ZWZ0KFJlYWwgZXBzLCBSZWFsKiB2ZWMsIGludCogdmVjaWR4LAogICAgICAgICAgICAgICAg ICBSZWFsKiByaHMsIGludCogcmhzaWR4LCBpbnQgcmhzbik7CgogICB2b2lkIHNvbHZlVWxl ZnROb05aKFJlYWwgZXBzLCBSZWFsKiB2ZWMsCiAgICAgICAgICAgICAgICAgICAgICAgUmVh bCogcmhzLCBpbnQqIHJoc2lkeCwgaW50IHJoc24pOwoKICAgaW50IHNvbHZlTGxlZnRGb3Jl c3QoUmVhbCBlcHMsIFJlYWwqIHZlYywgaW50KiBub256LCBpbnQgbik7CgogICB2b2lkIHNv bHZlTGxlZnRGb3Jlc3ROb05aKFJlYWwqIHZlYyk7CgogICBpbnQgc29sdmVMbGVmdChSZWFs IGVwcywgUmVhbCogdmVjLCBpbnQqIG5vbnosIGludCBybik7CgogICB2b2lkIHNvbHZlTGxl ZnROb05aKFJlYWwqIHZlYyk7CgogICBpbnQgc29sdmVVcGRhdGVMZWZ0KFJlYWwgZXBzLCBS ZWFsKiB2ZWMsIGludCogbm9ueiwgaW50IG4pOwoKCgogICB2b2lkIGZvcmVzdFBhY2tDb2x1 bW5zKCk7CgogICB2b2lkIGZvcmVzdE1pbkNvbE1lbShpbnQgc2l6ZSk7CgogICB2b2lkIGZv cmVzdFJlTWF4Q29sKGludCBjb2wsIGludCBsZW4pOwoKCgogICB2b2lkIGluaXRQZXJtKCk7 CgogICB2b2lkIGluaXRGYWN0b3JNYXRyaXgoU1ZlY3RvcioqIHZlYywgY29uc3QgUmVhbCBl cHMgKTsKCiAgIHZvaWQgbWluTE1lbShpbnQgc2l6ZSk7CgogICB2b2lkIHNldFBpdm90KGNv bnN0IGludCBwX3N0YWdlLCBjb25zdCBpbnQgcF9jb2wsCiAgICAgICAgICAgICAgICAgY29u c3QgaW50IHBfcm93LCBjb25zdCBSZWFsIHZhbCk7CgogICB2b2lkIGNvbFNpbmdsZXRvbnMo KTsKCiAgIHZvaWQgcm93U2luZ2xldG9ucygpOwoKCiAgIHZvaWQgaW5pdEZhY3RvclJpbmdz KCk7CgogICB2b2lkIGZyZWVGYWN0b3JSaW5ncygpOwoKCiAgIGludCBzZXR1cENvbFZhbHMo KTsKCiAgIHZvaWQgc2V0dXBSb3dWYWxzKCk7CgoKICAgdm9pZCBlbGltaW5hdGVSb3dTaW5n bGV0b25zKCk7CgogICB2b2lkIGVsaW1pbmF0ZUNvbFNpbmdsZXRvbnMoKTsKCiAgIHZvaWQg c2VsZWN0UGl2b3RzKFJlYWwgdGhyZXNob2xkKTsKCiAgIGludCB1cGRhdGVSb3coaW50IHIs IGludCBsdiwgaW50IHByb3csIGludCBwY29sLCBSZWFsIHB2YWwsIFJlYWwgZXBzKTsKCgog ICB2b2lkIGVsaW1pbmF0ZVBpdm90KGludCBwcm93LCBpbnQgcG9zLCBSZWFsIGVwcyk7Cgog ICB2b2lkIGVsaW1pbmF0ZU51Y2xldXMoY29uc3QgUmVhbCBlcHMsIGNvbnN0IFJlYWwgdGhy ZXNob2xkKTsKCiAgIHZvaWQgbWluUm93TWVtKGludCBzaXplKTsKCiAgIHZvaWQgbWluQ29s TWVtKGludCBzaXplKTsKCiAgIHZvaWQgcmVtYXhDb2woaW50IHBfY29sLCBpbnQgbGVuKTsK CiAgIHZvaWQgcGFja1Jvd3MoKTsKCiAgIHZvaWQgcGFja0NvbHVtbnMoKTsKCiAgIHZvaWQg cmVtYXhSb3coaW50IHBfcm93LCBpbnQgbGVuKTsKCiAgIGludCBtYWtlTHZlYyhpbnQgcF9s ZW4sIGludCBwX3Jvdyk7CgoKICAgQ0xVRmFjdG9yKGNvbnN0IENMVUZhY3RvciYpOwoKICAg Q0xVRmFjdG9yJiBvcGVyYXRvcj0oY29uc3QgQ0xVRmFjdG9yJik7Cgpwcm90ZWN0ZWQ6CgoK CgogICBDTFVGYWN0b3IoKSB7fQoKcHVibGljOgoKCiAgIHZvaWQgc29sdmVMcmlnaHQoUmVh bCogdmVjKTsKCiAgIGludCBzb2x2ZVJpZ2h0NHVwZGF0ZShSZWFsKiB2ZWMsIGludCogbm9u eiwgUmVhbCBlcHMsIFJlYWwqIHJocywKICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFs KiBmb3Jlc3QsIGludCogZm9yZXN0TnVtLCBpbnQqIGZvcmVzdElkeCk7CgogICB2b2lkIHNv bHZlUmlnaHQoUmVhbCogdmVjLCBSZWFsKiByaHMpOwoKICAgaW50IHNvbHZlUmlnaHQydXBk YXRlKFJlYWwqIHZlYzEsIFJlYWwqIHZlYzIsIFJlYWwqIHJoczEsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVhbCogcmhzMiwgaW50KiBub256LCBSZWFsIGVwcywgUmVhbCogZm9y ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZm9yZXN0TnVtLCBpbnQqIGZv cmVzdElkeCk7CgogICB2b2lkIHNvbHZlUmlnaHQyKFJlYWwqIHZlYzEsIFJlYWwqIHZlYzIs IFJlYWwqIHJoczEsIFJlYWwqIHJoczIpOwoKICAgdm9pZCBzb2x2ZUxlZnQoUmVhbCogdmVj LCBSZWFsKiByaHMpOwoKICAgaW50IHNvbHZlTGVmdEVwcyhSZWFsKiB2ZWMsIFJlYWwqIHJo cywgaW50KiBub256LCBSZWFsIGVwcyk7CgogICBpbnQgc29sdmVMZWZ0MihSZWFsKiB2ZWMx LCBpbnQqIG5vbnosIFJlYWwqIHZlYzIsCiAgICAgIFJlYWwgZXBzLCBSZWFsKiByaHMxLCBS ZWFsKiByaHMyKTsKCgoKICAgaW50IHZTb2x2ZVJpZ2h0NHVwZGF0ZShSZWFsIGVwcywgUmVh bCogdmVjLCBpbnQqIGlkeCwKICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsKiByaHMs IGludCogcmlkeCwgaW50IHJuLAogICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWwqIGZv cmVzdCwgaW50KiBmb3Jlc3ROdW0sIGludCogZm9yZXN0SWR4KTsKCiAgIGludCB2U29sdmVS aWdodDR1cGRhdGUyKFJlYWwgZXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFs KiB2ZWMsIGludCogaWR4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsKiByaHMs IGludCogcmlkeCwgaW50IHJuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFsKiB2 ZWMyLCBSZWFsIGVwczIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWwqIHJoczIs IGludCogcmlkeDIsIGludCBybjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWwq IGZvcmVzdCwgaW50KiBmb3Jlc3ROdW0sIGludCogZm9yZXN0SWR4KTsKCiAgIHZvaWQgdlNv bHZlUmlnaHROb05aKFJlYWwqIHZlYzIsIFJlYWwgZXBzMiwKICAgICAgICAgICAgICAgICAg ICAgICAgUmVhbCogcmhzMiwgaW50KiByaWR4MiwgaW50IHJuMik7CgogICBpbnQgdlNvbHZl TGVmdChSZWFsIGVwcywKICAgICAgICAgICAgICAgICAgUmVhbCogdmVjLCBpbnQqIGlkeCwK ICAgICAgICAgICAgICAgICAgUmVhbCogcmhzLCBpbnQqIHJpZHgsIGludCBybik7CgogICB2 b2lkIHZTb2x2ZUxlZnROb05aKFJlYWwgZXBzLAogICAgICAgICAgICAgICAgICAgICAgIFJl YWwqIHZlYywKICAgICAgICAgICAgICAgICAgICAgICBSZWFsKiByaHMsIGludCogcmlkeCwg aW50IHJuKTsKCiAgIGludCB2U29sdmVMZWZ0MihSZWFsIGVwcywKICAgICAgICAgICAgICAg ICAgIFJlYWwqIHZlYywgaW50KiBpZHgsCiAgICAgICAgICAgICAgICAgICBSZWFsKiByaHMs IGludCogcmlkeCwgaW50IHJuLAogICAgICAgICAgICAgICAgICAgUmVhbCogdmVjMiwKICAg ICAgICAgICAgICAgICAgIFJlYWwqIHJoczIsIGludCogcmlkeDIsIGludCBybjIpOwoKCiAg IHZvaWQgZm9yZXN0VXBkYXRlKGludCBjb2wsIFJlYWwqIHdvcmssIGludCBudW0sIGludCAq bm9ueik7CgoKICAgdm9pZCB1cGRhdGUoaW50IHBfY29sLCBSZWFsKiBwX3dvcmssIGNvbnN0 IGludCogcF9pZHgsIGludCBudW0pOwogICB2b2lkIHVwZGF0ZU5vQ2xlYXIoaW50IHBfY29s LCBjb25zdCBSZWFsKiBwX3dvcmssCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQq IHBfaWR4LCBpbnQgbnVtKTsKCgoKCiAgIHZvaWQgZmFjdG9yKFNWZWN0b3IqKiB2ZWMsCiAg ICAgICAgICAgICAgIFJlYWwgdGhyZXNob2xkLAogICAgICAgICAgICAgICBSZWFsIGVwcyk7 CgoKICAgdm9pZCBkdW1wKCkgY29uc3Q7CgogICBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0 Owp9OwoKfQojIDMyICJzbHVmYWN0b3IuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CgoKI2Rl ZmluZSBNQVhVUERBVEVTIDEwMDAKIyA0NiAic2x1ZmFjdG9yLmgiCmNsYXNzIFNMVUZhY3Rv ciA6IHB1YmxpYyBTTGluU29sdmVyLCBwcml2YXRlIENMVUZhY3Rvcgp7CnB1YmxpYzoKCgog ICBlbnVtIFVwZGF0ZVR5cGUKICAgewogICAgICBFVEEgPSAwLAogICAgICBGT1JFU1RfVE9N TElOCiAgIH07Cgpwcm90ZWN0ZWQ6CgogICB2b2lkIGZyZWVBbGwoKTsKICAgdm9pZCBjaGFu Z2VFdGEoaW50IGlkeCwgU1NWZWN0b3ImIGV0YSk7CgogICBEVmVjdG9yIHZlYzsKICAgU1NW ZWN0b3Igc3N2ZWM7CgogICBpbnQgdXNldHVwOwogICBVcGRhdGVUeXBlIHVwdHlwZTsKICAg U1NWZWN0b3IgZXRhOwogICBTU1ZlY3RvciBmb3Jlc3Q7CiAgIFJlYWwgbGFzdFRocmVzaG9s ZDsKCnB1YmxpYzoKICAgdHlwZWRlZiBTTGluU29sdmVyOjpTdGF0dXMgU3RhdHVzOwoKCgoK ICAgUmVhbCBtaW5UaHJlc2hvbGQ7CgoKICAgUmVhbCBlcHNpbG9uOwoKCiAgIFJlYWwgbWlu U3RhYmlsaXR5OwoKCiAgIFVwZGF0ZVR5cGUgdXR5cGUoKQogICB7CiAgICAgIHJldHVybiB1 cHR5cGU7CiAgIH0KCiAgIGludCBnZXRGYWN0b3JDb3VudCgpIGNvbnN0CiAgIHsKICAgICAg cmV0dXJuIGZhY3RvckNvdW50OwogICB9CgoKCgogICB2b2lkIHNldFV0eXBlKFVwZGF0ZVR5 cGUgdHApCiAgIHsKICAgICAgdXB0eXBlID0gdHA7CiAgIH0KIyAxMTIgInNsdWZhY3Rvci5o IgogICB2b2lkIGNsZWFyKCk7CgogICBpbnQgZGltKCkgY29uc3QKICAgewogICAgICByZXR1 cm4gdGhlZGltOwogICB9CgogICBpbnQgbWVtb3J5KCkgY29uc3QKICAgewogICAgICByZXR1 cm4gbnpDbnQgKyBsLnN0YXJ0W2wuZmlyc3RVbnVzZWRdOwogICB9CgogICBTdGF0dXMgc3Rh dHVzKCkgY29uc3QKICAgewogICAgICByZXR1cm4gU3RhdHVzKHN0YXQpOwogICB9CgogICBS ZWFsIHN0YWJpbGl0eSgpIGNvbnN0OwoKCiAgIFN0YXR1cyBsb2FkKGNvbnN0IFNWZWN0b3Iq IHZlY1tdLCBpbnQgZGltKTsKCgogICB2b2lkIHNvbHZlMnJpZ2h0KFZlY3RvciYgeCwgVmVj dG9yJiBiKTsKCiAgIHZvaWQgc29sdmUycmlnaHQoVmVjdG9yJiB4LCBTU1ZlY3RvciYgYik7 CgogICB2b2lkIHNvbHZlMnJpZ2h0KFNTVmVjdG9yJiB4LCBWZWN0b3ImIGIpOwoKICAgdm9p ZCBzb2x2ZTJyaWdodChTU1ZlY3RvciYgeCwgU1NWZWN0b3ImIGIpOwoKCiAgIHZvaWQgc29s dmVSaWdodCAoVmVjdG9yJiB4LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3Im IGIpOwoKICAgdm9pZCBzb2x2ZVJpZ2h0IChWZWN0b3ImIHgsCiAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IFNWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2ZVJpZ2h0IChTU1ZlY3RvciYg eCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yJiBiKTsKCiAgIHZvaWQgc29s dmVSaWdodCAoU1NWZWN0b3ImIHgsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNWZWN0 b3ImIGIpOwoKCiAgIHZvaWQgc29sdmVSaWdodDR1cGRhdGUoU1NWZWN0b3ImIHgsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2 ZTJyaWdodDR1cGRhdGUoU1NWZWN0b3ImIHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBWZWN0b3ImIHR3bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNWZWN0 b3ImIGIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTU1ZlY3RvciYgcmhzKTsKCgog ICB2b2lkIHNvbHZlMmxlZnQoVmVjdG9yJiB4LCBWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2 ZTJsZWZ0KFZlY3RvciYgeCwgU1NWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2ZTJsZWZ0KFNT VmVjdG9yJiB4LCBWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2ZTJsZWZ0KFNTVmVjdG9yJiB4 LCBTU1ZlY3RvciYgYik7CgoKICAgdm9pZCBzb2x2ZUxlZnQgKFZlY3RvciYgeCwKICAgICAg ICAgICAgICAgICAgICBjb25zdCBWZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2ZUxlZnQgKFZl Y3RvciYgeCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBTVmVjdG9yJiBiKTsKCiAgIHZv aWQgc29sdmVMZWZ0IChTU1ZlY3RvciYgeCwKICAgICAgICAgICAgICAgICAgICBjb25zdCBW ZWN0b3ImIGIpOwoKICAgdm9pZCBzb2x2ZUxlZnQgKFNTVmVjdG9yJiB4LAogICAgICAgICAg ICAgICAgICAgIGNvbnN0IFNWZWN0b3ImIGIpOwoKCiAgIHZvaWQgc29sdmVMZWZ0IChTU1Zl Y3RvciYgeCwKICAgICAgICAgICAgICAgICAgICBWZWN0b3ImIHR3bywKICAgICAgICAgICAg ICAgICAgICBjb25zdCBTVmVjdG9yJiBiLAogICAgICAgICAgICAgICAgICAgIFNTVmVjdG9y JiByaHMyKTsKCgogICBTdGF0dXMgY2hhbmdlKGludCBpZHgsIGNvbnN0IFNWZWN0b3ImIHN1 YnN0LCBjb25zdCBTU1ZlY3RvciogZXRhID0gMCk7CiMgMjA1ICJzbHVmYWN0b3IuaCIKICAg VmVjdG9yJiB6ZXJvVmVjKCkKICAgewogICAgICByZXR1cm4gdmVjOwogICB9CgoKICAgdm9p ZCBkdW1wKCkgY29uc3Q7CgoKICAgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25zdDsKCgoKCgog ICBTTFVGYWN0b3IoKTsKCgogICB2aXJ0dWFsIH5TTFVGYWN0b3IoKTsKCnByaXZhdGU6Cgog ICBTTFVGYWN0b3ImIG9wZXJhdG9yPShjb25zdCBTTFVGYWN0b3ImIG9sZCk7CgogICBTTFVG YWN0b3IoY29uc3QgU0xVRmFjdG9yJiBvbGQpOwojIDI0NiAic2x1ZmFjdG9yLmgiCn07Cgp9 CiMgMzIgInNweHNvbHZlci5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKCgoKY2xhc3MgU1B4 U29sdmVyIDogcHVibGljIFNvUGxleAp7CnByaXZhdGU6CiAgIFNQeEZhc3RSVCBydDsKICAg U1B4U3RlZXBQUiBwcjsKICAgU1B4V2VpZ2h0U1Qgc3Q7CiAgIFNMVUZhY3RvciBzbHU7Cgpw dWJsaWM6CiAgIHZpcnR1YWwgaW50IGdldEZhY3RvckNvdW50KCkgY29uc3QKICAgewogICAg ICByZXR1cm4gc2x1LmdldEZhY3RvckNvdW50KCk7CiAgIH0KICAgdm9pZCBzZXRVdHlwZShT TFVGYWN0b3I6OlVwZGF0ZVR5cGUgdHApCiAgIHsKICAgICAgc2x1LnNldFV0eXBlKHRwKTsK ICAgfQoKCiAgIGV4cGxpY2l0IFNQeFNvbHZlcigKICAgICAgVHlwZSB0eXBlID0gTEVBVkUs IFNvUGxleDo6UmVwcmVzZW50YXRpb24gcmVwID0gU29QbGV4OjpDT0xVTU4pOwp9Owp9CiMg MjkgImV4YW1wbGUuY2MiIDIKCiMgMSAidGltZXIuaCIgMQojIDMxICJleGFtcGxlLmNjIiAy CiMgMSAic3B4cHJpY2VyLmgiIDEKIyAzMiAiZXhhbXBsZS5jYyIgMgojIDEgInNweGRlZmF1 bHRwci5oIiAxCiMgMjQgInNweGRlZmF1bHRwci5oIgojZGVmaW5lIF9TUFhERUZBVUxUUFJf SF8gCgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNs dWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRl ZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmlu ZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2Fz dDx2b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2Vy dChleHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fz c2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZP SURfQ0FTVCAoMCkpCiMgMjcgInNweGRlZmF1bHRwci5oIiAyCgojIDEgInNweHByaWNlci5o IiAxCiMgMjkgInNweGRlZmF1bHRwci5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0NCAi c3B4ZGVmYXVsdHByLmgiCmNsYXNzIFNQeERlZmF1bHRQUiA6IHB1YmxpYyBTUHhQcmljZXIK ewpwcml2YXRlOgoKICAgaW50IHNlbGVjdExlYXZlWChpbnQgc3RhcnQsIGludCBpbmNyKTsK CiAgIFNQeElkIHNlbGVjdEVudGVyWChpbnQgc3RhcnQxLCBpbnQgaW5jcjEsIGludCBzdGFy dDIsIGludCBpbmNyMik7CgpwdWJsaWM6CgogICB2aXJ0dWFsIGludCBzZWxlY3RMZWF2ZSgp OwoKICAgdmlydHVhbCBTUHhJZCBzZWxlY3RFbnRlcigpOwoKCiAgIFNQeERlZmF1bHRQUigp CiAgICAgIDogU1B4UHJpY2VyKCJEYW56aWciKQogICB7fQp9Owp9CiMgMzMgImV4YW1wbGUu Y2MiIDIKIyAxICJzcHhwYXJtdWx0cHIuaCIgMQojIDI0ICJzcHhwYXJtdWx0cHIuaCIKI2Rl ZmluZSBfU1BYUEFSTVVMVFBSX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEg MyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gK I3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2Vy dF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9W T0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5o IiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMg NTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihl cnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhwYXJtdWx0cHIuaCIg MgoKIyAxICJzcHhkZWZpbmVzLmgiIDEKIyAyOSAic3B4cGFybXVsdHByLmgiIDIKIyAxICJz cHhwcmljZXIuaCIgMQojIDMwICJzcHhwYXJtdWx0cHIuaCIgMgojIDEgImRhdGFhcnJheS5o IiAxCiMgMzEgInNweHBhcm11bHRwci5oIiAyCiMgMSAiYXJyYXkuaCIgMQojIDMyICJzcHhw YXJtdWx0cHIuaCIgMgojIDEgInNzdmVjdG9yLmgiIDEKIyAzMyAic3B4cGFybXVsdHByLmgi IDIKCm5hbWVzcGFjZSBzb3BsZXgKewoKc3RydWN0IFNQeFBhck11bHRQcl9UbXAKewogICBT UHhJZCBpZDsKICAgUmVhbCB0ZXN0Owp9OwojIDU3ICJzcHhwYXJtdWx0cHIuaCIKY2xhc3Mg U1B4UGFyTXVsdFBSIDogcHVibGljIFNQeFByaWNlcgp7CnByaXZhdGU6CiAgIERhdGFBcnJh eSA8IFNQeFBhck11bHRQcl9UbXAgPiBwcmljU2V0OwogICBpbnQgbXVsdGlQYXJ0czsKICAg aW50IHVzZWQ7CiAgIGludCBtaW47CiAgIGludCBsYXN0OwogICBpbnQgY291bnQ7CgpwdWJs aWM6CgoKICAgc3RhdGljIGludCBwYXJ0aWFsU2l6ZTsKCgogICB2aXJ0dWFsIHZvaWQgbG9h ZChTb1BsZXgqIHNvbHZlcik7CgogICB2aXJ0dWFsIHZvaWQgc2V0VHlwZShTb1BsZXg6OlR5 cGUgdHApOwoKICAgdmlydHVhbCBpbnQgc2VsZWN0TGVhdmUoKTsKCiAgIHZpcnR1YWwgU1B4 SWQgc2VsZWN0RW50ZXIoKTsKCiAgIFNQeFBhck11bHRQUigpCiAgICAgIDogU1B4UHJpY2Vy KCJQYXJNdWx0IikKICAge30KfTsKCgp9CiMgMzQgImV4YW1wbGUuY2MiIDIKIyAxICJzcHhk ZXZleHByLmgiIDEKIyAyNCAic3B4ZGV2ZXhwci5oIgojZGVmaW5lIF9TUFhERVZFWFBSX0hf IAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVk ZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYg X19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUg X0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8 dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQo ZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lE X0NBU1QgKDApKQojIDI3ICJzcHhkZXZleHByLmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAx CiMgMjkgInNweGRldmV4cHIuaCIgMgojIDEgInNweHByaWNlci5oIiAxCiMgMzAgInNweGRl dmV4cHIuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNDcgInNweGRldmV4cHIuaCIKY2xh c3MgU1B4RGV2ZXhQUiA6IHB1YmxpYyBTUHhQcmljZXIKewpwcml2YXRlOgogICBSZWFsIGxh c3Q7CiAgIERWZWN0b3IgcGVuYWx0eTsKICAgRFZlY3RvciBjb1BlbmFsdHk7CgoKICAgaW50 IHNlbGVjdExlYXZlWChSZWFsJiBiZXN0LCBpbnQgc3RhcnQgPSAwLCBpbnQgaW5jciA9IDEp OwoKICAgdm9pZCBsZWZ0NFgoaW50IG4sIFNQeElkIGlkLCBpbnQgc3RhcnQsIGludCBpbmNy KTsKCiAgIFNQeElkIHNlbGVjdEVudGVyWChSZWFsJiBiZXN0LAogICAgICBpbnQgc3RhcnQx ID0gMCwgaW50IGluY3IxID0gMSwgaW50IHN0YXJ0MiA9IDAsIGludCBpbmNyMiA9IDEpOwoK ICAgdm9pZCBlbnRlcmVkNFgoU1B4SWQgaWQsIGludCBuLAogICAgICBpbnQgc3RhcnQxLCBp bnQgaW5jcjEsIGludCBzdGFydDIsIGludCBpbmNyMik7CgpwdWJsaWM6CgogICB2aXJ0dWFs IHZvaWQgbG9hZChTb1BsZXgqIGJhc2UpOwoKICAgdmlydHVhbCB2b2lkIHNldFR5cGUoU29Q bGV4OjpUeXBlKTsKCiAgIHZpcnR1YWwgdm9pZCBzZXRSZXAoU29QbGV4OjpSZXByZXNlbnRh dGlvbik7CgogICB2aXJ0dWFsIGludCBzZWxlY3RMZWF2ZSgpOwoKICAgdmlydHVhbCB2b2lk IGxlZnQ0KGludCBuLCBTUHhJZCBpZCk7CgogICB2aXJ0dWFsIFNQeElkIHNlbGVjdEVudGVy KCk7CgogICB2aXJ0dWFsIHZvaWQgZW50ZXJlZDQoU1B4SWQgaWQsIGludCBuKTsKCiAgIHZp cnR1YWwgdm9pZCBhZGRlZFZlY3MgKGludCBuKTsKCiAgIHZpcnR1YWwgdm9pZCBhZGRlZENv VmVjcyhpbnQgbik7CgogICB2aXJ0dWFsIGJvb2wgaXNDb25zaXN0ZW50KCkgY29uc3Q7Cgog ICBTUHhEZXZleFBSKCkKICAgICAgOiBTUHhQcmljZXIoIkRldmV4IikKICAge30KfTsKCn0K IyAzNSAiZXhhbXBsZS5jYyIgMgojIDEgInNweGh5YnJpZHByLmgiIDEKIyAyNCAic3B4aHli cmlkcHIuaCIKI2RlZmluZSBfU1BYSFlCUklEUFJfSF8gCgojIDEgIi91c3IvaW5jbHVkZS9h c3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVm IF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgoj dW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5l IF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1 ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9D QVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3Nl cnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcgInNweGh5 YnJpZHByLmgiIDIKCiMgMSAic3B4ZGVmaW5lcy5oIiAxCiMgMjkgInNweGh5YnJpZHByLmgi IDIKIyAxICJzcHhwcmljZXIuaCIgMQojIDMwICJzcHhoeWJyaWRwci5oIiAyCiMgMSAic3B4 ZGV2ZXhwci5oIiAxCiMgMzEgInNweGh5YnJpZHByLmgiIDIKIyAxICJzcHhwYXJtdWx0cHIu aCIgMQojIDMyICJzcHhoeWJyaWRwci5oIiAyCiMgMSAic3B4c3RlZXBwci5oIiAxCiMgMzMg InNweGh5YnJpZHByLmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDQ3ICJzcHhoeWJyaWRw ci5oIgpjbGFzcyBTUHhIeWJyaWRQUiA6IHB1YmxpYyBTUHhQcmljZXIKewogICBTUHhTdGVl cFBSIHN0ZWVwOwogICBTUHhQYXJNdWx0UFIgcGFybXVsdDsKICAgU1B4RGV2ZXhQUiBkZXZl eDsKCiAgIFNQeFByaWNlciogdGhlcHJpY2VyOwoKICAgUmVhbCBoeWJyaWRGYWN0b3I7Cgpw dWJsaWM6CgogICB2aXJ0dWFsIHZvaWQgc2V0RXBzaWxvbihSZWFsIGVwcyk7CgogICB2aXJ0 dWFsIHZvaWQgbG9hZChTb1BsZXgqIHNvbHZlcik7CgogICB2aXJ0dWFsIHZvaWQgY2xlYXIo KTsKCiAgIHZpcnR1YWwgdm9pZCBzZXRUeXBlKFNvUGxleDo6VHlwZSB0cCk7CgogICB2aXJ0 dWFsIHZvaWQgc2V0UmVwKFNvUGxleDo6UmVwcmVzZW50YXRpb24gcmVwKTsKCiAgIHZpcnR1 YWwgaW50IHNlbGVjdExlYXZlKCk7CgogICB2aXJ0dWFsIHZvaWQgbGVmdDQoaW50IG4sIFNQ eElkIGlkKTsKCiAgIHZpcnR1YWwgU1B4SWQgc2VsZWN0RW50ZXIoKTsKCiAgIHZpcnR1YWwg dm9pZCBlbnRlcmVkNChTUHhJZCBpZCwgaW50IG4pOwoKICAgdmlydHVhbCBib29sIGlzQ29u c2lzdGVudCgpIGNvbnN0OwoKICAgdmlydHVhbCB2b2lkIGFkZGVkVmVjcyAoaW50IG4pOwoK ICAgdmlydHVhbCB2b2lkIGFkZGVkQ29WZWNzIChpbnQgbik7CgogICBTUHhIeWJyaWRQUigp CiAgICAgIDogU1B4UHJpY2VyKCJIeWJyaWQiKQogICAgICAsIHRoZXByaWNlcigwKQogICAg ICAsIGh5YnJpZEZhY3RvcigzLjApCiAgIHt9Cn07Cgp9CiMgMzYgImV4YW1wbGUuY2MiIDIK IyAxICJzcHhzdGVlcHByLmgiIDEKIyAzNyAiZXhhbXBsZS5jYyIgMgojIDEgInNweHdlaWdo dHByLmgiIDEKIyAyNCAic3B4d2VpZ2h0cHIuaCIKI2RlZmluZSBfU1BYV0VJR0hUUFJfSF8g CgojIDEgInNweGRlZmluZXMuaCIgMQojIDI3ICJzcHh3ZWlnaHRwci5oIiAyCiMgMSAic3B4 cHJpY2VyLmgiIDEKIyAyOCAic3B4d2VpZ2h0cHIuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7 CiMgNDUgInNweHdlaWdodHByLmgiCmNsYXNzIFNQeFdlaWdodFBSIDogcHVibGljIFNQeFBy aWNlcgp7CnByaXZhdGU6CiAgIERWZWN0b3IgY1BlbmFsdHk7CiAgIERWZWN0b3IgclBlbmFs dHk7CiAgIERWZWN0b3IgbGVhdmVQZW5hbHR5OwoKICAgY29uc3QgUmVhbCogY29QZW5hbHR5 OwogICBjb25zdCBSZWFsKiBwZW5hbHR5OwoKICAgUmVhbCBvYmpsZW5ndGg7CgoKICAgdm9p ZCBjb21wdXRlTGVhdmVQZW5hbHR5KGludCBzdGFydCwgaW50IGVuZCk7CgogICB2b2lkIGNv bXB1dGVDUChpbnQgc3RhcnQsIGludCBlbmQpOwoKICAgdm9pZCBjb21wdXRlUlAoaW50IHN0 YXJ0LCBpbnQgZW5kKTsKCnB1YmxpYzoKCiAgIHZpcnR1YWwgdm9pZCBsb2FkKFNvUGxleCog YmFzZSk7CgogICB2b2lkIHNldFR5cGUoU29QbGV4OjpUeXBlIHRwKTsKCiAgIHZvaWQgc2V0 UmVwKFNvUGxleDo6UmVwcmVzZW50YXRpb24gcmVwKTsKCiAgIHZpcnR1YWwgaW50IHNlbGVj dExlYXZlKCk7CgogICB2aXJ0dWFsIFNQeElkIHNlbGVjdEVudGVyKCk7CgogICB2aXJ0dWFs IHZvaWQgYWRkZWRWZWNzIChpbnQgbik7CgogICB2aXJ0dWFsIHZvaWQgYWRkZWRDb1ZlY3Mo aW50IG4pOwoKICAgdmlydHVhbCB2b2lkIHJlbW92ZWRWZWMoaW50IGkpOwoKICAgdmlydHVh bCB2b2lkIHJlbW92ZWRDb1ZlY3MoY29uc3QgaW50IHBlcm1bXSk7CgogICB2aXJ0dWFsIHZv aWQgcmVtb3ZlZFZlY3MoY29uc3QgaW50IHBlcm1bXSk7CgogICB2aXJ0dWFsIHZvaWQgcmVt b3ZlZENvVmVjKGludCBpKTsKCiAgIHZpcnR1YWwgYm9vbCBpc0NvbnNpc3RlbnQoKSBjb25z dDsKCgogICBTUHhXZWlnaHRQUigpCiAgICAgIDogU1B4UHJpY2VyKCJXZWlnaHQiKQogICB7 fQp9Owp9CiMgMzggImV4YW1wbGUuY2MiIDIKIyAxICJzcHhyYXRpb3Rlc3Rlci5oIiAxCiMg MzkgImV4YW1wbGUuY2MiIDIKIyAxICJzcHhoYXJyaXNydC5oIiAxCiMgMjQgInNweGhhcnJp c3J0LmgiCiNkZWZpbmUgX1NQWEhBUlJJU1JUX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNz ZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBf QVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3Vu ZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBf X0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRl L2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FT VCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0 X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhoYXJy aXNydC5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDI5ICJzcHhoYXJyaXNydC5oIiAy CiMgMSAic3B4cmF0aW90ZXN0ZXIuaCIgMQojIDMwICJzcHhoYXJyaXNydC5oIiAyCgpuYW1l c3BhY2Ugc29wbGV4CnsKIyA0NCAic3B4aGFycmlzcnQuaCIKY2xhc3MgU1B4SGFycmlzUlQg OiBwdWJsaWMgU1B4UmF0aW9UZXN0ZXIKewpwcml2YXRlOgogICBpbnQgbWF4RGVsdGEoCiAg ICAgIFJlYWwqICwKICAgICAgUmVhbCogdmFsLAogICAgICBpbnQgbnVtLAogICAgICBjb25z dCBpbnQqIGlkeCwKICAgICAgY29uc3QgUmVhbCogdXBkLAogICAgICBjb25zdCBSZWFsKiB2 ZWMsCiAgICAgIGNvbnN0IFJlYWwqIGxvdywKICAgICAgY29uc3QgUmVhbCogdXAsCiAgICAg IFJlYWwgZGVsdGEsCiAgICAgIFJlYWwgZXBzaWxvbik7CgogICBpbnQgbWluRGVsdGEoCiAg ICAgIFJlYWwqICwKICAgICAgUmVhbCogdmFsLAogICAgICBpbnQgbnVtLAogICAgICBjb25z dCBpbnQqIGlkeCwKICAgICAgY29uc3QgUmVhbCogdXBkLAogICAgICBjb25zdCBSZWFsKiB2 ZWMsCiAgICAgIGNvbnN0IFJlYWwqIGxvdywKICAgICAgY29uc3QgUmVhbCogdXAsCiAgICAg IFJlYWwgZGVsdGEsCiAgICAgIFJlYWwgZXBzaWxvbik7CgpwdWJsaWM6CgogICB2aXJ0dWFs IGludCBzZWxlY3RMZWF2ZShSZWFsJiB2YWwpOwoKICAgdmlydHVhbCBTUHhJZCBzZWxlY3RF bnRlcihSZWFsJiB2YWwpOwoKICAgU1B4SGFycmlzUlQoKQogICAgICA6IFNQeFJhdGlvVGVz dGVyKCkKICAge30KfTsKCn0KIyA0MCAiZXhhbXBsZS5jYyIgMgojIDEgInNweGRlZmF1bHRy dC5oIiAxCiMgMjQgInNweGRlZmF1bHRydC5oIgojZGVmaW5lIF9TUFhERUZBVUxUUlRfSF8g CgoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVk ZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYg X19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUg X0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8 dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQo ZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lE X0NBU1QgKDApKQojIDI4ICJzcHhkZWZhdWx0cnQuaCIgMgoKIyAxICJzcHhkZWZpbmVzLmgi IDEKIyAzMCAic3B4ZGVmYXVsdHJ0LmgiIDIKIyAxICJzcHhyYXRpb3Rlc3Rlci5oIiAxCiMg MzEgInNweGRlZmF1bHRydC5oIiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0NiAic3B4ZGVm YXVsdHJ0LmgiCmNsYXNzIFNQeERlZmF1bHRSVCA6IHB1YmxpYyBTUHhSYXRpb1Rlc3Rlcgp7 CnByaXZhdGU6CgogICBpbnQgc2VsZWN0TGVhdmVYKFJlYWwmIHZhbCwgaW50IHN0YXJ0LCBp bnQgaW5jcik7CgogICBTUHhJZCBzZWxlY3RFbnRlclgoUmVhbCYgdmFsLAogICAgICBpbnQg c3RhcnQxLCBpbnQgaW5jcjEsIGludCBzdGFydDIsIGludCBpbmNyMik7CgpwdWJsaWM6Cgog ICB2aXJ0dWFsIGludCBzZWxlY3RMZWF2ZShSZWFsJiB2YWwpOwoKICAgdmlydHVhbCBTUHhJ ZCBzZWxlY3RFbnRlcihSZWFsJiB2YWwpOwoKICAgU1B4RGVmYXVsdFJUKCkKICAgICAgOiBT UHhSYXRpb1Rlc3RlcigpCiAgIHt9Cn07Cgp9CiMgNDEgImV4YW1wbGUuY2MiIDIKIyAxICJz cHhmYXN0cnQuaCIgMQojIDQyICJleGFtcGxlLmNjIiAyCiMgMSAic3B4c2ltcGxpZmllci5o IiAxCiMgMjQgInNweHNpbXBsaWZpZXIuaCIKI2RlZmluZSBfU1BYU0lNUExJRklFUl9IXyAK CiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2luY2x1ZGUv YXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3VuZGVmIF9f QVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVmaW5lIF9B U1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19jYXN0PHZv aWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0KGV4 cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRfVk9JRF9D QVNUICgwKSkKIyAyNyAic3B4c2ltcGxpZmllci5oIiAyCgojIDEgInNweGRlZmluZXMuaCIg MQojIDI5ICJzcHhzaW1wbGlmaWVyLmgiIDIKIyAxICJzcHhscC5oIiAxCiMgMzAgInNweHNp bXBsaWZpZXIuaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CiMgNDIgInNweHNpbXBsaWZpZXIu aCIKY2xhc3MgU1B4U2ltcGxpZmllcgp7CnByb3RlY3RlZDoKICAgU1B4TFAqIGxwOwogICBS ZWFsIGRlbHRhOwoKcHVibGljOgogICBTUHhTaW1wbGlmaWVyKCkKICAgICAgOiBscCgwKSwg ZGVsdGEoMCkKICAge30KCgogICB2aXJ0dWFsIHZvaWQgbG9hZChTUHhMUCogcF9scCkKICAg ewogICAgICAKIyA1NiAic3B4c2ltcGxpZmllci5oIiAzIDQKICAgICAoc3RhdGljX2Nhc3Q8 dm9pZD4gKDApKQojIDU2ICJzcHhzaW1wbGlmaWVyLmgiCiAgICAgICAgICAgICAgICAgICAg ICA7CgogICAgICBpZiAobHAgIT0gcF9scCkKICAgICAgewogICAgICAgICBscCA9IHBfbHA7 CiAgICAgICAgIGRlbHRhID0gMDsKICAgICAgfQogICB9CgogICB2aXJ0dWFsIHZvaWQgdW5s b2FkKCkKICAgewogICAgICBscCA9IDA7CiAgIH0KIyA3OSAic3B4c2ltcGxpZmllci5oIgog ICB2aXJ0dWFsIGludCBzaW1wbGlmeSgpID0gMDsKCgogICB2aXJ0dWFsIHZvaWQgdW5zaW1w bGlmeSgpID0gMDsKCgoKCgoKCiAgIHZpcnR1YWwgUmVhbCB2YWx1ZShSZWFsIHgpCiAgIHsK ICAgICAgcmV0dXJuIHggKyBkZWx0YTsKICAgfQoKCiAgIGJvb2wgaXNDb25zaXN0ZW50KCkg Y29uc3QKICAgewogICAgICByZXR1cm4gdHJ1ZTsKICAgfQp9Owp9CiMgNDMgImV4YW1wbGUu Y2MiIDIKIyAxICJzcHhhZ2dyZWdhdGVzbS5oIiAxCiMgMjQgInNweGFnZ3JlZ2F0ZXNtLmgi CiNkZWZpbmUgX1NQWEFHR1JFR0FURVNNX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0 LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNT RVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVm IGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FT U0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fz c2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAo MCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3Bl cnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhhZ2dyZWdh dGVzbS5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDI5ICJzcHhhZ2dyZWdhdGVzbS5o IiAyCiMgMSAic3B4c2ltcGxpZmllci5oIiAxCiMgMzAgInNweGFnZ3JlZ2F0ZXNtLmgiIDIK Cm5hbWVzcGFjZSBzb3BsZXgKewoKCgoKCmNsYXNzIFNQeEFnZ3JlZ2F0ZVNNIDogcHVibGlj IFNQeFNpbXBsaWZpZXIKewpwcml2YXRlOgogICBSZWFsIHN0YWJpbGl0eTsKICAgUmVhbCBt YXhGaWxsOwoKCiAgIGludCBlbGltaW5hdGUoY29uc3QgU1ZlY3RvciYgcm93LCBSZWFsIGIp OwoKcHVibGljOgoKICAgaW50IHNpbXBsaWZ5KCk7CgoKICAgdm9pZCB1bnNpbXBsaWZ5KCk7 CgoKICAgUmVhbCB2YWx1ZShSZWFsIHgpCiAgIHsKICAgICAgcmV0dXJuIHggKyBscC0+c3B4 U2Vuc2UoKSpkZWx0YTsKICAgfQp9Owp9CiMgNDQgImV4YW1wbGUuY2MiIDIKIyAxICJzcHhy ZWR1bmRhbnRzbS5oIiAxCiMgMjQgInNweHJlZHVuZGFudHNtLmgiCiNkZWZpbmUgX1NQWFJF RFVOREFOVFNNX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQg Ii91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFz c2VydAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IK CgoKCiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qg c3RhdGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2Rl ZmluZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3Iv aW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChf X0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhyZWR1bmRhbnRzbS5oIiAyCgojIDEg InNweGRlZmluZXMuaCIgMQojIDI5ICJzcHhyZWR1bmRhbnRzbS5oIiAyCiMgMSAic3B4c2lt cGxpZmllci5oIiAxCiMgMzAgInNweHJlZHVuZGFudHNtLmgiIDIKCm5hbWVzcGFjZSBzb3Bs ZXgKewoKCgoKCgpjbGFzcyBTUHhSZWR1bmRhbnRTTSA6IHB1YmxpYyBTUHhTaW1wbGlmaWVy CnsKcHVibGljOgoKICAgaW50IHNpbXBsaWZ5KCk7CgoKICAgdm9pZCB1bnNpbXBsaWZ5KCk7 CgoKICAgUmVhbCB2YWx1ZShSZWFsIHgpCiAgIHsKICAgICAgcmV0dXJuIHggKyBscC0+c3B4 U2Vuc2UoKSAqIGRlbHRhOwogICB9Cn07Cn0KIyA0NSAiZXhhbXBsZS5jYyIgMgojIDEgInNw eHJlbTFzbS5oIiAxCiMgMjQgInNweHJlbTFzbS5oIgojZGVmaW5lIF9TUFhSRU0xU01fSF8g CgojIDEgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRl L2Fzc2VydC5oIiAzIDQKI3VuZGVmIF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBf X0FTU0VSVF9WT0lEX0NBU1QKCgojdW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBf QVNTRVJUX0ggMQoKCgojZGVmaW5lIF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2 b2lkPgojIDUwICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChl eHByKSAoX19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2Vy dC5oIiAzIDQKI2RlZmluZSBhc3NlcnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURf Q0FTVCAoMCkpCiMgMjcgInNweHJlbTFzbS5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQoj IDI5ICJzcHhyZW0xc20uaCIgMgojIDEgInNweHNpbXBsaWZpZXIuaCIgMQojIDMwICJzcHhy ZW0xc20uaCIgMgoKbmFtZXNwYWNlIHNvcGxleAp7CgoKCgoKCmNsYXNzIFNQeFJlbTFTTSA6 IHB1YmxpYyBTUHhTaW1wbGlmaWVyCnsKcHVibGljOgoKICAgaW50IHNpbXBsaWZ5KCk7CgoK ICAgdm9pZCB1bnNpbXBsaWZ5KCk7CgoKCgoKICAgUmVhbCB2YWx1ZShSZWFsIHgpCiAgIHsK ICAgICAgcmV0dXJuIHggLSBscC0+c3B4U2Vuc2UoKSAqIGRlbHRhOwogICB9Cn07Cn0KIyA0 NiAiZXhhbXBsZS5jYyIgMgojIDEgInNweGdlbmVyYWxzbS5oIiAxCiMgMjQgInNweGdlbmVy YWxzbS5oIgojZGVmaW5lIF9TUFhHRU5FUkFMU01fSF8gCgojIDEgIi91c3IvaW5jbHVkZS9h c3NlcnQuaCIgMSAzIDQKIyAyNCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI3VuZGVm IF9BU1NFUlRfSAojdW5kZWYgYXNzZXJ0CiN1bmRlZiBfX0FTU0VSVF9WT0lEX0NBU1QKCgoj dW5kZWYgYXNzZXJ0X3BlcnJvcgoKCgoKI2RlZmluZSBfQVNTRVJUX0ggMQoKCgojZGVmaW5l IF9fQVNTRVJUX1ZPSURfQ0FTVCBzdGF0aWNfY2FzdDx2b2lkPgojIDUwICIvdXNyL2luY2x1 ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydChleHByKSAoX19BU1NFUlRfVk9JRF9D QVNUICgwKSkKIyA1OSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3Nl cnRfcGVycm9yKGVycm51bSkgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgMjcgInNweGdl bmVyYWxzbS5oIiAyCgojIDEgInNweGRlZmluZXMuaCIgMQojIDI5ICJzcHhnZW5lcmFsc20u aCIgMgojIDEgInNweHJlZHVuZGFudHNtLmgiIDEKIyAzMCAic3B4Z2VuZXJhbHNtLmgiIDIK IyAxICJzcHhhZ2dyZWdhdGVzbS5oIiAxCiMgMzEgInNweGdlbmVyYWxzbS5oIiAyCiMgMSAi c3B4cmVtMXNtLmgiIDEKIyAzMiAic3B4Z2VuZXJhbHNtLmgiIDIKCm5hbWVzcGFjZSBzb3Bs ZXgKewoKCgoKCgpjbGFzcyBTUHhHZW5lcmFsU00gOiBwdWJsaWMgU1B4U2ltcGxpZmllcgp7 CnByaXZhdGU6CiAgIFNQeFJlbTFTTSByZW0xOwogICBTUHhSZWR1bmRhbnRTTSByZWR1Owog ICBTUHhBZ2dyZWdhdGVTTSBhZ2dyOwoKcHVibGljOgoKICAgdmlydHVhbCB2b2lkIGxvYWQo U1B4TFAqIHBfbHApOwoKCiAgIHZpcnR1YWwgdm9pZCB1bmxvYWQoKTsKCgogICB2aXJ0dWFs IGludCBzaW1wbGlmeSgpOwoKCiAgIHZpcnR1YWwgdm9pZCB1bnNpbXBsaWZ5KCk7CgoKICAg dmlydHVhbCBSZWFsIHZhbHVlKFJlYWwgeCk7CgoKICAgU1B4R2VuZXJhbFNNKCkKICAge30K CgogICB2aXJ0dWFsIH5TUHhHZW5lcmFsU00oKQogICB7fQp9OwoKfQojIDQ3ICJleGFtcGxl LmNjIiAyCiMgMSAic3B4c2NhbGVyLmgiIDEKIyAyNCAic3B4c2NhbGVyLmgiCiNkZWZpbmUg X1NQWFNDQUxFUl9IXyAKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0 ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBh c3NlcnQKI3VuZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9y CgoKCgojZGVmaW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNU IHN0YXRpY19jYXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNk ZWZpbmUgYXNzZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNy L2luY2x1ZGUvYXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAo X19BU1NFUlRfVk9JRF9DQVNUICgwKSkKIyAyNyAic3B4c2NhbGVyLmgiIDIKCiMgMSAic3B4 ZGVmaW5lcy5oIiAxCiMgMjkgInNweHNjYWxlci5oIiAyCiMgMSAiZGF0YWFycmF5LmgiIDEK IyAzMCAic3B4c2NhbGVyLmgiIDIKIyAxICJzcHhscC5oIiAxCiMgMzEgInNweHNjYWxlci5o IiAyCgpuYW1lc3BhY2Ugc29wbGV4CnsKIyA0MyAic3B4c2NhbGVyLmgiCmNsYXNzIFNQeFNj YWxlcgp7CnByb3RlY3RlZDoKICAgY29uc3QgY2hhciogbV9uYW1lOwogICBTUHhMUCogbV9s cDsKICAgRGF0YUFycmF5IDwgUmVhbCA+IG1fY29sc2NhbGU7CiAgIERhdGFBcnJheSA8IFJl YWwgPiBtX3Jvd3NjYWxlOwogICBib29sIG1fY29sRmlyc3Q7CiAgIGJvb2wgbV9kb0JvdGg7 CgpwdWJsaWM6CiAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3Ry ZWFtJiBzLCBjb25zdCBTUHhTY2FsZXImIHNjKTsKCgogICBleHBsaWNpdCBTUHhTY2FsZXIo Y29uc3QgY2hhciogbmFtZSwKICAgICAgYm9vbCBjb2xGaXJzdCA9IHRydWUsIGJvb2wgZG9C b3RoID0gdHJ1ZSk7CgogICB2aXJ0dWFsIH5TUHhTY2FsZXIoKTsKCiAgIHZpcnR1YWwgY29u c3QgY2hhciogZ2V0TmFtZSgpIGNvbnN0OwoKICAgdmlydHVhbCB2b2lkIHNldE9yZGVyKGJv b2wgY29sRmlyc3QpOwoKICAgdmlydHVhbCB2b2lkIHNldEJvdGgoYm9vbCBib3RoKTsKCiAg IHZpcnR1YWwgdm9pZCBzZXRMUChTUHhMUCogbHApOwoKICAgdmlydHVhbCB2b2lkIHNjYWxl KCkgPSAwOwoKICAgdmlydHVhbCB2b2lkIHVuc2NhbGUoKTsKCiAgIHZpcnR1YWwgdm9pZCB1 bnNjYWxlU29sdXRpb24oVmVjdG9yJiB1c29sKSBjb25zdDsKCiAgIHZpcnR1YWwgdm9pZCB1 bnNjYWxlZE1heE9iaihWZWN0b3ImIHVvYmopIGNvbnN0OwoKICAgdmlydHVhbCB2b2lkIHVu c2NhbGVkTG93ZXIoVmVjdG9yJiB1bG93ZXIpIGNvbnN0OwoKICAgdmlydHVhbCB2b2lkIHVu c2NhbGVkVXBwZXIoVmVjdG9yJiB1dXBwZXIpIGNvbnN0OwoKICAgdmlydHVhbCB2b2lkIHVu c2NhbGVkTGhzKFZlY3RvciYgdWxocykgY29uc3Q7CgogICB2aXJ0dWFsIHZvaWQgdW5zY2Fs ZWRSaHMoVmVjdG9yJiB1cmhzKSBjb25zdDsKCiAgIHZpcnR1YWwgdm9pZCB1bnNjYWxlZFJv d1ZlY3RvcihpbnQgcm93LCBEU1ZlY3RvciYgdXZlYykgY29uc3Q7CgogICB2aXJ0dWFsIHZv aWQgdW5zY2FsZWRDb2xWZWN0b3IoaW50IGNvbCwgRFNWZWN0b3ImIHV2ZWMpIGNvbnN0OwoK ICAgdmlydHVhbCBib29sIGlzQ29uc2lzdGVudCgpIGNvbnN0OwoKcHJpdmF0ZToKCiAgIFNQ eFNjYWxlciYgb3BlcmF0b3I9KGNvbnN0IFNQeFNjYWxlciYgYmFzZSk7CgoKICAgU1B4U2Nh bGVyKGNvbnN0IFNQeFNjYWxlciYgYmFzZSk7Cn07Cn0KIyA0OCAiZXhhbXBsZS5jYyIgMgoj IDEgInNweGVxdWlsaXNjLmgiIDEKIyAyNCAic3B4ZXF1aWxpc2MuaCIKI2RlZmluZSBfU1BY RVFVSUxJX0hfIAoKIyAxICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91 c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2Vy dAojdW5kZWYgX19BU1NFUlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoK CiNkZWZpbmUgX0FTU0VSVF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3Rh dGljX2Nhc3Q8dm9pZD4KIyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmlu ZSBhc3NlcnQoZXhwcikgKF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5j bHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FT U0VSVF9WT0lEX0NBU1QgKDApKQojIDI3ICJzcHhlcXVpbGlzYy5oIiAyCgojIDEgInNweGRl ZmluZXMuaCIgMQojIDI5ICJzcHhlcXVpbGlzYy5oIiAyCiMgMSAic3B4c2NhbGVyLmgiIDEK IyAzMCAic3B4ZXF1aWxpc2MuaCIgMgojIDEgImRhdGFhcnJheS5oIiAxCiMgMzEgInNweGVx dWlsaXNjLmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDQzICJzcHhlcXVpbGlzYy5oIgpj bGFzcyBTUHhFcXVpbGkgOiBwdWJsaWMgU1B4U2NhbGVyCnsKcHVibGljOgoKICAgdmlydHVh bCB2b2lkIHNjYWxlKCk7CgoKICAgZXhwbGljaXQgU1B4RXF1aWxpKGJvb2wgY29sRmlyc3Qg PSB0cnVlLCBib29sIGRvQm90aCA9IHRydWUpOwp9Owp9CiMgNDkgImV4YW1wbGUuY2MiIDIK IyAxICJzcHhzdW1zdC5oIiAxCiMgMjUgInNweHN1bXN0LmgiCiNkZWZpbmUgX1NQWFNVTVNU X0hfIAoKCiMgMSAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAxIDMgNAojIDI0ICIvdXNyL2lu Y2x1ZGUvYXNzZXJ0LmgiIDMgNAojdW5kZWYgX0FTU0VSVF9ICiN1bmRlZiBhc3NlcnQKI3Vu ZGVmIF9fQVNTRVJUX1ZPSURfQ0FTVAoKCiN1bmRlZiBhc3NlcnRfcGVycm9yCgoKCgojZGVm aW5lIF9BU1NFUlRfSCAxCgoKCiNkZWZpbmUgX19BU1NFUlRfVk9JRF9DQVNUIHN0YXRpY19j YXN0PHZvaWQ+CiMgNTAgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIgMyA0CiNkZWZpbmUgYXNz ZXJ0KGV4cHIpIChfX0FTU0VSVF9WT0lEX0NBU1QgKDApKQojIDU5ICIvdXNyL2luY2x1ZGUv YXNzZXJ0LmgiIDMgNAojZGVmaW5lIGFzc2VydF9wZXJyb3IoZXJybnVtKSAoX19BU1NFUlRf Vk9JRF9DQVNUICgwKSkKIyAyOSAic3B4c3Vtc3QuaCIgMgoKIyAxICJzcHh2ZWN0b3JzdC5o IiAxCiMgMjQgInNweHZlY3RvcnN0LmgiCiNkZWZpbmUgX1NQWFZFQ1RPUlNUX0hfIAoKIyAx ICIvdXNyL2luY2x1ZGUvYXNzZXJ0LmgiIDEgMyA0CiMgMjQgIi91c3IvaW5jbHVkZS9hc3Nl cnQuaCIgMyA0CiN1bmRlZiBfQVNTRVJUX0gKI3VuZGVmIGFzc2VydAojdW5kZWYgX19BU1NF UlRfVk9JRF9DQVNUCgoKI3VuZGVmIGFzc2VydF9wZXJyb3IKCgoKCiNkZWZpbmUgX0FTU0VS VF9IIDEKCgoKI2RlZmluZSBfX0FTU0VSVF9WT0lEX0NBU1Qgc3RhdGljX2Nhc3Q8dm9pZD4K IyA1MCAiL3Vzci9pbmNsdWRlL2Fzc2VydC5oIiAzIDQKI2RlZmluZSBhc3NlcnQoZXhwcikg KF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkpCiMgNTkgIi91c3IvaW5jbHVkZS9hc3NlcnQuaCIg MyA0CiNkZWZpbmUgYXNzZXJ0X3BlcnJvcihlcnJudW0pIChfX0FTU0VSVF9WT0lEX0NBU1Qg KDApKQojIDI3ICJzcHh2ZWN0b3JzdC5oIiAyCgojIDEgInNweHdlaWdodHN0LmgiIDEKIyAy OSAic3B4dmVjdG9yc3QuaCIgMgojIDEgInZlY3Rvci5oIiAxCiMgMzAgInNweHZlY3RvcnN0 LmgiIDIKCm5hbWVzcGFjZSBzb3BsZXgKewojIDQ4ICJzcHh2ZWN0b3JzdC5oIgpjbGFzcyBT UHhWZWN0b3JTVCA6IHB1YmxpYyBTUHhXZWlnaHRTVAp7CiAgIGVudW0geyBOT05FLCBQVkVD LCBEVkVDfSBzdGF0ZTsKICAgRFZlY3RvciB2ZWM7Cgpwcm90ZWN0ZWQ6CgogICB2b2lkIHNl dHVwV2VpZ2h0cyhTb1BsZXgmIGJhc2UpOwoKcHVibGljOgoKICAgdm9pZCBwcmltYWwoY29u c3QgVmVjdG9yJiB2KQogICB7CiAgICAgIHZlYyA9IHY7CiAgICAgIHN0YXRlID0gUFZFQzsK ICAgfQoKCiAgIHZvaWQgZHVhbChjb25zdCBWZWN0b3ImIHYpCiAgIHsKICAgICAgdmVjID0g djsKICAgICAgc3RhdGUgPSBEVkVDOwogICB9CgoKICAgU1B4VmVjdG9yU1QoKSA6IHN0YXRl KE5PTkUpCiAgIHt9Cgp9OwoKfQojIDMxICJzcHhzdW1zdC5oIiAyCgpuYW1lc3BhY2Ugc29w bGV4CnsKCgoKCgoKCmNsYXNzIFNQeFN1bVNUIDogcHVibGljIFNQeFZlY3RvclNUCnsKcHJv dGVjdGVkOgoKICAgdm9pZCBzZXR1cFdlaWdodHMoU29QbGV4JiBiYXNlKTsKCnB1YmxpYzoK CiAgIFNQeFN1bVNUKCkKICAge30KCn07Cgp9CiMgNTAgImV4YW1wbGUuY2MiIDIKIyAxICJz cHh3ZWlnaHRzdC5oIiAxCiMgNTEgImV4YW1wbGUuY2MiIDIKIyAxICJzcHh2ZWN0b3JzdC5o IiAxCiMgNTIgImV4YW1wbGUuY2MiIDIKIyAxICJzbHVmYWN0b3IuaCIgMQojIDUzICJleGFt cGxlLmNjIiAyCgpzdGQ6Om9mc3RyZWFtIG91dF9maWxlOwpjaGFyICpvdXRfZmlsZW5hbWU7 Cgp1c2luZyBuYW1lc3BhY2Ugc29wbGV4OwoKCgoKY2xhc3MgTXlTb1BsZXggOiBwdWJsaWMg U1B4U29sdmVyCnsKcHJpdmF0ZToKICAgU0xVRmFjdG9yIG1fc2x1OwogICBpbnQgbV9pdGVy X2xpbWl0OwoKcHVibGljOgoKICAgTXlTb1BsZXgoVHlwZSBwX3R5cGUgPSBMRUFWRSwgUmVw cmVzZW50YXRpb24gcF9yZXAgPSBDT0xVTU4pCiAgICAgIDogU1B4U29sdmVyKHBfdHlwZSwg cF9yZXApCiAgIHt9CiAgIHZvaWQgZGlzcGxheVF1YWxpdHkoKQogICB7CiAgICAgIGRvdWJs ZSBtYXh2aW9sOwogICAgICBkb3VibGUgc3VtdmlvbDsKCiAgICAgIHN0ZDo6Y291dCA8PCAi VmlvbGF0aW9ucyAobWF4L3N1bSkiIDw8IHN0ZDo6ZW5kbDsKCiAgICAgIHF1YWxDb25zdHJh aW50VmlvbGF0aW9uKG1heHZpb2wsIHN1bXZpb2wpOwoKICAgICAgc3RkOjpjb3V0IDw8ICJD b25zdHJhaW50cyAgICAgIDoiCiAgICAgICAgICAgICAgICA8PCBzdGQ6OnNldHcoMTYpIDw8 IG1heHZpb2wgPDwgIiAgIgogICAgICAgICAgICAgICAgPDwgc3RkOjpzZXR3KDE2KSA8PCBz dW12aW9sIDw8IHN0ZDo6ZW5kbDsKCiAgICAgIHF1YWxDb25zdHJhaW50VmlvbGF0aW9uVW5z Y2FsZWQobWF4dmlvbCwgc3VtdmlvbCk7CgogICAgICBzdGQ6OmNvdXQgPDwgIiAgICAgICh1 bnNjYWxlZCkgOiIKICAgICAgICAgICAgICAgIDw8IHN0ZDo6c2V0dygxNikgPDwgbWF4dmlv bCA8PCAiICAiCiAgICAgICAgICAgICAgICA8PCBzdGQ6OnNldHcoMTYpIDw8IHN1bXZpb2wg PDwgc3RkOjplbmRsOwoKICAgICAgcXVhbEJvdW5kVmlvbGF0aW9uKG1heHZpb2wsIHN1bXZp b2wpOwoKICAgICAgc3RkOjpjb3V0IDw8ICJCb3VuZHMgICAgICAgICAgIDoiCiAgICAgICAg ICAgICAgICA8PCBzdGQ6OnNldHcoMTYpIDw8IG1heHZpb2wgPDwgIiAgIgogICAgICAgICAg ICAgICAgPDwgc3RkOjpzZXR3KDE2KSA8PCBzdW12aW9sIDw8IHN0ZDo6ZW5kbDsKCiAgICAg IHF1YWxCb3VuZFZpb2xhdGlvblVuc2NhbGVkKG1heHZpb2wsIHN1bXZpb2wpOwoKICAgICAg c3RkOjpjb3V0IDw8ICIgICAgICAodW5zY2FsZWQpIDoiCiAgICAgICAgICAgICAgICA8PCBz dGQ6OnNldHcoMTYpIDw8IG1heHZpb2wgPDwgIiAgIgogICAgICAgICAgICAgICAgPDwgc3Rk OjpzZXR3KDE2KSA8PCBzdW12aW9sIDw8IHN0ZDo6ZW5kbDsKCiAgICAgIHF1YWxTbGFja1Zp b2xhdGlvbihtYXh2aW9sLCBzdW12aW9sKTsKCiAgICAgIHN0ZDo6Y291dCA8PCAiU2xhY2tz ICAgICAgICAgICA6IgogICAgICAgICAgICAgICAgPDwgc3RkOjpzZXR3KDE2KSA8PCBtYXh2 aW9sIDw8ICIgICIKICAgICAgICAgICAgICAgIDw8IHN0ZDo6c2V0dygxNikgPDwgc3Vtdmlv bCA8PCBzdGQ6OmVuZGw7CgoKCgoKCiAgIH0KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKewogICBjb25zdCBjaGFyKiBiYW5uZXIgPQogICAiKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqXG4iCiAgICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiIKICAgIiogICAgICAgU29QbGV4IC0t LSB0aGUgU2VxdWVudGlhbCBvYmplY3Qtb3JpZW50ZWQgc2ltUGxleC4gICAgICAgICAgICAg KlxuIgogICAiKiAgICAgICAgICAgICAgICAgIFJlbGVhc2UgMS4yLjEgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4iCiAgICIqICAgIENvcHlyaWdodCAoQykg MTk5Ny0xOTk5IFJvbGFuZCBXdW5kZXJsaW5nICAgICAgICAgICAgICAgICAgICAgICAgICpc biIKICAgIiogICAgICAgICAgICAgICAgICAxOTk3LTIwMDIgS29ucmFkLVp1c2UtWmVudHJ1 bSAgICAgICAgICAgICAgICAgICAgICAgKlxuIgogICAiKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBmdWVyIEluZm9ybWF0aW9uc3RlY2huaWsgQmVybGluICAgICAgICAgICAqXG4i CiAgICIqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpcbiIKICAgIiogIFNvUGxleCBpcyBkaXN0cmlidXRl ZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIFpJQiBBY2FkZW1pYyBMaWNlbmNlLiAgKlxuIgog ICAiKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgWklCIEFjYWRl bWljIExpY2Vuc2UgICAgICAgICAqXG4iCiAgICIqICBhbG9uZyB3aXRoIFNvUGxleDsgSWYg bm90IGVtYWlsIHRvIHNvcGxleEB6aWIuZGUuICAgICAgICAgICAgICAgICAgICpcbiIKICAg IiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKlxuIgogICAiKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4iCiAgIDsK CiAgIGNvbnN0IGNoYXIqIHVzYWdlID0KICAgIltvcHRpb25zXSBMUGZpbGVcblxuIgogICAi ICAgICAgICAgIExQZmlsZSBjYW4gYmUgZWl0aGVyIGluIE1QUyBvciBMUEYgZm9ybWF0XG5c biIKICAgIm9wdGlvbnM6ICAoKikgaW5kaWNhdGVzIGRlZmF1bHRcbiIKICAgIiAtZSAgICAg ICAgc2VsZWN0IGxlYXZpbmcgYWxnb3JpdGhtIChkZWZhdWx0IGlzIGVudGVyaW5nKVxuIgog ICAiIC1yICAgICAgICBzZWxlY3Qgcm93IHdpc2UgcmVwcmVzZW50YXRpb24gKGRlZmF1bHQg aXMgY29sdW1uKVxuIgogICAiIC1pICAgICAgICBzZWxlY3QgRXRhLXVwZGF0ZSAoZGVmYXVs dCBpcyBGb3Jlc3QtVG9tbGluKVxuIgogICAiIC14ICAgICAgICBvdXRwdXQgc29sdXRpb24g dmVjdG9yICh3b3JrcyBvbmx5IHRvZ2V0aGVyIHdpdGggLXMwKVxuIgogICAiIC1xICAgICAg ICBkaXNwbGF5IHNvbHV0aW9uIHF1YWxpdHlcbiIKICAgIiAtYkJhc2ZpbGUgcmVhZCBmaWxl IHdpdGggc3RhcnRpbmcgYmFzaXNcbiIKICAgIiAtbFNlYyAgICAgc2V0IHRpbWVsaW1pdCB0 byBTZWMgc2Vjb25kc1xuIgogICAiIC1tSXRlcnMgICBzZXQgaXRlcmF0aW9uIGxpbWl0IHRv IEl0ZXIgaXRlcmF0aW9uc1xuIgogICAiIC1kRGVsdGEgICBzZXQgbWF4aW1hbCBhbGxvd2Vk IGJvdW5kIHZpb2xhdGlvbiB0byBEZWx0YVxuIgogICAiIC16WmVybyAgICBzZXQgemVybyB0 b2xlcmFuY2UgdG8gWmVyb1xuXG4iCiAgICIgLXZMZXZlbCAgIHNldCB2ZXJib3NpdHkgTGV2 ZWwgWzAtM10sIGRlZmF1bHQgMVxuIgogICAiIC1WICAgICAgICBzaG93IHByb2dyYW0gdmVy c2lvblxuIgogICAiIC1oICAgICAgICBzaG93IHRoaXMgaGVscFxuIgogICAiU2ltcGxpZmll cjogICAgIFNjYWxlcjogICAgICAgICBTdGFydGVyOiAgICAgUHJpY2VyOiAgICAgICAgUmF0 aW90ZXN0ZXI6XG4iCiAgICIgLXMwIG5vbmUqICAgICAgLWcwIG5vbmUqICAgICAgICAtYzAg bm9uZSAgICAtcDAgVGV4dGJvb2sgIC10MCBUZXh0Ym9va1xuIgogICAiIC1zMSBHZW5lcmFs ICAgIC1nMSBCaS1FcXVpICAgICAgLWMxIFdlaWdodCogLXAxIFBhck11bHQgICAtdDEgSGFy cmlzXG4iCiAgICIgLXMyIEFnZ3JlZ2F0ZSAgLWcyIFVuaS1FcXVpICAgICAtYzIgU3VtICAg ICAtcDIgRGV2ZXggICAgIC10MiBGYXN0KlxuIgogICAiIC1zMyBSZW1vdmUtMSAgICAgICAg ICAgICAgICAgICAgLWMzIFZlY3RvciAgLXAzIEh5YnJpZFxuIgogICAiIC1zNCBSZWR1bmRh bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXA0IFN0ZWVwKlxuIgogICAiICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXA1IFdlaWdodFxu IgogICA7CgogICBjb25zdCBjaGFyKiBmaWxlbmFtZTsKICAgY2hhciogYmFzaXNuYW1lID0g MDsKICAgU29QbGV4OjpUeXBlIHR5cGUgPSBTb1BsZXg6OkVOVEVSOwogICBTb1BsZXg6OlJl cHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uID0gU29QbGV4OjpDT0xVTU47CiAgIFNMVUZh Y3Rvcjo6VXBkYXRlVHlwZSB1cGRhdGUgPSBTTFVGYWN0b3I6OkZPUkVTVF9UT01MSU47CiAg IFNQeFNpbXBsaWZpZXIqIHNpbXBsaWZpZXIgPSAwOwogICBTUHhTdGFydGVyKiBzdGFydGVy ID0gMDsKICAgU1B4UHJpY2VyKiBwcmljZXIgPSAwOwogICBTUHhSYXRpb1Rlc3RlciogcmF0 aW90ZXN0ZXIgPSAwOwogICBTUHhTY2FsZXIqIHNjYWxlciA9IDA7CiAgIE5hbWVTZXQgcm93 bmFtZXM7CiAgIE5hbWVTZXQgY29sbmFtZXM7CiAgIGludCBzdGFydGluZyA9IDE7CiAgIGlu dCBwcmljaW5nID0gNDsKICAgaW50IHJhdGlvdGVzdCA9IDI7CiAgIGludCBzY2FsaW5nID0g MDsKICAgaW50IHNpbXBsaWZpbmcgPSAwOwogICBpbnQgaXRlcmxpbWl0ID0gLTE7CiAgIFJl YWwgdGltZWxpbWl0ID0gLTEuMDsKICAgUmVhbCBkZWx0YSA9IDFlLTY7CiAgIFJlYWwgZXBz aWxvbiA9IDFlLTE3OwogICBpbnQgdmVyYm9zZSA9IDE7CiAgIGJvb2wgcHJpbnRfc29sdXRp b24gPSBmYWxzZTsKICAgYm9vbCBwcmludF9xdWFsaXR5ID0gZmFsc2U7CiAgIGludCBwcmVj aXNpb247CiAgIGludCBvcHRpZHg7CgogICBmb3Iob3B0aWR4ID0gMTsgb3B0aWR4IDwgYXJn Yzsgb3B0aWR4KyspCiAgIHsKICAgICAgaWYgKCphcmd2W29wdGlkeF0gIT0gJy0nKQogICAg ICAgICBicmVhazsKCiAgICAgIHN3aXRjaChhcmd2W29wdGlkeF1bMV0pCiAgICAgIHsKICAg ICAgY2FzZSAnYicgOgogICAgICAgICBiYXNpc25hbWUgPSBzdHJjcHkoCiAgICAgICAgICAg IG5ldyBjaGFyW3N0cmxlbigmYXJndltvcHRpZHhdWzFdKSArIDFdLCAmYXJndltvcHRpZHhd WzFdKTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2MnIDoKICAgICAgICAgc3RhcnRp bmcgPSBhdG9pKCZhcmd2W29wdGlkeF1bMl0pOwogICAgICAgICBicmVhazsKICAgICAgY2Fz ZSAnZCcgOgogICAgICAgICBkZWx0YSA9IGF0b2YoJmFyZ3Zbb3B0aWR4XVsyXSk7CiAgICAg ICAgIGJyZWFrOwogICAgICBjYXNlICdlJzoKICAgICAgICAgdHlwZSA9IFNvUGxleDo6TEVB VkU7CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdnJyA6CiAgICAgICAgIHNjYWxpbmcg PSBhdG9pKCZhcmd2W29wdGlkeF1bMl0pOwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAn aScgOgogICAgICAgICB1cGRhdGUgPSBTTFVGYWN0b3I6OkVUQTsKICAgICAgICAgYnJlYWs7 CiAgICAgIGNhc2UgJ2wnIDoKICAgICAgICAgdGltZWxpbWl0ID0gYXRvZigmYXJndltvcHRp ZHhdWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ20nIDoKICAgICAgICAgaXRl cmxpbWl0ID0gYXRvaSgmYXJndltvcHRpZHhdWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAg IGNhc2UgJ3AnIDoKICAgICAgICAgcHJpY2luZyA9IGF0b2koJmFyZ3Zbb3B0aWR4XVsyXSk7 CiAgICAgICAgIGJyZWFrOwogICAgICBjYXNlICdxJyA6CiAgICAgICAgIHByaW50X3F1YWxp dHkgPSB0cnVlOwogICAgICAgICBicmVhazsKICAgICAgY2FzZSAncicgOgogICAgICAgICBy ZXByZXNlbnRhdGlvbiA9IFNvUGxleDo6Uk9XOwogICAgICAgICBicmVhazsKICAgICAgY2Fz ZSAncycgOgogICAgICAgICBzaW1wbGlmaW5nID0gYXRvaSgmYXJndltvcHRpZHhdWzJdKTsK ICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3QnIDoKICAgICAgICAgcmF0aW90ZXN0ID0g YXRvaSgmYXJndltvcHRpZHhdWzJdKTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ3Yn IDoKICAgICAgICAgdmVyYm9zZSA9IGF0b2koJmFyZ3Zbb3B0aWR4XVsyXSk7CiAgICAgICAg IGJyZWFrOwogICAgICBjYXNlICdWJyA6CiAgICAgICAgIHN0ZDo6Y291dCA8PCBiYW5uZXIg PDwgc3RkOjplbmRsOwogICAgICAgICBleGl0KDApOwogICAgICBjYXNlICd4JyA6CiAgICAg ICAgIHByaW50X3NvbHV0aW9uID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgIGNhc2Ug J3onIDoKICAgICAgICAgZXBzaWxvbiA9IGF0b2YoJmFyZ3Zbb3B0aWR4XVsyXSk7CiAgICAg ICAgIGJyZWFrOwogICAgICBjYXNlICdoJyA6CiAgICAgIGNhc2UgJz8nIDoKICAgICAgICAg c3RkOjpjb3V0IDw8IGJhbm5lciA8PCBzdGQ6OmVuZGw7CgogICAgICBkZWZhdWx0IDoKICAg ICAgICAgc3RkOjpjZXJyIDw8ICJ1c2FnZTogIiA8PCBhcmd2WzBdIDw8ICIgIiA8PCB1c2Fn ZSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgIGV4aXQoMCk7CiAgICAgIH0KICAgfQogICBpZiAo KGFyZ2MgLSBvcHRpZHgpIDwgMSkKICAgewogICAgICBzdGQ6OmNlcnIgPDwgInVzYWdlOiAi IDw8IGFyZ3ZbMF0gPDwgIiAiIDw8IHVzYWdlIDw8IHN0ZDo6ZW5kbDsKICAgICAgZXhpdCgw KTsKICAgfQogICBmaWxlbmFtZSA9IGFyZ3Zbb3B0aWR4XTsKCiAgIG91dF9maWxlbmFtZSA9 IHN0cmNweShuZXcgY2hhcltzdHJsZW4oZmlsZW5hbWUpICsgNl0sIGZpbGVuYW1lKTsKICAg c3RyY2F0KG91dF9maWxlbmFtZSwgIi5pbmZvIik7CiAgIG91dF9maWxlLm9wZW4ob3V0X2Zp bGVuYW1lLCBzdGQ6Omlvczo6dHJ1bmMpOwogICBpZiAoIW91dF9maWxlLmlzX29wZW4oKSkK ICAgewogICAgICBzdGQ6OmNlcnIgPDwgIkNvdWxkbid0IG9wZW4gXCIiIDw8IG91dF9maWxl bmFtZSA8PCAiXCIgZm9yIHdyaXRpbmcuIiA8PCBzdGQ6OmVuZGw7CiAgICAgIGV4aXQoMSk7 CiAgIH0KCiAgIHByZWNpc2lvbiA9IGludCgtbG9nMTAoZGVsdGEpKSArIDE7CgogICBQYXJh bTo6c2V0RXBzaWxvbihlcHNpbG9uKTsKICAgUGFyYW06OnNldFZlcmJvc2UodmVyYm9zZSk7 CgogICBzdGQ6OmNvdXQuc2V0ZihzdGQ6Omlvczo6c2NpZW50aWZpYyB8IHN0ZDo6aW9zOjpz aG93cG9pbnQpOwoKICAgTXlTb1BsZXggd29yayh0eXBlLCByZXByZXNlbnRhdGlvbik7Cgog ICB3b3JrLnNldFV0eXBlKHVwZGF0ZSk7CiAgIHdvcmsuc2V0VGVybWluYXRpb25UaW1lKHRp bWVsaW1pdCk7CiAgIHdvcmsuc2V0VGVybWluYXRpb25JdGVyKGl0ZXJsaW1pdCk7CiAgIHdv cmsuc2V0RGVsdGEoZGVsdGEpOwoKICAgc3RkOjpjb3V0IDw8ICJEZWx0YSAgID0gIiA8PCBz dGQ6OnNldHcoMTYpIDw8IGRlbHRhIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgPDwgIkVw c2lsb24gPSAiIDw8IHN0ZDo6c2V0dygxNikKICAgICAgICAgICAgIDw8IFBhcmFtOjplcHNp bG9uKCkgPDwgc3RkOjplbmRsOwoKICAgCiMgMjkxICJleGFtcGxlLmNjIiAzIDQKICAoc3Rh dGljX2Nhc3Q8dm9pZD4gKDApKQojIDI5MSAiZXhhbXBsZS5jYyIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7CgogICBzdGQ6OmNvdXQgPDwgKHR5cGUgPT0gU29QbGV4OjpFTlRF UiA/ICJFbnRlcmluZyIgOiAiTGVhdmluZyIpCiAgICAgICAgICAgICA8PCAiIGFsZ29yaXRo bSIKICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgPDwgKHJlcHJlc2Vu dGF0aW9uID09IFNvUGxleDo6Uk9XID8gIlJvdyIgOiAiQ29sdW1uIikKICAgICAgICAgICAg IDw8ICIgcmVwcmVzZW50YXRpb24iCiAgICAgICAgICAgICA8PCBzdGQ6OmVuZGwKICAgICAg ICAgICAgIDw8ICh1cGRhdGUgPT0gU0xVRmFjdG9yOjpFVEEgPyAiRXRhIiA6ICJGb3Jlc3Qt VG9tbGluIikKICAgICAgICAgICAgIDw8ICIgdXBkYXRlIgogICAgICAgICAgICAgPDwgc3Rk OjplbmRsOwoKICAgc3dpdGNoKHByaWNpbmcpCiAgIHsKICAgY2FzZSA1IDoKICAgICAgcHJp Y2VyID0gbmV3IFNQeFdlaWdodFBSOwogICAgICBicmVhazsKICAgY2FzZSA0IDoKICAgICAg cHJpY2VyID0gbmV3IFNQeFN0ZWVwUFI7CiAgICAgIGJyZWFrOwogICBjYXNlIDMgOgogICAg ICBwcmljZXIgPSBuZXcgU1B4SHlicmlkUFI7CiAgICAgIGJyZWFrOwogICBjYXNlIDIgOgog ICAgICBwcmljZXIgPSBuZXcgU1B4RGV2ZXhQUjsKICAgICAgYnJlYWs7CiAgIGNhc2UgMSA6 CiAgICAgIHByaWNlciA9IG5ldyBTUHhQYXJNdWx0UFI7CiAgICAgIGJyZWFrOwogICBjYXNl IDAgOgoKICAgZGVmYXVsdCA6CiAgICAgIHByaWNlciA9IG5ldyBTUHhEZWZhdWx0UFI7CiAg ICAgIGJyZWFrOwogICB9CiAgIHdvcmsuc2V0UHJpY2VyKHByaWNlcik7CgogICBzdGQ6OmNv dXQgPDwgcHJpY2VyLT5nZXROYW1lKCkgPDwgIiBwcmljaW5nIiA8PCBzdGQ6OmVuZGw7CiAg IAojIDMyOSAiZXhhbXBsZS5jYyIgMyA0CiAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyAz MjkgImV4YW1wbGUuY2MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgc3dp dGNoKHJhdGlvdGVzdCkKICAgewogICBjYXNlIDIgOgogICAgICByYXRpb3Rlc3RlciA9IG5l dyBTUHhGYXN0UlQ7CiAgICAgIHN0ZDo6Y291dCA8PCAiRmFzdCI7CiAgICAgIGJyZWFrOwog ICBjYXNlIDEgOgogICAgICByYXRpb3Rlc3RlciA9IG5ldyBTUHhIYXJyaXNSVDsKICAgICAg c3RkOjpjb3V0IDw8ICJIYXJyaXMiOwogICAgICBicmVhazsKICAgY2FzZSAwIDoKCiAgIGRl ZmF1bHQ6CiAgICAgIHJhdGlvdGVzdGVyID0gbmV3IFNQeERlZmF1bHRSVDsKICAgICAgc3Rk Ojpjb3V0IDw8ICJEZWZhdWx0IjsKICAgICAgYnJlYWs7CiAgIH0KICAgc3RkOjpjb3V0IDw8 ICIgcmF0aW90ZXN0IiA8PCBzdGQ6OmVuZGw7CiAgIHdvcmsuc2V0VGVzdGVyKHJhdGlvdGVz dGVyKTsKICAgCiMgMzUwICJleGFtcGxlLmNjIiAzIDQKICAoc3RhdGljX2Nhc3Q8dm9pZD4g KDApKQojIDM1MCAiZXhhbXBsZS5jYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7 CgogICBzd2l0Y2goc2NhbGluZykKICAgewogICBjYXNlIDIgOgogICAgICBzY2FsZXIgPSBu ZXcgU1B4RXF1aWxpKHJlcHJlc2VudGF0aW9uID09IFNvUGxleDo6Q09MVU1OLCBmYWxzZSk7 CiAgICAgIGJyZWFrOwogICBjYXNlIDEgOgogICAgICBzY2FsZXIgPSBuZXcgU1B4RXF1aWxp KHJlcHJlc2VudGF0aW9uID09IFNvUGxleDo6Q09MVU1OLCB0cnVlKTsKICAgICAgYnJlYWs7 CiAgIGNhc2UgMCA6CgogICBkZWZhdWx0IDoKICAgICAgc2NhbGVyID0gMDsKICAgICAgc3Rk Ojpjb3V0IDw8ICJObyI7CiAgICAgIGJyZWFrOwogICB9CiAgIHdvcmsuc2V0U2NhbGVyKHNj YWxlcik7CgogICBpZiAoc2NhbGVyICE9IDApCiAgICAgIHN0ZDo6Y291dCA8PCBzY2FsZXIt PmdldE5hbWUoKTsKCiAgIHN0ZDo6Y291dCA8PCAiIHNjYWxpbmciIDw8IHN0ZDo6ZW5kbDsK ICAgCiMgMzczICJleGFtcGxlLmNjIiAzIDQKICAoc3RhdGljX2Nhc3Q8dm9pZD4gKDApKQoj IDM3MyAiZXhhbXBsZS5jYyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7CgogICBz d2l0Y2goc2ltcGxpZmluZykKICAgewogICBjYXNlIDQgOgogICAgICBzaW1wbGlmaWVyID0g bmV3IFNQeFJlZHVuZGFudFNNOwogICAgICBzdGQ6OmNvdXQgPDwgIlJlZHVuZGFudCI7CiAg ICAgIGJyZWFrOwogICBjYXNlIDMgOgogICAgICBzaW1wbGlmaWVyID0gbmV3IFNQeFJlbTFT TTsKICAgICAgc3RkOjpjb3V0IDw8ICJSZW1vdmUgMSI7CiAgICAgIGJyZWFrOwogICBjYXNl IDIgOgogICAgICBzaW1wbGlmaWVyID0gbmV3IFNQeEFnZ3JlZ2F0ZVNNOwogICAgICBzdGQ6 OmNvdXQgPDwgIkFnZ3JlZ2F0ZSI7CiAgICAgIGJyZWFrOwogICBjYXNlIDEgOgogICAgICBz aW1wbGlmaWVyID0gbmV3IFNQeEdlbmVyYWxTTTsKICAgICAgc3RkOjpjb3V0IDw8ICJHZW5l cmFsIjsKICAgICAgYnJlYWs7CiAgIGNhc2UgMCA6CgogICBkZWZhdWx0IDoKICAgICAgc3Rk Ojpjb3V0IDw8ICJObyI7CiAgIH0KICAgc3RkOjpjb3V0IDw8ICIgc2ltcGxpZmllciIgPDwg c3RkOjplbmRsOwogICB3b3JrLnNldFNpbXBsaWZpZXIoc2ltcGxpZmllcik7CiAgIAojIDQw MCAiZXhhbXBsZS5jYyIgMyA0CiAgKHN0YXRpY19jYXN0PHZvaWQ+ICgwKSkKIyA0MDAgImV4 YW1wbGUuY2MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOwoKICAgc3dpdGNoKHN0 YXJ0aW5nKQogICB7CiAgIGNhc2UgMyA6CiAgICAgIHN0YXJ0ZXIgPSBuZXcgU1B4VmVjdG9y U1Q7CiAgICAgIHN0ZDo6Y291dCA8PCAiVmVjdG9yIjsKICAgICAgYnJlYWs7CiAgIGNhc2Ug MiA6CiAgICAgIHN0YXJ0ZXIgPSBuZXcgU1B4U3VtU1Q7CiAgICAgIHN0ZDo6Y291dCA8PCAi U3VtIjsKICAgICAgYnJlYWs7CiAgIGNhc2UgMSA6CiAgICAgIHN0YXJ0ZXIgPSBuZXcgU1B4 V2VpZ2h0U1Q7CiAgICAgIHN0ZDo6Y291dCA8PCAiV2VpZ2h0IjsKICAgICAgYnJlYWs7CiAg IGNhc2UgMCA6CgogICBkZWZhdWx0IDoKICAgICAgc3RkOjpjb3V0IDw8ICJObyI7CiAgICAg IGJyZWFrOwogICB9CiAgIHN0ZDo6Y291dCA8PCAiIHN0YXJ0ZXIiIDw8IHN0ZDo6ZW5kbDsK ICAgd29yay5zZXRTdGFydGVyKHN0YXJ0ZXIpOwogICAKIyA0MjQgImV4YW1wbGUuY2MiIDMg NAogIChzdGF0aWNfY2FzdDx2b2lkPiAoMCkpCiMgNDI0ICJleGFtcGxlLmNjIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDsKCiAgIFRpbWVyIHRpbWVyOwogICBzdGQ6OmNvdXQg PDwgImxvYWRpbmcgTFAgZmlsZSAiIDw8IGZpbGVuYW1lIDw8IHN0ZDo6ZW5kbDsKCiAgIGlm ICghd29yay5yZWFkRmlsZShmaWxlbmFtZSwgJnJvd25hbWVzLCAmY29sbmFtZXMpKQogICB7 CiAgICAgIHN0ZDo6Y291dCA8PCAiZXJyb3Igd2hpbGUgcmVhZGluZyBmaWxlIFwiIgogICAg ICAgICAgICAgICAgPDwgZmlsZW5hbWUgPDwgIlwiIiA8PCBzdGQ6OmVuZGw7CiAgICAgIGV4 aXQoMSk7CiAgIH0KICAgCiMgNDM1ICJleGFtcGxlLmNjIiAzIDQKICAoc3RhdGljX2Nhc3Q8 dm9pZD4gKDApKQojIDQzNSAiZXhhbXBsZS5jYyIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7CgogICBzdGQ6OmNvdXQgPDwgIkxQIGhhcyAiCiAgICAgICAgICAgICA8PCB3b3Jr Lm5Sb3dzKCkKICAgICAgICAgICAgIDw8ICJcdHJvd3MgYW5kXG4gICAgICAgIgogICAgICAg ICAgICAgPDwgd29yay5uQ29scygpCiAgICAgICAgICAgICA8PCAiXHRjb2x1bW5zIgogICAg ICAgICAgICAgPDwgc3RkOjplbmRsOwoKCiAgIGlmIChiYXNpc25hbWUgIT0gMCkKICAgewog ICAgICBpZiAoIXdvcmsucmVhZEJhc2lzRmlsZShiYXNpc25hbWUsIHJvd25hbWVzLCBjb2xu YW1lcykpCiAgICAgIHsKICAgICAgICAgc3RkOjpjb3V0IDw8ICJlcnJvciB3aGlsZSByZWFk aW5nIGZpbGUgXCIiCiAgICAgICAgICAgICAgICAgICA8PCBiYXNpc25hbWUgPDwgIlwiIiA8 PCBzdGQ6OmVuZGw7CiAgICAgICAgIGV4aXQoMSk7CiAgICAgIH0KICAgfQogICB0aW1lci5z dGFydCgpOwogICBzdGQ6OmNvdXQgPDwgInNvbHZpbmcgTFAiCiAgICAgICAgICAgICA8PCBz dGQ6OmVuZGw7CgogICB3b3JrLnNvbHZlKCk7CgogICB0aW1lci5zdG9wKCk7CgoKICAgaWYg KCFvdXRfZmlsZS5pc19vcGVuKCkpCiAgIHsKICAgICAgb3V0X2ZpbGUub3BlbihvdXRfZmls ZW5hbWUsIHN0ZDo6aW9zOjphcHApOwogICAgICBpZiAoIW91dF9maWxlLmlzX29wZW4oKSkK ICAgICAgewogICAgICAgICBzdGQ6OmNlcnIgPDwgIkNvdWxkbid0IG9wZW4gXCIiIDw8IG91 dF9maWxlbmFtZSA8PCAiXCIgZm9yIGFwcGVuZGluZy4iIDw8IHN0ZDo6ZW5kbDsKICAgICAg ICAgZXhpdCgxKTsKICAgICAgfQogICB9CiAgIG91dF9maWxlIDw8ICJGYWN0b3JpemF0aW9u czogIiA8PCB3b3JrLmdldEZhY3RvckNvdW50KCkgPDwgc3RkOjplbmRsOwoKCgoKICAgU29Q bGV4OjpTdGF0dXMgc3RhdCA9IHdvcmsuc3RhdHVzKCk7CgogICBzd2l0Y2ggKHN0YXQpCiAg IHsKICAgY2FzZSBTb1BsZXg6Ok9QVElNQUw6CiAgICAgIHN0ZDo6Y291dCA8PCAic29sdXRp b24gdmFsdWUgaXM6ICIKICAgICAgICAgICAgICAgIDw8IHN0ZDo6c2V0cHJlY2lzaW9uKHBy ZWNpc2lvbikKICAgICAgICAgICAgICAgIDw8IHdvcmsudmFsdWUoKQogICAgICAgICAgICAg ICAgPDwgc3RkOjplbmRsOwoKICAgICAgaWYgKHByaW50X3F1YWxpdHkpCiAgICAgICAgIHdv cmsuZGlzcGxheVF1YWxpdHkoKTsKCiAgICAgIGlmIChwcmludF9zb2x1dGlvbikKICAgICAg ewogICAgICAgICBpZiAoc2ltcGxpZmllciAhPSAwKQogICAgICAgICB7CiAgICAgICAgICAg IHN0ZDo6Y2VycgogICAgICAgICAgICAgICA8PCAiT3V0cHV0IG9mIHNvbHV0aW9uIHZlY3Rv ciB3aXRoIHNpbXBsaWZpZXIgbm90IGltcGxlbWVudGVkIgogICAgICAgICAgICAgICA8PCAi ICh1c2UgLXMwIHN3aXRjaCkuIgogICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7CiAgICAg ICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAgIERWZWN0b3Igb2Jq eCh3b3JrLm5Db2xzKCkpOwoKICAgICAgICAgICAgd29yay5nZXRQcmltYWxVbnNjYWxlZChv Ymp4KTsKCiAgICAgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCB3b3JrLm5Db2xzKCk7IGkr KykKICAgICAgICAgICAgICAgaWYgKGlzTm90WmVybyhvYmp4W2ldLCBlcHNpbG9uKSkKICAg ICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8IGNvbG5hbWVzW3dvcmsuY0lkKGkpXSA8PCAi XHQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OnNldHcoMTYpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8PCBzdGQ6OnNldHByZWNpc2lvbihwcmVjaXNpb24p CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBvYmp4W2ldIDw8IHN0ZDo6ZW5kbDsK ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJBbGwgb3RoZXIgdmFyaWFibGUgYXJlIHplcm8u IiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgIH0KICAgICAgfQogICAgICBicmVhazsKICAgY2Fz ZSBTb1BsZXg6OlVOQk9VTkRFRDoKICAgICAgc3RkOjpjb3V0IDw8ICJMUCBpcyB1bmJvdW5k ZWQiOwogICAgICBicmVhazsKICAgY2FzZSBTb1BsZXg6OklORkVBU0lCTEU6CiAgICAgIHN0 ZDo6Y291dCA8PCAiTFAgaXMgaW5mZWFzaWJsZSI7CiAgICAgIGJyZWFrOwogICBjYXNlIFNv UGxleDo6QUJPUlRfVElNRToKICAgICAgc3RkOjpjb3V0IDw8ICJhYm9ydGVkIGR1ZSB0byB0 aW1lIGxpbWl0IjsKICAgICAgYnJlYWs7CiAgIGNhc2UgU29QbGV4OjpBQk9SVF9JVEVSOgog ICAgICBzdGQ6OmNvdXQgPDwgImFib3J0ZWQgZHVlIHRvIGl0ZXJhdGlvbiBsaW1pdCIKICAg ICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgICAgPDwgInNvbHV0aW9u IHZhbHVlIGlzOiAiCiAgICAgICAgICAgICAgICA8PCBzdGQ6OnNldHByZWNpc2lvbihwcmVj aXNpb24pCiAgICAgICAgICAgICAgICA8PCB3b3JrLnZhbHVlKCkKICAgICAgICAgICAgICAg IDw8IHN0ZDo6ZW5kbDsKICAgICAgYnJlYWs7CiAgIGNhc2UgU29QbGV4OjpBQk9SVF9WQUxV RToKICAgICAgc3RkOjpjb3V0IDw8ICJhYm9ydGVkIGR1ZSB0byBvYmplY3RpdmUgdmFsdWUg bGltaXQiOwogICAgICBicmVhazsKICAgZGVmYXVsdDoKICAgICAgc3RkOjpjb3V0IDw8ICJB biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIHNvbHV0aW9uIHByb2Nlc3MiOwogICAgICBi cmVhazsKICAgfQogICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoKICAgaWYgKHNjYWxlciAh PSAwKQogICAgICBkZWxldGUgc2NhbGVyOwogICBpZiAoc2ltcGxpZmllciAhPSAwKQogICAg ICBkZWxldGUgc2ltcGxpZmllcjsKICAgaWYgKHN0YXJ0ZXIgIT0gMCkKICAgICAgZGVsZXRl IHN0YXJ0ZXI7CgogICAKIyA1NDggImV4YW1wbGUuY2MiIDMgNAogIChzdGF0aWNfY2FzdDx2 b2lkPiAoMCkpCiMgNTQ4ICJleGFtcGxlLmNjIgogICAgICAgICAgICAgICAgICAgICA7CiAg IGRlbGV0ZSBwcmljZXI7CgogICAKIyA1NTEgImV4YW1wbGUuY2MiIDMgNAogIChzdGF0aWNf Y2FzdDx2b2lkPiAoMCkpCiMgNTUxICJleGFtcGxlLmNjIgogICAgICAgICAgICAgICAgICAg ICAgICAgIDsKICAgZGVsZXRlIHJhdGlvdGVzdGVyOwoKICAgaWYgKGJhc2lzbmFtZSAhPSAw KQogICAgICBkZWxldGUgW10gYmFzaXNuYW1lOwoKICAgcmV0dXJuIDA7Cn0K --------------B5B20C5C8508D0F71A37FB91--