Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nvyFG-0001ZU-8X for pgsql-hackers@arkaria.postgresql.org; Tue, 31 May 2022 09:32:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nvyFE-0007E9-Mj for pgsql-hackers@arkaria.postgresql.org; Tue, 31 May 2022 09:32:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nvyFD-0007Dz-Sx for pgsql-hackers@lists.postgresql.org; Tue, 31 May 2022 09:32:56 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nvyF6-0006fY-2d for pgsql-hackers@lists.postgresql.org; Tue, 31 May 2022 09:32:55 +0000 Received: from [192.168.28.32] (cyclops.postgrespro.ru [93.174.131.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id CBB9621CE0EA for ; Tue, 31 May 2022 12:32:45 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1653989566; bh=HMmcEfD0VZFlZ/dbxknUaaZsmSqjfJbO2otQ0EtmikI=; h=Date:From:Subject:To:References:In-Reply-To; b=RfGFY6GV/ZQ3rbsw29VEsrb7DZwlm6Gqo/wL2XNX+RHY+9bfz/6KJbBQRurayIiMT IVlLGrz4kftkwjsWFakDF0acdokfpMRt+wIbJIbJV60KxLzyV1R+zfWuiu2J2QpvZt t8TMIsyJuaHputuOovsotbdaz1WlCM+1Bits4h8A= Content-Type: multipart/mixed; boundary="------------ZMzzTL7az0Lk1xDqEC5o0Ddn" Message-ID: Date: Tue, 31 May 2022 12:32:43 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 From: Dmitry Koval Subject: Add SPLIT PARTITION/MERGE PARTITIONS commands To: PostgreSQL Hackers References: <163714495450.16056.3566953095730878367@malur.postgresql.org> Content-Language: en-US In-Reply-To: <163714495450.16056.3566953095730878367@malur.postgresql.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------ZMzzTL7az0Lk1xDqEC5o0Ddn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi, hackers! There are not many commands in PostgreSQL for working with partitioned tables. This is an obstacle to their widespread use. Adding SPLIT PARTITION/MERGE PARTITIONS operations can make easier to use partitioned tables in PostgreSQL. (This is especially important when migrating projects from ORACLE DBMS.) SPLIT PARTITION/MERGE PARTITIONS commands are supported for range partitioning (BY RANGE) and for list partitioning (BY LIST). For hash partitioning (BY HASH) these operations are not supported. ================= 1 SPLIT PARTITION ================= Command for split a single partition. 1.1 Syntax ---------- ALTER TABLE SPLIT PARTITION INTO (PARTITION { FOR VALUES | DEFAULT }, [ ... ] PARTITION { FOR VALUES | DEFAULT }) : IN ( [, ...] ) | FROM ( { | MINVALUE | MAXVALUE } [, ...] ) TO ( { | MINVALUE | MAXVALUE } [, ...] ) 1.2 Rules --------- 1.2.1 The partition should be split into two (or more) partitions. 1.2.2 New partitions should have different names (with existing partitions too). 1.2.3 Bounds of new partitions should not overlap with new and existing partitions. 1.2.4 In case split partition is DEFAULT partition, one of new partitions should be DEFAULT. 1.2.5 In case new partitions or existing partitions contains DEFAULT partition, new partitions ... can have any bounds inside split partition bound (can be spaces between partitions bounds). 1.2.6 In case partitioned table does not have DEFAULT partition, DEFAULT partition can be defined as one of new partition. 1.2.7 In case new partitions not contains DEFAULT partition and partitioned table does not have DEFAULT partition the following should be true: sum bounds of new partitions ... should be equal to bound of split partition . 1.2.8 One of the new partitions - can have the same name as split partition (this is suitable in case splitting a DEFAULT partition: we split it, but after splitting we have a partition with the same name). 1.2.9 Only simple (non-partitioned) partitions can be split. 1.3 Examples ------------ 1.3.1 Example for range partitioning (BY RANGE): CREATE TABLE sales_range (salesman_id INT, salesman_name VARCHAR(30), sales_amount INT, sales_date DATE) PARTITION BY RANGE (sales_date); CREATE TABLE sales_jan2022 PARTITION OF sales_range FOR VALUES FROM ('2022-01-01') TO ('2022-02-01'); CREATE TABLE sales_feb_mar_apr2022 PARTITION OF sales_range FOR VALUES FROM ('2022-02-01') TO ('2022-05-01'); CREATE TABLE sales_others PARTITION OF sales_range DEFAULT; ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO (PARTITION sales_feb2022 FOR VALUES FROM ('2022-02-01') TO ('2022-03-01'), PARTITION sales_mar2022 FOR VALUES FROM ('2022-03-01') TO ('2022-04-01'), PARTITION sales_apr2022 FOR VALUES FROM ('2022-04-01') TO ('2022-05-01')); 1.3.2 Example for list partitioning (BY LIST): CREATE TABLE sales_list (salesman_id INT GENERATED ALWAYS AS IDENTITY, salesman_name VARCHAR(30), sales_state VARCHAR(20), sales_amount INT, sales_date DATE) PARTITION BY LIST (sales_state); CREATE TABLE sales_nord PARTITION OF sales_list FOR VALUES IN ('Murmansk', 'St. Petersburg', 'Ukhta'); CREATE TABLE sales_all PARTITION OF sales_list FOR VALUES IN ('Moscow', 'Voronezh', 'Smolensk', 'Bryansk', 'Magadan', 'Kazan', 'Khabarovsk', 'Volgograd', 'Vladivostok'); CREATE TABLE sales_others PARTITION OF sales_list DEFAULT; ALTER TABLE sales_list SPLIT PARTITION sales_all INTO (PARTITION sales_west FOR VALUES IN ('Voronezh', 'Smolensk', 'Bryansk'), PARTITION sales_east FOR VALUES IN ('Magadan', 'Khabarovsk', 'Vladivostok'), PARTITION sales_central FOR VALUES IN ('Moscow', 'Kazan', 'Volgograd')); 1.4 ToDo: --------- 1.4.1 Possibility to specify tablespace for each of the new partitions (currently new partitions are created in the same tablespace as split partition). 1.4.2 Possibility to use CONCURRENTLY mode that allows (during the SPLIT operation) not blocking partitions that are not splitting. ================== 2 MERGE PARTITIONS ================== Command for merge several partitions into one partition. 2.1 Syntax ---------- ALTER TABLE MERGE PARTITIONS (, [, ...]) INTO ; 2.2 Rules --------- 2.2.1 The number of partitions that are merged into the new partition should be at least two. 2.2.2 If DEFAULT partition is not in the list of partitions , [, ...]: * for range partitioning (BY RANGE) is necessary that the ranges of the partitions , [, ...] can be merged into one range without spaces and overlaps (otherwise an error will be generated). The combined range will be the range for the partition . * for list partitioning (BY LIST) the values lists of all partitions , [, ...] are combined and form a list of values of partition . If DEFAULT partition is in the list of partitions , [, ...]: * the partition will be the DEFAULT partition; * for both partitioning types (BY RANGE, BY LIST) the ranges and lists of values of the merged partitions can be any. 2.2.3 The new partition can have the same name as one of the merged partitions. 2.2.4 Only simple (non-partitioned) partitions can be merged. 2.3 Examples ------------ 2.3.1 Example for range partitioning (BY RANGE): CREATE TABLE sales_range (salesman_id INT, salesman_name VARCHAR(30), sales_amount INT, sales_date DATE) PARTITION BY RANGE (sales_date); CREATE TABLE sales_jan2022 PARTITION OF sales_range FOR VALUES FROM ('2022-01-01') TO ('2022-02-01'); CREATE TABLE sales_feb2022 PARTITION OF sales_range FOR VALUES FROM ('2022-02-01') TO ('2022-03-01'); CREATE TABLE sales_mar2022 PARTITION OF sales_range FOR VALUES FROM ('2022-03-01') TO ('2022-04-01'); CREATE TABLE sales_apr2022 PARTITION OF sales_range FOR VALUES FROM ('2022-04-01') TO ('2022-05-01'); CREATE TABLE sales_others PARTITION OF sales_range DEFAULT; ALTER TABLE sales_range MERGE PARTITIONS (sales_feb2022, sales_mar2022, sales_apr2022) INTO sales_feb_mar_apr2022; 2.3.2 Example for list partitioning (BY LIST): CREATE TABLE sales_list (salesman_id INT GENERATED ALWAYS AS IDENTITY, salesman_name VARCHAR(30), sales_state VARCHAR(20), sales_amount INT, sales_date DATE) PARTITION BY LIST (sales_state); CREATE TABLE sales_nord PARTITION OF sales_list FOR VALUES IN ('Murmansk', 'St. Petersburg', 'Ukhta'); CREATE TABLE sales_west PARTITION OF sales_list FOR VALUES IN ('Voronezh', 'Smolensk', 'Bryansk'); CREATE TABLE sales_east PARTITION OF sales_list FOR VALUES IN ('Magadan', 'Khabarovsk', 'Vladivostok'); CREATE TABLE sales_central PARTITION OF sales_list FOR VALUES IN ('Moscow', 'Kazan', 'Volgograd'); CREATE TABLE sales_others PARTITION OF sales_list DEFAULT; ALTER TABLE sales_list MERGE PARTITIONS (sales_west, sales_east, sales_central) INTO sales_all; 2.4 ToDo: --------- 2.4.1 Possibility to specify tablespace for the new partition (currently new partition is created in the same tablespace as partitioned table). 2.4.2 Possibility to use CONCURRENTLY mode that allows (during the MERGE operation) not blocking partitions that are not merging. 2.4.3 New syntax for ALTER TABLE ... MERGE PARTITIONS command for range partitioning (BY RANGE): ALTER TABLE MERGE PARTITIONS TO INTO ; This command can merge all partitions between and into new partition . This can be useful for this example cases: need to merge all one-month partitions into a year partition or need to merge all one-day partitions into a month partition. Your opinions are very much welcome! -- With best regards, Dmitry Koval. --------------ZMzzTL7az0Lk1xDqEC5o0Ddn Content-Type: text/plain; charset=UTF-8; name="v1-0001-partitions-split-merge.patch" Content-Disposition: attachment; filename="v1-0001-partitions-split-merge.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMmRlMGViYWNlYzMuLjE5NGE3MjAz ODhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNjM0LDYgKzYzNCwxMSBA QCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3JlaWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0 aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hDaGVja05vRm9yZWlnbktleVJlZnMoUmVs YXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFyIEdldEF0dHJpYnV0ZUNvbXByZXNzaW9u KE9pZCBhdHR0eXBpZCwgY2hhciAqY29tcHJlc3Npb24pOwogCitzdGF0aWMgdm9pZCBBVEV4 ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs CisJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAorCQkJCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyB2b2lkIEFURXhl Y01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJICBQYXJ0aXRpb25DbWQgKmNtZCwgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCURlZmlu ZVJlbGF0aW9uCkBAIC00MzgzLDYgKzQzODgsMTQgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZl bChMaXN0ICpjbWRzKQogCQkJCWNtZF9sb2NrbW9kZSA9IFNoYXJlVXBkYXRlRXhjbHVzaXZl TG9jazsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCQlj bWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2NrOworCQkJCWJyZWFrOworCisJCQlj YXNlIEFUX01lcmdlUGFydGl0aW9uczoKKwkJCQljbWRfbG9ja21vZGUgPSBBY2Nlc3NFeGNs dXNpdmVMb2NrOworCQkJCWJyZWFrOworCiAJCQljYXNlIEFUX0NoZWNrTm90TnVsbDoKIAog CQkJCS8qCkBAIC00ODAzLDYgKzQ4MTYsMTYgQEAgQVRQcmVwQ21kKExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgQWx0ZXJUYWJsZUNtZCAqY21kLAogCQkJLyogTm8gY29tbWFuZC1z cGVjaWZpYyBwcmVwIG5lZWRlZCAqLwogCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKIAkJCWJy ZWFrOworCQljYXNlIEFUX1NwbGl0UGFydGl0aW9uOgorCQkJQVRTaW1wbGVQZXJtaXNzaW9u cyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCS8qIE5vIGNvbW1hbmQtc3Bl Y2lmaWMgcHJlcCBuZWVkZWQgKi8KKwkJCXBhc3MgPSBBVF9QQVNTX01JU0M7CisJCQlicmVh azsKKwkJY2FzZSBBVF9NZXJnZVBhcnRpdGlvbnM6CisJCQlBVFNpbXBsZVBlcm1pc3Npb25z KGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJLyogTm8gY29tbWFuZC1zcGVj aWZpYyBwcmVwIG5lZWRlZCAqLworCQkJcGFzcyA9IEFUX1BBU1NfTUlTQzsKKwkJCWJyZWFr OwogCQlkZWZhdWx0OgkJCQkvKiBvb3BzICovCiAJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIGFsdGVyIHRhYmxlIHR5cGU6ICVkIiwKIAkJCQkgKGludCkgY21kLT5zdWJ0eXBlKTsK QEAgLTUyMDgsNiArNTIzMSwyMiBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgog CQkJQVRFeGVjRGV0YWNoUGFydGl0aW9uRmluYWxpemUocmVsLCAoKFBhcnRpdGlvbkNtZCAq KSBjbWQtPmRlZiktPm5hbWUpOwogCQkJYnJlYWs7CisJCWNhc2UgQVRfU3BsaXRQYXJ0aXRp b246CisJCQljbWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNt ZCwgZmFsc2UsIGxvY2ttb2RlLAorCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CisJ CQlBc3NlcnQoY21kICE9IE5VTEwpOworCQkJQXNzZXJ0KHJlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpOworCQkJQVRFeGVjU3BsaXRQYXJ0aXRp b24od3F1ZXVlLCB0YWIsIHJlbCwgKFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZiwKKwkJCQkJ CQkJIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNhc2UgQVRfTWVyZ2VQYXJ0aXRpb25zOgor CQkJY21kID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZh bHNlLCBsb2NrbW9kZSwKKwkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOworCQkJQXNz ZXJ0KGNtZCAhPSBOVUxMKTsKKwkJCUFzc2VydChyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKKwkJCUFURXhlY01lcmdlUGFydGl0aW9ucyh3 cXVldWUsIHRhYiwgcmVsLCAoUGFydGl0aW9uQ21kICopIGNtZC0+ZGVmLAorCQkJCQkJCQkg IGNvbnRleHQpOworCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CQkJCS8qIG9vcHMgKi8KIAkJCWVs b2coRVJST1IsICJ1bnJlY29nbml6ZWQgYWx0ZXIgdGFibGUgdHlwZTogJWQiLAogCQkJCSAo aW50KSBjbWQtPnN1YnR5cGUpOwpAQCAtNjE5NSw2ICs2MjM0LDEwIEBAIGFsdGVyX3RhYmxl X3R5cGVfdG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkRF VEFDSCBQQVJUSVRJT04iOwogCQljYXNlIEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOgog CQkJcmV0dXJuICJERVRBQ0ggUEFSVElUSU9OIC4uLiBGSU5BTElaRSI7CisJCWNhc2UgQVRf U3BsaXRQYXJ0aXRpb246CisJCQlyZXR1cm4gIlNQTElUIFBBUlRJVElPTiI7CisJCWNhc2Ug QVRfTWVyZ2VQYXJ0aXRpb25zOgorCQkJcmV0dXJuICJNRVJHRSBQQVJUSVRJT05TIjsKIAkJ Y2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBBREQg SURFTlRJVFkiOwogCQljYXNlIEFUX1NldElkZW50aXR5OgpAQCAtMTc2NDksNiArMTc2OTIs MzUgQEAgUXVldWVQYXJ0aXRpb25Db25zdHJhaW50VmFsaWRhdGlvbihMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiBzY2FucmVsLAogCX0KIH0KIAorLyoKKyAqIGF0dGFjaFBhcnRUYWJsZTog YXR0YWNoIG5ldyBwYXJ0aXRpb24gdG8gcGFydGl0aW9uZWQgdGFibGUKKyAqCisgKiByZWw6 IHBhcnRpdGlvbmVkIHJlbGF0aW9uOworICogYXR0YWNoUmVsOiByZWxhdGlvbiBvZiBhdHRh Y2hlZCBwYXJ0aXRpb247CisgKiBib3VuZDogYm91bmRzIG9mIGF0dGFjaGVkIHJlbGF0aW9u LgorICovCitzdGF0aWMgdm9pZAorYXR0YWNoUGFydFRhYmxlKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgUmVsYXRpb24gYXR0YWNoUmVsLCBQYXJ0aXRpb25Cb3VuZFNwZWMgKmJv dW5kKQoreworCS8qIE9LIHRvIGNyZWF0ZSBpbmhlcml0YW5jZS4gIFJlc3Qgb2YgdGhlIGNo ZWNrcyBwZXJmb3JtZWQgdGhlcmUgKi8KKwlDcmVhdGVJbmhlcml0YW5jZShhdHRhY2hSZWws IHJlbCk7CisKKwkvKiBVcGRhdGUgdGhlIHBnX2NsYXNzIGVudHJ5LiAqLworCVN0b3JlUGFy dGl0aW9uQm91bmQoYXR0YWNoUmVsLCByZWwsIGJvdW5kKTsKKworCS8qIEVuc3VyZSB0aGVy ZSBleGlzdHMgYSBjb3JyZWN0IHNldCBvZiBpbmRleGVzIGluIHRoZSBwYXJ0aXRpb24uICov CisJQXR0YWNoUGFydGl0aW9uRW5zdXJlSW5kZXhlcyhyZWwsIGF0dGFjaFJlbCk7CisKKwkv KiBhbmQgdHJpZ2dlcnMgKi8KKwlDbG9uZVJvd1RyaWdnZXJzVG9QYXJ0aXRpb24ocmVsLCBh dHRhY2hSZWwpOworCisJLyoKKwkgKiBDbG9uZSBmb3JlaWduIGtleSBjb25zdHJhaW50cy4g IENhbGxlZSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cAorCSAqIGZvciBwaGFzZSAz IGNvbnN0cmFpbnQgdmVyaWZpY2F0aW9uLgorCSAqLworCUNsb25lRm9yZWlnbktleUNvbnN0 cmFpbnRzKHdxdWV1ZSwgcmVsLCBhdHRhY2hSZWwpOworfQorCiAvKgogICogQUxURVIgVEFC TEUgPG5hbWU+IEFUVEFDSCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1lPiBGT1IgVkFMVUVT CiAgKgpAQCAtMTc4NDEsMjMgKzE3OTEzLDggQEAgQVRFeGVjQXR0YWNoUGFydGl0aW9uKExp c3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9uQ21kICpjbWQsCiAJY2hlY2tf bmV3X3BhcnRpdGlvbl9ib3VuZChSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShhdHRhY2hyZWwp LCByZWwsCiAJCQkJCQkJICBjbWQtPmJvdW5kLCBwc3RhdGUpOwogCi0JLyogT0sgdG8gY3Jl YXRlIGluaGVyaXRhbmNlLiAgUmVzdCBvZiB0aGUgY2hlY2tzIHBlcmZvcm1lZCB0aGVyZSAq LwotCUNyZWF0ZUluaGVyaXRhbmNlKGF0dGFjaHJlbCwgcmVsKTsKLQotCS8qIFVwZGF0ZSB0 aGUgcGdfY2xhc3MgZW50cnkuICovCi0JU3RvcmVQYXJ0aXRpb25Cb3VuZChhdHRhY2hyZWws IHJlbCwgY21kLT5ib3VuZCk7Ci0KLQkvKiBFbnN1cmUgdGhlcmUgZXhpc3RzIGEgY29ycmVj dCBzZXQgb2YgaW5kZXhlcyBpbiB0aGUgcGFydGl0aW9uLiAqLwotCUF0dGFjaFBhcnRpdGlv bkVuc3VyZUluZGV4ZXMocmVsLCBhdHRhY2hyZWwpOwotCi0JLyogYW5kIHRyaWdnZXJzICov Ci0JQ2xvbmVSb3dUcmlnZ2Vyc1RvUGFydGl0aW9uKHJlbCwgYXR0YWNocmVsKTsKLQotCS8q Ci0JICogQ2xvbmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMuICBDYWxsZWUgaXMgcmVzcG9u c2libGUgZm9yIHNldHRpbmcgdXAKLQkgKiBmb3IgcGhhc2UgMyBjb25zdHJhaW50IHZlcmlm aWNhdGlvbi4KLQkgKi8KLQlDbG9uZUZvcmVpZ25LZXlDb25zdHJhaW50cyh3cXVldWUsIHJl bCwgYXR0YWNocmVsKTsKKwkvKiBBdHRhY2ggcGFydGl0aW9uIHRvIHBhcnRpdGlvbmVkIHRh YmxlLiAqLworCWF0dGFjaFBhcnRUYWJsZSh3cXVldWUsIHJlbCwgYXR0YWNocmVsLCBjbWQt PmJvdW5kKTsKIAogCS8qCiAJICogR2VuZXJhdGUgcGFydGl0aW9uIGNvbnN0cmFpbnQgZnJv bSB0aGUgcGFydGl0aW9uIGJvdW5kIHNwZWNpZmljYXRpb24uCkBAIC0xOTI4OCwzICsxOTM0 NSw2NjMgQEAgR2V0QXR0cmlidXRlQ29tcHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjaGFyICpj b21wcmVzc2lvbikKIAogCXJldHVybiBjbWV0aG9kOwogfQorCisvKgorICogU3RydWN0IHdp dGggY29udGV4dCBvZiBuZXcgcGFydGl0aW9uIGZvciBpbnNlcnQgcm93cyBmcm9tIHNwbGl0 ZWQgcGFydGl0aW9uCisgKi8KK3R5cGVkZWYgc3RydWN0IFNwbGl0UGFydENvbnRleHQKK3sK KwlFeHByU3RhdGUgICpwYXJ0cXVhbHN0YXRlOwkvKiBleHByZXNzaW9uIGZvciBjaGVjayBz bG90IGZvciBwYXJ0aXRpb24KKwkJCQkJCQkJICogKE5VTEwgZm9yIERFRkFVTFQgcGFydGl0 aW9uKSAqLworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGlu c2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90OwkvKiBz bG90IGZvciBpbnNlcnQgcm93IGludG8gcGFydGl0aW9uICovCisJUmVsYXRpb24JcGFydFJl bDsJCS8qIHJlbGF0aW9uIGZvciBwYXJ0aXRpb24gKi8KK30JCQlTcGxpdFBhcnRDb250ZXh0 OworCisKKy8qCisgKiBjcmVhdGVTcGxpdFBhcnRDb250ZXh0OiBjcmVhdGUgY29udGV4dCBm b3IgcGFydGl0aW9uIGFuZCBmaWxsIGl0CisgKi8KK3N0YXRpYyBTcGxpdFBhcnRDb250ZXh0 ICoKK2NyZWF0ZVNwbGl0UGFydENvbnRleHQoUmVsYXRpb24gcGFydFJlbCkKK3sKKwlTcGxp dFBhcnRDb250ZXh0ICpwYzsKKworCXBjID0gKFNwbGl0UGFydENvbnRleHQgKikgcGFsbG9j MChzaXplb2YoU3BsaXRQYXJ0Q29udGV4dCkpOworCXBjLT5wYXJ0UmVsID0gcGFydFJlbDsK KworCS8qCisJICogUHJlcGFyZSBhIEJ1bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVf aW5zZXJ0LiBUaGUgRlNNIGlzIGVtcHR5LCBzbworCSAqIGRvbid0IGJvdGhlciB1c2luZyBp dC4KKwkgKi8KKwlwYy0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOworCisJLyog Q3JlYXRlIHR1cGxlIHNsb3QgZm9yIG5ldyBwYXJ0aXRpb24uICovCisJcGMtPmRzdHNsb3Qg PSBNYWtlU2luZ2xlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJl bCksCisJCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3MocGMtPnBhcnRSZWwpKTsK KwlFeGVjU3RvcmVBbGxOdWxsVHVwbGUocGMtPmRzdHNsb3QpOworCisJcmV0dXJuIHBjOwor fQorCisvKgorICogZGVsZXRlU3BsaXRQYXJ0Q29udGV4dDogZGVsZXRlIGNvbnRleHQgZm9y IHBhcnRpdGlvbgorICovCitzdGF0aWMgdm9pZAorZGVsZXRlU3BsaXRQYXJ0Q29udGV4dChT cGxpdFBhcnRDb250ZXh0ICogcGMsIGludCB0aV9vcHRpb25zKQoreworCUV4ZWNEcm9wU2lu Z2xlVHVwbGVUYWJsZVNsb3QocGMtPmRzdHNsb3QpOworCUZyZWVCdWxrSW5zZXJ0U3RhdGUo cGMtPmJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KHBjLT5wYXJ0UmVs LCB0aV9vcHRpb25zKTsKKworCXBmcmVlKHBjKTsKK30KKworLyoKKyAqIG1vdmVTcGxpdFRh YmxlUm93czogc2NhbiBzcGxpdCBwYXJ0aXRpb24gKHNwbGl0UmVsKSBvZiBwYXJ0aXRpb25l ZCB0YWJsZQorICogKHJlbCkgYW5kIG1vdmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb25zLgor ICoKKyAqIE5ldyBwYXJ0aXRpb25zIGRlc2NyaXB0aW9uOgorICogcGFydGxpc3Q6IGxpc3Qg b2YgcG9pbnRlcnMgdG8gU2luZ2xlUGFydGl0aW9uU3BlYyBzdHJ1Y3R1cmVzLgorICogbmV3 UGFydFJlbHM6IGxpc3Qgb2YgUmVsYXRpb24ncy4KKyAqIGRlZmF1bHRQYXJ0T2lkOiBvaWQg b2YgREVGQVVMVCBwYXJ0aXRpb24sIGZvciB0YWJsZSByZWwuCisgKi8KK3N0YXRpYyB2b2lk Cittb3ZlU3BsaXRUYWJsZVJvd3MoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiBzcGxpdFJlbCwg TGlzdCAqcGFydGxpc3QsIExpc3QgKm5ld1BhcnRSZWxzLCBPaWQgZGVmYXVsdFBhcnRPaWQp Cit7CisJLyogVGhlIEZTTSBpcyBlbXB0eSwgc28gZG9uJ3QgYm90aGVyIHVzaW5nIGl0LiAq LworCWludAkJCXRpX29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007CisJQ29tbWFu ZElkCW15Y2lkOworCUVTdGF0ZQkgICAqZXN0YXRlOworCUxpc3RDZWxsICAgKmxpc3RwdHIs CisJCQkgICAqbGlzdHB0cjI7CisJVHVwbGVUYWJsZVNsb3QgKnNyY3Nsb3Q7CisJRXhwckNv bnRleHQgKmVjb250ZXh0OworCVRhYmxlU2NhbkRlc2Mgc2NhbjsKKwlTbmFwc2hvdAlzbmFw c2hvdDsKKwlNZW1vcnlDb250ZXh0IG9sZEN4dDsKKwlMaXN0CSAgICpwYXJ0Q29udGV4dHMg PSBOSUw7CisJVHVwbGVDb252ZXJzaW9uTWFwICp0dXBsZV9tYXA7CisJU3BsaXRQYXJ0Q29u dGV4dCAqZGVmYXVsdFBhcnRDdHggPSBOVUxMLAorCQkJICAgKnBjOworCWJvb2wJCWlzT2xk RGVmYXVsdFBhcnQgPSBmYWxzZTsKKworCW15Y2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0 cnVlKTsKKworCWVzdGF0ZSA9IENyZWF0ZUV4ZWN1dG9yU3RhdGUoKTsKKworCWZvcmJvdGgo bGlzdHB0ciwgcGFydGxpc3QsIGxpc3RwdHIyLCBuZXdQYXJ0UmVscykKKwl7CisJCVNpbmds ZVBhcnRpdGlvblNwZWMgKnNwcyA9IChTaW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChs aXN0cHRyKTsKKworCQlwYyA9IGNyZWF0ZVNwbGl0UGFydENvbnRleHQoKFJlbGF0aW9uKSBs Zmlyc3QobGlzdHB0cjIpKTsKKworCQlpZiAoc3BzLT5ib3VuZC0+aXNfZGVmYXVsdCkKKwkJ eworCQkJLyogV2Ugc2hvdWxkIG5vdCBjcmVhdGUgY29uc3RyYWludCBmb3IgZGV0YWNoZWQg REVGQVVMVCBwYXJ0aXRpb24uICovCisJCQlkZWZhdWx0UGFydEN0eCA9IHBjOworCQl9CisJ CWVsc2UKKwkJeworCQkJTGlzdAkgICAqcGFydENvbnN0cmFpbnQ7CisKKwkJCS8qIEJ1aWxk IGV4cHJlc3Npb24gZXhlY3V0aW9uIHN0YXRlcyBmb3IgcGFydGl0aW9uIGNoZWNrIHF1YWxz LiAqLworCQkJcGFydENvbnN0cmFpbnQgPSBnZXRfcXVhbF9mcm9tX3BhcnRib3VuZChyZWws IHNwcy0+Ym91bmQpOworCQkJcGFydENvbnN0cmFpbnQgPQorCQkJCShMaXN0ICopIGV2YWxf Y29uc3RfZXhwcmVzc2lvbnMoTlVMTCwKKwkJCQkJCQkJCQkJCShOb2RlICopIHBhcnRDb25z dHJhaW50KTsKKwkJCS8qIE1ha2UgYm9vbGVhbiBleHByZXNzaW9uIGZvciBFeGVjQ2hlY2so KS4gKi8KKwkJCXBhcnRDb25zdHJhaW50ID0gbGlzdF9tYWtlMShtYWtlX2FuZHNfZXhwbGlj aXQocGFydENvbnN0cmFpbnQpKTsKKworCQkJLyoKKwkJCSAqIE1hcCB0aGUgdmFycyBpbiB0 aGUgY29uc3RyYWludCBleHByZXNzaW9uIGZyb20gcmVsJ3MgYXR0bm9zIHRvCisJCQkgKiBz cGxpdFJlbCdzLgorCQkJICovCisJCQlwYXJ0Q29uc3RyYWludCA9IG1hcF9wYXJ0aXRpb25f dmFyYXR0bm9zKHBhcnRDb25zdHJhaW50LAorCQkJCQkJCQkJCQkJCSAxLCBzcGxpdFJlbCwg cmVsKTsKKworCQkJcGMtPnBhcnRxdWFsc3RhdGUgPQorCQkJCUV4ZWNQcmVwYXJlRXhwcigo RXhwciAqKSBsaW5pdGlhbChwYXJ0Q29uc3RyYWludCksIGVzdGF0ZSk7CisJCQlBc3NlcnQo cGMtPnBhcnRxdWFsc3RhdGUgIT0gTlVMTCk7CisJCX0KKworCQkvKiBTdG9yZSBwYXJ0aXRp b24gY29udGVjdCBpbnRvIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxhcHBlbmQocGFy dENvbnRleHRzLCBwYyk7CisJfQorCisJLyoKKwkgKiBDcmVhdGUgcGFydGl0aW9uIGNvbnRl eHQgZm9yIERFRkFVTFQgcGFydGl0aW9uLiBXZSBjYW4gaW5zZXJ0IHZhbHVlcworCSAqIGlu dG8gdGhpcyBwYXJ0aXRpb24gaW4gY2FzZSBzcGFjZXMgd2l0aCB2YWx1ZXMgYmV0d2VlbiBu ZXcgcGFydGl0aW9ucy4KKwkgKi8KKwlpZiAoIWRlZmF1bHRQYXJ0Q3R4ICYmIE9pZElzVmFs aWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJcGMgPSBjcmVhdGVTcGxpdFBhcnRDb250ZXh0 KHRhYmxlX29wZW4oZGVmYXVsdFBhcnRPaWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spKTsKKwor CQkvKiBJbmRpY2F0ZSB0aGF0IHdlIGFsbG9jYXRlIGNvbnRleHQgZm9yIG9sZCBERUZBVUxU IHBhcnRpdGlvbiAqLworCQlpc09sZERlZmF1bHRQYXJ0ID0gdHJ1ZTsKKwkJZGVmYXVsdFBh cnRDdHggPSBwYzsKKwl9CisKKwllY29udGV4dCA9IEdldFBlclR1cGxlRXhwckNvbnRleHQo ZXN0YXRlKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xvdC4gKi8KKwlzcmNz bG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0RGVzY3Ioc3BsaXRS ZWwpLAorCQkJCQkJCQkJICAgdGFibGVfc2xvdF9jYWxsYmFja3Moc3BsaXRSZWwpKTsKKwor CS8qCisJICogTWFwIGNvbXB1dGluZyBmb3IgbW92aW5nIGF0dHJpYnV0ZXMgb2Ygc3BsaXQg cGFydGl0aW9uIHRvIG5ldyBwYXJ0aXRpb24KKwkgKiAoZm9yIGZpcnN0IG5ldyBwYXJ0aXRp b24gYnV0IG90aGVyIG5ldyBwYXJ0aXRpb25zIGNhbiB1c2UgdGhlIHNhbWUKKwkgKiBtYXAp LgorCSAqLworCXBjID0gKFNwbGl0UGFydENvbnRleHQgKikgbGZpcnN0KGxpc3RfaGVhZChw YXJ0Q29udGV4dHMpKTsKKwl0dXBsZV9tYXAgPSBjb252ZXJ0X3R1cGxlc19ieV9uYW1lKFJl bGF0aW9uR2V0RGVzY3Ioc3BsaXRSZWwpLAorCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNj cihwYy0+cGFydFJlbCkpOworCisJLyogU2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCXNu YXBzaG90ID0gUmVnaXN0ZXJTbmFwc2hvdChHZXRMYXRlc3RTbmFwc2hvdCgpKTsKKwlzY2Fu ID0gdGFibGVfYmVnaW5zY2FuKHNwbGl0UmVsLCBzbmFwc2hvdCwgMCwgTlVMTCk7CisKKwkv KgorCSAqIFN3aXRjaCB0byBwZXItdHVwbGUgbWVtb3J5IGNvbnRleHQgYW5kIHJlc2V0IGl0 IGZvciBlYWNoIHR1cGxlCisJICogcHJvZHVjZWQsIHNvIHdlIGRvbid0IGxlYWsgbWVtb3J5 LgorCSAqLworCW9sZEN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1l bW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwl3aGlsZSAodGFibGVfc2Nhbl9nZXRuZXh0c2xv dChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJeworCQlTcGxpdFBh cnRDb250ZXh0ICpwYzsKKwkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJVHVwbGVUYWJsZVNs b3QgKmluc2VydHNsb3Q7CisKKwkJLyogRXh0cmFjdCBkYXRhIGZyb20gb2xkIHR1cGxlLiAq LworCQlzbG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJCWVjb250ZXh0LT5lY3h0X3Nj YW50dXBsZSA9IHNyY3Nsb3Q7CisKKwkJLyogU2VhcmNoIHBhcnRpdGlvbiBmb3IgY3VycmVu dCBzbG90IHNyY3Nsb3QuICovCisJCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQor CQl7CisJCQlwYyA9IChTcGxpdFBhcnRDb250ZXh0ICopIGxmaXJzdChsaXN0cHRyKTsKKwor CQkJaWYgKHBjLT5wYXJ0cXVhbHN0YXRlIC8qIHNraXAgREVGQVVMVCBwYXJ0aXRpb24gKi8g JiYKKwkJCQlFeGVjQ2hlY2socGMtPnBhcnRxdWFsc3RhdGUsIGVjb250ZXh0KSkKKwkJCXsK KwkJCQlmb3VuZCA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCQlSZXNldEV4cHJDb250 ZXh0KGVjb250ZXh0KTsKKwkJfQorCQlpZiAoIWZvdW5kKQorCQl7CisJCQkvKiBVc2UgREVG QVVMVCBwYXJ0aXRpb24gaWYgaXQgZXhpc3RzLiAqLworCQkJaWYgKGRlZmF1bHRQYXJ0Q3R4 KQorCQkJCXBjID0gZGVmYXVsdFBhcnRDdHg7CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfQ0hFQ0tfVklPTEFUSU9OKSwKKwkJCQkJCSBl cnJtc2coImNhbiBub3QgZmluZCBwYXJ0aXRpb24gZm9yIHNwbGl0IHBhcnRpdGlvbiByb3ci KSwKKwkJCQkJCSBlcnJ0YWJsZShzcGxpdFJlbCkpKTsKKwkJfQorCisJCWlmICh0dXBsZV9t YXApCisJCXsKKwkJCS8qIE5lZWQgdG8gdXNlIG1hcCBmb3IgY29weSBhdHRyaWJ1dGVzLiAq LworCQkJaW5zZXJ0c2xvdCA9IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCh0dXBsZV9tYXAtPmF0 dHJNYXAsIHNyY3Nsb3QsIHBjLT5kc3RzbG90KTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8q IENvcHkgYXR0cmlidXRlcyBkaXJlY3RseS4gKi8KKwkJCWluc2VydHNsb3QgPSBwYy0+ZHN0 c2xvdDsKKworCQkJRXhlY0NsZWFyVHVwbGUoaW5zZXJ0c2xvdCk7CisKKwkJCW1lbWNweShp bnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFsdWVzLAorCQkJCSAgIHNp emVvZihEYXR1bSkgKiBzcmNzbG90LT50dHNfbnZhbGlkKTsKKwkJCW1lbWNweShpbnNlcnRz bG90LT50dHNfaXNudWxsLCBzcmNzbG90LT50dHNfaXNudWxsLAorCQkJCSAgIHNpemVvZihi b29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQlFeGVjU3RvcmVWaXJ0dWFsVHVw bGUoaW5zZXJ0c2xvdCk7CisJCX0KKworCQkvKiBXcml0ZSB0aGUgdHVwbGUgb3V0IHRvIHRo ZSBuZXcgcmVsYXRpb24uICovCisJCXRhYmxlX3R1cGxlX2luc2VydChwYy0+cGFydFJlbCwg aW5zZXJ0c2xvdCwgbXljaWQsIHRpX29wdGlvbnMsIHBjLT5iaXN0YXRlKTsKKworCQlSZXNl dEV4cHJDb250ZXh0KGVjb250ZXh0KTsKKworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwor CX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDeHQpOworCisJdGFibGVfZW5kc2Nh bihzY2FuKTsKKwlVbnJlZ2lzdGVyU25hcHNob3Qoc25hcHNob3QpOworCisJaWYgKHR1cGxl X21hcCkKKwkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJRXhlY0Ryb3BT aW5nbGVUdXBsZVRhYmxlU2xvdChzcmNzbG90KTsKKworCUZyZWVFeGVjdXRvclN0YXRlKGVz dGF0ZSk7CisKKwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwkJZGVsZXRlU3Bs aXRQYXJ0Q29udGV4dCgoU3BsaXRQYXJ0Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0ciksIHRp X29wdGlvbnMpOworCisJLyogTmVlZCB0byBjbG9zZSB0YWJsZSBhbmQgZnJlZSBidWZmZXJz IGZvciBERUZBVUxUIHBhcnRpdGlvbi4gKi8KKwlpZiAoaXNPbGREZWZhdWx0UGFydCkKKwl7 CisJCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLworCQl0YWJsZV9jbG9zZShk ZWZhdWx0UGFydEN0eC0+cGFydFJlbCwgTm9Mb2NrKTsKKwkJZGVsZXRlU3BsaXRQYXJ0Q29u dGV4dChkZWZhdWx0UGFydEN0eCwgdGlfb3B0aW9ucyk7CisJfQorfQorCisvKgorICogY3Jl YXRlUGFydGl0aW9uVGFibGU6IGNyZWF0ZSB0YWJsZSBmb3IgbmV3IHBhcnRpdGlvbiB3aXRo IGdpdmVuIG5hbWUKKyAqIChuZXdQYXJ0TmFtZSkgbGlrZSB0YWJsZSAobW9kZWxSZWxOYW1l KQorICoKKyAqIEVtdWxhdGVzIGNvbW1hbmQ6IENSRUFURSBUQUJMRSA8bmV3UGFydE5hbWU+ IChMSUtFIDxtb2RlbFJlbE5hbWU+CisgKiBJTkNMVURJTkcgQUxMIEVYQ0xVRElORyBJTkRF WEVTKQorICovCitzdGF0aWMgdm9pZAorY3JlYXRlUGFydGl0aW9uVGFibGUoUmFuZ2VWYXIg Km5ld1BhcnROYW1lLCBSYW5nZVZhciAqbW9kZWxSZWxOYW1lLAorCQkJCQkgQWx0ZXJUYWJs ZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCUNyZWF0ZVN0bXQgKmNyZWF0ZVN0bXQ7 CisJVGFibGVMaWtlQ2xhdXNlICp0bGM7CisJUGxhbm5lZFN0bXQgKndyYXBwZXI7CisKKwlj cmVhdGVTdG10ID0gbWFrZU5vZGUoQ3JlYXRlU3RtdCk7CisJY3JlYXRlU3RtdC0+cmVsYXRp b24gPSBuZXdQYXJ0TmFtZTsKKwljcmVhdGVTdG10LT50YWJsZUVsdHMgPSBOSUw7CisJY3Jl YXRlU3RtdC0+aW5oUmVsYXRpb25zID0gTklMOworCWNyZWF0ZVN0bXQtPmNvbnN0cmFpbnRz ID0gTklMOworCWNyZWF0ZVN0bXQtPm9wdGlvbnMgPSBOSUw7CisJY3JlYXRlU3RtdC0+b25j b21taXQgPSBPTkNPTU1JVF9OT09QOworCWNyZWF0ZVN0bXQtPnRhYmxlc3BhY2VuYW1lID0g TlVMTDsKKwljcmVhdGVTdG10LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CisKKwl0bGMgPSBt YWtlTm9kZShUYWJsZUxpa2VDbGF1c2UpOworCXRsYy0+cmVsYXRpb24gPSBtb2RlbFJlbE5h bWU7CisKKwkvKgorCSAqIEluZGV4ZXMgd2lsbCBiZSBpbmhlcml0ZWQgb24gImF0dGFjaCBu ZXcgcGFydGl0aW9ucyIgc3RhZ2UsIGFmdGVyIGRhdGEKKwkgKiBtb3ZpbmcuCisJICovCisJ dGxjLT5vcHRpb25zID0gQ1JFQVRFX1RBQkxFX0xJS0VfQUxMICYgfkNSRUFURV9UQUJMRV9M SUtFX0lOREVYRVM7CisJdGxjLT5yZWxhdGlvbk9pZCA9IEludmFsaWRPaWQ7CisJY3JlYXRl U3RtdC0+dGFibGVFbHRzID0gbGFwcGVuZChjcmVhdGVTdG10LT50YWJsZUVsdHMsIHRsYyk7 CisKKwkvKiBOZWVkIHRvIG1ha2UgYSB3cmFwcGVyIFBsYW5uZWRTdG10LiAqLworCXdyYXBw ZXIgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CisJd3JhcHBlci0+Y29tbWFuZFR5cGUgPSBD TURfVVRJTElUWTsKKwl3cmFwcGVyLT5jYW5TZXRUYWcgPSBmYWxzZTsKKwl3cmFwcGVyLT51 dGlsaXR5U3RtdCA9IChOb2RlICopIGNyZWF0ZVN0bXQ7CisJd3JhcHBlci0+c3RtdF9sb2Nh dGlvbiA9IGNvbnRleHQtPnBzdG10LT5zdG10X2xvY2F0aW9uOworCXdyYXBwZXItPnN0bXRf bGVuID0gY29udGV4dC0+cHN0bXQtPnN0bXRfbGVuOworCisJUHJvY2Vzc1V0aWxpdHkod3Jh cHBlciwKKwkJCQkgICBjb250ZXh0LT5xdWVyeVN0cmluZywKKwkJCQkgICBmYWxzZSwKKwkJ CQkgICBQUk9DRVNTX1VUSUxJVFlfU1VCQ09NTUFORCwKKwkJCQkgICBOVUxMLAorCQkJCSAg IE5VTEwsCisJCQkJICAgTm9uZV9SZWNlaXZlciwKKwkJCQkgICBOVUxMKTsKK30KKworLyoK KyAqIEFMVEVSIFRBQkxFIDxuYW1lPiBTUExJVCBQQVJUSVRJT04gPHBhcnRpdGlvbi1uYW1l PiBJTlRPIDxwYXJ0aXRpb24tbGlzdD4KKyAqLworc3RhdGljIHZvaWQKK0FURXhlY1NwbGl0 UGFydGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAorCQkJCQkgUGFydGl0aW9uQ21kICpjbWQsIEFsdGVyVGFibGVVdGlsaXR5Q29u dGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbglzcGxpdFJlbDsKKwlPaWQJCQlzcGxpdFJl bE9pZDsKKwljaGFyCQlyZWxuYW1lW05BTUVEQVRBTEVOXTsKKwlPaWQJCQluYW1lc3BhY2VJ ZDsKKwlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJICAgKmxpc3RwdHIyOworCWJvb2wJCWlz U2FtZU5hbWUgPSBmYWxzZTsKKwljaGFyCQl0bXBSZWxOYW1lW05BTUVEQVRBTEVOXTsKKwlM aXN0CSAgICpuZXdQYXJ0UmVscyA9IE5JTDsKKwlPYmplY3RBZGRyZXNzIG9iamVjdDsKKwlS YW5nZVZhciAgICpzcGxpdFBhcnROYW1lID0gY21kLT5uYW1lOworCU9pZAkJCWRlZmF1bHRQ YXJ0T2lkOworCisJZGVmYXVsdFBhcnRPaWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0 ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CisKKwkvKgorCSAq IFdlIGFyZSBnb2luZyB0byBkZXRhY2ggYW5kIHJlbW92ZSB0aGlzIHBhcnRpdGlvbjogbmVl ZCB0byB1c2UgZXhjbHVzaXZlCisJICogbG9jayBmb3IgcHJldmVudCBETUwtcXVlcmllcyB0 byB0aGUgcGFydGl0aW9uLgorCSAqLworCXNwbGl0UmVsID0gdGFibGVfb3BlbnJ2KHNwbGl0 UGFydE5hbWUsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJaWYgKHNwbGl0UmVsLT5yZF9y ZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJCQkgZXJybXNnKCJj YW5ub3Qgc3BsaXQgbm9uLXRhYmxlIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUoc3BsaXRSZWwpKSkpOworCisJc3BsaXRSZWxPaWQgPSBSZWxh dGlvbkdldFJlbGlkKHNwbGl0UmVsKTsKKworCS8qIENoZWNrIGRlc2NyaXB0aW9ucyBvZiBu ZXcgcGFydGl0aW9ucy4gKi8KKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxpc3QpCisJ eworCQlPaWQJCQlleGlzdGluZ19yZWxpZDsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3Bz ID0gKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCXN0cmxj cHkocmVsbmFtZSwgc3BzLT5uYW1lLT5yZWxuYW1lLCBOQU1FREFUQUxFTik7CisKKwkJLyoK KwkJICogTG9vayB1cCB0aGUgbmFtZXNwYWNlIGluIHdoaWNoIHdlIGFyZSBzdXBwb3NlZCB0 byBjcmVhdGUgdGhlCisJCSAqIHBhcnRpdGlvbiwgY2hlY2sgd2UgaGF2ZSBwZXJtaXNzaW9u IHRvIGNyZWF0ZSB0aGVyZSwgbG9jayBpdAorCQkgKiBhZ2FpbnN0IGNvbmN1cnJlbnQgZHJv cCwgYW5kIG1hcmsgc3RtdC0+cmVsYXRpb24gYXMKKwkJICogUkVMUEVSU0lTVEVOQ0VfVEVN UCBpZiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgaXMgc2VsZWN0ZWQuCisJCSAqLworCQluYW1l c3BhY2VJZCA9CisJCQlSYW5nZVZhckdldEFuZENoZWNrQ3JlYXRpb25OYW1lc3BhY2Uoc3Bz LT5uYW1lLCBOb0xvY2ssIE5VTEwpOworCisJCS8qCisJCSAqIFRoaXMgd291bGQgZmFpbCBs YXRlciBvbiBhbnl3YXksIGlmIHRoZSByZWxhdGlvbiBhbHJlYWR5IGV4aXN0cy4KKwkJICog QnV0IGJ5IGNhdGNoaW5nIGl0IGhlcmUgd2UgY2FuIGVtaXQgYSBuaWNlciBlcnJvciBtZXNz YWdlLgorCQkgKi8KKwkJZXhpc3RpbmdfcmVsaWQgPSBnZXRfcmVsbmFtZV9yZWxpZChyZWxu YW1lLCBuYW1lc3BhY2VJZCk7CisJCWlmIChleGlzdGluZ19yZWxpZCA9PSBzcGxpdFJlbE9p ZCAmJiAhaXNTYW1lTmFtZSkKKwkJCS8qIE9uZSBuZXcgcGFydGl0aW9uIGNhbiBoYXZlIHRo ZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRy dWU7CisJCWVsc2UgaWYgKGV4aXN0aW5nX3JlbGlkICE9IEludmFsaWRPaWQpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9UQUJMRSksCisJ CQkJCSBlcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHJlbG5hbWUp KSk7CisJfQorCisJLyogRGV0YWNoIHNwbGl0IHBhcnRpdGlvbi4gKi8KKwlSZW1vdmVJbmhl cml0YW5jZShzcGxpdFJlbCwgcmVsLCBmYWxzZSk7CisJLyogRG8gdGhlIGZpbmFsIHBhcnQg b2YgZGV0YWNoaW5nLiAqLworCURldGFjaFBhcnRpdGlvbkZpbmFsaXplKHJlbCwgc3BsaXRS ZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisKKwkvKgorCSAqIElmIG5ldyBwYXJ0aXRp b24gaGFzIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uIHRoZW4gd2Ugc2hvdWxk CisJICogcmVuYW1lIHNwbGl0IHBhcnRpdGlvbiBmb3IgcmV1c2UgbmFtZS4KKwkgKi8KKwlp ZiAoaXNTYW1lTmFtZSkKKwl7CisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUgY29tbWFu ZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkgKiB2aXNp YmxlIGZvciByZW5hbWUuCisJCSAqLworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOwor CQkvKiBSZW5hbWUgcGFydGl0aW9uLiAqLworCQlzcHJpbnRmKHRtcFJlbE5hbWUsICJzcGxp dC0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIE15UHJvY1BpZCk7CisJCVJl bmFtZVJlbGF0aW9uSW50ZXJuYWwoc3BsaXRSZWxPaWQsIHRtcFJlbE5hbWUsIGZhbHNlLCBm YWxzZSk7CisJCXNwbGl0UGFydE5hbWUgPSBtYWtlUmFuZ2VWYXIoCisJCQkJCQkJCQkgZ2V0 X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHNwbGl0UmVsKSksCisJCQkJ CQkJCQkgdG1wUmVsTmFtZSwgLTEpOworCisJCS8qCisJCSAqIFdlIG11c3QgYnVtcCB0aGUg Y29tbWFuZCBjb3VudGVyIHRvIG1ha2UgdGhlIHNwbGl0IHBhcnRpdGlvbiB0dXBsZQorCQkg KiB2aXNpYmxlIGFmdGVyIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisJfQorCisJLyogQ3JlYXRlIG5ldyBwYXJ0aXRpb25zIChsaWtlIHNwbGl0IHBh cnRpdGlvbiksIHdpdGhvdXQgaW5kZXhlcy4gKi8KKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+ cGFydGxpc3QpCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSAoU2luZ2xlUGFy dGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJCVJlbGF0aW9uCW5ld1BhcnRSZWw7 CisKKwkJY3JlYXRlUGFydGl0aW9uVGFibGUoc3BzLT5uYW1lLCBzcGxpdFBhcnROYW1lLCBj b250ZXh0KTsKKworCQkvKiBPcGVuIHRoZSBuZXcgcGFydGl0aW9uIGFuZCBhY3F1aXJlIGV4 Y2x1c2l2ZSBsb2NrIG9uIGl0LiAqLworCQluZXdQYXJ0UmVsID0gdGFibGVfb3BlbnJ2KHNw cy0+bmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJbmV3UGFydFJlbHMgPSBsYXBw ZW5kKG5ld1BhcnRSZWxzLCBuZXdQYXJ0UmVsKTsKKwl9CisKKwkvKiBDb3B5IGRhdGEgZnJv bSBzcGxpdCBwYXJ0aXRpb24gdG8gbmV3IHBhcnRpdGlvbnMuICovCisJbW92ZVNwbGl0VGFi bGVSb3dzKHJlbCwgc3BsaXRSZWwsIGNtZC0+cGFydGxpc3QsIG5ld1BhcnRSZWxzLCBkZWZh dWx0UGFydE9pZCk7CisJLyogS2VlcCB0aGUgbG9jayB1bnRpbCBjb21taXQuICovCisJdGFi bGVfY2xvc2Uoc3BsaXRSZWwsIE5vTG9jayk7CisKKwkvKiBBdHRhY2ggbmV3IHBhcnRpdGlv bnMgdG8gcGFydGl0aW9uZWQgdGFibGUuICovCisJZm9yYm90aChsaXN0cHRyLCBjbWQtPnBh cnRsaXN0LCBsaXN0cHRyMiwgbmV3UGFydFJlbHMpCisJeworCQlTaW5nbGVQYXJ0aXRpb25T cGVjICpzcHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqKSBsZmlyc3QobGlzdHB0cik7CisJ CVJlbGF0aW9uCW5ld1BhcnRSZWwgPSAoUmVsYXRpb24pIGxmaXJzdChsaXN0cHRyMik7CisK KwkJLyogd3F1ZXVlID0gTlVMTDogdmVyaWZpY2F0aW9uIGZvciBlYWNoIGNsb25lZCBjb25z dHJhaW50IGlzIG5vdCBuZWVkLiAqLworCQlhdHRhY2hQYXJ0VGFibGUoTlVMTCwgcmVsLCBu ZXdQYXJ0UmVsLCBzcHMtPmJvdW5kKTsKKwkJLyogVW5sb2NrIG5ldyBwYXJ0aXRpb24uICov CisJCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9jayk7CisJfQorCisJLyogRHJvcCBz cGxpdHRlZCBwYXJ0aXRpb24uICovCisJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0 aW9uSWQ7CisJb2JqZWN0Lm9iamVjdElkID0gc3BsaXRSZWxPaWQ7CisJb2JqZWN0Lm9iamVj dFN1YklkID0gMDsKKwkvKiBQcm9iYWJseSBEUk9QX0NBU0NBREUgaXMgbm90IG5lZWRlZC4g Ki8KKwlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwgMCk7Cit9CisK Ky8qCisgKiBTdHJ1Y3Qgd2l0aCBjb250ZXh0IG9mIG1lcmdlZCBwYXJ0aXRpb24KKyAqLwor dHlwZWRlZiBzdHJ1Y3QgTWVyZ2VkUGFydENvbnRleHQKK3sKKwlSZWxhdGlvbglwYXJ0UmVs OwkJLyogcmVsYXRpb24gZm9yIHBhcnRpdGlvbiAqLworfQkJCU1lcmdlZFBhcnRDb250ZXh0 OworCisvKgorICogbW92ZU1lcmdlZFRhYmxlc1Jvd3M6IHNjYW4gbWVyZ2VkIHBhcnRpdGlv bnMgKHBhcnRDb250ZXh0KSBvZiBwYXJ0aXRpb25lZAorICogdGFibGUgKHJlbCkgYW5kIG1v dmUgcm93cyBpbnRvIG5ldyBwYXJ0aXRpb24gKG5ld1BhcnRSZWwpLgorICovCitzdGF0aWMg dm9pZAorbW92ZU1lcmdlZFRhYmxlc1Jvd3MoUmVsYXRpb24gcmVsLCBMaXN0ICpwYXJ0Q29u dGV4dCwgUmVsYXRpb24gbmV3UGFydFJlbCkKK3sKKwlDb21tYW5kSWQJbXljaWQ7CisKKwkv KiBUaGUgRlNNIGlzIGVtcHR5LCBzbyBkb24ndCBib3RoZXIgdXNpbmcgaXQuICovCisJaW50 CQkJdGlfb3B0aW9ucyA9IFRBQkxFX0lOU0VSVF9TS0lQX0ZTTTsKKwlMaXN0Q2VsbCAgICps aXN0cHRyOworCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkvKiBzdGF0ZSBvZiBidWxrIGlu c2VydHMgZm9yIHBhcnRpdGlvbiAqLworCVR1cGxlVGFibGVTbG90ICpkc3RzbG90OworCisJ bXljaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOworCisJLyogUHJlcGFyZSBhIEJ1 bGtJbnNlcnRTdGF0ZSBmb3IgdGFibGVfdHVwbGVfaW5zZXJ0LiAqLworCWJpc3RhdGUgPSBH ZXRCdWxrSW5zZXJ0U3RhdGUoKTsKKworCS8qIENyZWF0ZSBuZWNlc3NhcnkgdHVwbGUgc2xv dC4gKi8KKwlkc3RzbG90ID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KFJlbGF0aW9uR2V0 RGVzY3IobmV3UGFydFJlbCksCisJCQkJCQkJCQkgICB0YWJsZV9zbG90X2NhbGxiYWNrcyhu ZXdQYXJ0UmVsKSk7CisJRXhlY1N0b3JlQWxsTnVsbFR1cGxlKGRzdHNsb3QpOworCisJZm9y ZWFjaChsaXN0cHRyLCBwYXJ0Q29udGV4dCkKKwl7CisJCU1lcmdlZFBhcnRDb250ZXh0ICpw YyA9IChNZXJnZWRQYXJ0Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisJCVR1cGxlVGFi bGVTbG90ICpzcmNzbG90OworCQlUdXBsZUNvbnZlcnNpb25NYXAgKnR1cGxlX21hcDsKKwkJ VGFibGVTY2FuRGVzYyBzY2FuOworCQlTbmFwc2hvdAlzbmFwc2hvdDsKKworCQkvKiBDcmVh dGUgdHVwbGUgc2xvdCBmb3IgbmV3IHBhcnRpdGlvbi4gKi8KKwkJc3Jjc2xvdCA9IE1ha2VT aW5nbGVUdXBsZVRhYmxlU2xvdChSZWxhdGlvbkdldERlc2NyKHBjLT5wYXJ0UmVsKSwKKwkJ CQkJCQkJCQkgICB0YWJsZV9zbG90X2NhbGxiYWNrcyhwYy0+cGFydFJlbCkpOworCisJCS8q CisJCSAqIE1hcCBjb21wdXRpbmcgZm9yIG1vdmluZyBhdHRyaWJ1dGVzIG9mIG1lcmdlZCBw YXJ0aXRpb24gdG8gbmV3CisJCSAqIHBhcnRpdGlvbi4KKwkJICovCisJCXR1cGxlX21hcCA9 IGNvbnZlcnRfdHVwbGVzX2J5X25hbWUoUmVsYXRpb25HZXREZXNjcihwYy0+cGFydFJlbCks CisJCQkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihuZXdQYXJ0UmVsKSk7CisKKwkJLyog U2NhbiB0aHJvdWdoIHRoZSByb3dzLiAqLworCQlzbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNo b3QoR2V0TGF0ZXN0U25hcHNob3QoKSk7CisJCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW4ocGMt PnBhcnRSZWwsIHNuYXBzaG90LCAwLCBOVUxMKTsKKworCQl3aGlsZSAodGFibGVfc2Nhbl9n ZXRuZXh0c2xvdChzY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbiwgc3Jjc2xvdCkpCisJCXsK KwkJCVR1cGxlVGFibGVTbG90ICppbnNlcnRzbG90OworCisJCQkvKiBFeHRyYWN0IGRhdGEg ZnJvbSBvbGQgdHVwbGUuICovCisJCQlzbG90X2dldGFsbGF0dHJzKHNyY3Nsb3QpOworCisJ CQlpZiAodHVwbGVfbWFwKQorCQkJeworCQkJCS8qIE5lZWQgdG8gdXNlIG1hcCBmb3IgY29w eSBhdHRyaWJ1dGVzLiAqLworCQkJCWluc2VydHNsb3QgPSBleGVjdXRlX2F0dHJfbWFwX3Ns b3QodHVwbGVfbWFwLT5hdHRyTWFwLCBzcmNzbG90LCBkc3RzbG90KTsKKwkJCX0KKwkJCWVs c2UKKwkJCXsKKwkJCQkvKiBDb3B5IGF0dHJpYnV0ZXMgZGlyZWN0bHkuICovCisJCQkJaW5z ZXJ0c2xvdCA9IGRzdHNsb3Q7CisKKwkJCQlFeGVjQ2xlYXJUdXBsZShpbnNlcnRzbG90KTsK KworCQkJCW1lbWNweShpbnNlcnRzbG90LT50dHNfdmFsdWVzLCBzcmNzbG90LT50dHNfdmFs dWVzLAorCQkJCQkgICBzaXplb2YoRGF0dW0pICogc3Jjc2xvdC0+dHRzX252YWxpZCk7CisJ CQkJbWVtY3B5KGluc2VydHNsb3QtPnR0c19pc251bGwsIHNyY3Nsb3QtPnR0c19pc251bGws CisJCQkJCSAgIHNpemVvZihib29sKSAqIHNyY3Nsb3QtPnR0c19udmFsaWQpOworCisJCQkJ RXhlY1N0b3JlVmlydHVhbFR1cGxlKGluc2VydHNsb3QpOworCQkJfQorCisJCQkvKiBXcml0 ZSB0aGUgdHVwbGUgb3V0IHRvIHRoZSBuZXcgcmVsYXRpb24uICovCisJCQl0YWJsZV90dXBs ZV9pbnNlcnQobmV3UGFydFJlbCwgaW5zZXJ0c2xvdCwgbXljaWQsIHRpX29wdGlvbnMsIGJp c3RhdGUpOworCisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJdGFibGVf ZW5kc2NhbihzY2FuKTsKKwkJVW5yZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsKKworCQlp ZiAodHVwbGVfbWFwKQorCQkJZnJlZV9jb252ZXJzaW9uX21hcCh0dXBsZV9tYXApOworCisJ CUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3Qoc3Jjc2xvdCk7CisJfQorCisJRXhlY0Ry b3BTaW5nbGVUdXBsZVRhYmxlU2xvdChkc3RzbG90KTsKKwlGcmVlQnVsa0luc2VydFN0YXRl KGJpc3RhdGUpOworCisJdGFibGVfZmluaXNoX2J1bGtfaW5zZXJ0KG5ld1BhcnRSZWwsIHRp X29wdGlvbnMpOworfQorCisvKgorICogQUxURVIgVEFCTEUgPG5hbWU+IE1FUkdFIFBBUlRJ VElPTlMgPHBhcnRpdGlvbi1saXN0PiBJTlRPIDxwYXJ0aXRpb24tbmFtZT4KKyAqLworc3Rh dGljIHZvaWQKK0FURXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKKwkJCQkJICBQYXJ0aXRpb25DbWQgKmNt ZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJlbGF0aW9uCW5l d1BhcnRSZWw7CisJTGlzdENlbGwgICAqbGlzdHB0cjsKKwlMaXN0CSAgICpwYXJ0Q29udGV4 dHMgPSBOSUw7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJY2hhcgkJdG1wUmVsTmFtZVtO QU1FREFUQUxFTl07CisJUmFuZ2VWYXIgICAqbWVyZ2VQYXJ0TmFtZSA9IGNtZC0+bmFtZTsK Kwlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CisKKwkvKgorCSAqIExvY2sgYWxsIG1lcmdl ZCBwYXJ0aXRpb25zLCBjaGVjayB0aGVtIGFuZCBjcmVhdGUgbGlzdCB3aXRoIHBhcnRpdGlv bnMKKwkgKiBjb250ZXh0cy4KKwkgKi8KKwlmb3JlYWNoKGxpc3RwdHIsIGNtZC0+cGFydGxp c3QpCisJeworCQlSYW5nZVZhciAgICpuYW1lID0gKFJhbmdlVmFyICopIGxmaXJzdChsaXN0 cHRyKTsKKwkJTWVyZ2VkUGFydENvbnRleHQgKnBjOworCisJCXBjID0gKE1lcmdlZFBhcnRD b250ZXh0ICopIHBhbGxvYzAoc2l6ZW9mKE1lcmdlZFBhcnRDb250ZXh0KSk7CisKKwkJLyoK KwkJICogV2UgYXJlIGdvaW5nIHRvIGRldGFjaCBhbmQgcmVtb3ZlIHRoaXMgcGFydGl0aW9u OiBuZWVkIHRvIHVzZQorCQkgKiBleGNsdXNpdmUgbG9jayBmb3IgcHJldmVudCBETUwtcXVl cmllcyB0byB0aGUgcGFydGl0aW9uLgorCQkgKi8KKwkJcGMtPnBhcnRSZWwgPSB0YWJsZV9v cGVucnYobmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkJaWYgKHBjLT5wYXJ0UmVs LT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9SRUxBVElPTikKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkg ZXJybXNnKCJjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBjLT5wYXJ0UmVsKSkpKTsKKworCQlpZiAo IXN0cmNtcChuYW1lLT5yZWxuYW1lLCBjbWQtPm5hbWUtPnJlbG5hbWUpKQorCQkJLyogT25l IG5ldyBwYXJ0aXRpb24gY2FuIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyBtZXJnZWQgcGFydGl0 aW9uLiAqLworCQkJaXNTYW1lTmFtZSA9IHRydWU7CisKKwkJLyogU3RvcmUgcGFydGl0aW9u IGNvbnRleHQgaW50byBwYXJ0aXRpb25zIGxpc3QuICovCisJCXBhcnRDb250ZXh0cyA9IGxh cHBlbmQocGFydENvbnRleHRzLCBwYyk7CisJfQorCisJLyogRGV0YWNoIGFsbCBtZXJnZWQg cGFydGl0aW9ucy4gKi8KKwlkZWZhdWx0UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9m cm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0UGFydGl0aW9uRGVzYyhyZWwsIHRydWUpKTsKKwlm b3JlYWNoKGxpc3RwdHIsIHBhcnRDb250ZXh0cykKKwl7CisJCU1lcmdlZFBhcnRDb250ZXh0 ICpwYyA9IChNZXJnZWRQYXJ0Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJUmVt b3ZlSW5oZXJpdGFuY2UocGMtPnBhcnRSZWwsIHJlbCwgZmFsc2UpOworCQkvKiBEbyB0aGUg ZmluYWwgcGFydCBvZiBkZXRhY2hpbmcuICovCisJCURldGFjaFBhcnRpdGlvbkZpbmFsaXpl KHJlbCwgcGMtPnBhcnRSZWwsIGZhbHNlLCBkZWZhdWx0UGFydE9pZCk7CisJfQorCisJLyog Q3JlYXRlIHRhYmxlIGZvciBuZXcgcGFydGl0aW9uLCB1c2UgcGFydGl0aW9uZWQgdGFibGUg YXMgbW9kZWwuICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKiBDcmVhdGUgcGFydGl0 aW9uIHRhYmxlIHdpdGggZ2VuZXJhdGVkIHRlbXBhcmFyeSBuYW1lLiAqLworCQlzcHJpbnRm KHRtcFJlbE5hbWUsICJtZXJnZS0ldS0lWC10bXAiLCBSZWxhdGlvbkdldFJlbGlkKHJlbCks IE15UHJvY1BpZCk7CisJCW1lcmdlUGFydE5hbWUgPSBtYWtlUmFuZ2VWYXIoZ2V0X25hbWVz cGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCkpLAorCQkJCQkJCQkJIHRtcFJl bE5hbWUsIC0xKTsKKwl9CisJY3JlYXRlUGFydGl0aW9uVGFibGUobWVyZ2VQYXJ0TmFtZSwK KwkJCQkJCSBtYWtlUmFuZ2VWYXIoZ2V0X25hbWVzcGFjZV9uYW1lKFJlbGF0aW9uR2V0TmFt ZXNwYWNlKHJlbCkpLAorCQkJCQkJCQkJICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwp LCAtMSksCisJCQkJCQkgY29udGV4dCk7CisKKwkvKiBPcGVuIHRoZSBuZXcgcGFydGl0aW9u IGFuZCBhY3F1aXJlIGV4Y2x1c2l2ZSBsb2NrIG9uIGl0LiAqLworCW5ld1BhcnRSZWwgPSB0 YWJsZV9vcGVucnYobWVyZ2VQYXJ0TmFtZSwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwkv KiBDb3B5IGRhdGEgZnJvbSBtZXJnZWQgcGFydGl0aW9ucyB0byBuZXcgcGFydGl0aW9uLiAq LworCW1vdmVNZXJnZWRUYWJsZXNSb3dzKHJlbCwgcGFydENvbnRleHRzLCBuZXdQYXJ0UmVs KTsKKworCS8qCisJICogQXR0YWNoIG5ldyBwYXJ0aXRpb24gdG8gcGFydGl0aW9uZWQgdGFi bGUuIHdxdWV1ZSA9IE5VTEw6IHZlcmlmaWNhdGlvbgorCSAqIGZvciBlYWNoIGNsb25lZCBj b25zdHJhaW50IGlzIG5vdCBuZWVkLgorCSAqLworCWF0dGFjaFBhcnRUYWJsZShOVUxMLCBy ZWwsIG5ld1BhcnRSZWwsIGNtZC0+Ym91bmQpOworCisJLyogVW5sb2NrIGFuZCBkcm9wIG1l cmdlZCBwYXJ0aXRpb25zLiAqLworCWZvcmVhY2gobGlzdHB0ciwgcGFydENvbnRleHRzKQor CXsKKwkJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CisJCU1lcmdlZFBhcnRDb250ZXh0ICpwYyA9 IChNZXJnZWRQYXJ0Q29udGV4dCAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogVW5sb2Nr IHBhcnRpdGlvbi4gKi8KKwkJdGFibGVfY2xvc2UocGMtPnBhcnRSZWwsIE5vTG9jayk7CisK KwkJb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7CisJCW9iamVjdC5vYmpl Y3RJZCA9IFJlbGF0aW9uR2V0UmVsaWQocGMtPnBhcnRSZWwpOworCQlvYmplY3Qub2JqZWN0 U3ViSWQgPSAwOworCQlwZXJmb3JtRGVsZXRpb24oJm9iamVjdCwgRFJPUF9SRVNUUklDVCwg MCk7CisKKwkJcGZyZWUocGMpOworCX0KKworCS8qIFJlbmFtZSBuZXcgcGFydGl0aW9uIGlm IGl0IGlzIG5lZWQuICovCisJaWYgKGlzU2FtZU5hbWUpCisJeworCQkvKgorCQkgKiBXZSBt dXN0IGJ1bXAgdGhlIGNvbW1hbmQgY291bnRlciB0byBtYWtlIHRoZSBuZXcgcGFydGl0aW9u IHR1cGxlCisJCSAqIHZpc2libGUgZm9yIHJlbmFtZS4KKwkJICovCisJCUNvbW1hbmRDb3Vu dGVySW5jcmVtZW50KCk7CisJCS8qIFJlbmFtZSBwYXJ0aXRpb24uICovCisJCVJlbmFtZVJl bGF0aW9uSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChuZXdQYXJ0UmVsKSwKKwkJCQkJCQkg ICBjbWQtPm5hbWUtPnJlbG5hbWUsIGZhbHNlLCBmYWxzZSk7CisJfQorCS8qIEtlZXAgdGhl IGxvY2sgdW50aWwgY29tbWl0LiAqLworCXRhYmxlX2Nsb3NlKG5ld1BhcnRSZWwsIE5vTG9j ayk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDUxZDYzMGZhODkyLi40MTZhZDY1 ZDUyOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMKQEAgLTUzNTAsNiArNTM1MCwxNyBAQCBf Y29weVBhcnRpdGlvblJhbmdlRGF0dW0oY29uc3QgUGFydGl0aW9uUmFuZ2VEYXR1bSAqZnJv bSkKIAlyZXR1cm4gbmV3bm9kZTsKIH0KIAorc3RhdGljIFNpbmdsZVBhcnRpdGlvblNwZWMg KgorX2NvcHlTaW5nbGVQYXJ0aXRpb25TcGVjKGNvbnN0IFNpbmdsZVBhcnRpdGlvblNwZWMg KmZyb20pCit7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqbmV3bm9kZSA9IG1ha2VOb2RlKFNp bmdsZVBhcnRpdGlvblNwZWMpOworCisJQ09QWV9OT0RFX0ZJRUxEKG5hbWUpOworCUNPUFlf Tk9ERV9GSUVMRChib3VuZCk7CisKKwlyZXR1cm4gbmV3bm9kZTsKK30KKwogc3RhdGljIFBh cnRpdGlvbkNtZCAqCiBfY29weVBhcnRpdGlvbkNtZChjb25zdCBQYXJ0aXRpb25DbWQgKmZy b20pCiB7CkBAIC01MzU3LDYgKzUzNjgsNyBAQCBfY29weVBhcnRpdGlvbkNtZChjb25zdCBQ YXJ0aXRpb25DbWQgKmZyb20pCiAKIAlDT1BZX05PREVfRklFTEQobmFtZSk7CiAJQ09QWV9O T0RFX0ZJRUxEKGJvdW5kKTsKKwlDT1BZX05PREVfRklFTEQocGFydGxpc3QpOwogCUNPUFlf U0NBTEFSX0ZJRUxEKGNvbmN1cnJlbnQpOwogCiAJcmV0dXJuIG5ld25vZGU7CkBAIC02NTYw LDYgKzY1NzIsOSBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNl IFRfUGFydGl0aW9uUmFuZ2VEYXR1bToKIAkJCXJldHZhbCA9IF9jb3B5UGFydGl0aW9uUmFu Z2VEYXR1bShmcm9tKTsKIAkJCWJyZWFrOworCQljYXNlIFRfU2luZ2xlUGFydGl0aW9uU3Bl YzoKKwkJCXJldHZhbCA9IF9jb3B5U2luZ2xlUGFydGl0aW9uU3BlYyhmcm9tKTsKKwkJCWJy ZWFrOwogCQljYXNlIFRfUGFydGl0aW9uQ21kOgogCQkJcmV0dmFsID0gX2NvcHlQYXJ0aXRp b25DbWQoZnJvbSk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCBl NzQ3ZTE2NjdkMC4uN2UyMTdmM2UyYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKQEAg LTM0NDMsMTEgKzM0NDMsMjEgQEAgX2VxdWFsUGFydGl0aW9uUmFuZ2VEYXR1bShjb25zdCBQ YXJ0aXRpb25SYW5nZURhdHVtICphLCBjb25zdCBQYXJ0aXRpb25SYW5nZURhdHUKIAlyZXR1 cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wKK19lcXVhbFNpbmdsZVBhcnRpdGlvblNwZWMo Y29uc3QgU2luZ2xlUGFydGl0aW9uU3BlYyAqYSwgY29uc3QgU2luZ2xlUGFydGl0aW9uU3Bl YyAqYikKK3sKKwlDT01QQVJFX05PREVfRklFTEQobmFtZSk7CisJQ09NUEFSRV9OT0RFX0ZJ RUxEKGJvdW5kKTsKKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbAogX2VxdWFs UGFydGl0aW9uQ21kKGNvbnN0IFBhcnRpdGlvbkNtZCAqYSwgY29uc3QgUGFydGl0aW9uQ21k ICpiKQogewogCUNPTVBBUkVfTk9ERV9GSUVMRChuYW1lKTsKIAlDT01QQVJFX05PREVfRklF TEQoYm91bmQpOworCUNPTVBBUkVfTk9ERV9GSUVMRChwYXJ0bGlzdCk7CiAJQ09NUEFSRV9T Q0FMQVJfRklFTEQoY29uY3VycmVudCk7CiAKIAlyZXR1cm4gdHJ1ZTsKQEAgLTQzNjMsNiAr NDM3Myw5IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2Ug VF9QYXJ0aXRpb25SYW5nZURhdHVtOgogCQkJcmV0dmFsID0gX2VxdWFsUGFydGl0aW9uUmFu Z2VEYXR1bShhLCBiKTsKIAkJCWJyZWFrOworCQljYXNlIFRfU2luZ2xlUGFydGl0aW9uU3Bl YzoKKwkJCXJldHZhbCA9IF9lcXVhbFNpbmdsZVBhcnRpdGlvblNwZWMoYSwgYik7CisJCQli cmVhazsKIAkJY2FzZSBUX1BhcnRpdGlvbkNtZDoKIAkJCXJldHZhbCA9IF9lcXVhbFBhcnRp dGlvbkNtZChhLCBiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggOTg5ZGIwZGJl Y2UuLmQ4NjBmOTAyMWExIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55 CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTI3Myw2ICsyNzMsNyBAQCBz dGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVBhcnRpdGlvbkVsZW0gKnBhcnRlbGVtOwog CVBhcnRpdGlvblNwZWMgKnBhcnRzcGVjOwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJv dW5kc3BlYzsKKwlTaW5nbGVQYXJ0aXRpb25TcGVjICpzaW5nbGVwYXJ0c3BlYzsKIAlSb2xl U3BlYyAgICpyb2xlc3BlYzsKIAlQdWJsaWNhdGlvbk9ialNwZWMgKnB1YmxpY2F0aW9ub2Jq ZWN0c3BlYzsKIAlzdHJ1Y3QgU2VsZWN0TGltaXQgKnNlbGVjdGxpbWl0OwpAQCAtNjQ0LDYg KzY0NSw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cGFydGVsZW0+ CXBhcnRfZWxlbQogJXR5cGUgPGxpc3Q+CQlwYXJ0X3BhcmFtcwogJXR5cGUgPHBhcnRib3Vu ZHNwZWM+IFBhcnRpdGlvbkJvdW5kU3BlYworJXR5cGUgPHNpbmdsZXBhcnRzcGVjPglTaW5n bGVQYXJ0aXRpb25TcGVjCisldHlwZSA8bGlzdD4JCXBhcnRpdGlvbnNfbGlzdAogJXR5cGUg PGxpc3Q+CQloYXNoX3BhcnRib3VuZAogJXR5cGUgPGRlZmVsdD4JCWhhc2hfcGFydGJvdW5k X2VsZW0KIApAQCAtODI2LDcgKzgyOSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZl Vmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMgT1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxB UFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKLQlQQVJBTExFTCBQQVJBTUVU RVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUEFUSAorCVBB UkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFSVElUSU9OUyBQ QVNTSU5HIFBBU1NXT1JEIFBBVEgKIAlQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZCiAJUE9T SVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBS SU1BUlkKIAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVS RVMgUFJPR1JBTSBQVUJMSUNBVElPTgpAQCAtODQwLDcgKzg0Myw3IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAKIAlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFND Uk9MTCBTRUFSQ0ggU0VDT05EX1AgU0VDVVJJVFkgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVO Q0VTIFNFUklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMg U0VUT0YKLQlTSEFSRSBTSE9XIFNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNI T1QgU09NRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCisJU0hBUkUgU0hPVyBTSU1JTEFS IFNJTVBMRSBTS0lQIFNNQUxMSU5UIFNOQVBTSE9UIFNPTUUgU1BMSVQgU1FMX1AgU1RBQkxF IFNUQU5EQUxPTkVfUAogCVNUQVJUIFNUQVRFTUVOVCBTVEFUSVNUSUNTIFNURElOIFNURE9V VCBTVE9SQUdFIFNUT1JFRCBTVFJJQ1RfUCBTVFJJTkcgU1RSSVBfUAogCVNVQlNDUklQVElP TiBTVUJTVFJJTkcgU1VQUE9SVCBTWU1NRVRSSUMgU1lTSUQgU1lTVEVNX1AKIApAQCAtMjM0 Miw2ICsyMzQ1LDIzIEBAIGFsdGVyX3RhYmxlX2NtZHM6CiAJCQl8IGFsdGVyX3RhYmxlX2Nt ZHMgJywnIGFsdGVyX3RhYmxlX2NtZAl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsK IAorcGFydGl0aW9uc19saXN0OgorCQkJU2luZ2xlUGFydGl0aW9uU3BlYwkJCQkJCQl7ICQk ID0gbGlzdF9tYWtlMSgkMSk7IH0KKwkJCXwgcGFydGl0aW9uc19saXN0ICcsJyBTaW5nbGVQ YXJ0aXRpb25TcGVjCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KKwkJOworCitTaW5nbGVQ YXJ0aXRpb25TcGVjOgorCQkJUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIFBhcnRpdGlvbkJv dW5kU3BlYworCQkJCXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqbiA9IG1ha2VOb2Rl KFNpbmdsZVBhcnRpdGlvblNwZWMpOworCisJCQkJCW4tPm5hbWUgPSAkMjsKKwkJCQkJbi0+ Ym91bmQgPSAkMzsKKworCQkJCQkkJCA9IG47CisJCQkJfQorCQk7CisKIHBhcnRpdGlvbl9j bWQ6CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQVRUQUNIIFBBUlRJVElPTiA8dGFibGVf bmFtZT4gRk9SIFZBTFVFUyAqLwogCQkJQVRUQUNIIFBBUlRJVElPTiBxdWFsaWZpZWRfbmFt ZSBQYXJ0aXRpb25Cb3VuZFNwZWMKQEAgLTIzNTIsNiArMjM3Miw3IEBAIHBhcnRpdGlvbl9j bWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNtZC0+ bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gJDQ7CisJCQkJCWNtZC0+cGFydGxpc3Qg PSBOVUxMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKIAkJCQkJbi0+ZGVmID0g KE5vZGUgKikgY21kOwogCkBAIC0yMzY2LDYgKzIzODcsNyBAQCBwYXJ0aXRpb25fY21kOgog CQkJCQluLT5zdWJ0eXBlID0gQVRfRGV0YWNoUGFydGl0aW9uOwogCQkJCQljbWQtPm5hbWUg PSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3QgPSBO VUxMOwogCQkJCQljbWQtPmNvbmN1cnJlbnQgPSAkNDsKIAkJCQkJbi0+ZGVmID0gKE5vZGUg KikgY21kOwogCkBAIC0yMzc5LDYgKzI0MDEsMzUgQEAgcGFydGl0aW9uX2NtZDoKIAkJCQkJ bi0+c3VidHlwZSA9IEFUX0RldGFjaFBhcnRpdGlvbkZpbmFsaXplOwogCQkJCQljbWQtPm5h bWUgPSAkMzsKIAkJCQkJY21kLT5ib3VuZCA9IE5VTEw7CisJCQkJCWNtZC0+cGFydGxpc3Qg PSBOVUxMOworCQkJCQljbWQtPmNvbmN1cnJlbnQgPSBmYWxzZTsKKwkJCQkJbi0+ZGVmID0g KE5vZGUgKikgY21kOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJLyogQUxU RVIgVEFCTEUgPG5hbWU+IFNQTElUIFBBUlRJVElPTiA8cGFydGl0aW9uX25hbWU+IElOVE8g KCkgKi8KKwkJCXwgU1BMSVQgUEFSVElUSU9OIHF1YWxpZmllZF9uYW1lIElOVE8gJygnIHBh cnRpdGlvbnNfbGlzdCAnKScKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtl Tm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJUGFydGl0aW9uQ21kICpjbWQgPSBtYWtlTm9k ZShQYXJ0aXRpb25DbWQpOworCisJCQkJCW4tPnN1YnR5cGUgPSBBVF9TcGxpdFBhcnRpdGlv bjsKKwkJCQkJY21kLT5uYW1lID0gJDM7CisJCQkJCWNtZC0+Ym91bmQgPSBOVUxMOworCQkJ CQljbWQtPnBhcnRsaXN0ID0gJDY7CisJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwor CQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJ CQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyAoKSBJTlRP IDxwYXJ0aXRpb25fbmFtZT4gKi8KKwkJCXwgTUVSR0UgUEFSVElUSU9OUyAnKCcgcXVhbGlm aWVkX25hbWVfbGlzdCAnKScgSU5UTyBxdWFsaWZpZWRfbmFtZQorCQkJCXsKKwkJCQkJQWx0 ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQlQYXJ0aXRp b25DbWQgKmNtZCA9IG1ha2VOb2RlKFBhcnRpdGlvbkNtZCk7CisKKwkJCQkJbi0+c3VidHlw ZSA9IEFUX01lcmdlUGFydGl0aW9uczsKKwkJCQkJY21kLT5uYW1lID0gJDc7CisJCQkJCWNt ZC0+Ym91bmQgPSBOVUxMOworCQkJCQljbWQtPnBhcnRsaXN0ID0gJDQ7CiAJCQkJCWNtZC0+ Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSBjbWQ7CiAJCQkJ CSQkID0gKE5vZGUgKikgbjsKQEAgLTIzOTUsNiArMjQ0Niw3IEBAIGluZGV4X3BhcnRpdGlv bl9jbWQ6CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9BdHRhY2hQYXJ0aXRpb247CiAJCQkJCWNt ZC0+bmFtZSA9ICQzOwogCQkJCQljbWQtPmJvdW5kID0gTlVMTDsKKwkJCQkJY21kLT5wYXJ0 bGlzdCA9IE5VTEw7CiAJCQkJCWNtZC0+Y29uY3VycmVudCA9IGZhbHNlOwogCQkJCQluLT5k ZWYgPSAoTm9kZSAqKSBjbWQ7CiAKQEAgLTE3ODYyLDYgKzE3OTE0LDcgQEAgdW5yZXNlcnZl ZF9rZXl3b3JkOgogCQkJfCBQQVJTRVIKIAkJCXwgUEFSVElBTAogCQkJfCBQQVJUSVRJT04K KwkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECiAJCQl8IFBB VEgKQEAgLTE3OTI5LDYgKzE3OTgyLDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBT SU1QTEUKIAkJCXwgU0tJUAogCQkJfCBTTkFQU0hPVAorCQkJfCBTUExJVAogCQkJfCBTUUxf UAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCkBAIC0xODQ4MCw2ICsxODUzNCw3 IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSU0VSCiAJCQl8IFBBUlRJQUwKIAkJ CXwgUEFSVElUSU9OCisJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNT V09SRAogCQkJfCBQQVRICkBAIC0xODU1OSw2ICsxODYxNCw3IEBAIGJhcmVfbGFiZWxfa2V5 d29yZDoKIAkJCXwgU01BTExJTlQKIAkJCXwgU05BUFNIT1QKIAkJCXwgU09NRQorCQkJfCBT UExJVAogCQkJfCBTUUxfUAogCQkJfCBTVEFCTEUKIAkJCXwgU1RBTkRBTE9ORV9QCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCAxYTY0YTUyMjc5OC4uMjg0ODI1OTdm ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtNTgsNiArNTgsOCBA QAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90eXBlLmgiCiAjaW5jbHVkZSAicGFyc2VyL3Bh cnNlX3V0aWxjbWQuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCisjaW5jbHVkZSAi cGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCisjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUg InV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCkBAIC0xMzUsNyAr MTM3LDcgQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtQ29uc3RyYWludEF0dHJzKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgTGlzdCAqY29uc3RyYWludExpc3QpOwogc3Rh dGljIHZvaWQgdHJhbnNmb3JtQ29sdW1uVHlwZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBD b2x1bW5EZWYgKmNvbHVtbik7CiBzdGF0aWMgdm9pZCBzZXRTY2hlbWFOYW1lKGNoYXIgKmNv bnRleHRfc2NoZW1hLCBjaGFyICoqc3RtdF9zY2hlbWFfbmFtZSk7Ci1zdGF0aWMgdm9pZCB0 cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9u Q21kICpjbWQpOworc3RhdGljIHZvaWQgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQpOwogc3RhdGljIExp c3QgKnRyYW5zZm9ybVBhcnRpdGlvblJhbmdlQm91bmRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqYmxpc3QsCiAJCQkJCQkJCQkJICAgUmVsYXRpb24gcGFyZW50KTsKIHN0YXRpYyB2 b2lkIHZhbGlkYXRlSW5maW5pdGVCb3VuZHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpi bGlzdCk7CkBAIC0zMjczLDYgKzMyNzUsMTE2IEBAIHRyYW5zZm9ybVJ1bGVTdG10KFJ1bGVT dG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIH0KIAogCisvKgorICogdHJh bnNmb3JtUGFydGl0aW9uQ21kRm9yU3BsaXQKKyAqCQlBbmFseXplIHRoZSBBTFRFUiBUQUJM TEUgLi4uIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKgorICogRm9yIGVhY2ggbmV3IHBh cnRpdGlvbiBzcHMtPmJvdW5kIGlzIHNldCB0byB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgb2Yg Ym91bmQuCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JTcGxp dChDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKnBhcnRjbWQpCit7CisJ UmVsYXRpb24JcGFyZW50ID0gY3h0LT5yZWw7CisJT2lkCQkJc3BsaXRQYXJ0T2lkOworCUxp c3RDZWxsICAgKmxpc3RwdHI7CisKKwlpZiAocGFyZW50LT5yZF9yZWwtPnJlbGtpbmQgIT0g UkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2co IlwiJXNcIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZSIsIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHBhcmVudCkpKSk7CisKKwkvKiBUcmFuc2Zvcm0gcGFydGl0aW9uIGJvdW5kcyBm b3IgYWxsIHBhcnRpdGlvbnMgaW4gdGhlIGxpc3Q6ICovCisJZm9yZWFjaChsaXN0cHRyLCBw YXJ0Y21kLT5wYXJ0bGlzdCkKKwl7CisJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwcyA9IChT aW5nbGVQYXJ0aXRpb25TcGVjICopIGxmaXJzdChsaXN0cHRyKTsKKworCQljeHQtPnBhcnRi b3VuZCA9IE5VTEw7CisJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZChjeHQsIHNwcy0+Ym91bmQp OworCQkvKiBBc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3Vu ZCAqLworCQlzcHMtPmJvdW5kID0gY3h0LT5wYXJ0Ym91bmQ7CisJfQorCisJc3BsaXRQYXJ0 T2lkID0gUmFuZ2VWYXJHZXRSZWxpZChwYXJ0Y21kLT5uYW1lLCBOb0xvY2ssIGZhbHNlKTsK KworCS8qIFRoZW4gd2Ugc2hvdWxkIGNoZWNrIHBhcnRpdGlvbnMgd2l0aCB0cmFuc2Zvcm1l ZCBib3VuZHMgKi8KKwljaGVja19wYXJ0aXRpb25zX2Zvcl9zcGxpdChwYXJlbnQsIHNwbGl0 UGFydE9pZCwgcGFydGNtZC0+cGFydGxpc3QsIGN4dC0+cHN0YXRlKTsKK30KKworCisvKgor ICogdHJhbnNmb3JtUGFydGl0aW9uQ21kRm9yTWVyZ2UKKyAqCQlBbmFseXplIHRoZSBBTFRF UiBUQUJMTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgY29tbWFuZAorICoKKyAqIERvZXMgc2lt cGxlIGNoZWNrcyBmb3IgbWVyZ2VkIHBhcnRpdGlvbnMuIENhbGN1bGF0ZXMgYm91bmQgb2Yg cmVzdWx0CisgKiBwYXJ0aXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QYXJ0 aXRpb25DbWRGb3JNZXJnZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQg KnBhcnRjbWQpCit7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJT2lkCQkJcGFydE9pZDsK KwlSZWxhdGlvbglwYXJlbnQgPSBjeHQtPnJlbDsKKwlQYXJ0aXRpb25LZXkga2V5OworCWNo YXIJCXN0cmF0ZWd5OworCUxpc3RDZWxsICAgKmxpc3RwdHIsCisJCQkgICAqbGlzdHB0cjI7 CisJYm9vbAkJaXNEZWZhdWx0UGFydCA9IGZhbHNlOworCUxpc3QJICAgKnBhcnRPaWRzID0g TklMOworCisJaWYgKHBhcmVudC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElU SU9ORURfVEFCTEUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJcIiVzXCIgaXMgbm90 IGEgcGFydGl0aW9uZWQgdGFibGUiLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwYXJlbnQp KSkpOworCisJa2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50KTsKKwlzdHJh dGVneSA9IGdldF9wYXJ0aXRpb25fc3RyYXRlZ3koa2V5KTsKKworCWlmIChzdHJhdGVneSA9 PSBQQVJUSVRJT05fU1RSQVRFR1lfSEFTSCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygicGFy dGl0aW9uIG9mIGhhc2gtcGFydGl0aW9uZWQgdGFibGUgY2Fubm90IGJlIG1lcmdlZCIpKSk7 CisKKwkvKiBJcyBjdXJyZW50IHBhcnRpdGlvbiBhIERFRkFVTFQgcGFydGl0aW9uPyAqLwor CWRlZmF1bHRQYXJ0T2lkID0gZ2V0X2RlZmF1bHRfb2lkX2Zyb21fcGFydGRlc2MoCisJCQkJ CQkJCQkJCQkgICBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFyZW50LCB0cnVlKSk7CisK Kwlmb3JlYWNoKGxpc3RwdHIsIHBhcnRjbWQtPnBhcnRsaXN0KQorCXsKKwkJUmFuZ2VWYXIg ICAqbmFtZSA9IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogUGFydGl0 aW9ucyBpbiB0aGUgbGlzdCBzaG91bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZv cl9lYWNoX2NlbGwobGlzdHB0cjIsIHBhcnRjbWQtPnBhcnRsaXN0LCBsbmV4dChwYXJ0Y21k LT5wYXJ0bGlzdCwgbGlzdHB0cikpCisJCXsKKwkJCVJhbmdlVmFyICAgKm5hbWUyID0gKFJh bmdlVmFyICopIGxmaXJzdChsaXN0cHRyMik7CisKKwkJCWlmICghc3RyY21wKG5hbWUtPnJl bG5hbWUsIG5hbWUyLT5yZWxuYW1lKSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfVEFCTEUpLAorCQkJCQkJIGVycm1zZygicGFydGl0 aW9uIHdpdGggbmFtZSBcIiVzXCIgYWxyZWFkeSB1c2VkIiwgbmFtZS0+cmVsbmFtZSkpLAor CQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLCBuYW1lMi0+bG9jYXRpb24p KTsKKwkJfQorCisJCS8qIFNlYXJjaCBERUZBVUxUIHBhcnRpdGlvbiBpbiB0aGUgbGlzdC4g Ki8KKwkJcGFydE9pZCA9IFJhbmdlVmFyR2V0UmVsaWQobmFtZSwgTm9Mb2NrLCBmYWxzZSk7 CisJCWlmIChwYXJ0T2lkID09IGRlZmF1bHRQYXJ0T2lkKQorCQkJaXNEZWZhdWx0UGFydCA9 IHRydWU7CisJCXBhcnRPaWRzID0gbGFwcGVuZF9vaWQocGFydE9pZHMsIHBhcnRPaWQpOwor CX0KKworCS8qIEFsbG9jYXRlIGJvdW5kIG9mIHJlc3VsdCBwYXJ0aXRpb24uICovCisJQXNz ZXJ0KHBhcnRjbWQtPmJvdW5kID09IE5VTEwpOworCXBhcnRjbWQtPmJvdW5kID0gbWFrZU5v ZGUoUGFydGl0aW9uQm91bmRTcGVjKTsKKworCS8qIEZpbGwgcGFydGl0aW9uIGJvdW5kLiAq LworCXBhcnRjbWQtPmJvdW5kLT5zdHJhdGVneSA9IHN0cmF0ZWd5OworCXBhcnRjbWQtPmJv dW5kLT5sb2NhdGlvbiA9IC0xOworCXBhcnRjbWQtPmJvdW5kLT5pc19kZWZhdWx0ID0gaXNE ZWZhdWx0UGFydDsKKwlpZiAoIWlzRGVmYXVsdFBhcnQpCisJCWNhbGN1bGF0ZV9wYXJ0aXRp b25fYm91bmRfZm9yX21lcmdlKHBhcmVudCwgcGFydGNtZC0+cGFydGxpc3QsCisJCQkJCQkJ CQkJCXBhcnRPaWRzLCBwYXJ0Y21kLT5ib3VuZCwKKwkJCQkJCQkJCQkJY3h0LT5wc3RhdGUp OworfQorCiAvKgogICogdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQgLQogICoJCXBhcnNlIGFu YWx5c2lzIGZvciBBTFRFUiBUQUJMRQpAQCAtMzUzNiw3ICszNjQ4LDcgQEAgdHJhbnNmb3Jt QWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQl7 CiAJCQkJCVBhcnRpdGlvbkNtZCAqcGFydGNtZCA9IChQYXJ0aXRpb25DbWQgKikgY21kLT5k ZWY7CiAKLQkJCQkJdHJhbnNmb3JtUGFydGl0aW9uQ21kKCZjeHQsIHBhcnRjbWQpOworCQkJ CQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWQoJmN4dCwgcGFydGNtZC0+Ym91bmQpOwogCQkJCQkv KiBhc3NpZ24gdHJhbnNmb3JtZWQgdmFsdWUgb2YgdGhlIHBhcnRpdGlvbiBib3VuZCAqLwog CQkJCQlwYXJ0Y21kLT5ib3VuZCA9IGN4dC5wYXJ0Ym91bmQ7CiAJCQkJfQpAQCAtMzU0NCw2 ICszNjU2LDI0IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJU YWJsZVN0bXQgKnN0bXQsCiAJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsK IAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9TcGxpdFBhcnRpdGlvbjoKKwkJCWNhc2UgQVRf TWVyZ2VQYXJ0aXRpb25zOgorCQkJCXsKKwkJCQkJUGFydGl0aW9uQ21kICpwYXJ0Y21kID0g KFBhcnRpdGlvbkNtZCAqKSBjbWQtPmRlZjsKKworCQkJCQlpZiAobGlzdF9sZW5ndGgocGFy dGNtZC0+cGFydGxpc3QpIDwgMikKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCSBl cnJtc2coImxpc3Qgb2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0 IHR3byBpdGVtcyIpKSk7CisKKwkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBBVF9TcGxpdFBh cnRpdGlvbikKKwkJCQkJCXRyYW5zZm9ybVBhcnRpdGlvbkNtZEZvclNwbGl0KCZjeHQsIHBh cnRjbWQpOworCQkJCQllbHNlCisJCQkJCQl0cmFuc2Zvcm1QYXJ0aXRpb25DbWRGb3JNZXJn ZSgmY3h0LCBwYXJ0Y21kKTsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21k KTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQlkZWZhdWx0OgogCiAJCQkJLyoKQEAgLTM5 MzUsMTMgKzQwNjUsMTMgQEAgc2V0U2NoZW1hTmFtZShjaGFyICpjb250ZXh0X3NjaGVtYSwg Y2hhciAqKnN0bXRfc2NoZW1hX25hbWUpCiAKIC8qCiAgKiB0cmFuc2Zvcm1QYXJ0aXRpb25D bWQKLSAqCQlBbmFseXplIHRoZSBBVFRBQ0gvREVUQUNIIFBBUlRJVElPTiBjb21tYW5kCisg KgkJQW5hbHl6ZSB0aGUgQVRUQUNIL0RFVEFDSC9TUExJVCBQQVJUSVRJT04gY29tbWFuZAog ICoKLSAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSCBQQVJUSVRJT04gY29tbWFuZCwgY3h0LT5w YXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQotICogdHJhbnNmb3JtZWQgdmFsdWUgb2YgY21kLT5i b3VuZC4KKyAqIEluIGNhc2Ugb2YgdGhlIEFUVEFDSC9TUExJVCBQQVJUSVRJT04gY29tbWFu ZCwgY3h0LT5wYXJ0Ym91bmQgaXMgc2V0IHRvIHRoZQorICogdHJhbnNmb3JtZWQgdmFsdWUg b2YgYm91bmQuCiAgKi8KIHN0YXRpYyB2b2lkCi10cmFuc2Zvcm1QYXJ0aXRpb25DbWQoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQ21kICpjbWQpCit0cmFuc2Zvcm1QYXJ0 aXRpb25DbWQoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgUGFydGl0aW9uQm91bmRTcGVjICpi b3VuZCkKIHsKIAlSZWxhdGlvbglwYXJlbnRSZWwgPSBjeHQtPnJlbDsKIApAQCAtMzk1MCw5 ICs0MDgwLDkgQEAgdHJhbnNmb3JtUGFydGl0aW9uQ21kKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQsIFBhcnRpdGlvbkNtZCAqY21kKQogCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfVEFC TEU6CiAJCQkvKiB0cmFuc2Zvcm0gdGhlIHBhcnRpdGlvbiBib3VuZCwgaWYgYW55ICovCiAJ CQlBc3NlcnQoUmVsYXRpb25HZXRQYXJ0aXRpb25LZXkocGFyZW50UmVsKSAhPSBOVUxMKTsK LQkJCWlmIChjbWQtPmJvdW5kICE9IE5VTEwpCisJCQlpZiAoYm91bmQgIT0gTlVMTCkKIAkJ CQljeHQtPnBhcnRib3VuZCA9IHRyYW5zZm9ybVBhcnRpdGlvbkJvdW5kKGN4dC0+cHN0YXRl LCBwYXJlbnRSZWwsCi0JCQkJCQkJCQkJCQkJCSBjbWQtPmJvdW5kKTsKKwkJCQkJCQkJCQkJ CQkJIGJvdW5kKTsKIAkJCWJyZWFrOwogCQljYXNlIFJFTEtJTkRfUEFSVElUSU9ORURfSU5E RVg6CiAKQEAgLTM5NjAsNyArNDA5MCw3IEBAIHRyYW5zZm9ybVBhcnRpdGlvbkNtZChDcmVh dGVTdG10Q29udGV4dCAqY3h0LCBQYXJ0aXRpb25DbWQgKmNtZCkKIAkJCSAqIEEgcGFydGl0 aW9uZWQgaW5kZXggY2Fubm90IGhhdmUgYSBwYXJ0aXRpb24gYm91bmQgc2V0LiAgQUxURVIK IAkJCSAqIElOREVYIHByZXZlbnRzIHRoYXQgd2l0aCBpdHMgZ3JhbW1hciwgYnV0IG5vdCBB TFRFUiBUQUJMRS4KIAkJCSAqLwotCQkJaWYgKGNtZC0+Ym91bmQgIT0gTlVMTCkKKwkJCWlm IChib3VuZCAhPSBOVUxMKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShF UlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAogCQkJCQkJIGVycm1zZygiXCIl c1wiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlIiwKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmMgYi9zcmMvYmFja2VuZC9wYXJ0aXRpb25p bmcvcGFydGJvdW5kcy5jCmluZGV4IDZiMzUxMTFlYmI2Li45YTEwNDExZjdjNiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRib3VuZHMuYworKysgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5jCkBAIC00OTk4LDMgKzQ5OTgsODQz IEBAIHNhdGlzZmllc19oYXNoX3BhcnRpdGlvbihQR19GVU5DVElPTl9BUkdTKQogCiAJUEdf UkVUVVJOX0JPT0wocm93SGFzaCAlIG1vZHVsdXMgPT0gcmVtYWluZGVyKTsKIH0KKworLyoK KyAqIGNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfcmFuZ2UKKyAqCisgKiBDaGVja3Mg dGhhdCBib3VuZHMgb2YgcGFydGl0aW9ucyAobmFtZSwgYm91bmQpIGFuZCAocHJldl9uYW1l LCBwcmV2X2JvdW5kKQorICogZG8gbm90IG92ZXJsYXAuIExvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAicHJldl9uYW1lIiBzaG91bGQgYmUgbGVzcyBvciBlcXVhbAorICogdGhhbiBsb3dl ciBib3VuZCBvZiBwYXJ0aXRpb24gIm5hbWUiLgorICogSW4gY2FzZSBkZWZhdWx0UGFydD10 cnVlIGNhbiBiZSBmcmVlIHNwYWNlIGJldHdlZW4gYm91bmQgYW5kIHByZXZfYm91bmQuCisg Ki8KK3N0YXRpYyB2b2lkCitjaGVja19wYXJ0aXRpb25zX25vdF9vdmVybGFwX3JhbmdlKFJl bGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICAgUmFuZ2VWYXIgKm5hbWUsCisJCQkJCQkJCSAg IFBhcnRpdGlvbkJvdW5kU3BlYyAqYm91bmQsCisJCQkJCQkJCSAgIFJhbmdlVmFyICpwcmV2 X25hbWUsCisJCQkJCQkJCSAgIFBhcnRpdGlvbkJvdW5kU3BlYyAqcHJldl9ib3VuZCwKKwkJ CQkJCQkJICAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJICAgUGFyc2VTdGF0ZSAqcHN0 YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShw YXJlbnQpOworCVBhcnRpdGlvblJhbmdlQm91bmQgKmxvd2VyOworCVBhcnRpdGlvblJhbmdl Qm91bmQgKnByZXZ1cHBlcjsKKwlpbnQJCQljbXB2YWw7CisKKwlBc3NlcnQoa2V5LT5zdHJh dGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0UpOworCisJbG93ZXIgPSBtYWtlX29u ZV9wYXJ0aXRpb25fcmJvdW5kKGtleSwgLTEsIGJvdW5kLT5sb3dlcmRhdHVtcywgdHJ1ZSk7 CisJcHJldnVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIC0xLCBwcmV2 X2JvdW5kLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyogbG93ZXIxPWZhbHNlIGZvciBj b3JyZWN0IGNvbXBhcmlzb24gbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyAqLworCWNtcHZhbCA9 IHBhcnRpdGlvbl9yYm91bmRfY21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+ cGFydHN1cGZ1bmMsCisJCQkJCQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkg IGxvd2VyLT5kYXR1bXMsIGxvd2VyLT5raW5kLAorCQkJCQkJCQkgIGZhbHNlLCBwcmV2dXBw ZXIpOworCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwgKGRlZmF1bHRQYXJ0ICYm IGNtcHZhbCA8IDApKQorCXsKKwkJUGFydGl0aW9uUmFuZ2VEYXR1bSAqZGF0dW0gPSBsaW5p dGlhbChib3VuZC0+bG93ZXJkYXR1bXMpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNn KCJsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gXCIlc1wiIGNvbmZsaWN0cyB3aXRoIHVwcGVy IGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJbmFtZS0+cmVs bmFtZSwgcHJldl9uYW1lLT5yZWxuYW1lKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgZGF0dW0tPmxvY2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRp dGlvbnNfbm90X292ZXJsYXBfbGlzdAorICoKKyAqIENoZWNrcyB0aGF0IHZhbHVlcyBvZiBu ZXcgcGFydGl0aW9ucyBkbyBub3Qgb3ZlcmxhcC4KKyAqIHBhcnRzOiBhcnJheSBvZiBTaW5n bGVQYXJ0aXRpb25TcGVjIHN0cnVjdHMKKyAqIG5wYXJ0czogc2l6ZSBvZiBhcnJheSAicGFy dHMiLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9s aXN0KFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJICBTaW5nbGVQYXJ0aXRpb25TcGVjICog KnBhcnRzLAorCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCSAgUGFyc2VTdGF0ZSAq cHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktl eShwYXJlbnQpOworCWludAkJCW92ZXJsYXBfbG9jYXRpb24gPSAtMTsKKwlpbnQJCQlpLAor CQkJCWo7CisJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzMSwKKwkJCSAgICpzcHMyOworCUxp c3QJICAgKm92ZXJsYXA7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJUSVRJT05f U1RSQVRFR1lfTElTVCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJewor CQlzcHMxID0gcGFydHNbaV07CisKKwkJZm9yIChqID0gaSArIDE7IGogPCBucGFydHM7IGor KykKKwkJeworCQkJc3BzMiA9IHBhcnRzW2pdOworCisJCQkvKgorCQkJICogQ2FsY3VsYXRl IGludGVyc2VjdGlvbiBiZXR3ZWVuIHZhbHVlcyBvZiB0d28gcGFydGl0aW9ucy4KKwkJCSAq LworCQkJb3ZlcmxhcCA9IGxpc3RfaW50ZXJzZWN0aW9uKHNwczEtPmJvdW5kLT5saXN0ZGF0 dW1zLAorCQkJCQkJCQkJCXNwczItPmJvdW5kLT5saXN0ZGF0dW1zKTsKKwkJCWlmIChsaXN0 X2xlbmd0aChvdmVybGFwKSA+IDApCisJCQl7CisJCQkJQ29uc3QJICAgKnZhbCA9IChDb25z dCAqKSBsZmlyc3QobGlzdF9oZWFkKG92ZXJsYXApKTsKKworCQkJCW92ZXJsYXBfbG9jYXRp b24gPSB2YWwtPmxvY2F0aW9uOworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkJIGVycm1zZygi bmV3IHBhcnRpdGlvbiBcIiVzXCIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgbmV3IHBh cnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJCQlzcHMxLT5uYW1lLT5yZWxuYW1lLCBzcHMyLT5u YW1lLT5yZWxuYW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVy bGFwX2xvY2F0aW9uKSkpOworCQkJfQorCQl9CisJfQorfQorCisvKgorICogY2hlY2tfcGFy dGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfcmFuZ2UKKyAqCisgKiBDaGVja3MgdGhhdCBib3Vu ZHMgb2YgbmV3IHBhcnRpdGlvbiBpcyBpbnNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlv bgorICogKHdpdGggc3BsaXRQYXJ0T2lkKS4gSWYgZmlyc3Q9dHJ1ZSB0aGVuIGxvd2VyIGJv dW5kcyBvZiBwYXJ0aXRpb25zIHNob3VsZAorICogYmUgZXF1YWxzLiBJZiBsYXN0PXRydWUg dGhlbiB1cHBlciBib3VuZHMgb2YgcGFydGl0aW9ucyBzaG91bGQgYmUgZXF1YWxzLgorICog SWYgZGVmaW5lZCBzcHNQcmV2IHRoZW4gZnVuY3Rpb24gY29tcGFyZXMgbG93ZXIgYm91bmQg b2Ygc3BlYyB3aXRoIHVwcGVyCisgKiBib3VuZCBvZiBzcHNQcmV2LgorICogZGVmYXVsdFBh cnQ9dHJ1ZSBpbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGhhcyBERUZBVUxUIHBhcnRpdGlv bi4KKyAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9yX3NwbGl0 X3JhbmdlKGNoYXIgKnJlbG5hbWUsIFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCSAgIFBh cnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAgIE9pZCBzcGxpdFBhcnRPaWQs CisJCQkJCQkJCQkgICBib29sIGZpcnN0LAorCQkJCQkJCQkJICAgYm9vbCBsYXN0LAorCQkJ CQkJCQkJICAgYm9vbCBkZWZhdWx0UGFydCwKKwkJCQkJCQkJCSAgIFBhcnNlU3RhdGUgKnBz dGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25LZXko cGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQYXJ0aXRp b25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8g PSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCXdpdGggPSAtMTsKKwlib29sCQlvdmVy bGFwID0gZmFsc2U7CisJaW50CQkJb3ZlcmxhcF9sb2NhdGlvbiA9IC0xOworCVBhcnRpdGlv blJhbmdlQm91bmQgKmxvd2VyLAorCQkJICAgKnVwcGVyOworCWludAkJCWNtcHZhbDsKKwor CUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisJ QXNzZXJ0KHNwZWMtPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRSk7CisK Kwlsb3dlciA9IG1ha2Vfb25lX3BhcnRpdGlvbl9yYm91bmQoa2V5LCAtMSwgc3BlYy0+bG93 ZXJkYXR1bXMsIHRydWUpOworCXVwcGVyID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChr ZXksIC0xLCBzcGVjLT51cHBlcmRhdHVtcywgZmFsc2UpOworCisJLyoKKwkgKiBGaXJzdCBj aGVjayBpZiB0aGUgcmVzdWx0aW5nIHJhbmdlIHdvdWxkIGJlIGVtcHR5IHdpdGggc3BlY2lm aWVkIGxvd2VyCisJICogYW5kIHVwcGVyIGJvdW5kcy4gIHBhcnRpdGlvbl9yYm91bmRfY21w IGNhbm5vdCByZXR1cm4gemVybyBoZXJlLCBzaW5jZQorCSAqIHRoZSBsb3dlci1ib3VuZCBm bGFncyBhcmUgZGlmZmVyZW50LgorCSAqLworCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRf Y21wKGtleS0+cGFydG5hdHRzLAorCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJ CQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkgIGxvd2VyLT5kYXR1bXMsIGxv d2VyLT5raW5kLAorCQkJCQkJCQkgIHRydWUsIHVwcGVyKTsKKwlBc3NlcnQoY21wdmFsICE9 IDApOworCWlmIChjbXB2YWwgPiAwKQorCXsKKwkJLyogUG9pbnQgdG8gcHJvYmxlbWF0aWMg a2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdC4gKi8KKwkJUGFydGl0aW9uUmFuZ2VEYXR1 bSAqZGF0dW0gPSBsaXN0X250aChzcGVjLT5sb3dlcmRhdHVtcywKKwkJCQkJCQkJCQkJICBj bXB2YWwgLSAxKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiZW1wdHkgcmFuZ2Ug Ym91bmQgc3BlY2lmaWVkIGZvciBwYXJ0aXRpb24gXCIlc1wiIiwKKwkJCQkJCXJlbG5hbWUp LAorCQkJCSBlcnJkZXRhaWwoIlNwZWNpZmllZCBsb3dlciBib3VuZCAlcyBpcyBncmVhdGVy IHRoYW4gb3IgZXF1YWwgdG8gdXBwZXIgYm91bmQgJXMuIiwKKwkJCQkJCSAgIGdldF9yYW5n ZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPmxvd2VyZGF0dW1zKSwKKwkJCQkJCSAgIGdldF9y YW5nZV9wYXJ0Ym91bmRfc3RyaW5nKHNwZWMtPnVwcGVyZGF0dW1zKSksCisJCQkJIHBhcnNl cl9lcnJwb3NpdGlvbihwc3RhdGUsIGRhdHVtLT5sb2NhdGlvbikpKTsKKwl9CisKKwlpZiAo cGFydGRlc2MtPm5wYXJ0cyA+IDApCisJeworCQlpbnQJCQlvZmZzZXQ7CisKKwkJQXNzZXJ0 KGJvdW5kaW5mbyAmJgorCQkJICAgYm91bmRpbmZvLT5zdHJhdGVneSA9PSBQQVJUSVRJT05f U1RSQVRFR1lfUkFOR0UgJiYKKwkJCSAgIChib3VuZGluZm8tPm5kYXR1bXMgPiAwIHx8CisJ CQkJcGFydGl0aW9uX2JvdW5kX2hhc19kZWZhdWx0KGJvdW5kaW5mbykpKTsKKworCQkvKgor CQkgKiBUZXN0IHdoZXRoZXIgdGhlIG5ldyBsb3dlciBib3VuZCAod2hpY2ggaXMgdHJlYXRl ZCBpbmNsdXNpdmVseSBhcworCQkgKiBwYXJ0IG9mIHRoZSBuZXcgcGFydGl0aW9uKSBsaWVz IGluc2lkZSBhbiBleGlzdGluZyBwYXJ0aXRpb24sIG9yIGluCisJCSAqIGEgZ2FwLgorCQkg KgorCQkgKiBJZiBpdCdzIGluc2lkZSBhbiBleGlzdGluZyBwYXJ0aXRpb24sIHRoZSBib3Vu ZCBhdCBvZmZzZXQgKyAxIHdpbGwKKwkJICogYmUgdGhlIHVwcGVyIGJvdW5kIG9mIHRoYXQg cGFydGl0aW9uLCBhbmQgaXRzIGluZGV4IHdpbGwgYmUgPj0gMC4KKwkJICoKKwkJICogSWYg aXQncyBpbiBhIGdhcCwgdGhlIGJvdW5kIGF0IG9mZnNldCArIDEgd2lsbCBiZSB0aGUgbG93 ZXIgYm91bmQKKwkJICogb2YgdGhlIG5leHQgcGFydGl0aW9uLCBhbmQgaXRzIGluZGV4IHdp bGwgYmUgLTEuIFRoaXMgaXMgYWxzbyB0cnVlCisJCSAqIGlmIHRoZXJlIGlzIG5vIG5leHQg cGFydGl0aW9uLCBzaW5jZSB0aGUgaW5kZXggYXJyYXkgaXMgaW5pdGlhbGlzZWQKKwkJICog d2l0aCBhbiBleHRyYSAtMSBhdCB0aGUgZW5kLgorCQkgKi8KKwkJb2Zmc2V0ID0gcGFydGl0 aW9uX3JhbmdlX2JzZWFyY2goa2V5LT5wYXJ0bmF0dHMsCisJCQkJCQkJCQkJIGtleS0+cGFy dHN1cGZ1bmMsCisJCQkJCQkJCQkJIGtleS0+cGFydGNvbGxhdGlvbiwKKwkJCQkJCQkJCQkg Ym91bmRpbmZvLCBsb3dlciwKKwkJCQkJCQkJCQkgJmNtcHZhbCk7CisKKwkJaWYgKGJvdW5k aW5mby0+aW5kZXhlc1tvZmZzZXQgKyAxXSA8IDApCisJCXsKKwkJCVBhcnRpdGlvblJhbmdl RGF0dW0gKmRhdHVtID0gbGlzdF9udGgoc3BlYy0+bG93ZXJkYXR1bXMsIEFicyhjbXB2YWwp IC0gMSk7CisKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCSBlcnJtc2coImJvdW5kcyBvZiBwYXJ0 aXRpb24gXCIlc1wiIGFyZSBvdXRzaWRlIGJvdW5kcyBvZiBzcGxpdCBwYXJ0aXRpb24iLAor CQkJCQkJCXJlbG5hbWUpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZGF0 dW0tPmxvY2F0aW9uKSkpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFRoZSBu ZXcgcGFydGl0aW9uIG92ZXJsYXBzIHdpdGggdGhlIGV4aXN0aW5nIHBhcnRpdGlvbiBiZXR3 ZWVuCisJCQkgKiBvZmZzZXQgYW5kIG9mZnNldCArIDEuCisJCQkgKi8KKwkJCVBhcnRpdGlv blJhbmdlRGF0dW0gKmRhdHVtOworCisJCQkvKgorCQkJICogUG9pbnQgdG8gcHJvYmxlbWF0 aWMga2V5IGluIHRoZSBsb3dlciBkYXR1bXMgbGlzdDsgaWYgd2UgaGF2ZQorCQkJICogZXF1 YWxpdHksIHBvaW50IHRvIHRoZSBmaXJzdCBvbmUuCisJCQkgKi8KKwkJCWRhdHVtID0gY21w dmFsID09IDAgPyBsaW5pdGlhbChzcGVjLT5sb3dlcmRhdHVtcykgOgorCQkJCWxpc3RfbnRo KHNwZWMtPmxvd2VyZGF0dW1zLCBBYnMoY21wdmFsKSAtIDEpOworCQkJb3ZlcmxhcF9sb2Nh dGlvbiA9IGRhdHVtLT5sb2NhdGlvbjsKKwkJCXdpdGggPSBib3VuZGluZm8tPmluZGV4ZXNb b2Zmc2V0ICsgMV07CisJCQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0 T2lkKQorCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJZWxzZSBpZiAoZmlyc3QgfHwgbGFzdCkK KwkJCXsKKwkJCQkvKgorCQkJCSAqIExvd2VyIGJvdW5kIG9mIGZpcnN0IHBhcnRpdGlvbiBz aG91bGQgYmUgZXF1YWxzIHRvIGxvd2VyCisJCQkJICogYm91bmQgb2Ygc3BsaXQgcGFydGl0 aW9uLiBVcHBlciBib3VuZCBvZiBsYXN0IHBhcnRpdGlvbgorCQkJCSAqIHNob3VsZCBiZSBl cXVhbHMgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uLgorCQkJCSAqCisJCQkJ ICogTmVlZCB0byBkbyBleGFjdCBjaGVjayBvZiB0aGlzIGNvbmRpdGlvbiBpZiBub3QgZXhp c3RzCisJCQkJICogREVGQVVMVCBwYXJ0aXRpb24uIE90aGVyd2lzZSBjYW4gYmUgc3BhY2Vz IGJldHdlZW4KKwkJCQkgKiBwYXJ0aXRpb25zLgorCQkJCSAqLworCQkJCURhdHVtCSAgICpk YXR1bXM7CisJCQkJUGFydGl0aW9uUmFuZ2VEYXR1bUtpbmQgKmtpbmQ7CisJCQkJaW50CQkJ Y3Vyb2Zmc2V0ID0gb2Zmc2V0ICsgKGxhc3QgPyAxIDogMCk7CisKKwkJCQlkYXR1bXMgPSBi b3VuZGluZm8tPmRhdHVtc1tjdXJvZmZzZXRdOworCQkJCWtpbmQgPSBib3VuZGluZm8tPmtp bmRbY3Vyb2Zmc2V0XTsKKworCQkJCWNtcHZhbCA9IHBhcnRpdGlvbl9yYm91bmRfY21wKGtl eS0+cGFydG5hdHRzLAorCQkJCQkJCQkJCQkgIGtleS0+cGFydHN1cGZ1bmMsCisJCQkJCQkJ CQkJCSAga2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCQkgIGRhdHVtcywga2luZCwK KwkJCQkJCQkJCQkJICBmaXJzdCwKKwkJCQkJCQkJCQkJICBmaXJzdCA/IGxvd2VyIDogdXBw ZXIpOworCQkJCWlmICgoIWRlZmF1bHRQYXJ0ICYmIGNtcHZhbCkgfHwKKwkJCQkvKiBJcyBw YXJ0aXRpb24gYm91bmQgb3V0c2lkZSBvZiBzcGxpdCBwYXJ0aXRpb24gYm91bmQ/ICovCisJ CQkJCShkZWZhdWx0UGFydCAmJiBmaXJzdCAmJiBjbXB2YWwgPiAwKSB8fAorCQkJCQkoZGVm YXVsdFBhcnQgJiYgbGFzdCAmJiBjbXB2YWwgPCAwKSkKKwkJCQl7CisJCQkJCVBhcnRpdGlv blJhbmdlRGF0dW0gKmRhdHVtID0gbGlzdF9udGgoZmlyc3QgPworCQkJCQkJCQkJCQkJCQkg IHNwZWMtPmxvd2VyZGF0dW1zIDogc3BlYy0+dXBwZXJkYXR1bXMsCisJCQkJCQkJCQkJCQkJ CSAgQWJzKGNtcHZhbCkgLSAxKTsKKworCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJIGVy cm1zZygiJXMgYm91bmQgb2YgcGFydGl0aW9uIFwiJXNcIiBpcyBub3QgZXF1YWxzIHRvICVz IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbiIsCisJCQkJCQkJCQlmaXJzdCA/ICJsb3dlciIg OiAidXBwZXIiLAorCQkJCQkJCQkJcmVsbmFtZSwKKwkJCQkJCQkJCWZpcnN0ID8gImxvd2Vy IiA6ICJ1cHBlciIpLAorCQkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkYXR1 bS0+bG9jYXRpb24pKSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJaWYgKG92ZXJsYXAp CisJeworCQlBc3NlcnQod2l0aCA+PSAwKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2co Im5ldyBwYXJ0aXRpb24gXCIlc1wiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIChub3Qg c3BsaXQpIHBhcnRpdGlvbiBcIiVzXCIiLAorCQkJCQkJcmVsbmFtZSwgZ2V0X3JlbF9uYW1l KHBhcnRkZXNjLT5vaWRzW3dpdGhdKSksCisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3Rh dGUsIG92ZXJsYXBfbG9jYXRpb24pKSk7CisJfQorfQorCisvKgorICogY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdAorICoKKyAqIENoZWNrcyB0aGF0IGJvdW5kcyBv ZiBuZXcgcGFydGl0aW9uIGlzIGluc2lkZSBib3VuZHMgb2Ygc3BsaXQgcGFydGl0aW9uCisg KiAod2l0aCBzcGxpdFBhcnRPaWQpLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tfcGFydGl0 aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChjaGFyICpyZWxuYW1lLCBSZWxhdGlvbiBwYXJl bnQsCisJCQkJCQkJCQkgIFBhcnRpdGlvbkJvdW5kU3BlYyAqc3BlYywKKwkJCQkJCQkJCSAg T2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCQkJCSAgUGFyc2VTdGF0ZSAqcHN0YXRlKQorewor CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOwor CVBhcnRpdGlvbkRlc2MgcGFydGRlc2MgPSBSZWxhdGlvbkdldFBhcnRpdGlvbkRlc2MocGFy ZW50LCBmYWxzZSk7CisJUGFydGl0aW9uQm91bmRJbmZvIGJvdW5kaW5mbyA9IHBhcnRkZXNj LT5ib3VuZGluZm87CisJaW50CQkJd2l0aCA9IC0xOworCWJvb2wJCW92ZXJsYXAgPSBmYWxz ZTsKKwlpbnQJCQlvdmVybGFwX2xvY2F0aW9uID0gLTE7CisJTGlzdENlbGwgICAqY2VsbDsK KworCUFzc2VydChrZXktPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9MSVNUKTsK KwlBc3NlcnQoc3BlYy0+c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpOwor CisJLyogU2hvdWxkIGJlIGV4aXN0cyBhdCBsZWFzdCBvbmUgcGFydGl0aW9uIGZvciBzcGxp dDogKi8KKwlBc3NlcnQocGFydGRlc2MtPm5wYXJ0cyA+IDApOworCisJQXNzZXJ0KGJvdW5k aW5mbyAmJgorCQkgICBib3VuZGluZm8tPnN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVH WV9MSVNUICYmCisJCSAgIChib3VuZGluZm8tPm5kYXR1bXMgPiAwIHx8CisJCQlwYXJ0aXRp b25fYm91bmRfYWNjZXB0c19udWxscyhib3VuZGluZm8pIHx8CisJCQlwYXJ0aXRpb25fYm91 bmRfaGFzX2RlZmF1bHQoYm91bmRpbmZvKSkpOworCisJZm9yZWFjaChjZWxsLCBzcGVjLT5s aXN0ZGF0dW1zKQorCXsKKwkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9ub2RlKENvbnN0LCBj ZWxsKTsKKworCQlvdmVybGFwX2xvY2F0aW9uID0gdmFsLT5sb2NhdGlvbjsKKwkJaWYgKCF2 YWwtPmNvbnN0aXNudWxsKQorCQl7CisJCQlpbnQJCQlvZmZzZXQ7CisJCQlib29sCQllcXVh bDsKKworCQkJb2Zmc2V0ID0gcGFydGl0aW9uX2xpc3RfYnNlYXJjaCgma2V5LT5wYXJ0c3Vw ZnVuY1swXSwKKwkJCQkJCQkJCQkJa2V5LT5wYXJ0Y29sbGF0aW9uLAorCQkJCQkJCQkJCQli b3VuZGluZm8sCisJCQkJCQkJCQkJCXZhbC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJJmVx dWFsKTsKKwkJCWlmIChvZmZzZXQgPj0gMCAmJiBlcXVhbCkKKwkJCXsKKwkJCQl3aXRoID0g Ym91bmRpbmZvLT5pbmRleGVzW29mZnNldF07CisJCQkJaWYgKHBhcnRkZXNjLT5vaWRzW3dp dGhdICE9IHNwbGl0UGFydE9pZCkKKwkJCQl7CisJCQkJCW92ZXJsYXAgPSB0cnVlOworCQkJ CQlicmVhazsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJ CQkgZXJybXNnKCJuZXcgcGFydGl0aW9uIFwiJXNcIiBjYW5ub3QgaGF2ZSB0aGlzIHZhbHVl IGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGRvZXMgbm90IGhhdmUiLAorCQkJCQkJCQlyZWxu YW1lKSwKKwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xvY2F0 aW9uKSkpOworCQl9CisJCWVsc2UgaWYgKHBhcnRpdGlvbl9ib3VuZF9hY2NlcHRzX251bGxz KGJvdW5kaW5mbykpCisJCXsKKwkJCXdpdGggPSBib3VuZGluZm8tPm51bGxfaW5kZXg7CisJ CQlpZiAocGFydGRlc2MtPm9pZHNbd2l0aF0gIT0gc3BsaXRQYXJ0T2lkKQorCQkJeworCQkJ CW92ZXJsYXAgPSB0cnVlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWVsc2UKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJCSBlcnJtc2coIm5ldyBwYXJ0aXRpb24gXCIlc1wiIGNhbm5vdCBo YXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRpb24gZG9lcyBub3QgaGF2ZSIs CisJCQkJCQkJcmVsbmFtZSksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBv dmVybGFwX2xvY2F0aW9uKSkpOworCX0KKworCWlmIChvdmVybGFwKQorCXsKKwkJQXNzZXJ0 KHdpdGggPj0gMCk7CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFydGl0aW9u IFwiJXNcIiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRp b24gXCIlc1wiIiwKKwkJCQkJCXJlbG5hbWUsIGdldF9yZWxfbmFtZShwYXJ0ZGVzYy0+b2lk c1t3aXRoXSkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvdmVybGFwX2xv Y2F0aW9uKSkpOworCX0KK30KKworLyoKKyAqIGZpbmRfdmFsdWVfaW5fbmV3X3BhcnRpdGlv bnMKKyAqCisgKiBGdW5jdGlvbiByZXR1cm5zICJ0cnVlIiBpbiBjYXNlIGxpc3Qgb2YgbmV3 IHBhcnRpdGlvbnMgKHBhcnRsaXN0KSBjb250YWlucworICogdmFsdWUgInZhbHVlIiBhbmQg ImZhbHNlIiBpZiBub3QgY29udGFpbnMuCisgKi8KK3N0YXRpYyBib29sCitmaW5kX3ZhbHVl X2luX25ld19wYXJ0aXRpb25zKEZtZ3JJbmZvICpwYXJ0c3VwZnVuYywKKwkJCQkJCQkgT2lk ICpwYXJ0Y29sbGF0aW9uLAorCQkJCQkJCSBTaW5nbGVQYXJ0aXRpb25TcGVjICogKnBhcnRz LAorCQkJCQkJCSBpbnQgbnBhcnRzLAorCQkJCQkJCSBEYXR1bSB2YWx1ZSwKKwkJCQkJCQkg Ym9vbCBpc251bGwpCit7CisJTGlzdENlbGwgICAqdmFscHRyOworCWludAkJCWk7CisKKwlm b3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJeworCQlTaW5nbGVQYXJ0aXRpb25TcGVj ICpzcHMgPSBwYXJ0c1tpXTsKKworCQlmb3JlYWNoKHZhbHB0ciwgc3BzLT5ib3VuZC0+bGlz dGRhdHVtcykKKwkJeworCQkJQ29uc3QJICAgKnZhbCA9IGxmaXJzdF9ub2RlKENvbnN0LCB2 YWxwdHIpOworCisJCQlpZiAoaXNudWxsICYmIHZhbC0+Y29uc3Rpc251bGwpCisJCQkJcmV0 dXJuIHRydWU7CisKKwkJCWlmICghaXNudWxsICYmICF2YWwtPmNvbnN0aXNudWxsKQorCQkJ eworCQkJCWlmIChEYXR1bUdldEludDMyKEZ1bmN0aW9uQ2FsbDJDb2xsKCZwYXJ0c3VwZnVu Y1swXSwKKwkJCQkJCQkJCQkJCQlwYXJ0Y29sbGF0aW9uWzBdLAorCQkJCQkJCQkJCQkJCXZh bC0+Y29uc3R2YWx1ZSwKKwkJCQkJCQkJCQkJCQl2YWx1ZSkpID09IDApCisJCQkJCXJldHVy biB0cnVlOworCQkJfQorCQl9CisJfQorCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIGNo ZWNrX3BhcmVudF92YWx1ZXNfaW5fbmV3X3BhcnRpdGlvbnMKKyAqCisgKiBDaGVja3MgdGhh dCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiAocGFydE9pZCkgY29udGFpbnMgaW4g bmV3CisgKiBwYXJ0aXRpb25zIChwYXJ0bGlzdCkuCisgKi8KK3N0YXRpYyB2b2lkCitjaGVj a19wYXJlbnRfdmFsdWVzX2luX25ld19wYXJ0aXRpb25zKFJlbGF0aW9uIHBhcmVudCwKKwkJ CQkJCQkJCSAgT2lkIHBhcnRPaWQsCisJCQkJCQkJCQkgIFNpbmdsZVBhcnRpdGlvblNwZWMg KiAqcGFydHMsCisJCQkJCQkJCQkgIGludCBucGFydHMsCisJCQkJCQkJCQkgIFBhcnNlU3Rh dGUgKnBzdGF0ZSkKK3sKKwlQYXJ0aXRpb25LZXkga2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRp b25LZXkocGFyZW50KTsKKwlQYXJ0aXRpb25EZXNjIHBhcnRkZXNjID0gUmVsYXRpb25HZXRQ YXJ0aXRpb25EZXNjKHBhcmVudCwgZmFsc2UpOworCVBhcnRpdGlvbkJvdW5kSW5mbyBib3Vu ZGluZm8gPSBwYXJ0ZGVzYy0+Ym91bmRpbmZvOworCWludAkJCWk7CisJYm9vbAkJZm91bmQg PSB0cnVlOworCWJvb2wJCXNlYXJjaE51bGwgPSBmYWxzZTsKKwlEYXR1bQkJZGF0dW0gPSBQ b2ludGVyR2V0RGF0dW0oTlVMTCk7CisKKwlBc3NlcnQoa2V5LT5zdHJhdGVneSA9PSBQQVJU SVRJT05fU1RSQVRFR1lfTElTVCk7CisKKwkvKgorCSAqIFNwZWNpYWwgcHJvY2Vzc2luZyBm b3IgTlVMTCB2YWx1ZS4gU2VhcmNoIE5VTEwtdmFsdWUgaWYgaXQgY29udGFpbnMKKwkgKiBz cGxpdCBwYXJ0aXRpb24gKHBhcnRPaWQpLgorCSAqLworCWlmIChwYXJ0aXRpb25fYm91bmRf YWNjZXB0c19udWxscyhib3VuZGluZm8pICYmCisJCXBhcnRkZXNjLT5vaWRzW2JvdW5kaW5m by0+bnVsbF9pbmRleF0gPT0gcGFydE9pZCkKKwl7CisJCWlmICghZmluZF92YWx1ZV9pbl9u ZXdfcGFydGl0aW9ucygma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJCQkJCQkJCQkgIGtleS0+ cGFydGNvbGxhdGlvbiwgcGFydHMsIG5wYXJ0cywgZGF0dW0sIHRydWUpKQorCQl7CisJCQlm b3VuZCA9IGZhbHNlOworCQkJc2VhcmNoTnVsbCA9IHRydWU7CisJCX0KKwl9CisKKwkvKgor CSAqIFNlYXJjaCBhbGwgdmFsdWVzIG9mIHNwbGl0IHBhcnRpdGlvbiB3aXRoIHBhcnRPaWQg aW4gUGFydGl0aW9uRGVzYyBvZgorCSAqIHBhcnRpdGlvbmRlIHRhYmxlLgorCSAqLworCWZv ciAoaSA9IDA7IGkgPCBib3VuZGluZm8tPm5kYXR1bXMgJiYgZm91bmQ7IGkrKykKKwl7CisJ CWlmIChwYXJ0ZGVzYy0+b2lkc1tib3VuZGluZm8tPmluZGV4ZXNbaV1dID09IHBhcnRPaWQp CisJCXsKKwkJCS8qIFdlIGZvdW5kIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGNvbnRh aW5zLiAqLworCQkJZGF0dW0gPSBib3VuZGluZm8tPmRhdHVtc1tpXVswXTsKKwkJCWlmICgh ZmluZF92YWx1ZV9pbl9uZXdfcGFydGl0aW9ucygma2V5LT5wYXJ0c3VwZnVuY1swXSwKKwkJ CQkJCQkJCQkJICBrZXktPnBhcnRjb2xsYXRpb24sIHBhcnRzLCBucGFydHMsIGRhdHVtLCBm YWxzZSkpCisJCQkJZm91bmQgPSBmYWxzZTsKKwkJfQorCX0KKworCWlmICghZm91bmQpCisJ eworCQlDb25zdAkgICAqbm90Rm91bmRWYWw7CisKKwkJaWYgKCFzZWFyY2hOdWxsKQorCQkJ LyogTWFrZSBDb25zdCBmb3IgZ2V0IHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBub3QgZm91 bmQgdmFsdWUuICovCisJCQlub3RGb3VuZFZhbCA9IG1ha2VDb25zdChrZXktPnBhcnR0eXBp ZFswXSwKKwkJCQkJCQkJCWtleS0+cGFydHR5cG1vZFswXSwKKwkJCQkJCQkJCWtleS0+cGFy dHR5cGNvbGxbMF0sCisJCQkJCQkJCQlrZXktPnBhcnR0eXBsZW5bMF0sCisJCQkJCQkJCQlk YXR1bSwKKwkJCQkJCQkJCWZhbHNlLAkvKiBpc251bGwgKi8KKwkJCQkJCQkJCWtleS0+cGFy dHR5cGJ5dmFsWzBdKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygibmV3IHBhcnRp dGlvbnMgbm90IGhhdmUgdmFsdWUgJXMgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMiLAorCQkJ CQkJc2VhcmNoTnVsbCA/ICJOVUxMIiA6IGdldF9saXN0X3BhcnR2YWx1ZV9zdHJpbmcobm90 Rm91bmRWYWwpKSkpOworCX0KK30KKworLyoKKyAqIGNoZWNrX3BhcnRpdGlvbnNfZm9yX3Nw bGl0CisgKgorICogTmVlZCB0byBjaGVjayBuZXcgcGFydGl0aW9ucyBmb3IgU1BMSVQgUEFS VElUSU9OUyBjb21tYW5kOgorICogMS4gREVGQVVMVCBwYXJ0aXRpb24gc2hvdWxkIGJlIG9u ZS4KKyAqIDIuIE5ldyBwYXJ0aXRpb25zIHNob3VsZCBoYXZlIGRpZmZlcmVudCBuYW1lcwor ICogICAgKHdpdGggZXhpc3RpbmcgcGFydGl0aW9ucyB0b28pLgorICogMy4gQm91bmRzIG9m IG5ldyBwYXJ0aXRpb25zIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIG5ldyBhbmQgZXhpc3Rp bmcKKyAqICAgIHBhcnRpdGlvbnMuCisgKiA0LiBJbiBjYXNlIHNwbGl0IHBhcnRpdGlvbiBp cyBERUZBVUxUIHBhcnRpdGlvbiwgb25lIG9mIG5ldyBwYXJ0aXRpb25zCisgKiAgICBzaG91 bGQgYmUgREVGQVVMVC4KKyAqIDUuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMgb3IgZXhpc3Rp bmcgcGFydGl0aW9ucyBjb250YWlucyBERUZBVUxUCisgKiAgICBwYXJ0aXRpb24sIG5ldyBw YXJ0aXRpb25zIGNhbiBoYXZlIGFueSBib3VuZHMgaW5zaWRlIHNwbGl0CisgKiAgICBwYXJ0 aXRpb24gYm91bmQgKGNhbiBiZSBzcGFjZXMgYmV0d2VlbiBwYXJ0aXRpb25zIGJvdW5kcyku CisgKiA2LiBJbiBjYXNlIHBhcnRpdGlvbmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgREVGQVVM VCBwYXJ0aXRpb24sIERFRkFVTFQKKyAqICAgIHBhcnRpdGlvbiBjYW4gYmUgZGVmaW5lZCBh cyBvbmUgb2YgbmV3IHBhcnRpdGlvbi4KKyAqIDcuIEluIGNhc2UgbmV3IHBhcnRpdGlvbnMg bm90IGNvbnRhaW5zIERFRkFVTFQgcGFydGl0aW9uIGFuZAorICogICAgcGFydGl0aW9uZWQg dGFibGUgZG9lcyBub3QgaGF2ZSBERUZBVUxUIHBhcnRpdGlvbiB0aGUgZm9sbG93aW5nCisg KiAgICBzaG91bGQgYmUgdHJ1ZTogc3VtIGJvdW5kcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgYmUgZXF1YWwKKyAqICAgIHRvIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbi4KKyAqLwor dm9pZAorY2hlY2tfcGFydGl0aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJ CQkJICAgT2lkIHNwbGl0UGFydE9pZCwKKwkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJ CQkJICAgUGFyc2VTdGF0ZSAqcHN0YXRlKQoreworCVBhcnRpdGlvbktleSBrZXk7CisJY2hh cgkJc3RyYXRlZ3k7CisJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7CisJYm9vbAkJaXNTcGxpdFBh cnREZWZhdWx0OworCWJvb2wJCWV4aXN0c0RlZmF1bHRQYXJ0OworCUxpc3RDZWxsICAgKmxp c3RwdHI7CisJaW50CQkJZGVmYXVsdF9pbmRleCA9IC0xOworCWludAkJCWksCisJCQkJajsK KwlTaW5nbGVQYXJ0aXRpb25TcGVjICoqbmV3X3BhcnRzOworCVNpbmdsZVBhcnRpdGlvblNw ZWMgKnNwc1ByZXYgPSBOVUxMOworCWludAkJCW5wYXJ0cyA9IDA7CisKKwlrZXkgPSBSZWxh dGlvbkdldFBhcnRpdGlvbktleShwYXJlbnQpOworCXN0cmF0ZWd5ID0gZ2V0X3BhcnRpdGlv bl9zdHJhdGVneShrZXkpOworCisJc3dpdGNoIChzdHJhdGVneSkKKwl7CisJCWNhc2UgUEFS VElUSU9OX1NUUkFURUdZX0xJU1Q6CisJCWNhc2UgUEFSVElUSU9OX1NUUkFURUdZX1JBTkdF OgorCQkJeworCQkJCS8qCisJCQkJICogTWFrZSBhcnJheSBuZXdfcGFydHMgd2l0aCBuZXcg cGFydGl0aW9ucyBleGNlcHQgREVGQVVMVAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJCQkgKi8K KwkJCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3BlYyAqICopCisJCQkJCXBhbGxv YzAobGlzdF9sZW5ndGgocGFydGxpc3QpICogc2l6ZW9mKFNpbmdsZVBhcnRpdGlvblNwZWMg KikpOworCQkJCWkgPSAtMTsKKwkJCQlmb3JlYWNoKGxpc3RwdHIsIHBhcnRsaXN0KQorCQkJ CXsKKwkJCQkJU2luZ2xlUGFydGl0aW9uU3BlYyAqc3BzID0KKwkJCQkJKFNpbmdsZVBhcnRp dGlvblNwZWMgKikgbGZpcnN0KGxpc3RwdHIpOworCisJCQkJCWkrKzsKKwkJCQkJaWYgKHNw cy0+Ym91bmQtPmlzX2RlZmF1bHQpCisJCQkJCXsKKwkJCQkJCWlmIChkZWZhdWx0X2luZGV4 ID49IDApCisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkJCQkgZXJybXNnKCJERUZB VUxUIHBhcnRpdGlvbiBzaG91bGQgYmUgb25lIikpLAorCQkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKHBzdGF0ZSwgc3BzLT5uYW1lLT5sb2NhdGlvbikpOworCQkJCQkJZGVmYXVsdF9p bmRleCA9IGk7CisJCQkJCQljb250aW51ZTsKKwkJCQkJfQorCQkJCQluZXdfcGFydHNbbnBh cnRzKytdID0gc3BzOworCQkJCX0KKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgUEFSVElU SU9OX1NUUkFURUdZX0hBU0g6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInBhcnRpdGlv biBvZiBoYXNoLXBhcnRpdGlvbmVkIHRhYmxlIGNhbm5vdCBiZSBzcGxpdHRlZCIpKSk7CisJ CQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVuZXhwZWN0ZWQgcGFy dGl0aW9uIHN0cmF0ZWd5OiAlZCIsCisJCQkJIChpbnQpIGtleS0+c3RyYXRlZ3kpOworCQkJ YnJlYWs7CisJfQorCisJaWYgKHN0cmF0ZWd5ID09IFBBUlRJVElPTl9TVFJBVEVHWV9SQU5H RSkKKwl7CisJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCVNpbmds ZVBhcnRpdGlvblNwZWMgKip0bXBfbmV3X3BhcnRzOworCisJCS8qCisJCSAqIEZvciBzaW1w bGlmeSBjaGVjayBmb3IgcmFuZ2VzIG9mIG5ldyBwYXJ0aXRpb25zIG5lZWQgdG8gc29ydCBh bGwKKwkJICogcGFydGl0aW9ucyBpbiBhc2NlbmRpbmcgb3JkZXIgb2YgdGhlbSBib3VuZHMg KHdlIGNvbXBhcmUgdXBwZXIKKwkJICogYm91bmQgb25seSkuCisJCSAqLworCQlsb3dlcl9i b3VuZHMgPSAoUGFydGl0aW9uUmFuZ2VCb3VuZCAqKikKKwkJCXBhbGxvYzAobnBhcnRzICog c2l6ZW9mKFBhcnRpdGlvblJhbmdlQm91bmQgKikpOworCisJCS8qIENyZWF0ZSBhcnJheSBv ZiBsb3dlciBib3VuZHMuICovCisJCWZvciAoaSA9IDA7IGkgPCBucGFydHM7IGkrKykKKwkJ eworCQkJbG93ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXks IGksCisJCQkJCQkJCQkJCQkJCW5ld19wYXJ0c1tpXS0+Ym91bmQtPmxvd2VyZGF0dW1zLCB0 cnVlKTsKKwkJfQorCisJCS8qIFNvcnQgYXJyYXkgb2YgbG93ZXIgYm91bmRzLiAqLworCQlx c29ydF9hcmcobG93ZXJfYm91bmRzLCBucGFydHMsIHNpemVvZihQYXJ0aXRpb25SYW5nZUJv dW5kICopLAorCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2b2lkICopIGtl eSk7CisKKwkJLyogUmVvcmRlciBhcnJheSBvZiBwYXJ0aXRpb25zLiAqLworCQl0bXBfbmV3 X3BhcnRzID0gbmV3X3BhcnRzOworCQluZXdfcGFydHMgPSAoU2luZ2xlUGFydGl0aW9uU3Bl YyAqICopCisJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihTaW5nbGVQYXJ0aXRpb25TcGVj ICopKTsKKwkJZm9yIChpID0gMDsgaSA8IG5wYXJ0czsgaSsrKQorCQkJbmV3X3BhcnRzW2ld ID0gdG1wX25ld19wYXJ0c1tsb3dlcl9ib3VuZHNbaV0tPmluZGV4XTsKKworCQlwZnJlZSh0 bXBfbmV3X3BhcnRzKTsKKwkJcGZyZWUobG93ZXJfYm91bmRzKTsKKwl9CisKKwlkZWZhdWx0 UGFydE9pZCA9CisJCWdldF9kZWZhdWx0X29pZF9mcm9tX3BhcnRkZXNjKFJlbGF0aW9uR2V0 UGFydGl0aW9uRGVzYyhwYXJlbnQsIHRydWUpKTsKKworCS8qIGlzU3BsaXRQYXJ0RGVmYXVs dCBmbGFnOiBpcyBzcGxpdCBwYXJ0aXRpb24gYSBERUZBVUxUIHBhcnRpdGlvbj8gKi8KKwlp c1NwbGl0UGFydERlZmF1bHQgPSAoZGVmYXVsdFBhcnRPaWQgPT0gc3BsaXRQYXJ0T2lkKTsK KworCWlmIChpc1NwbGl0UGFydERlZmF1bHQgJiYgZGVmYXVsdF9pbmRleCA8IDApCisJewor CQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1Rf REVGSU5JVElPTiksCisJCQkJIGVycm1zZygiYW55IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBz aG91bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUIikp LAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsICgoU2luZ2xlUGFydGl0aW9uU3Bl YyAqKSBsaW5pdGlhbChwYXJ0bGlzdCkpLT5uYW1lLT5sb2NhdGlvbikpOworCX0KKwllbHNl IGlmICghaXNTcGxpdFBhcnREZWZhdWx0ICYmIChkZWZhdWx0X2luZGV4ID49IDApICYmIE9p ZElzVmFsaWQoZGVmYXVsdFBhcnRPaWQpKQorCXsKKwkJU2luZ2xlUGFydGl0aW9uU3BlYyAq c3BzRGVmID0KKwkJKFNpbmdsZVBhcnRpdGlvblNwZWMgKikgbGlzdF9udGgocGFydGxpc3Qs IGRlZmF1bHRfaW5kZXgpOworCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJuZXcgcGFy dGl0aW9uIGNhbm5vdCBiZSBERUZBVUxUIGJlY2F1c2UgREVGQVVMVCBwYXJ0aXRpb24gYWxy ZWFkeSBleGlzdHMiKSksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgc3BzRGVm LT5uYW1lLT5sb2NhdGlvbikpOworCX0KKworCS8qIEluZGljYXRvciB0aGF0IHBhcnRpdGlv bmVkIHRhYmxlIGhhcyAob3Igd2lsbCBoYXZlKSBERUZBVUxUIHBhcnRpdGlvbiAqLworCWV4 aXN0c0RlZmF1bHRQYXJ0ID0gT2lkSXNWYWxpZChkZWZhdWx0UGFydE9pZCkgfHwgKGRlZmF1 bHRfaW5kZXggPj0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJewor CQlTaW5nbGVQYXJ0aXRpb25TcGVjICpzcHMgPSBuZXdfcGFydHNbaV07CisKKwkJaWYgKGlz U3BsaXRQYXJ0RGVmYXVsdCkKKwkJeworCQkJLyoKKwkJCSAqIEluIGNhc2Ugc3BsaXQgcGFy dGl0aW9uIGlzIERFRkFVTFQgcGFydGl0aW9uIHdlIGNhbiB1c2UgYW55CisJCQkgKiBmcmVl IHJhbmdlcyAtIGFzIHdoZW4gY3JlYXRpbmcgYSBuZXcgcGFydGl0aW9uLgorCQkJICovCisJ CQljaGVja19uZXdfcGFydGl0aW9uX2JvdW5kKHNwcy0+bmFtZS0+cmVsbmFtZSwgcGFyZW50 LCBzcHMtPmJvdW5kLAorCQkJCQkJCQkJICBwc3RhdGUpOworCQl9CisJCWVsc2UKKwkJewor CQkJLyoKKwkJCSAqIENoZWNrcyB0aGF0IGJvdW5kIG9mIGN1cnJlbnQgcGFydGl0aW9uIGlz IGluc2lkZSBib3VuZCBvZiBzcGxpdAorCQkJICogcGFydGl0aW9uLiBGb3IgcmFuZ2UgcGFy dGl0aW9uaW5nOiBjaGVja3MgdGhhdCB1cHBlciBib3VuZCBvZgorCQkJICogcHJldmlvdXMg cGFydGl0aW9uIGlzIGVxdWFsIHRvIGxvd2VyIGJvdW5kIG9mIGN1cnJlbnQKKwkJCSAqIHBh cnRpdGlvbi4gRm9yIGxpc3QgcGFydGl0aW9uaW5nOiBjaGVja3MgdGhhdCBzcGxpdCBwYXJ0 aXRpb24KKwkJCSAqIGNvbnRhaW5zIGFsbCB2YWx1ZXMgb2YgY3VycmVudCBwYXJ0aXRpb24u CisJCQkgKi8KKwkJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lfUkFOR0Up CisJCQl7CisJCQkJYm9vbAkJZmlyc3QgPSAoaSA9PSAwKTsKKwkJCQlib29sCQlsYXN0ID0g KGkgPT0gKG5wYXJ0cyAtIDEpKTsKKworCQkJCWNoZWNrX3BhcnRpdGlvbl9ib3VuZHNfZm9y X3NwbGl0X3JhbmdlKHNwcy0+bmFtZS0+cmVsbmFtZSwKKwkJCQkJCQkJCQkJCQkgICBwYXJl bnQsIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwgZmlyc3QsIGxhc3QsCisJCQkJCQkJCQkJ CQkJICAgZXhpc3RzRGVmYXVsdFBhcnQsIHBzdGF0ZSk7CisJCQl9CisJCQllbHNlCisJCQkJ Y2hlY2tfcGFydGl0aW9uX2JvdW5kc19mb3Jfc3BsaXRfbGlzdChzcHMtPm5hbWUtPnJlbG5h bWUsCisJCQkJCQkJCQkJCQkJICBwYXJlbnQsIHNwcy0+Ym91bmQsIHNwbGl0UGFydE9pZCwg cHN0YXRlKTsKKwkJfQorCisJCS8qIFJhbmdlcyBvZiBuZXcgcGFydGl0aW9ucyBzaG91bGQg bm90IG92ZXJsYXAuICovCisJCWlmIChzdHJhdGVneSA9PSBQQVJUSVRJT05fU1RSQVRFR1lf UkFOR0UgJiYgc3BzUHJldikKKwkJCWNoZWNrX3BhcnRpdGlvbnNfbm90X292ZXJsYXBfcmFu Z2UocGFyZW50LCBzcHMtPm5hbWUsIHNwcy0+Ym91bmQsCisJCQkJCQkJCQkJCSAgIHNwc1By ZXYtPm5hbWUsIHNwc1ByZXYtPmJvdW5kLCBleGlzdHNEZWZhdWx0UGFydCwgcHN0YXRlKTsK KworCQlzcHNQcmV2ID0gc3BzOworCisJCS8qIENoZWNrOiBuZXcgcGFydGl0aW9ucyBzaG91 bGQgaGF2ZSBkaWZmZXJlbnQgbmFtZXMuICovCisJCWZvciAoaiA9IGkgKyAxOyBqIDwgbnBh cnRzOyBqKyspCisJCXsKKwkJCVNpbmdsZVBhcnRpdGlvblNwZWMgKnNwczIgPSBuZXdfcGFy dHNbal07CisKKwkJCWlmICghc3RyY21wKHNwcy0+bmFtZS0+cmVsbmFtZSwgc3BzMi0+bmFt ZS0+cmVsbmFtZSkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX1RBQkxFKSwKKwkJCQkJCSBlcnJtc2coIm5hbWUgXCIlc1wiIGFscmVh ZHkgdXNlZCIsIHNwczItPm5hbWUtPnJlbG5hbWUpKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIHNwczItPm5hbWUtPmxvY2F0aW9uKSk7CisJCX0KKwl9CisKKwlpZiAo c3RyYXRlZ3kgPT0gUEFSVElUSU9OX1NUUkFURUdZX0xJU1QpCisJeworCQkvKiBWYWx1ZXMg b2YgbmV3IHBhcnRpdGlvbnMgc2hvdWxkIG5vdCBvdmVybGFwLiAqLworCQljaGVja19wYXJ0 aXRpb25zX25vdF9vdmVybGFwX2xpc3QocGFyZW50LCBuZXdfcGFydHMsIG5wYXJ0cywKKwkJ CQkJCQkJCQkgIHBzdGF0ZSk7CisKKwkJLyoKKwkJICogTmVlZCB0byBjaGVjayB0aGF0IGFs bCB2YWx1ZXMgb2Ygc3BsaXQgcGFydGl0aW9uIGNvbnRhaW5zIGluIG5ldworCQkgKiBwYXJ0 aXRpb25zLiBTa2lwIHRoaXMgY2hlY2sgaWYgREVGQVVMVCBwYXJ0aXRpb24gZXhpc3RzLgor CQkgKi8KKwkJaWYgKCFleGlzdHNEZWZhdWx0UGFydCkKKwkJCWNoZWNrX3BhcmVudF92YWx1 ZXNfaW5fbmV3X3BhcnRpdGlvbnMocGFyZW50LCBzcGxpdFBhcnRPaWQsCisJCQkJCQkJCQkJ CQkgIG5ld19wYXJ0cywgbnBhcnRzLCBwc3RhdGUpOworCX0KKworCXBmcmVlKG5ld19wYXJ0 cyk7Cit9CisKKy8qCisgKiBnZXRfcGFydGl0aW9uX2JvdW5kX3NwZWMKKyAqCisgKiBSZXR1 cm5zIGRlc2NyaXB0aW9uIG9mIHBhcnRpdGlvbiB3aXRoIE9pZCAicGFydE9pZCIgYW5kIG5h bWUgIm5hbWUiLgorICovCitzdGF0aWMgUGFydGl0aW9uQm91bmRTcGVjICoKK2dldF9wYXJ0 aXRpb25fYm91bmRfc3BlYyhPaWQgcGFydE9pZCwgUmFuZ2VWYXIgKm5hbWUpCit7CisJSGVh cFR1cGxlCXR1cGxlOworCURhdHVtCQlkYXR1bTsKKwlib29sCQlpc251bGw7CisJUGFydGl0 aW9uQm91bmRTcGVjICpib3VuZHNwZWMgPSBOVUxMOworCisJLyogVHJ5IGZldGNoaW5nIHRo ZSB0dXBsZSBmcm9tIHRoZSBjYXRjYWNoZSwgZm9yIHNwZWVkLiAqLworCXR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUxKFJFTE9JRCwgcGFydE9pZCk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cGxlKSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHJlbGF0 aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlkYXR1bSA9IFN5c0NhY2hl R2V0QXR0cihSRUxPSUQsIHR1cGxlLAorCQkJCQkJCUFudW1fcGdfY2xhc3NfcmVscGFydGJv dW5kLAorCQkJCQkJCSZpc251bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJw YXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uIFwiJXNcIiBpcyBudWxsIiwKKwkJCSBuYW1l LT5yZWxuYW1lKTsKKworCWJvdW5kc3BlYyA9IHN0cmluZ1RvTm9kZShUZXh0RGF0dW1HZXRD U3RyaW5nKGRhdHVtKSk7CisKKwlpZiAoIUlzQShib3VuZHNwZWMsIFBhcnRpdGlvbkJvdW5k U3BlYykpCisJCWVsb2coRVJST1IsICJleHBlY3RlZCBQYXJ0aXRpb25Cb3VuZFNwZWMgZm9y IHJlbGF0aW9uIFwiJXNcIiIsCisJCQkgbmFtZS0+cmVsbmFtZSk7CisKKwlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOworCXJldHVybiBib3VuZHNwZWM7Cit9CisKKy8qCisgKiBjYWxjdWxh dGVfcGFydGl0aW9uX2JvdW5kX2Zvcl9tZXJnZQorICoKKyAqIENhbGN1bGF0ZXMgYm91bmQg b2YgbWVyZ2VkIHBhcnRpdGlvbiAic3BlYyIgYnkgdXNpbmcgYm91bmRzIG9mIHBhcnRpdGlv bnMKKyAqIHdpdGggT2lkcyAicGFydE9pZHMiIGFuZCBuYW1lcyAicGFydE5hbWVzIi4KKyAq Lwordm9pZAorY2FsY3VsYXRlX3BhcnRpdGlvbl9ib3VuZF9mb3JfbWVyZ2UoUmVsYXRpb24g cGFyZW50LAorCQkJCQkJCQkJTGlzdCAqcGFydE5hbWVzLAorCQkJCQkJCQkJTGlzdCAqcGFy dE9pZHMsCisJCQkJCQkJCQlQYXJ0aXRpb25Cb3VuZFNwZWMgKnNwZWMsCisJCQkJCQkJCQlQ YXJzZVN0YXRlICpwc3RhdGUpCit7CisJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0 UGFydGl0aW9uS2V5KHBhcmVudCk7CisJUGFydGl0aW9uQm91bmRTcGVjICpib3VuZDsKKwor CUFzc2VydCghc3BlYy0+aXNfZGVmYXVsdCk7CisKKwlzd2l0Y2ggKGtleS0+c3RyYXRlZ3kp CisJeworCQljYXNlIFBBUlRJVElPTl9TVFJBVEVHWV9SQU5HRToKKwkJCXsKKwkJCQlpbnQJ CQlpOworCQkJCVBhcnRpdGlvblJhbmdlQm91bmQgKipsb3dlcl9ib3VuZHM7CisJCQkJaW50 CQkJbnBhcnRzID0gbGlzdF9sZW5ndGgocGFydE9pZHMpOworCQkJCUxpc3QJICAgKmJvdW5k cyA9IE5JTDsKKworCQkJCWxvd2VyX2JvdW5kcyA9IChQYXJ0aXRpb25SYW5nZUJvdW5kICoq KQorCQkJCQlwYWxsb2MwKG5wYXJ0cyAqIHNpemVvZihQYXJ0aXRpb25SYW5nZUJvdW5kICop KTsKKworCQkJCS8qCisJCQkJICogQ3JlYXRlIGFycmF5IG9mIGxvd2VyIGJvdW5kcyBhbmQg bGlzdCBvZgorCQkJCSAqIFBhcnRpdGlvbkJvdW5kU3BlYy4KKwkJCQkgKi8KKwkJCQlmb3Ig KGkgPSAwOyBpIDwgbnBhcnRzOyBpKyspCisJCQkJeworCQkJCQlib3VuZCA9IGdldF9wYXJ0 aXRpb25fYm91bmRfc3BlYyhsaXN0X250aF9vaWQocGFydE9pZHMsIGkpLAorCQkJCQkJCQkJ CQkJCSAoUmFuZ2VWYXIgKikgbGlzdF9udGgocGFydE5hbWVzLCBpKSk7CisKKwkJCQkJbG93 ZXJfYm91bmRzW2ldID0gbWFrZV9vbmVfcGFydGl0aW9uX3Jib3VuZChrZXksIGksIGJvdW5k LT5sb3dlcmRhdHVtcywgdHJ1ZSk7CisJCQkJCWJvdW5kcyA9IGxhcHBlbmQoYm91bmRzLCBi b3VuZCk7CisJCQkJfQorCisJCQkJLyogU29ydCBhcnJheSBvZiBsb3dlciBib3VuZHMuICov CisJCQkJcXNvcnRfYXJnKGxvd2VyX2JvdW5kcywgbnBhcnRzLCBzaXplb2YoUGFydGl0aW9u UmFuZ2VCb3VuZCAqKSwKKwkJCQkJCSAgcXNvcnRfcGFydGl0aW9uX3Jib3VuZF9jbXAsICh2 b2lkICopIGtleSk7CisKKwkJCQkvKiBSYW5nZXMgb2YgcGFydGl0aW9ucyBzaG91bGQgbm90 IG92ZXJsYXAuICovCisJCQkJZm9yIChpID0gMTsgaSA8IG5wYXJ0czsgaSsrKQorCQkJCXsK KwkJCQkJaW50CQkJaW5kZXggPSBsb3dlcl9ib3VuZHNbaV0tPmluZGV4OworCQkJCQlpbnQJ CQlwcmV2X2luZGV4ID0gbG93ZXJfYm91bmRzW2kgLSAxXS0+aW5kZXg7CisKKwkJCQkJY2hl Y2tfcGFydGl0aW9uc19ub3Rfb3ZlcmxhcF9yYW5nZShwYXJlbnQsCisJCQkJCQkJCQkJCQkJ ICAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgaW5kZXgpLAorCQkJCQkJCQkJ CQkJCSAgIChQYXJ0aXRpb25Cb3VuZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBpbmRleCks CisJCQkJCQkJCQkJCQkJICAgKFJhbmdlVmFyICopIGxpc3RfbnRoKHBhcnROYW1lcywgcHJl dl9pbmRleCksCisJCQkJCQkJCQkJCQkJICAgKFBhcnRpdGlvbkJvdW5kU3BlYyAqKSBsaXN0 X250aChib3VuZHMsIHByZXZfaW5kZXgpLAorCQkJCQkJCQkJCQkJCSAgIGZhbHNlLCBwc3Rh dGUpOworCQkJCX0KKworCQkJCS8qCisJCQkJICogTG93ZXIgYm91bmQgb2YgZmlyc3QgcGFy dGl0aW9uIGlzIGEgbG93ZXIgYm91bmQgb2YgbWVyZ2VkCisJCQkJICogcGFydGl0aW9uLgor CQkJCSAqLworCQkJCXNwZWMtPmxvd2VyZGF0dW1zID0KKwkJCQkJKChQYXJ0aXRpb25Cb3Vu ZFNwZWMgKikgbGlzdF9udGgoYm91bmRzLCBsb3dlcl9ib3VuZHNbMF0tPmluZGV4KSktPmxv d2VyZGF0dW1zOworCisJCQkJLyoKKwkJCQkgKiBVcHBlciBib3VuZCBvZiBsYXN0IHBhcnRp dGlvbiBpcyBhIHVwcGVyIGJvdW5kIG9mIG1lcmdlZAorCQkJCSAqIHBhcnRpdGlvbi4KKwkJ CQkgKi8KKwkJCQlzcGVjLT51cHBlcmRhdHVtcyA9CisJCQkJCSgoUGFydGl0aW9uQm91bmRT cGVjICopIGxpc3RfbnRoKGJvdW5kcywgbG93ZXJfYm91bmRzW25wYXJ0cyAtIDFdLT5pbmRl eCkpLT51cHBlcmRhdHVtczsKKworCQkJCXBmcmVlKGxvd2VyX2JvdW5kcyk7CisJCQkJbGlz dF9mcmVlKGJvdW5kcyk7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJY2FzZSBQQVJUSVRJT05f U1RSQVRFR1lfTElTVDoKKwkJCXsKKwkJCQlMaXN0Q2VsbCAgICpsaXN0cHRyLAorCQkJCQkJ ICAgKmxpc3RwdHIyOworCisJCQkJLyogQ29uc29saWRhdGUgYm91bmRzIGZvciBhbGwgcGFy dGl0aW9ucyBpbiB0aGUgbGlzdC4gKi8KKwkJCQlmb3Jib3RoKGxpc3RwdHIsIHBhcnRPaWRz LCBsaXN0cHRyMiwgcGFydE5hbWVzKQorCQkJCXsKKwkJCQkJUmFuZ2VWYXIgICAqbmFtZSA9 IChSYW5nZVZhciAqKSBsZmlyc3QobGlzdHB0cjIpOworCQkJCQlPaWQJCQljdXJPaWQgPSBs Zmlyc3Rfb2lkKGxpc3RwdHIpOworCisJCQkJCWJvdW5kID0gZ2V0X3BhcnRpdGlvbl9ib3Vu ZF9zcGVjKGN1ck9pZCwgbmFtZSk7CisJCQkJCXNwZWMtPmxpc3RkYXR1bXMgPSBsaXN0X2Nv bmNhdChzcGVjLT5saXN0ZGF0dW1zLCBib3VuZC0+bGlzdGRhdHVtcyk7CisJCQkJfQorCQkJ CWJyZWFrOworCQkJfQorCisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCBwYXJ0aXRpb24gc3RyYXRlZ3k6ICVkIiwKKwkJCQkgKGludCkga2V5LT5zdHJhdGVneSk7 CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGMzOTM3YTYwZmQz Li4xNjIyYzRmN2MzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMTI4 NjksMyArMTI4NjksMjEgQEAgZ2V0X3JhbmdlX3BhcnRib3VuZF9zdHJpbmcoTGlzdCAqYm91 bmRfZGF0dW1zKQogCiAJcmV0dXJuIGJ1Zi0+ZGF0YTsKIH0KKworLyoKKyAqIGdldF9saXN0 X3BhcnR2YWx1ZV9zdHJpbmcKKyAqCQlBIEMgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG9u ZSBsaXN0IHBhcnRpdGlvbiB2YWx1ZQorICovCitjaGFyICoKK2dldF9saXN0X3BhcnR2YWx1 ZV9zdHJpbmcoQ29uc3QgKnZhbCkKK3sKKwlkZXBhcnNlX2NvbnRleHQgY29udGV4dDsKKwlT dHJpbmdJbmZvCWJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisKKwltZW1zZXQoJmNvbnRleHQs IDAsIHNpemVvZihkZXBhcnNlX2NvbnRleHQpKTsKKwljb250ZXh0LmJ1ZiA9IGJ1ZjsKKwor CWdldF9jb25zdF9leHByKHZhbCwgJmNvbnRleHQsIC0xKTsKKworCXJldHVybiBidWYtPmRh dGE7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCBiM2I0MDc1NzliMC4uN2VmMjc1NTY5YzEgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaApAQCAtNTA0LDYgKzUwNCw3IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFn CiAJVF9QYXJ0aXRpb25TcGVjLAogCVRfUGFydGl0aW9uQm91bmRTcGVjLAogCVRfUGFydGl0 aW9uUmFuZ2VEYXR1bSwKKwlUX1NpbmdsZVBhcnRpdGlvblNwZWMsCiAJVF9QYXJ0aXRpb25D bWQsCiAJVF9WYWN1dW1SZWxhdGlvbiwKIAlUX1B1YmxpY2F0aW9uT2JqU3BlYywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCA3M2Y2MzViNDU1My4uMjc1NTZjN2MwNTkgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTg4Niw2ICs4ODYsMTggQEAgdHlwZWRlZiBzdHJ1 Y3QgUGFydGl0aW9uUmFuZ2VEYXR1bQogCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9j YXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KIH0gUGFydGl0aW9uUmFuZ2VEYXR1bTsKIAor LyoKKyAqIFBhcnRpdGlvbkRlc2MgLSBpbmZvIGFib3V0IHNpbmdsZSBwYXJ0aXRpb24gZm9y IEFMVEVSIFRBQkxFIFNQTElUIFBBUlRJVElPTiBjb21tYW5kCisgKiBGSVhNRTogbmVlZCB0 byBwbGFjZSB0aGlzIHN0cnVjdCBpbnRvIFBhcnRpdGlvbkNtZCBpbnN0ZWFkIG9mIHBhaXIg KG5hbWUsIGJvdW5kKQorICovCit0eXBlZGVmIHN0cnVjdCBTaW5nbGVQYXJ0aXRpb25TcGVj Cit7CisJTm9kZVRhZwkJdHlwZTsKKworCVJhbmdlVmFyICAgKm5hbWU7CQkJLyogbmFtZSBv ZiBwYXJ0aXRpb24gKi8KKwlQYXJ0aXRpb25Cb3VuZFNwZWMgKmJvdW5kOwkvKiBGT1IgVkFM VUVTLCBpZiBhdHRhY2hpbmcgKi8KK30gU2luZ2xlUGFydGl0aW9uU3BlYzsKKwogLyoKICAq IFBhcnRpdGlvbkNtZCAtIGluZm8gZm9yIEFMVEVSIFRBQkxFL0lOREVYIEFUVEFDSC9ERVRB Q0ggUEFSVElUSU9OIGNvbW1hbmRzCiAgKi8KQEAgLTg5NCw2ICs5MDYsNyBAQCB0eXBlZGVm IHN0cnVjdCBQYXJ0aXRpb25DbWQKIAlOb2RlVGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKm5h bWU7CQkJLyogbmFtZSBvZiBwYXJ0aXRpb24gdG8gYXR0YWNoL2RldGFjaCAqLwogCVBhcnRp dGlvbkJvdW5kU3BlYyAqYm91bmQ7CS8qIEZPUiBWQUxVRVMsIGlmIGF0dGFjaGluZyAqLwor CUxpc3QJICAgKnBhcnRsaXN0OwkJLyogbGlzdCBvZiBwYXJ0aXRpb25zLCBmb3IgU1BMSVQg UEFSVElUSU9OIGNvbW1hbmQgKi8KIAlib29sCQljb25jdXJyZW50OwogfSBQYXJ0aXRpb25D bWQ7CiAKQEAgLTIyOTEsNiArMjMwNCw4IEBAIHR5cGVkZWYgZW51bSBBbHRlclRhYmxlVHlw ZQogCUFUX0F0dGFjaFBhcnRpdGlvbiwJCQkvKiBBVFRBQ0ggUEFSVElUSU9OICovCiAJQVRf RGV0YWNoUGFydGl0aW9uLAkJCS8qIERFVEFDSCBQQVJUSVRJT04gKi8KIAlBVF9EZXRhY2hQ YXJ0aXRpb25GaW5hbGl6ZSwgLyogREVUQUNIIFBBUlRJVElPTiBGSU5BTElaRSAqLworCUFU X1NwbGl0UGFydGl0aW9uLAkJCS8qIFNQTElUIFBBUlRJVElPTiAqLworCUFUX01lcmdlUGFy dGl0aW9ucywJCQkvKiBNRVJHRSBQQVJUSVRJT05TICovCiAJQVRfQWRkSWRlbnRpdHksCQkJ CS8qIEFERCBJREVOVElUWSAqLwogCUFUX1NldElkZW50aXR5LAkJCQkvKiBTRVQgaWRlbnRp dHkgY29sdW1uIG9wdGlvbnMgKi8KIAlBVF9Ecm9wSWRlbnRpdHksCQkJLyogRFJPUCBJREVO VElUWSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDhhMmFiNDA1YTI4Li5iNTg1MzBkMDEx NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzMzLDYgKzMzMyw3IEBAIFBHX0tFWVdPUkQo InBhcmFtZXRlciIsIFBBUkFNRVRFUiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVM KQogUEdfS0VZV09SRCgicGFyc2VyIiwgUEFSU0VSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9L RVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9O LCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwYXJ0aXRp b25zIiwgUEFSVElUSU9OUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFzc2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhdGgiLCBQQVRILCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00MTUsNiArNDE2LDcgQEAgUEdfS0VZV09SRCgi c2tpcCIsIFNLSVAsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInNtYWxsaW50IiwgU01BTExJTlQsIENPTF9OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJzbmFwc2hvdCIsIFNOQVBTSE9ULCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzb21lIiwgU09NRSwgUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInNwbGl0IiwgU1BMSVQsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInNxbCIsIFNRTF9QLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJzdGFibGUiLCBTVEFCTEUs IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInN0YW5kYWxv bmUiLCBTVEFOREFMT05FX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0Ym91bmRzLmggYi9zcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCmluZGV4IGIxZTNmMWI4NDAwLi4z NjMwYzBlYWVmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRi b3VuZHMuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oCkBA IC0xNDMsNCArMTQzLDE0IEBAIGV4dGVybiBpbnQJcGFydGl0aW9uX3JhbmdlX2RhdHVtX2Jz ZWFyY2goRm1nckluZm8gKnBhcnRzdXBmdW5jLAogZXh0ZXJuIGludAlwYXJ0aXRpb25faGFz aF9ic2VhcmNoKFBhcnRpdGlvbkJvdW5kSW5mbyBib3VuZGluZm8sCiAJCQkJCQkJCSAgIGlu dCBtb2R1bHVzLCBpbnQgcmVtYWluZGVyKTsKIAorZXh0ZXJuIHZvaWQgY2hlY2tfcGFydGl0 aW9uc19mb3Jfc3BsaXQoUmVsYXRpb24gcGFyZW50LAorCQkJCQkJCQkJICAgT2lkIHNwbGl0 UGFydE9pZCwKKwkJCQkJCQkJCSAgIExpc3QgKnBhcnRsaXN0LAorCQkJCQkJCQkJICAgUGFy c2VTdGF0ZSAqcHN0YXRlKTsKK2V4dGVybiB2b2lkIGNhbGN1bGF0ZV9wYXJ0aXRpb25fYm91 bmRfZm9yX21lcmdlKFJlbGF0aW9uIHBhcmVudCwKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRO YW1lcywKKwkJCQkJCQkJCQkJCUxpc3QgKnBhcnRPaWRzLAorCQkJCQkJCQkJCQkJUGFydGl0 aW9uQm91bmRTcGVjICpzcGVjLAorCQkJCQkJCQkJCQkJUGFyc2VTdGF0ZSAqcHN0YXRlKTsK KwogI2VuZGlmCQkJCQkJCS8qIFBBUlRCT1VORFNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcnVsZXV0aWxzLmggYi9zcmMvaW5jbHVkZS91dGlscy9ydWxldXRpbHMu aAppbmRleCA3ZDQ4OTcxOGEzNS4uZWQxM2E0M2Y1M2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3V0aWxzL3J1bGV1dGlscy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3J1bGV1dGls cy5oCkBAIC00NCw0ICs0NCw2IEBAIGV4dGVybiBjaGFyICpnZXRfcmFuZ2VfcGFydGJvdW5k X3N0cmluZyhMaXN0ICpib3VuZF9kYXR1bXMpOwogCiBleHRlcm4gY2hhciAqcGdfZ2V0X3N0 YXRpc3RpY3NvYmpkZWZfc3RyaW5nKE9pZCBzdGF0ZXh0aWQpOwogCitleHRlcm4gY2hhciAq Z2V0X2xpc3RfcGFydHZhbHVlX3N0cmluZyhDb25zdCAqdmFsKTsKKwogI2VuZGlmCQkJCQkJ CS8qIFJVTEVVVElMU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vZXhw ZWN0ZWQvcGFydGl0aW9uLXNwbGl0LW1lcmdlLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi4zNGRmMTM0NWIyYgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uub3V0CkBA IC0wLDAgKzEsMzYgQEAKK1BhcnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0 YXJ0aW5nIHBlcm11dGF0aW9uOiBzMWIgczFzcGx0IHMyYiBzMmkgczFjIHMyYyBzMnMKK3N0 ZXAgczFiOiBCRUdJTjsKK3N0ZXAgczFzcGx0OiBBTFRFUiBUQUJMRSB0cGFydCBTUExJVCBQ QVJUSVRJT04gdHBhcnRfMTBfMjAgSU5UTworCQkJICAgKFBBUlRJVElPTiB0cGFydF8xMF8x NSBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMTUpLAorCQkJICAgIFBBUlRJVElPTiB0cGFy dF8xNV8yMCBGT1IgVkFMVUVTIEZST00gKDE1KSBUTyAoMjApKTsKK3N0ZXAgczJiOiBCRUdJ TjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMgKDEsICd0ZXh0MScpOyA8 d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMmk6IDwuLi4gY29tcGxl dGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9NIHRwYXJ0 OworaXx0ICAgIAorLSstLS0tLQorMXx0ZXh0MQorKDEgcm93KQorCisKK3N0YXJ0aW5nIHBl cm11dGF0aW9uOiBzMmIgczJpIHMyYyBzMWIgczFtZXJnIHMyYiBzMnUgczFjIHMyYyBzMnMK K3N0ZXAgczJiOiBCRUdJTjsKK3N0ZXAgczJpOiBJTlNFUlQgSU5UTyB0cGFydCBWQUxVRVMg KDEsICd0ZXh0MScpOworc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczFiOiBCRUdJTjsKK3N0 ZXAgczFtZXJnOiBBTFRFUiBUQUJMRSB0cGFydCBNRVJHRSBQQVJUSVRJT05TICh0cGFydF8w MF8xMCwgdHBhcnRfMTBfMjApIElOVE8gdHBhcnRfMDBfMjA7CitzdGVwIHMyYjogQkVHSU47 CitzdGVwIHMydTogVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQxbW9kaWYnIHdoZXJlIGkg PSAxOyA8d2FpdGluZyAuLi4+CitzdGVwIHMxYzogQ09NTUlUOworc3RlcCBzMnU6IDwuLi4g Y29tcGxldGVkPgorc3RlcCBzMmM6IENPTU1JVDsKK3N0ZXAgczJzOiBTRUxFQ1QgKiBGUk9N IHRwYXJ0OworaXx0ICAgICAgICAgCistKy0tLS0tLS0tLS0KKzF8dGV4dDFtb2RpZgorKDEg cm93KQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVk dWxlIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCA1Mjlh NGNiZDRkYS4uMjJlODFiMDFhNGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9p c29sYXRpb25fc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9z Y2hlZHVsZQpAQCAtMTAxLDYgKzEwMSw3IEBAIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRl LTEKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTIKIHRlc3Q6IHBhcnRpdGlvbi1rZXkt dXBkYXRlLTMKIHRlc3Q6IHBhcnRpdGlvbi1rZXktdXBkYXRlLTQKK3Rlc3Q6IHBhcnRpdGlv bi1zcGxpdC1tZXJnZQogdGVzdDogcGxwZ3NxbC10b2FzdAogdGVzdDogY2x1c3Rlci1jb25m bGljdAogdGVzdDogY2x1c3Rlci1jb25mbGljdC1wYXJ0aXRpb24KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uuc3BlYyBiL3Ny Yy90ZXN0L2lzb2xhdGlvbi9zcGVjcy9wYXJ0aXRpb24tc3BsaXQtbWVyZ2Uuc3BlYwpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTEwYzdjNjA3YTYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vc3BlY3MvcGFydGl0aW9uLXNwbGl0 LW1lcmdlLnNwZWMKQEAgLTAsMCArMSw0MyBAQAorIyBWZXJpZnkgdGhhdCBTUExJVCBhbmQg TUVSR0Ugb3BlcmF0aW9ucyBsb2NrcyBETUwgb3BlcmF0aW9ucworIyB3aXRoIHBhcnRpdGlv bmVkIHRhYmxlCisKK3NldHVwCit7CisgIERST1AgVEFCTEUgSUYgRVhJU1RTIHRwYXJ0Owor ICBDUkVBVEUgVEFCTEUgdHBhcnQoaSBpbnQsIHQgdGV4dCkgcGFydGl0aW9uIGJ5IHJhbmdl KGkpOworICBDUkVBVEUgVEFCTEUgdHBhcnRfMDBfMTAgUEFSVElUSU9OIE9GIHRwYXJ0IEZP UiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKTsKKyAgQ1JFQVRFIFRBQkxFIHRwYXJ0XzEwXzIw IFBBUlRJVElPTiBPRiB0cGFydCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApOworICBD UkVBVEUgVEFCTEUgdHBhcnRfMjBfMzAgUEFSVElUSU9OIE9GIHRwYXJ0IEZPUiBWQUxVRVMg RlJPTSAoMjApIFRPICgzMCk7CisgIENSRUFURSBUQUJMRSB0cGFydF9kZWZhdWx0IFBBUlRJ VElPTiBPRiB0cGFydCBERUZBVUxUOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFRBQkxF IHRwYXJ0OworfQorCitzZXNzaW9uIHMxCitzdGVwIHMxYgl7IEJFR0lOOyB9CitzdGVwIHMx c3BsdAl7IEFMVEVSIFRBQkxFIHRwYXJ0IFNQTElUIFBBUlRJVElPTiB0cGFydF8xMF8yMCBJ TlRPCisJCQkgICAoUEFSVElUSU9OIHRwYXJ0XzEwXzE1IEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgxNSksCisJCQkgICAgUEFSVElUSU9OIHRwYXJ0XzE1XzIwIEZPUiBWQUxVRVMgRlJP TSAoMTUpIFRPICgyMCkpOyB9CitzdGVwIHMxbWVyZwl7IEFMVEVSIFRBQkxFIHRwYXJ0IE1F UkdFIFBBUlRJVElPTlMgKHRwYXJ0XzAwXzEwLCB0cGFydF8xMF8yMCkgSU5UTyB0cGFydF8w MF8yMDsgfQorc3RlcCBzMWMJeyBDT01NSVQ7IH0KKworCitzZXNzaW9uIHMyCitzdGVwIHMy Ygl7IEJFR0lOOyB9CitzdGVwIHMyaQl7IElOU0VSVCBJTlRPIHRwYXJ0IFZBTFVFUyAoMSwg J3RleHQxJyk7IH0KK3N0ZXAgczJ1CXsgVVBEQVRFIHRwYXJ0IFNFVCB0ID0gJ3RleHQxbW9k aWYnIHdoZXJlIGkgPSAxOyB9CitzdGVwIHMyYwl7IENPTU1JVDsgfQorc3RlcCBzMnMJeyBT RUxFQ1QgKiBGUk9NIHRwYXJ0OyB9CisKKworIyBzMSBzdGFydHMgU1BMSVQgUEFSVElUSU9O IHRoZW4gczIgdHJ5aW5nIHRvIGluc2VydCByb3cgYW5kCisjIHdhaXRzIHVudGlsIHMxIGZp bmlzaGVkIFNQTElUIG9wZXJhdGlvbi4KK3Blcm11dGF0aW9uIHMxYiBzMXNwbHQgczJiIHMy aSBzMWMgczJjIHMycworCisjIHMyIGluc2VydHMgcm93IGludG8gdGFibGUuIHMxIHN0YXJ0 cyBNRVJHRSBQQVJUSVRJT05TIHRoZW4KKyMgczIgdHJ5aW5nIHRvIHVwZGF0ZSBpbnNlcnRl ZCByb3cgYW5kIHdhaXRzIHVudGlsIHMxIGZpbmlzaGVkCisjIE1FUkdFIG9wZXJhdGlvbi4K K3Blcm11dGF0aW9uIHMyYiBzMmkgczJjIHMxYiBzMW1lcmcgczJiIHMydSBzMWMgczJjIHMy cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVy Z2Uub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fbWVyZ2Uub3V0 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNzgzYzRhZDA5OAot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X21lcmdlLm91dApAQCAtMCwwICsxLDcxNSBAQAorLS0KKy0tIFBBUlRJVElPTlNfTUVSR0UK Ky0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElPTlMgLi4uIiBj b21tYW5kCistLQorQ1JFQVRFIFNDSEVNQSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK1NF VCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CistLQor LS0gQlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNv ZGVzCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19kZWMyMDIxIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIxLTEyLTAxJykgVE8gKCcyMDIxLTEyLTMxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf amFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2ZlYjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19tYXIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfYXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX2Fwcl8yIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUg c2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJS T1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBhbHJlYWR5IHVzZWQK K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIw MjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9h cHIyMDIyOworRVJST1I6ICBwYXJ0aXRpb24gd2l0aCBuYW1lICJzYWxlc19mZWIyMDIyIiBh bHJlYWR5IHVzZWQKK0xJTkUgMTogLi4uZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIy MDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19mZWIyLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6 ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIKK0FM VEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX2ZlYjIwMjIs IHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElOVE8gc2FsZXNfZmViX21hcl9hcHIy MDIyOworRVJST1I6ICBjYW5ub3QgbWVyZ2Ugbm9uLXRhYmxlIHBhcnRpdGlvbiAic2FsZXNf YXByMjAyMiIKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2Vl biBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNf bWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKK0VSUk9SOiAgbG93ZXIgYm91bmQg b2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3Vu ZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiCistLSBFUlJPUjogIGlu dmFsaWQgcGFydGl0aW9ucyBvcmRlciwgcGFydGl0aW9uICJzYWxlc19qYW4yMDIyIiBjYW4g bm90IGJlIG1lcmdlZAorLS0gKHNwYWNlIGJldHdlZW4gc2VjdGlvbnMgc2FsZXNfZGVjMjAy MSBhbmQgc2FsZXNfamFuMjAyMikKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBB UlRJVElPTlMgKHNhbGVzX2RlYzIwMjEsIHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIp IElOVE8gc2FsZXNfZGVjX2phbl9mZWIyMDIyOworRVJST1I6ICBsb3dlciBib3VuZCBvZiBw YXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9m IHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMSIKKy0tIE5PIEVSUk9SOiB0ZXN0 IGZvciBjdXN0b20gcGFydGl0aW9ucyBvcmRlcgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2Ug TUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNf amFuMjAyMikgSU5UTyBzYWxlc19qYW5fZmViX21hcjIwMjI7CitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKyAgICAgICAgICBvaWQgICAgICAgICAgfCByZWxraW5kIHwgaW5oZGV0 YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBzYWxlc19hcHIyMDIyICAgICAgICAgfCBwICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjIn KQorIHNhbGVzX2RlYzIwMjEgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgRk9SIFZBTFVFUyBGUk9NICgnMTItMDEtMjAyMScpIFRPICgnMTItMzEtMjAyMScpCisg c2FsZXNfamFuX2ZlYl9tYXIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwMS0wMS0yMDIyJykgVE8gKCcwNC0wMS0yMDIyJykKKyBzYWxl c19vdGhlcnMgICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IERFRkFV TFQKKyg0IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQWRkIHJv d3MgaW50byBwYXJ0aXRpb25lZCB0YWJsZSB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBB UlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgn MjAyMi0wNC0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9p ZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEt MzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZics IDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwg ICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAn UG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIy LTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVy JywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAz NTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitT RUxFQ1QgcGdfY2F0YWxvZy5wZ19nZXRfcGFydGtleWRlZignc2FsZXNfcmFuZ2UnOjpyZWdj bGFzcyk7CisgcGdfZ2V0X3BhcnRrZXlkZWYgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBS QU5HRSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGgg Y29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxr aW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFy dGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFs b2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5o cGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxv Zy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9p ZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICAgb2lkICAg ICAgfCByZWxraW5kIHwgaW5oZGV0YWNocGVuZGluZyB8ICAgICAgICAgICAgICAgICAgIHBn X2dldF9leHByICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgc2FsZXNfYXByMjAyMiB8IHIgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDQtMDEtMjAyMicpIFRPICgnMDUtMDEt MjAyMicpCisgc2FsZXNfZmViMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg Rk9SIFZBTFVFUyBGUk9NICgnMDItMDEtMjAyMicpIFRPICgnMDMtMDEtMjAyMicpCisgc2Fs ZXNfamFuMjAyMiB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBG Uk9NICgnMDEtMDEtMjAyMicpIFRPICgnMDItMDEtMjAyMicpCisgc2FsZXNfbWFyMjAyMiB8 IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVFUyBGUk9NICgnMDMtMDEt MjAyMicpIFRPICgnMDQtMDEtMjAyMicpCisgc2FsZXNfb3RoZXJzICB8IHIgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAy Miwgc2FsZXNfYXByMjAyMikgSU5UTyBzYWxlc19mZWJfbWFyX2FwcjIwMjI7CistLSBzaG93 IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdf Z2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdf Y2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5p bmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBP UkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkg PSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRl eHQ7CisgICAgICAgICAgb2lkICAgICAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRp bmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg c2FsZXNfZmViX21hcl9hcHIyMDIyIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIEZST00gKCcwMi0wMS0yMDIyJykgVE8gKCcwNS0wMS0yMDIyJykKKyBzYWxl c19qYW4yMDIyICAgICAgICAgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBW QUxVRVMgRlJPTSAoJzAxLTAxLTIwMjInKSBUTyAoJzAyLTAxLTIwMjInKQorIHNhbGVzX290 aGVycyAgICAgICAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAor KDMgcm93cykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9 ICdzYWxlc19mZWJfbWFyX2FwcjIwMjInIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAgICAgICB8ICAgICAgIHRhYmxl bmFtZSAgICAgICB8ICAgICAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgICAgICB8IHRh Ymxlc3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbnNf bWVyZ2Vfc2NoZW1hIHwgc2FsZXNfZmViX21hcl9hcHIyMDIyIHwgc2FsZXNfZmViX21hcl9h cHIyMDIyX3NhbGVzX2RhdGVfaWR4IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxl c19mZWJfbWFyX2FwcjIwMjJfc2FsZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uc19tZXJnZV9z Y2hlbWEuc2FsZXNfZmViX21hcl9hcHIyMDIyIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRlKQor KDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFuX2lkIHwg c2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAg ICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIyCisg ICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEtMjgtMjAy MgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8IDAxLTA5 LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1MDAgfCAw Mi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAgICAgMTUw IHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAgICAgICAg IDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAgfCAgICAg ICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8gICAgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAg ICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDE0 IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIw MjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYl9tYXJfYXByMjAy MjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAg NTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAg ICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAg ICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAg IHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRv ICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAgICAgICA0 IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDEwIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0wNC0yMDIy CisoMSByb3cpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcworU0VUIGVu YWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9GRjsKK1NFTEVD VCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAy Mi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAg ICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAg ICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAg IDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAg ICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAy MgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMw LTIwMjIKKygxMCByb3dzKQorCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVu YWJsZV9zZXFzY2FuID0gT047CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19m ZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEn KSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7Cist LSBNZXJnZSBwYXJ0aXRpb25zIChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBh cnRpdGlvbiB3aXRoIHRoZSBzYW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxl c19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworc2VsZWN0ICogZnJvbSBzYWxlc19vdGhl cnM7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAg ICAgICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwg ICAgICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgIDE0IHwg U21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKyg3IHJvd3MpCisK Ky0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19yYW5nZSc6OnJlZ2Ns YXNzCisgIE9SREVSIEJZIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQs IGMub2lkKSA9ICdERUZBVUxUJywgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3M6OnBnX2Nh dGFsb2cudGV4dDsKKyAgICAgIG9pZCAgICAgIHwgcmVsa2luZCB8IGluaGRldGFjaHBlbmRp bmcgfCAgICAgICAgICAgICAgICAgICBwZ19nZXRfZXhwciAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNhbGVzX2Fw cjIwMjIgfCByICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAo JzA0LTAxLTIwMjInKSBUTyAoJzA1LTAxLTIwMjInKQorIHNhbGVzX2ZlYjIwMjIgfCByICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IEZPUiBWQUxVRVMgRlJPTSAoJzAyLTAxLTIwMjIn KSBUTyAoJzAzLTAxLTIwMjInKQorIHNhbGVzX290aGVycyAgfCByICAgICAgIHwgZiAgICAg ICAgICAgICAgICB8IERFRkFVTFQKKygzIHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFu Z2U7CistLQorLS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7 CistLSAgICogR0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxU IHZhbHVlLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApLCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkg SU5ULAorICBzYWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAg ICAoTFBBRChzYWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVz X21vbnRoOjp0ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwg MiwgJzAnKSkgU1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFV TFQgJ1NhbGVzIGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwg MSkgVE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAy MiwgMiwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRPICgyMDIyLCAzLCAxKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlciBQQVJUSVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1Ig VkFMVUVTIEZST00gKDIwMjIsIDMsIDEpIFRPIChNQVhWQUxVRSwgTUFYVkFMVUUsIE1BWFZB TFVFKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVh ciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIxLCAx MiwgNyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3ll YXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywgMjAyMSwg MTIsIDgpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIs IDEsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIs IDIsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIs IDEsIDIpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIs IDIsIDEpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIwMjIs IDMsIDMpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIs IDMsIDQpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195 ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMycsIDIwMjIs IDUsIDEpOworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworIHNhbGVzbWFuX25hbWUgfCBz YWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwgc2Fs ZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisgTWFu YWdlcjEgICAgICB8ICAgICAgIDIwMjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgNyB8IDIw MjEuMTIuMDcgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIw MjEgfCAgICAgICAgICAxMiB8ICAgICAgICAgOCB8IDIwMjEuMTIuMDggfCBTYWxlcyBkZXBh cnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNCB8IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50Cisg TWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8 IDIwMjIuMDIuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBk ZXBhcnRtZW50CisgTWFuYWdlcjIgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgNCB8IDIwMjIuMDMuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUu MDEgfCBTYWxlcyBkZXBhcnRtZW50CisoOSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2RlYzIwMjI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8 IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8 ICAgICAgICAgIDEyIHwgICAgICAgICA3IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAg ICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVzIGRlcGFydG1lbnQKKygyIHJvd3MpCisKK1NFTEVD VCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8 IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1l bnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIzICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorKDIg cm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworIHNhbGVzbWFuX25hbWUg fCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxlc19kYXRlIHwg c2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tCisg TWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgNCB8 IDIwMjIuMDIuMDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAg IDIwMjIgfCAgICAgICAgICAgMiB8ICAgICAgICAgMSB8IDIwMjIuMDIuMDEgfCBTYWxlcyBk ZXBhcnRtZW50CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyOworIHNh bGVzbWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBz YWxlc19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tCisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMyB8IDIwMjIuMDMuMDMgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIg ICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMyB8ICAgICAgICAgNCB8IDIwMjIuMDMu MDQgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAg ICAgICAgICAgNSB8ICAgICAgICAgMSB8IDIwMjIuMDUuMDEgfCBTYWxlcyBkZXBhcnRtZW50 CisoMyByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19kYXRlIE1FUkdFIFBBUlRJVElPTlMg KHNhbGVzX2phbjIwMjIsIHNhbGVzX2ZlYjIwMjIpIElOVE8gc2FsZXNfamFuX2ZlYjIwMjI7 CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTAp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEw KTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNf eWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2Rl cGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIx ICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEy LjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwg ICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVu dAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAg IDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAg ICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2Fs ZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAg IDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFn ZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIy LjAyLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAg ICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAy MDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfZGVjMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVz X21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCist LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAg ICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIg fCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwg c2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNh bGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1h bmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAy MDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgMTAg fCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAorKDYgcm93cykKKworU0VMRUNUICog RlJPTSBzYWxlc19vdGhlcjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVz X21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCist LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMg fCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIz ICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1 LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDMgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19k YXRlOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgdGFi bGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5f aWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJ T04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8x MCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsK K0NSRUFURSBUQUJMRSBzYWxlc21hbnMxMF8yMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZP UiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMjBf MzAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzAp OworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczMwXzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMg Rk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBW QUxVRVMgKDEsICAnUG9pcm90Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRl cl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdz cWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVk OiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1As IFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOwor Q1JFQVRFIFRSSUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dl cgorICAgIEFGVEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFNU QVRFTUVOVAorICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dl cignc2FsZXNtYW5zJyk7CitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0 X3Jvd190cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAg Rk9SIEVBQ0ggUk9XCisgICAgRVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190 cmlnZ2VyKCdzYWxlc21hbnMnKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAo cm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAn TWF5Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJ TlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2Fs ZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9 IFNUQVRFTUVOVAorLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNF UlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6 ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBB RlRFUiwgbGV2ZWwgPSBST1cKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBNRVJHRSBQQVJUSVRJ T05TIChzYWxlc21hbnMxMF8yMCwgc2FsZXNtYW5zMjBfMzAsIHNhbGVzbWFuczMwXzQwKSBJ TlRPIHNhbGVzbWFuczEwXzQwOworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChy b3cgKyBzdGF0ZW1lbnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdT bWlybm9mZicpOworTk9USUNFOiAgdHJpZ2dlcihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9u ID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxldmVsID0gUk9XCitOT1RJQ0U6ICB0cmlnZ2Vy KHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2 ZWwgPSBTVEFURU1FTlQKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK05PVElD RTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlvbiA9IElOU0VSVCwgd2hlbiA9 IEFGVEVSLCBsZXZlbCA9IFJPVworU0VMRUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNtYW5zMTBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMCB8IE1heQorICAgICAgICAg IDE5IHwgSXZhbm92CisgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAgICAgIDMwIHwg Rm9yZAorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc21hbnM7CitEUk9QIEZVTkNUSU9O IGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcigpOworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRp dGlvbnMgd2l0aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5z KHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMw KSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNtYW5zMDFfMTAgUEFSVElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDEp IFRPICgxMCk7CistLSBDcmVhdGUgcGFydGl0aW9ucyB3aXRoIHNvbWUgZGVsZXRlZCBjb2x1 bW5zOgorQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzIwKGQxIFZBUkNIQVIoMzApLCBzYWxl c21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOwor Q1JFQVRFIFRBQkxFIHNhbGVzbWFuczIwXzMwKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtF WSwgZDIgSU5ULCAgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUgVEFCTEUg c2FsZXNtYW5zMzBfNDAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMyBEQVRFLCBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzIw IFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8g c2FsZXNtYW5zMjBfMzAgVkFMVUVTICgyMCwgMTAxLCAnU21pcm5vZmYnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzbWFuczMwXzQwIFZBTFVFUyAoMzEsIG5vdygpLCAnUG9wb3YnKTsKK0FMVEVS IFRBQkxFIHNhbGVzbWFuczEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2Fs ZXNtYW5zMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMzMF80 MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCk7CitBTFRF UiBUQUJMRSBzYWxlc21hbnMgQVRUQUNIIFBBUlRJVElPTiBzYWxlc21hbnMyMF8zMCBGT1Ig VkFMVUVTIEZST00gKDIwKSBUTyAoMzApOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQw KTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICdQb2lyb3QnKTsKK0lOU0VS VCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c21hbnMgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBNRVJH RSBQQVJUSVRJT05TIChzYWxlc21hbnMxMF8yMCwgc2FsZXNtYW5zMjBfMzAsIHNhbGVzbWFu czMwXzQwKSBJTlRPIHNhbGVzbWFuczEwXzQwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnM7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorICAgICAgICAgIDE5IHwgSXZhbm92 CisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAgICAyMCB8IFNtaXJub2ZmCisgICAgICAg ICAgMzEgfCBQb3BvdgorICAgICAgICAgIDMwIHwgRm9yZAorKDYgcm93cykKKworc2VsZWN0 ICogZnJvbSBzYWxlc21hbnMwMV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgUG9pcm90 CisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMTBfNDA7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAxOSB8IEl2YW5vdgorICAgICAgICAgIDEwIHwgTWF5CisgICAgICAgICAgMjAg fCBTbWlybm9mZgorICAgICAgICAgIDMxIHwgUG9wb3YKKyAgICAgICAgICAzMCB8IEZvcmQK Kyg1IHJvd3MpCisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOworLS0KKy0tIFRlc3Q6IG1lcmdl IHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21h bl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzAxXzEwIFBBUlRJ VElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzEwXzIwIFBB UlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMTAn KSBUTyAoJzIwMjItMDQtMjAnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyXzIwXzMw IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MjAnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVYIHNhbGVzX3Jhbmdl X3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxlc19kYXRl KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEw MDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIs ICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcy MDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVl dicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAz LTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24n LCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAs ICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwg J1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAy Mi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwgMDEtMzEtMjAyMgor ICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAxLTI4LTIw MjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAgICAzNzcgfCAwMS0w OS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAwIHwg MDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAgICAgICAgIDE1 MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAg ICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAg ICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8 ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAg ICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAg ICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1 bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygx NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQt MTMtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8w MV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfYXByMjAyMl8xMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDQgfCBJdmFub3YgICAg ICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAzIHwgRm9y ZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKygxIHJvdykKKworQUxU RVIgVEFCTEUgc2FsZXNfYXByMjAyMiBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19hcHIyMDIy XzAxXzEwLCBzYWxlc19hcHIyMDIyXzEwXzIwLCBzYWxlc19hcHIyMDIyXzIwXzMwKSBJTlRP IHNhbGVzX2Fwcl9hbGw7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDEt MjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAgIDM3NyB8 IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAgICAgICA1 MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgICAgICAg ICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAgICB8ICAg ICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAgICAgICAg fCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAg ICAgIHwgICAgICAgICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEyIHwgUGxhdG8g ICAgICAgICB8ICAgICAgICAgIDM1MCB8IDAzLTE5LTIwMjIKKyAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEg fCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAg ICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMjsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAg fCAwNC0xMy0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAy MDAwIHwgMDQtMzAtMjAyMgorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHJf YWxsOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNh bGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAg ICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAg ICAgICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8 ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitEUk9QIFRBQkxF IHNhbGVzX3JhbmdlOworLS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorLS0KKy0t IFRlc3Q6IHNwZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxX QVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNf c3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERB VEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNh bGVzX25vcmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1h bnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf d2VzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgn LCAnU21vbGVuc2snLCAnQnJ5YW5zaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Vhc3QgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFy b3ZzaycsICdWbGFkaXZvc3RvaycpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2NlbnRyYWwgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbics ICdWb2xnb2dyYWQnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgREVGQVVMVDsKK0NSRUFURSBUQUJMRSBzYWxlc19saXN0MiAoTElLRSBz YWxlc19saXN0KSBQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX25vcmQyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBGT1IgVkFMVUVTIElO ICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc19vdGhlcnMyIFBBUlRJVElPTiBPRiBzYWxlc19saXN0MiBERUZBVUxUOworQ1JF QVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtFIHNhbGVzX2xpc3QpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNIQVIoNSkpOworLS0gRVJST1I6ICBwYXJ0 aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbCIgaXMgbnVsbAorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxl c19lYXN0LCBzYWxlc19leHRlcm5hbCkgSU5UTyBzYWxlc19hbGw7CitFUlJPUjogIHBhcnRp dGlvbiBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsIiBpcyBudWxsCistLSBF UlJPUjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsMiIg aXMgbnVsbAorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxl c193ZXN0LCBzYWxlc19lYXN0LCBzYWxlc19leHRlcm5hbDIpIElOVE8gc2FsZXNfYWxsOwor RVJST1I6ICBwYXJ0aXRpb24gYm91bmQgZm9yIHJlbGF0aW9uICJzYWxlc19leHRlcm5hbDIi IGlzIG51bGwKKy0tIEVSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBpcyBub3QgYSBw YXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitBTFRFUiBUQUJMRSBzYWxlc19s aXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dlc3QsIHNhbGVzX25vcmQyLCBzYWxlc19l YXN0KSBJTlRPIHNhbGVzX2FsbDsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX25vcmQyIiBp cyBub3QgYSBwYXJ0aXRpb24gb2YgcmVsYXRpb24gInNhbGVzX2xpc3QiCitEUk9QIFRBQkxF IHNhbGVzX2V4dGVybmFsMjsKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWw7CitEUk9QIFRB QkxFIHNhbGVzX2xpc3QyOworRFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3Q6 IEJZIExJU1QgcGFydGl0aW9uaW5nLCBNRVJHRSBQQVJUSVRJT05TIHdpdGggZGF0YQorLS0K K0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBB TFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxl c19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUg REFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUgSU5ERVgg c2FsZXNfbGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVl IChzYWxlc21hbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRl X2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElO ICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFURSBUQUJM RSBzYWxlc193ZXN0IFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdW b3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf ZWFzdCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbics ICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfY2Vu dHJhbCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFMVUVTIElOICgnTW9zY293Jywg J0themFuJywgJ1ZvbGdvZ3JhZCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJU SVRJT04gT0Ygc2FsZXNfbGlzdCBERUZBVUxUOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnVHJ1bXAnLCAgICAnTWFnYWRhbicsICAgICAgICAxMDAwLCAnMjAyMi0wMy0w MScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnU21pcm5vZmYnLCAnU21v bGVuc2snLCAgICAgICA1MDAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnRm9yZCcsICAgICAnU3QuIFBldGVyc2J1cmcnLCAyMDAwLCAnMjAy Mi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnSXZhbm92Jywg ICAnTW9zY293JywgICAgICAgICA3NTAsICAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnRGVldicsICAgICAnVm9yb25lemgnLCAgICAgICAyNTAs ICAnMjAyMi0wMy0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFt ZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnUG9p cm90JywgICAnS2F6YW4nLCAgICAgICAgICAxMDAwLCAnMjAyMi0wMy0wMScpOworSU5TRVJU IElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ft b3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAgICAgICAg ICAxMjAwLCAnMjAyMi0wMy0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNt YW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVT ICgnTGknLCAgICAgICAnVmxhZGl2b3N0b2snLCAgICAxMTUwLCAnMjAyMi0wMy0wOScpOwor SU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNh bGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTWF5JywgICAgICAnVWtodGEnLCAg ICAgICAgICAxMjAwLCAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAo c2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkg VkFMVUVTICgnSGFsZGVyJywgICAnTXVybWFuc2snLCAgICAgICA4MDAsICAnMjAyMi0wMy0w MicpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3Rh dGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnTXVsbGVyJywgICAnQnJ5 YW5zaycsICAgICAgICA2NTAsICAnMjAyMi0wMy0wNScpOworSU5TRVJUIElOVE8gc2FsZXNf bGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNf ZGF0ZSkgVkFMVUVTICgnU21pdGgnLCAgICAnVm9sZ29ncmFkJywgICAgICAzNTAsICAnMjAy Mi0wMy0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwgc2FsZXNfZGF0ZSkgVkFMVUVTICgnR2FuZGknLCAg ICAnTW9zY293JywgICAgICAgICAxNTAsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8g c2FsZXNfbGlzdCAoc2FsZXNtYW5fbmFtZSwgc2FsZXNfc3RhdGUsIHNhbGVzX2Ftb3VudCwg c2FsZXNfZGF0ZSkgVkFMVUVTICgnUGxhdG8nLCAgICAnVm9yb25lemgnLCAgICAgICA5NTAs ICAnMjAyMi0wMy0wNScpOworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoK K1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRh Y2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJp dHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3Nh bGVzX2xpc3QnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHBy KGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9n LnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisgICAgICBvaWQgICAgICB8IHJlbGtpbmQg fCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2V4cHIg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBzYWxlc19jZW50cmFsIHwgciAgICAgICB8IGYgICAgICAg ICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3Jh ZCcpCisgc2FsZXNfZWFzdCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9S IFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpCisg c2FsZXNfbm9yZCAgICB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgRk9SIFZBTFVF UyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJykKKyBzYWxlc193 ZXN0ICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBGT1IgVkFMVUVTIElOICgn Vm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpCisgc2FsZXNfb3RoZXJzICB8IHIg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVGQVVMVAorKDUgcm93cykKKworQUxURVIg VEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQQVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19l YXN0LCBzYWxlc19jZW50cmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIHNob3cgcGFydGl0aW9u cyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBnX2NhdGFsb2cucmVnY2xhc3Ms IGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihj LnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBw Z19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5vaWQgPSBpLmluaHJlbGlkIEFO RCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdf Y2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQn LCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0OworICAgICBv aWQgICAgICB8IHJlbGtpbmQgfCBpbmhkZXRhY2hwZW5kaW5nIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9leHByICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgc2FsZXNfYWxsICAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBG T1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycsICdNYWdh ZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2snLCAnTW9zY293JywgJ0themFuJywg J1ZvbGdvZ3JhZCcpCisgc2FsZXNfbm9yZCAgIHwgciAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWto dGEnKQorIHNhbGVzX290aGVycyB8IHIgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgREVG QVVMVAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19saXN0OworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWly bm9mZiAgICAgIHwgU21vbGVuc2sgICAgICAgfCAgICAgICAgICA1MDAgfCAwMy0wMy0yMDIy CisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgVm9yb25lemggICAgICAgfCAgICAg ICAgICAyNTAgfCAwMy0wNy0yMDIyCisgICAgICAgICAgMTEgfCBNdWxsZXIgICAgICAgIHwg QnJ5YW5zayAgICAgICAgfCAgICAgICAgICA2NTAgfCAwMy0wNS0yMDIyCisgICAgICAgICAg MTQgfCBQbGF0byAgICAgICAgIHwgVm9yb25lemggICAgICAgfCAgICAgICAgICA5NTAgfCAw My0wNS0yMDIyCisgICAgICAgICAgIDEgfCBUcnVtcCAgICAgICAgIHwgTWFnYWRhbiAgICAg ICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgIDggfCBMaSAgICAg ICAgICAgIHwgVmxhZGl2b3N0b2sgICAgfCAgICAgICAgIDExNTAgfCAwMy0wOS0yMDIyCisg ICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgTW9zY293ICAgICAgICAgfCAgICAgICAg ICA3NTAgfCAwMy0wNC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwgS2F6 YW4gICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMy0wMS0yMDIyCisgICAgICAgICAgMTIg fCBTbWl0aCAgICAgICAgIHwgVm9sZ29ncmFkICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0x MC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgTW9zY293ICAgICAgICAg fCAgICAgICAgICAxNTAgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAg ICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIyCisgICAg ICAgICAgIDcgfCBNYXkgICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAgICAgICAgIDEy MDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgIHwgVWtodGEg ICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTAgfCBI YWxkZXIgICAgICAgIHwgTXVybWFuc2sgICAgICAgfCAgICAgICAgICA4MDAgfCAwMy0wMi0y MDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVzbWFu X2lkIHwgc2FsZXNtYW5fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBGb3Jk ICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0yMDIy CisgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAgICAg ICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAgIHwg VWtodGEgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAgICAg MTAgfCBIYWxkZXIgICAgICAgIHwgTXVybWFuc2sgICAgICAgfCAgICAgICAgICA4MDAgfCAw My0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbDsKKyBzYWxl c21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8 IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5v ZmYgICAgICB8IFNtb2xlbnNrICAgIHwgICAgICAgICAgNTAwIHwgMDMtMDMtMjAyMgorICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICB8IFZvcm9uZXpoICAgIHwgICAgICAgICAgMjUw IHwgMDMtMDctMjAyMgorICAgICAgICAgIDExIHwgTXVsbGVyICAgICAgICB8IEJyeWFuc2sg ICAgIHwgICAgICAgICAgNjUwIHwgMDMtMDUtMjAyMgorICAgICAgICAgIDE0IHwgUGxhdG8g ICAgICAgICB8IFZvcm9uZXpoICAgIHwgICAgICAgICAgOTUwIHwgMDMtMDUtMjAyMgorICAg ICAgICAgICAxIHwgVHJ1bXAgICAgICAgICB8IE1hZ2FkYW4gICAgIHwgICAgICAgICAxMDAw IHwgMDMtMDEtMjAyMgorICAgICAgICAgICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9z dG9rIHwgICAgICAgICAxMTUwIHwgMDMtMDktMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92 ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAg ICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8IEthemFuICAgICAgIHwgICAgICAgICAxMDAw IHwgMDMtMDEtMjAyMgorICAgICAgICAgIDEyIHwgU21pdGggICAgICAgICB8IFZvbGdvZ3Jh ZCAgIHwgICAgICAgICAgMzUwIHwgMDMtMTAtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkg ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDEw IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRlciBtZXJn ZSBwYXJ0aXRpb25zCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9z ZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBzYWxlc19hbGwgV0hFUkUgc2FsZXNfc3Rh dGUgPSAnTW9zY293JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19z dGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor ICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAg NzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8IE1vc2Nv dyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQg fCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5v diAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAg ICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1 MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfbGlzdCBX SEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cg ICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKworU0VUIGVuYWJs ZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworRFJPUCBUQUJM RSBzYWxlc19saXN0OworLS0KK0RST1AgU0NIRU1BIHBhcnRpdGlvbnNfbWVyZ2Vfc2NoZW1h OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3Bs aXQub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fc3BsaXQub3V0 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMGU3OWE3MTFiYQot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3NwbGl0Lm91dApAQCAtMCwwICsxLDE0MjUgQEAKKy0tCistLSBQQVJUSVRJT05fU1BMSVQK Ky0tIFRlc3RzIGZvciAiQUxURVIgVEFCTEUgLi4uIFNQTElUIFBBUlRJVElPTiAuLi4iIGNv bW1hbmQKKy0tCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitTRVQg c2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CistLQorLS0g QlkgUkFOR0UgcGFydGl0aW9uaW5nCistLQorLS0KKy0tIFRlc3QgZm9yIGVycm9yIGNvZGVz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBpbnQsIHNhbGVz bWFuX25hbWUgdmFyY2hhcigzMCksIHNhbGVzX2Ftb3VudCBpbnQsIHNhbGVzX2RhdGUgZGF0 ZSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmVi X21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworLS0gRVJST1I6ICBy ZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJUSVRJT04gc2Fs ZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAz LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXBy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykp OworRVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorLS0gRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfamFuMjAyMiIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgcmVsYXRpb24gInNhbGVzX2phbjIw MjIiIGFscmVhZHkgZXhpc3RzCistLSBFUlJPUjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNh dGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9O IHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJTiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsK K0VSUk9SOiAgaW52YWxpZCBib3VuZCBzcGVjaWZpY2F0aW9uIGZvciBhIHJhbmdlIHBhcnRp dGlvbgorTElORSAyOiAgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIElO ICgnMjAyMi0wNS0wMScsICcyMDIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIGVtcHR5IHJhbmdlIGJvdW5kIHNwZWNp ZmllZCBmb3IgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNf cmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykg VE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAyLTAxJyksCisgICBQQVJUSVRJ T04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcy MDIyLTA1LTAxJykpOworRVJST1I6ICBlbXB0eSByYW5nZSBib3VuZCBzcGVjaWZpZWQgZm9y IHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVz X21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPLi4uCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorREVUQUlM OiAgU3BlY2lmaWVkIGxvd2VyIGJvdW5kICgnMDMtMDEtMjAyMicpIGlzIGdyZWF0ZXIgdGhh biBvciBlcXVhbCB0byB1cHBlciBib3VuZCAoJzAyLTAxLTIwMjInKS4KKy0tRVJST1I6ICBs aXN0IG9mIHNwbGl0dGVkIHBhcnRpdGlvbnMgc2hvdWxkIGNvbnRhaW5zIGF0IGxlYXN0IHR3 byBpdGVtcworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTEwLTAxJykpOworRVJST1I6 ICBsaXN0IG9mIG5ldyBwYXJ0aXRpb25zIHNob3VsZCBjb250YWlucyBhdCBsZWFzdCB0d28g aXRlbXMKKy0tIEVSUk9SOiAgYm91bmRzIG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIg YXJlIG91dHNpZGUgYm91bmRzIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2Fs ZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAx JykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8g KCcyMDIyLTA1LTAxJykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19mZWIyMDIy IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNh bGVzX2phbjIwMjIiCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBW QUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmFtZSAic2Fs ZXNfZmViX21hcl9hcHIyMDIyIiBhbHJlYWR5IHVzZWQKKy0tIChXZSBjYW4gY3JlYXRlIHBh cnRpdGlvbiB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgc3BsaXQgcGFydGl0aW9uLCBidXQgY2Fu J3QgY3JlYXRlIHR3byBwYXJ0aXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZSkKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZS T00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAo JzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIG5hbWUg InNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy4u LgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBuYW1lICJzYWxlc19mZWIy MDIyIiBhbHJlYWR5IHVzZWQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJ VElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w My0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VS Uk9SOiAgbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitMSU5FIDM6ICAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU Ty4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICAic2FsZXNfZmViX21h cl9hcHIyMDIyIiBpcyBub3QgYSBwYXJ0aXRpb25lZCB0YWJsZQorQUxURVIgVEFCTEUgc2Fs ZXNfZmViX21hcl9hcHIyMDIyIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIw MjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKK0VSUk9SOiAgInNhbGVzX2ZlYl9tYXJfYXBy MjAyMiIgaXMgbm90IGEgcGFydGl0aW9uZWQgdGFibGUKKy0tIEVSUk9SOiAgdXBwZXIgYm91 bmQgb2YgcGFydGl0aW9uICJzYWxlc19hcHIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIHVwcGVy IGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA2LTAx JykpOworRVJST1I6ICB1cHBlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIi IGlzIG5vdCBlcXVhbHMgdG8gdXBwZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9uCitMSU5F IDQ6IC4uLiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDYtMC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAi c2FsZXNfZmViMjAyMiIgd291bGQgb3ZlcmxhcCB3aXRoIGFub3RoZXIgKG5vdCBzcGxpdCkg cGFydGl0aW9uICJzYWxlc19qYW4yMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BM SVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04g c2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNf YXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAx JykpOworRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi CitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDEtMDEnKSBUTy4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0 aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIHVwcGVyIGJvdW5kIG9mIHBy ZXZpb3VzIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworRVJS T1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX21hcjIwMjIiIGNvbmZsaWN0 cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbiAic2FsZXNfZmViMjAy MiIKK0xJTkUgMzogICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gVGVzdHMgZm9yIHNwYWNlcyBiZXR3ZWVuIHBh cnRpdGlvbnMsIHRoZW0gc2hvdWxkIGJlIGV4ZWN1dGVkIHdpdGhvdXQgREVGQVVMVCBwYXJ0 aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIERFVEFDSCBQQVJUSVRJT04gc2FsZXNf b3RoZXJzOworLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Zl YjIwMjIiIGlzIG5vdCBlcXVhbHMgdG8gbG93ZXIgYm91bmQgb2Ygc3BsaXQgcGFydGl0aW9u CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDItMDInKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CitFUlJPUjogIGxvd2VyIGJvdW5k IG9mIHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgaXMgbm90IGVxdWFscyB0byBsb3dlciBi b3VuZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0xJTkUgMjogICAoUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMicpIFRPLi4uCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJM RSBzYWxlc19yYW5nZTsKK0RST1AgVEFCTEUgc2FsZXNfb3RoZXJzOworLS0KKy0tIEFkZCBy b3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUgdGhlbiBzcGxpdCBwYXJ0aXRpb24KKy0tCitD UkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIw MjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEt MDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJfbWFyX2Fw cjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjIt MDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMg UEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIw MjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3Jk JywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQt MDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAg IDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwg ICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAn SGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIy LTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGkn LCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK0FMVEVSIFRBQkxF IHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5U TworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w Mi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7Cisgc2Fs ZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAK Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAx LTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAgICAzNTAg fCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAg Mzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkgICAgICAg ICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxl ciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQ bGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAgICAgICAz IHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAg ICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAg ICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgor ICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIw MjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAgfCAwNS0w NC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZmVi MjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBz YWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAg ICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8ICAg ICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAg fCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX21hcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNf YW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA3IHwgTGkgICAgICAgICAg ICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11bGxlciAg ICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIgfCBQbGF0 byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZv cmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAg ICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCiso NCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8 IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAg ICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgor KDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQorLS0gQWRk IHNwbGl0IHBhcnRpdGlvbiB0aGVuIGFkZCByb3dzIGludG8gcGFydGl0aW9uZWQgdGFibGUK Ky0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNt YW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRF KSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVz X2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWJf bWFyX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19v dGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDIt MDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDUtMDEnKSk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEs ICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcy MDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZh bm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAy LTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAg ICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAs ICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwg J1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAy Mi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRo JywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8 ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkg ICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAg ICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyAg ICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3NTAgfCAwNC0xMy0yMDIy CisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDct MjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0 LTA2LTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAg fCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIy OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEw MDAgfCAwMS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAg ICAgMzUwIHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAg ICAgICAgIDM3NyB8IDAxLTA5LTIwMjIKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfZmViMjAyMjsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwg ICAgICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29u ICAgICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisoMyByb3dzKQorCitTRUxFQ1Qg KiBGUk9NIHNhbGVzX21hcjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA3IHwgTGkgICAg ICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8IE11 bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAgMTIg fCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorKDMgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNt YW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg MyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAg ICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAg ICAgICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIK KyAgICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0y MDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t CisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQt MjAyMgorKDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7CistLQor LS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICog R0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBz YWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChz YWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0 ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkg U1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVz IGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkgVE8gKDIw MjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIwMjIsIDMs IDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwg TUFYVkFMVUUpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxl c195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMScsIDIw MjEsIDEyLCA3KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2Fs ZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAy MDIxLCAxMiwgOCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywg MjAyMiwgMSwgMSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywg MjAyMiwgMiwgNCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywg MjAyMiwgMSwgMik7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywg MjAyMiwgMiwgMSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywg MjAyMiwgMywgMyk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIyJywg MjAyMiwgMywgNCk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNh bGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIzJywg MjAyMiwgNSwgMSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2RhdGU7Cisgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA3 IHwgMjAyMS4xMi4wNyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAg ICAgMjAyMSB8ICAgICAgICAgIDEyIHwgICAgICAgICA4IHwgMjAyMS4xMi4wOCB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAx IHwgICAgICAgICAxIHwgMjAyMi4wMS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0IHwgMjAyMi4w Mi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAxIHwgICAgICAgICAyIHwgMjAyMi4wMS4wMiB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAg ICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMSAgICAgIHwg ICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4wMy4wMyB8IFNh bGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAg ICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5h Z2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAgICAxIHwgMjAy Mi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKyg5IHJvd3MpCisKK1NFTEVDVCAqIEZST00g c2FsZXNfZGVjMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21v bnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAy MDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAg ICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0bWVudAorKDIgcm93cykKKwor U0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmViMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEgfCAyMDIy LjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIy IHwgICAgICAgICAgIDIgfCAgICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0 bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDIgfCAyMDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAg fCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAxIHwg U2FsZXMgZGVwYXJ0bWVudAorKDQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhl cjsKKyBzYWxlc21hbl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNf ZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDMgfCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAy MDIyLjAzLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDUgfCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVw YXJ0bWVudAorKDMgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNfZGF0ZSBTUExJVCBQQVJU SVRJT04gc2FsZXNfamFuX2ZlYjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyLCAxLCAxKSBUTyAoMjAyMiwgMiwgMSksCisgICBQ QVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDIsIDEpIFRP ICgyMDIyLCAzLCAxKSk7CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUs IHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIx JywgMjAyMiwgMSwgMTApOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1l LCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2Vy MicsIDIwMjIsIDIsIDEwKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZGF0ZTsKKyBzYWxlc21h bl9uYW1lIHwgc2FsZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNf ZGF0ZSB8IHNhbGVzX2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLQorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAg ICAgIDcgfCAyMDIxLjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAg fCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwg U2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAg ICAgIDEgfCAgICAgICAgIDEgfCAyMDIyLjAxLjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1h bmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIgfCAy MDIyLjAxLjAyIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAy MDIyIHwgICAgICAgICAgIDEgfCAgICAgICAgMTAgfCAyMDIyLjAxLjEwIHwgU2FsZXMgZGVw YXJ0bWVudAorIE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAg ICAgICAgIDQgfCAyMDIyLjAyLjA0IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIzICAg ICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDIgfCAgICAgICAgIDEgfCAyMDIyLjAyLjAx IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIyIHwgICAg ICAgICAgIDIgfCAgICAgICAgMTAgfCAyMDIyLjAyLjEwIHwgU2FsZXMgZGVwYXJ0bWVudAor IE1hbmFnZXIxICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMg fCAyMDIyLjAzLjAzIHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAg ICAyMDIyIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQgfCAyMDIyLjAzLjA0IHwgU2FsZXMg ZGVwYXJ0bWVudAorIE1hbmFnZXIzICAgICAgfCAgICAgICAyMDIyIHwgICAgICAgICAgIDUg fCAgICAgICAgIDEgfCAyMDIyLjA1LjAxIHwgU2FsZXMgZGVwYXJ0bWVudAorKDExIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfZGVjMjAyMjsKKyBzYWxlc21hbl9uYW1lIHwgc2Fs ZXNfeWVhciB8IHNhbGVzX21vbnRoIHwgc2FsZXNfZGF5IHwgc2FsZXNfZGF0ZSB8IHNhbGVz X2RlcGFydG1lbnQgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIE1hbmFn ZXIxICAgICAgfCAgICAgICAyMDIxIHwgICAgICAgICAgMTIgfCAgICAgICAgIDcgfCAyMDIx LjEyLjA3IHwgU2FsZXMgZGVwYXJ0bWVudAorIE1hbmFnZXIyICAgICAgfCAgICAgICAyMDIx IHwgICAgICAgICAgMTIgfCAgICAgICAgIDggfCAyMDIxLjEyLjA4IHwgU2FsZXMgZGVwYXJ0 bWVudAorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworIHNhbGVz bWFuX25hbWUgfCBzYWxlc195ZWFyIHwgc2FsZXNfbW9udGggfCBzYWxlc19kYXkgfCBzYWxl c19kYXRlIHwgc2FsZXNfZGVwYXJ0bWVudCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tCisgTWFuYWdlcjMgICAgICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMSB8IDIwMjIuMDEuMDEgfCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjIgICAg ICB8ICAgICAgIDIwMjIgfCAgICAgICAgICAgMSB8ICAgICAgICAgMiB8IDIwMjIuMDEuMDIg fCBTYWxlcyBkZXBhcnRtZW50CisgTWFuYWdlcjEgICAgICB8ICAgICAgIDIwMjIgfCAgICAg ICAgICAgMSB8ICAgICAgICAxMCB8IDIwMjIuMDEuMTAgfCBTYWxlcyBkZXBhcnRtZW50Ciso MyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjI7Cisgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUg fCBzYWxlc19kZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0K KyBNYW5hZ2VyMSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICA0 IHwgMjAyMi4wMi4wNCB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMyAgICAgIHwgICAg ICAgMjAyMiB8ICAgICAgICAgICAyIHwgICAgICAgICAxIHwgMjAyMi4wMi4wMSB8IFNhbGVz IGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAy IHwgICAgICAgIDEwIHwgMjAyMi4wMi4xMCB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7Cisgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X3llYXIgfCBzYWxlc19tb250aCB8IHNhbGVzX2RheSB8IHNhbGVzX2RhdGUgfCBzYWxlc19k ZXBhcnRtZW50IAorLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyBNYW5hZ2Vy MSAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICAzIHwgICAgICAgICAzIHwgMjAyMi4w My4wMyB8IFNhbGVzIGRlcGFydG1lbnQKKyBNYW5hZ2VyMiAgICAgIHwgICAgICAgMjAyMiB8 ICAgICAgICAgICAzIHwgICAgICAgICA0IHwgMjAyMi4wMy4wNCB8IFNhbGVzIGRlcGFydG1l bnQKKyBNYW5hZ2VyMyAgICAgIHwgICAgICAgMjAyMiB8ICAgICAgICAgICA1IHwgICAgICAg ICAxIHwgMjAyMi4wNS4wMSB8IFNhbGVzIGRlcGFydG1lbnQKKygzIHJvd3MpCisKKy0tRVJS T1I6ICByZWxhdGlvbiAic2FsZXNfamFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2phbl9mZWIyMDIyOworRVJST1I6ICByZWxhdGlvbiAic2FsZXNf amFuX2ZlYjIwMjIiIGRvZXMgbm90IGV4aXN0CitMSU5FIDE6IFNFTEVDVCAqIEZST00gc2Fs ZXNfamFuX2ZlYjIwMjI7CisgICAgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBz YWxlc19kYXRlIENBU0NBREU7CistLQorLS0gVGVzdDogc3BsaXQgREVGQVVMVCBwYXJ0aXRp b247IHVzaW5nIGEgaW5kZXggb24gcGFydGl0aW9uIGtleTsgY2hlY2sgaW5kZXggYWZ0ZXIg c3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0 ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxF IHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxl c19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CitDUkVBVEUgSU5E RVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2FsZXNfcmFuZ2UgVVNJTkcgYnRy ZWUgKHNhbGVzX2RhdGUpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAg J01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0x MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsK KyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAgICAgICAgNTAw IHwgMDItMTAtMjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAg MjAwMCB8IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAg ICAgICA3NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwg ICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgNyB8IExpICAgICAg ICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisgICAgICAgICAgIDggfCBFcmlj c3NvbiAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA5IHwg TXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAg ICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAg ICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIK KygxMSByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1l ID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3Nj aGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICB0YWJsZW5hbWUgICB8ICAgICAg ICAgIGluZGV4bmFtZSAgICAgICAgICB8IHRhYmxlc3BhY2UgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGRlZiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEgfCBzYWxlc19vdGhlcnMgfCBz YWxlc19vdGhlcnNfc2FsZXNfZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVY IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1h LnNhbGVzX290aGVycyBVU0lORyBidHJlZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAy LTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA1LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQp OworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVzdCBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4 c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNt YW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAgICAgIDUwMCB8IDAyLTEw LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAgICAgICAgICAxNTAgfCAw Mi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAgIHwgICAgICAgICAgMTg1 IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIy IHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA3IHwgTGkgICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAg ICAgICAgOSB8IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisg ICAgICAgICAgMTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAy MgorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyIHdoZXJlIHNhbGVz X2RhdGUgPiAnMjAyMi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDExIHwgVHJ1bXAg ICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyAgICAgICAgICAgNSB8IERl ZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgIDQg fCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAg ICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0LTMwLTIwMjIKKyg0IHJv d3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzIHdoZXJlIHNhbGVzX2RhdGUgPiAn MjAyMi0wMS0wMSc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8 ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIKKygxIHJvdykKKworU0VUIGVuYWJsZV9pbmRl eHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19mZWIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKyAgICAgICBzY2hlbWFuYW1lICAg ICAgIHwgICB0YWJsZW5hbWUgICB8ICAgICAgICAgIGluZGV4bmFtZSAgICAgICAgICAgfCB0 YWJsZXNwYWNlIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGluZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBwYXJ0aXRp b25fc3BsaXRfc2NoZW1hIHwgc2FsZXNfZmViMjAyMiB8IHNhbGVzX2ZlYjIwMjJfc2FsZXNf ZGF0ZV9pZHggfCAgICAgICAgICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX2ZlYjIwMjJfc2Fs ZXNfZGF0ZV9pZHggT04gcGFydGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19mZWIyMDIyIFVT SU5HIGJ0cmVlIChzYWxlc19kYXRlKQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHBnX2lu ZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBzY2hlbWFuYW1l ID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAg fCAgIHRhYmxlbmFtZSAgIHwgICAgICAgICAgaW5kZXhuYW1lICAgICAgICAgICB8IHRhYmxl c3BhY2UgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHBhcnRpdGlvbl9z cGxpdF9zY2hlbWEgfCBzYWxlc19tYXIyMDIyIHwgc2FsZXNfbWFyMjAyMl9zYWxlc19kYXRl X2lkeCB8ICAgICAgICAgICAgfCBDUkVBVEUgSU5ERVggc2FsZXNfbWFyMjAyMl9zYWxlc19k YXRlX2lkeCBPTiBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLnNhbGVzX21hcjIwMjIgVVNJTkcg YnRyZWUgKHNhbGVzX2RhdGUpCisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gcGdfaW5kZXhl cyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfYXByMjAyMicgYW5kIHNjaGVtYW5hbWUgPSAn cGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CisgICAgICAgc2NoZW1hbmFtZSAgICAgICB8ICAg dGFibGVuYW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFj ZSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0 X3NjaGVtYSB8IHNhbGVzX2FwcjIwMjIgfCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVfaWR4 IHwgICAgICAgICAgICB8IENSRUFURSBJTkRFWCBzYWxlc19hcHIyMDIyX3NhbGVzX2RhdGVf aWR4IE9OIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWEuc2FsZXNfYXByMjAyMiBVU0lORyBidHJl ZSAoc2FsZXNfZGF0ZSkKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBwZ19pbmRleGVzIFdI RVJFIHRhYmxlbmFtZSA9ICdzYWxlc19vdGhlcnMnIGFuZCBzY2hlbWFuYW1lID0gJ3BhcnRp dGlvbl9zcGxpdF9zY2hlbWEnOworICAgICAgIHNjaGVtYW5hbWUgICAgICAgfCAgdGFibGVu YW1lICAgfCAgICAgICAgICBpbmRleG5hbWUgICAgICAgICAgIHwgdGFibGVzcGFjZSB8ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcGFydGl0aW9uX3NwbGl0X3NjaGVtYSB8 IHNhbGVzX290aGVycyB8IHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgfCAgICAgICAg ICAgIHwgQ1JFQVRFIElOREVYIHNhbGVzX290aGVyc19zYWxlc19kYXRlX2lkeDEgT04gcGFy dGl0aW9uX3NwbGl0X3NjaGVtYS5zYWxlc19vdGhlcnMgVVNJTkcgYnRyZWUgKHNhbGVzX2Rh dGUpCisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKy0tCist LSBUZXN0OiBzb21lIGNhc2VzIGZvciBzcGxpdCBERUZBVUxUIHBhcnRpdGlvbiAoZGlmZmVy ZW50IGJvdW5kcykKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lk IElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2Fs ZXNfZGF0ZSBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGxvd2VyIGJv dW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9y IiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNh bGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04g c2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxV RVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNf ZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8gKDIwMjIwMjAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgy MDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRVJST1I6 ICBsb3dlciBib3VuZCBvZiBwYXJ0aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0 aCB1cHBlciBib3VuZCBvZiBwcmV2aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitM SU5FIDM6ICAgIFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjEx MjMwKSBUTyAoMjAyMi4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNf ZmViMjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZmViMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJl dmlvdXMgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAo MjAyMjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CitFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAic2FsZXNfZmVi MjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9u ICJzYWxlc19lcnJvciIKK0xJTkUgNDogICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwLi4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gc2FsZXNfZXJyb3IgaW50 ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGluc2lkZSBib3VuZCkKKy0tIEVSUk9SOiAg bG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGgg dXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAx KSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMg RlJPTSAoMjAyMTEyMTApIFRPICgyMDIxMTIyMCksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFS VElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2Yg cGFydGl0aW9uICJzYWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2Yg cHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19kZWMyMDIyIgorTElORSAzOiAgICBQQVJUSVRJ T04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIxMCkgVE8gKDIwMjEuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgor LS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVzX2RlYzIwMjIgKGV4YWN0IHRo ZSBzYW1lIGJvdW5kcykKKy0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJz YWxlc19lcnJvciIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFy dGl0aW9uICJzYWxlc19kZWMyMDIyIgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQg UEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAy MiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElU SU9OIHNhbGVzX2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEw MSksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKK0VSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19lcnJvciIgY29u ZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlvdXMgcGFydGl0aW9uICJzYWxlc19k ZWMyMDIyIgorTElORSAzOiAgICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6ICBhbnkgcGFydGl0aW9uIGlu IHRoZSBsaXN0IHNob3VsZCBiZSBERUZBVUxUIGJlY2F1c2Ugc3BsaXQgcGFydGl0aW9uIGlz IERFRkFVTFQKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZBTFVFUyBG Uk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMDEpIFRPICgyMDIyMDIwMSksCisgICBQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBUTyAoMjAy MjAzMDEpKTsKK0VSUk9SOiAgYW55IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91bGQgYmUg REVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitMSU5FIDI6ICAg KFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRP ICgyMC4uLgorICAgICAgICAgICAgICAgICAgICAgXgorLS0gbm8gZXJyb3I6IGJvdW5kcyBv ZiBzYWxlc19ub2Vycm9yIGJldHdlZW4gc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAy MgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVy cyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIw MjExMjAxKSBUTyAoMjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9S IFZBTFVFUyBGUk9NICgyMDIyMDExMCkgVE8gKDIwMjIwMTIwKSwKKyAgIFBBUlRJVElPTiBz YWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSks CisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxl c19yYW5nZTsKK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBz YWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRl IElOVCkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CistLSBubyBl cnJvcjogYm91bmRzIG9mIHNhbGVzX25vZXJyb3IgZXF1YWxzIHRvIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMgb2Ygc2FsZXNfZGVjMjAyMiBhbmQgc2FsZXNfZmViMjAyMgorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfZGVjMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX25vZXJyb3IgRk9SIFZBTFVFUyBGUk9N ICgyMDIxMDEwMSkgVE8gKDIwMjEwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIy IEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJ T04gc2FsZXNfb3RoZXJzIERFRkFVTFQpOworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0t CistLSBUZXN0OiBzcGxpdCBwYXJ0aXRpb24gd2l0aCBDSEVDSyBhbmQgRk9SRUlHTiBLRVkg Q09OU1RSQUlOVHMgb24gcGFydGl0aW9uZWQgdGFibGUKKy0tCitDUkVBVEUgVEFCTEUgc2Fs ZXNtYW5zKHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcp OworQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlICgKK3NhbGVzbWFuX2lkIElOVCBSRUZFUkVO Q0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCksCitzYWxlc19hbW91bnQgSU5UIENIRUNLIChz YWxlc19hbW91bnQgPiAxKSwKK3NhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCks IGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVsaWQgPSAn c2FsZXNfZmViX21hcl9hcHIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKKyAgICAgICAgICAgICAg ICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAgICAgICB8ICAgICAg ICAgICAgY29ubmFtZSAgICAgICAgICAgICB8IGNvbmtleSAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0KKyBDSEVDSyAoKHNhbGVzX2Ftb3Vu dCA+IDEpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNhbGVzX3Jhbmdl X3NhbGVzX2Ftb3VudF9jaGVjayB8IHsyfQorIEZPUkVJR04gS0VZIChzYWxlc21hbl9pZCkg UkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5faWQpIHwgc2FsZXNfcmFuZ2Vfc2FsZXNt YW5faWRfZmtleSAgIHwgezF9CisoMiByb3dzKQorCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAo JzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjIt MDUtMDEnKSk7CistLSBXZSBzaG91bGQgc2VlIHRoZSBzYW1lIENPTlNUUkFJTlRzIGFzIG9u IHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBwYXJ0aXRpb24KK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbnJlbGlkID0gJ3NhbGVzX2ZlYjIwMjInOjpyZWdjbGFzczo6b2lkOworICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2FsZXNf YW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2FsZXNf cmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVzbWFu X2lkKSBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCkgfCBzYWxlc19yYW5nZV9z YWxlc21hbl9pZF9ma2V5ICAgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfY29u c3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50IFdI RVJFIGNvbnJlbGlkID0gJ3NhbGVzX21hcjIwMjInOjpyZWdjbGFzczo6b2lkOworICAgICAg ICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAgICAg IHwgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgoc2Fs ZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2Fs ZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNhbGVz bWFuX2lkKSBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCkgfCBzYWxlc19yYW5n ZV9zYWxlc21hbl9pZF9ma2V5ICAgfCB7MX0KKygyIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6b2lkOworICAg ICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgICBjb25uYW1lICAgICAgICAgICAgIHwgY29ua2V5IAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLQorIENIRUNLICgo c2FsZXNfYW1vdW50ID4gMSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg c2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIHwgezJ9CisgRk9SRUlHTiBLRVkgKHNh bGVzbWFuX2lkKSBSRUZFUkVOQ0VTIHNhbGVzbWFucyhzYWxlc21hbl9pZCkgfCBzYWxlc19y YW5nZV9zYWxlc21hbl9pZF9ma2V5ICAgfCB7MX0KKygyIHJvd3MpCisKKy0tIEVSUk9SOiAg bmV3IHJvdyBmb3IgcmVsYXRpb24gInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGNoZWNrIGNv bnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2NoZWNrIgorSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAwLCAnMjAyMi0wMy0xMScpOworRVJST1I6ICBuZXcg cm93IGZvciByZWxhdGlvbiAic2FsZXNfbWFyMjAyMiIgdmlvbGF0ZXMgY2hlY2sgY29uc3Ry YWludCAic2FsZXNfcmFuZ2Vfc2FsZXNfYW1vdW50X2NoZWNrIgorREVUQUlMOiAgRmFpbGlu ZyByb3cgY29udGFpbnMgKDEsIDAsIDAzLTExLTIwMjIpLgorLS0gRVJST1I6ICBpbnNlcnQg b3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlc19tYXIyMDIyIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9ma2V5IgorSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgtMSwgMTAsICcyMDIyLTAzLTExJyk7CitFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInNhbGVzX21hcjIwMjIiIHZpb2xhdGVzIGZv cmVpZ24ga2V5IGNvbnN0cmFpbnQgInNhbGVzX3JhbmdlX3NhbGVzbWFuX2lkX2ZrZXkiCitE RVRBSUw6ICBLZXkgKHNhbGVzbWFuX2lkKT0oLTEpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxl ICJzYWxlc21hbnMiLgorLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MSwgMTAsICcyMDIyLTAzLTExJyk7CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlIENBU0NBREU7 CitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBh cnRpdGlvbiBvbiBwYXJ0aXRpb25lZCB0YWJsZSBpbiBjYXNlIGV4aXN0cyBGT1JFSUdOIEtF WSByZWZlcmVuY2UgZnJvbSBhbm90aGVyIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz bWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNtYW5faWQpOworQ1JFQVRFIFRBQkxF IHNhbGVzIChzYWxlc21hbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5f aWQpLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpOworQ1JFQVRFIFRBQkxF IHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQwIFBBUlRJVElPTiBP RiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRP IHNhbGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAo MTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAnU21p cm5vZmYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDMwLCAnRm9yZCcpOwor SU5TRVJUIElOVE8gc2FsZXMgVkFMVUVTICgxLCAgMTAwLCAnMjAyMi0wMy0wMScpOworSU5T RVJUIElOVE8gc2FsZXMgVkFMVUVTICgxLCAgMTEwLCAnMjAyMi0wMy0wMicpOworSU5TRVJU IElOVE8gc2FsZXMgVkFMVUVTICgxMCwgMTUwLCAnMjAyMi0wMy0wMScpOworSU5TRVJUIElO VE8gc2FsZXMgVkFMVUVTICgxMCwgOTAsICAnMjAyMi0wMy0wMycpOworSU5TRVJUIElOVE8g c2FsZXMgVkFMVUVTICgxOSwgMjAwLCAnMjAyMi0wMy0wNCcpOworSU5TRVJUIElOVE8gc2Fs ZXMgVkFMVUVTICgyMCwgNTAsICAnMjAyMi0wMy0xMicpOworSU5TRVJUIElOVE8gc2FsZXMg VkFMVUVTICgyMCwgMTcwLCAnMjAyMi0wMy0wMicpOworSU5TRVJUIElOVE8gc2FsZXMgVkFM VUVTICgzMCwgMzAsICAnMjAyMi0wMy0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMw MV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVD VCAqIEZST00gc2FsZXNtYW5zMTBfNDA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1l IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAxMCB8IE1heQor ICAgICAgICAgIDE5IHwgSXZhbm92CisgICAgICAgICAgMjAgfCBTbWlybm9mZgorICAgICAg ICAgIDMwIHwgRm9yZAorKDQgcm93cykKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIFNQTElU IFBBUlRJVElPTiBzYWxlc21hbnMxMF80MCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNtYW5z MTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKSwKKyAgIFBBUlRJVElPTiBzYWxl c21hbnMyMF8zMCBGT1IgVkFMVUVTIEZST00gKDIwKSBUTyAoMzApLAorICAgUEFSVElUSU9O IHNhbGVzbWFuczMwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMzApIFRPICg0MCkpOworU0VMRUNU ICogRlJPTSBzYWxlc21hbnMwMV8xMDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgUG9pcm90 CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfMjA7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAxMCB8IE1heQorICAgICAgICAgIDE5IHwgSXZhbm92CisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzbWFuczIwXzMwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5f bmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMjAgfCBT bWlybm9mZgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tCisgICAgICAgICAgMzAgfCBGb3JkCisoMSByb3cpCisKKy0tIEVSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXMiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInNhbGVzX3NhbGVzbWFuX2lkX2ZrZXkiCitJTlNFUlQgSU5UTyBzYWxlcyBWQUxV RVMgKDQwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInNhbGVzIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJzYWxl c19zYWxlc21hbl9pZF9ma2V5IgorREVUQUlMOiAgS2V5IChzYWxlc21hbl9pZCk9KDQwKSBp cyBub3QgcHJlc2VudCBpbiB0YWJsZSAic2FsZXNtYW5zIi4KKy0tIG9rCitJTlNFUlQgSU5U TyBzYWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CitEUk9QIFRBQkxFIHNh bGVzIENBU0NBREU7CitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworLS0KKy0tIFRl c3Q6IHNwbGl0IHBhcnRpdGlvbiBvZiBwYXJ0aXRpb25lZCB0YWJsZSB3aXRoIHRyaWdnZXJz CistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBL RVksIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2Fs ZXNtYW5faWQpOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBz YWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNh bGVzbWFuczEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgx MCkgVE8gKDQwKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90 Jyk7CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdn ZXIoKSBSRVRVUk5TIHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVH SU4KKwlSQUlTRSBOT1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVu ID0gJSwgbGV2ZWwgPSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVM OworICAgIFJFVFVSTiBOVUxMOworRU5EOworJEJPRFkkOworQ1JFQVRFIFRSSUdHRVIgc2Fs ZXNtYW5zX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFGVEVSIElOU0VS VAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFNUQVRFTUVOVAorICAgIEVYRUNV VEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CitD UkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyCisgICAg QUZURVIgSU5TRVJUCisgICAgT04gc2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggUk9XCisgICAg RVhFQ1VURSBQUk9DRURVUkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMn KTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToK K0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitOT1RJQ0U6ICB0 cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRF UiwgbGV2ZWwgPSBST1cKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFj dGlvbiA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFNUQVRFTUVOVAorLS0gMSB0 cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMx MF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CitOT1RJQ0U6ICB0cmlnZ2VyKHNhbGVzbWFu cykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4gPSBBRlRFUiwgbGV2ZWwgPSBST1cK K0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAg SU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9N ICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAo cm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIwLCAn U21pcm5vZmYnKTsKK05PVElDRTogIHRyaWdnZXIoc2FsZXNtYW5zKSBjYWxsZWQ6IGFjdGlv biA9IElOU0VSVCwgd2hlbiA9IEFGVEVSLCBsZXZlbCA9IFJPVworTk9USUNFOiAgdHJpZ2dl cihzYWxlc21hbnMpIGNhbGxlZDogYWN0aW9uID0gSU5TRVJULCB3aGVuID0gQUZURVIsIGxl dmVsID0gU1RBVEVNRU5UCistLSAxIHRyaWdnZXIgc2hvdWxkIGZpcmUgaGVyZSAocm93KToK K0lOU0VSVCBJTlRPIHNhbGVzbWFuczMwXzQwIFZBTFVFUyAoMzAsICdGb3JkJyk7CitOT1RJ Q0U6ICB0cmlnZ2VyKHNhbGVzbWFucykgY2FsbGVkOiBhY3Rpb24gPSBJTlNFUlQsIHdoZW4g PSBBRlRFUiwgbGV2ZWwgPSBST1cKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMDFfMTA7Cisg c2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0KKyAgICAgICAgICAgMSB8IFBvaXJvdAorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzbWFuczEwXzIwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgMTAgfCBNYXkKKyAgICAgICAg ICAxOSB8IEl2YW5vdgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMyMF8z MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgIDIwIHwgU21pcm5vZmYKKygxIHJvdykKKworU0VMRUNU ICogRlJPTSBzYWxlc21hbnMzMF80MDsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgIDMwIHwgRm9yZAor KDEgcm93KQorCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworRFJPUCBGVU5DVElP TiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKTsKKy0tCistLSBUZXN0OiBzcGxpdCBwYXJ0 aXRpb24gd2l0Y2ggaWRlbnRpdHkgY29sdW1uCistLSBJZiBzcGxpdCBwYXJ0aXRpb24gY29s dW1uIGlzIGlkZW50aXR5LWNvbHVtbiwgY29sdW1ucyBvZiBuZXcgcGFydGl0aW9ucyBhcmUg aWRlbnRpdHktY29sdW1ucyB0b28uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzbWFucyhzYWxl c21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZUyBBUyBJREVOVElUWSBQUklNQVJZIEtFWSwg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc21h bl9pZCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMV8yIFBBUlRJVElPTiBPRiBzYWxlc21h bnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CistLSBDcmVhdGUgbmV3IHBhcnRpdGlv biB3aXRoIGlkZW50aXR5LWNvbHVtbjoKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMyXzUoc2Fs ZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgUFJJTUFSWSBLRVks IHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFU VEFDSCBQQVJUSVRJT04gc2FsZXNtYW5zMl81IEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDUp OworSU5TRVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdQb2ly b3QnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgn SXZhbm92Jyk7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c21hbnMnOjpyZWdjbGFzczo6b2lkOworICAgIGF0dG5hbWUgICAgfCBhdHRpZGVudGl0eSB8 IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tCisgc2FsZXNtYW5faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNtYW5fbmFt ZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMxXzInOjpyZWdjbGFzczo6b2lkOworICAgIGF0 dG5hbWUgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNtYW5faWQgICB8ICAgICAg ICAgICAgIHwgCisgc2FsZXNtYW5fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQor CistLSBTcGxpdCBwYXJ0aXRpb24gaGFzIGlkZW50aXR5LWNvbHVtbjoKK1NFTEVDVCBhdHRu YW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJF IGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfNSc6OnJlZ2NsYXNzOjpv aWQ7CisgICAgYXR0bmFtZSAgICB8IGF0dGlkZW50aXR5IHwgYXR0Z2VuZXJhdGVkIAorLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0KKyBzYWxlc21hbl9p ZCAgIHwgYSAgICAgICAgICAgfCAKKyBzYWxlc21hbl9uYW1lIHwgICAgICAgICAgICAgfCAK KygyIHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2Fs ZXNtYW5zMl81IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMyXzMgRk9SIFZBTFVFUyBG Uk9NICgyKSBUTyAoMyksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zM180IEZPUiBWQUxVRVMg RlJPTSAoMykgVE8gKDQpLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczRfNSBGT1IgVkFMVUVT IEZST00gKDQpIFRPICg1KSk7CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25h bWUpIFZBTFVFUyAoJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9u YW1lKSBWQUxVRVMgKCdGb3JkJyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczFfMjsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAxIHwgUG9pcm90CisoMSByb3cpCisKK1NFTEVDVCAqIEZST00g c2FsZXNtYW5zMl8zOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBJdmFub3YKKygxIHJvdykK KworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzXzQ7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21h bl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8 IE1heQorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczRfNTsKKyBzYWxlc21h bl9pZCB8IHNhbGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQor ICAgICAgICAgICA0IHwgRm9yZAorKDEgcm93KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRl bnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAw IEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMnOjpyZWdjbGFzczo6b2lkOworICAgIGF0dG5h bWUgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNtYW5faWQgICB8IGEgICAgICAg ICAgIHwgCisgc2FsZXNtYW5fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitT RUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJp YnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMxXzInOjpy ZWdjbGFzczo6b2lkOworICAgIGF0dG5hbWUgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVy YXRlZCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisg c2FsZXNtYW5faWQgICB8ICAgICAgICAgICAgIHwgCisgc2FsZXNtYW5fbmFtZSB8ICAgICAg ICAgICAgIHwgCisoMiByb3dzKQorCistLSBOZXcgcGFydGl0aW9ucyBoYXZlIGlkZW50aXR5 LWNvbHVtbnM6CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c21hbnMyXzMnOjpyZWdjbGFzczo6b2lkOworICAgIGF0dG5hbWUgICAgfCBhdHRpZGVudGl0 eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tCisgc2FsZXNtYW5faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNtYW5f bmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0 aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0g PiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMzXzQnOjpyZWdjbGFzczo6b2lkOworICAg IGF0dG5hbWUgICAgfCBhdHRpZGVudGl0eSB8IGF0dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgc2FsZXNtYW5faWQgICB8IGEg ICAgICAgICAgIHwgCisgc2FsZXNtYW5fbmFtZSB8ICAgICAgICAgICAgIHwgCisoMiByb3dz KQorCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBn X2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnM0 XzUnOjpyZWdjbGFzczo6b2lkOworICAgIGF0dG5hbWUgICAgfCBhdHRpZGVudGl0eSB8IGF0 dGdlbmVyYXRlZCAKKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tCisgc2FsZXNtYW5faWQgICB8IGEgICAgICAgICAgIHwgCisgc2FsZXNtYW5fbmFtZSB8 ICAgICAgICAgICAgIHwgCisoMiByb3dzKQorCitEUk9QIFRBQkxFIHNhbGVzbWFucyBDQVND QURFOworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1u cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzbWFuX2lkKTsKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMwMV8xMCBQQVJUSVRJT04gT0Yg c2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEwKTsKKy0tIENyZWF0ZSBuZXcg cGFydGl0aW9uIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgc2Fs ZXNtYW5zMTBfNDAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFuX2lkIElOVCBQUklNQVJZIEtF WSwgZDIgSU5ULCBkMyBEQVRFLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VS VCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVFUyAoJ2R1bW15IHZhbHVlIDEnLCAxOSwgMTAw LCBub3coKSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVT ICgnZHVtbXkgdmFsdWUgMicsIDIwLCAxMDEsIG5vdygpLCAnU21pcm5vZmYnKTsKK0FMVEVS IFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2Fs ZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMxMF80 MCBEUk9QIENPTFVNTiBkMzsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElU SU9OIHNhbGVzbWFuczEwXzQwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICg0MCk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNFUlQgSU5UTyBz YWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZB TFVFUyAoMzAsICdGb3JkJyk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BMSVQgUEFSVElU SU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21hbnMxMF8yMCBG T1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNhbGVzbWFuczIw XzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJT04gc2FsZXNt YW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CitzZWxlY3QgKiBmcm9t IHNhbGVzbWFuczAxXzEwOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSAKKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDEgfCBQb2lyb3QKKygxIHJv dykKKworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMxMF8yMDsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg IDE5IHwgSXZhbm92CisgICAgICAgICAgMTAgfCBNYXkKKygyIHJvd3MpCisKK3NlbGVjdCAq IGZyb20gc2FsZXNtYW5zMjBfMzA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIAor LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAyMCB8IFNtaXJub2Zm CisoMSByb3cpCisKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMzBfNDA7Cisgc2FsZXNtYW5f aWQgfCBzYWxlc21hbl9uYW1lIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAzMCB8IEZvcmQKKygxIHJvdykKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FT Q0FERTsKKy0tCistLSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRB QkxFIHNhbGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hB UigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZ IFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8g KCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04g T0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAy Mi0wMy0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNh bGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQt MDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hcHIyMDIyIChzYWxlc21hbl9pZCBJTlQsIHNh bGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUg REFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBz YWxlc19hcHJfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVz X3JhbmdlIEFUVEFDSCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00g KCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdN YXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjIt MDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3Yn LCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDUsICAnRGVldicsICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3 NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgs ICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcy MDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1 bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAx LTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAg ICA1MTAsICAnMjAyMi0wNS0wNCcpOworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwgICAg ICAgICAgNTAwIHwgMDItMTAtMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAgICB8 ICAgICAgICAgIDE1MCB8IDAyLTExLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAg ICAgfCAgICAgICAgICAxODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDcgfCBMaSAgICAg ICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAgICA5IHwgTXVs bGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAgICAgICAxMiB8 IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAg IDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAtMjAyMgorICAgICAg ICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAg ICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIy CisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYt MjAyMgorICAgICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1 LTA0LTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7Cisg c2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0 ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8 IDA0LTMwLTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCAgICAgICAgICA3 NTAgfCAwNC0xMy0yMDIyCisgICAgICAgICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDQtMDctMjAyMgorICAgICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAg ICAgICAgIDM4MCB8IDA0LTA2LTIwMjIKKyg0IHJvd3MpCisKK0FMVEVSIFRBQkxFIHNhbGVz X2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElU SU9OIHNhbGVzX2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAg UEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0yMCcpIFRPICgnMjAyMi0wNS0wMScpKTsKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNf ZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgTWF5ICAgICAgICAgICB8ICAgICAgICAgMTAw MCB8IDAxLTMxLTIwMjIKKyAgICAgICAgICAxMCB8IEhhbGRlciAgICAgICAgfCAgICAgICAg ICAzNTAgfCAwMS0yOC0yMDIyCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAg ICAgICAgMzc3IHwgMDEtMDktMjAyMgorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8 ICAgICAgICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3Nv biAgICAgIHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorICAgICAgICAgICA3IHwgTGkg ICAgICAgICAgICB8ICAgICAgICAgIDE3NSB8IDAzLTA4LTIwMjIKKyAgICAgICAgICAgOSB8 IE11bGxlciAgICAgICAgfCAgICAgICAgICAyNTAgfCAwMy0xMS0yMDIyCisgICAgICAgICAg MTIgfCBQbGF0byAgICAgICAgIHwgICAgICAgICAgMzUwIHwgMDMtMTktMjAyMgorICAgICAg ICAgICA1IHwgRGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAg ICAgICAgICAxMSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIy CisgICAgICAgICAgIDQgfCBJdmFub3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMt MjAyMgorICAgICAgICAgICAzIHwgRm9yZCAgICAgICAgICB8ICAgICAgICAgMjAwMCB8IDA0 LTMwLTIwMjIKKyAgICAgICAgICAxNCB8IFNtaXRoICAgICAgICAgfCAgICAgICAgICA1MTAg fCAwNS0wNC0yMDIyCisoMTQgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIy OworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0KKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAy NTAgfCAwNC0wNy0yMDIyCisgICAgICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAg ICAgMzgwIHwgMDQtMDYtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAg ICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAgICAg fCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjJfMDFfMTA7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwg c2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICA1IHwgRGVldiAg ICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8IFRy dW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoMiByb3dzKQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7Cisgc2FsZXNtYW5faWQgfCBzYWxl c21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAg ICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0LTEzLTIwMjIKKygxIHJv dykKKworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyXzIwXzMwOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMyB8IEZvcmQgICAgICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIy CisoMSByb3cpCisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2U7CistLQorLS0gQlkgTElTVCBw YXJ0aXRpb25pbmcKKy0tCistLQorLS0gVGVzdDogc3BlY2lmaWMgZXJyb3JzIGZvciBCWSBM SVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNt YW5faWQgSU5ULAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUg VkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQ QVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25v cmQgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywg J1N0LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBB UlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25l emgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJh cm92c2snLCAnVm9sZ29ncmFkJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2Fs ZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CistLSBFUlJPUjog IHBhcnRpdGlvbiAic2FsZXNfZWFzdCIgd291bGQgb3ZlcmxhcCBwYXJ0aXRpb24gInNhbGVz X25vcmQiCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IFNQTElUIFBBUlRJVElPTiBzYWxlc19h bGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX3dlc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9u ZXpoJywgJ1Ntb2xlbnNrJywgJ0JyeWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19lYXN0 IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0b2sn LCAnTXVybWFuc2snKSwKKyAgIFBBUlRJVElPTiBzYWxlc19jZW50cmFsIEZPUiBWQUxVRVMg SU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJykpOworRVJST1I6ICBuZXcgcGFy dGl0aW9uICJzYWxlc19lYXN0IiB3b3VsZCBvdmVybGFwIHdpdGggYW5vdGhlciAobm90IHNw bGl0KSBwYXJ0aXRpb24gInNhbGVzX25vcmQiCitMSU5FIDM6IC4uLkFMVUVTIElOICgnTWFn YWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJywgJ011cm1hbnNrJy4uLgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgd291bGQgb3Zl cmxhcCB3aXRoIGFub3RoZXIgbmV3IHBhcnRpdGlvbiAic2FsZXNfY2VudHJhbCIKK0FMVEVS IFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQ QVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAnU21vbGVu c2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJ TiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElU SU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdW b3JvbmV6aCcsICdWb2xnb2dyYWQnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNhbGVz X3dlc3QiIHdvdWxkIG92ZXJsYXAgd2l0aCBhbm90aGVyIG5ldyBwYXJ0aXRpb24gInNhbGVz X2NlbnRyYWwiCitMSU5FIDI6ICAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMg SU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zay4uLgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogIG5ldyBwYXJ0aXRpb24gInNh bGVzX3dlc3QiIGNhbm5vdCBoYXZlIE5VTEwgdmFsdWUgYmVjYXVzZSBzcGxpdCBwYXJ0aXRp b24gZG9lcyBub3QgaGF2ZQorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJ T04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMg SU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgTlVMTCksCisgICBQQVJU SVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNr JywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFM VUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpKTsKK0VSUk9SOiAgbmV3 IHBhcnRpdGlvbiAic2FsZXNfd2VzdCIgY2Fubm90IGhhdmUgTlVMTCB2YWx1ZSBiZWNhdXNl IHNwbGl0IHBhcnRpdGlvbiBkb2VzIG5vdCBoYXZlCitMSU5FIDI6IC4uLmVzdCBGT1IgVkFM VUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycsIE5VTEwpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBeCitEUk9QIFRBQkxFIHNhbGVzX2xpc3Q7CistLQorLS0gVGVzdDogdHdvIHNw ZWNpZmljIGVycm9ycyBmb3IgQlkgTElTVCBwYXJ0aXRpb25pbmc6CistLSAgICogbmV3IHBh cnRpdGlvbnMgbm90IGhhcyBOVUxMIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4K Ky0tICAgKiBuZXcgcGFydGl0aW9ucyBub3QgaGFzIGEgdmFsdWUgdGhhdCBzcGxpdCBwYXJ0 aXRpb24gaGFzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5faWQg SU5ULAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hB UigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJ T04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFS VElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQ ZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAn U21vbGVuc2snLCAnQnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2sn LCAnVm9sZ29ncmFkJywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CistLSBFUlJPUjogIG5ldyBw YXJ0aXRpb25zIG5vdCBoYXZlIHZhbHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMK K0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRP CisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgnLCAn U21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZB TFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAg UEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXph bicsICdWb2xnb2dyYWQnKSk7CitFUlJPUjogIG5ldyBwYXJ0aXRpb25zIG5vdCBoYXZlIHZh bHVlIE5VTEwgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMKKy0tIEVSUk9SOiAgbmV3IHBhcnRp dGlvbnMgbm90IGhhdmUgdmFsdWUgJ1ZvbGdvZ3JhZCcgYnV0IHNwbGl0IHBhcnRpdGlvbiBo YXMKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJ TlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9yb25lemgn LCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9S IFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3RvaycpLAor ICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdL YXphbicsIE5VTEwpKTsKK0VSUk9SOiAgbmV3IHBhcnRpdGlvbnMgbm90IGhhdmUgdmFsdWUg J1ZvbGdvZ3JhZCcgYnV0IHNwbGl0IHBhcnRpdGlvbiBoYXMKK0RST1AgVEFCTEUgc2FsZXNf bGlzdDsKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgU1BMSVQgUEFSVElU SU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19saXN0Cisoc2FsZXNtYW5f aWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisgc2FsZXNtYW5fbmFtZSBW QVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwKKyBzYWxlc19hbW91bnQg SU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0 ZSk7CitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc21hbl9uYW1lX2lkeCBPTiBzYWxl c19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc21hbl9uYW1lKTsKK0NSRUFURSBJTkRFWCBzYWxl c19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxl c19zdGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNf bGlzdCBGT1IgVkFMVUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWto dGEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg Rk9SIFZBTFVFUyBJTiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlh bnNrJywgJ01hZ2FkYW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAn VmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgREVGQVVMVDsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFu X25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAo J1RydW1wJywgICAgJ01hZ2FkYW4nLCAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXJub2ZmJywgJ1Ntb2xlbnNrJywg ICAgICAgNTAwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUyAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRl LCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ01vc2Nv dycsICAgICAgICAgNzUwLCAgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUyAoJ0RlZXYnLCAgICAgJ1Zvcm9uZXpoJywgICAgICAgMjUwLCAgJzIwMjIt MDMtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVz X3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BvaXJvdCcsICAg J0themFuJywgICAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNh bGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwg JzIwMjItMDMtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUs IHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0xpJywg ICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91 bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAgICAg MTIwMCwgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFu X25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAo J0hhbGRlcicsICAgJ011cm1hbnNrJywgICAgICAgODAwLCAgJzIwMjItMDMtMDInKTsKK0lO U0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxl c19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ0JyeWFuc2snLCAg ICAgICAgNjUwLCAgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNh bGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZB TFVFUyAoJ1NtaXRoJywgICAgJ1ZvbGdvZ3JhZCcsICAgICAgMzUwLCAgJzIwMjItMDMtMTAn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRl LCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0dhbmRpJywgICAgJ01vc2Nv dycsICAgICAgICAgMTUwLCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xp c3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2Rh dGUpIFZBTFVFUyAoJ1BsYXRvJywgICAgJ1Zvcm9uZXpoJywgICAgICAgOTUwLCAgJzIwMjIt MDMtMDUnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFSVElUSU9OIHNhbGVz X2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFMVUVTIElOICgnVm9y b25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2Vh c3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFyb3ZzaycsICdWbGFkaXZvc3Rv aycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9SIFZBTFVFUyBJTiAoJ01vc2Nv dycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgIHNhbGVzX3N0YXRlICAgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgMiB8IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAgICAgICB8ICAgICAgICAgIDUwMCB8 IDAzLTAzLTIwMjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAg ICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxl ciAgICAgICAgfCBCcnlhbnNrICAgICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIK KyAgICAgICAgICAxNCB8IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICAgICB8ICAgICAg ICAgIDk1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAgfCBN b3Njb3cgICAgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKyAgICAgICAgICAg NiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICAgICB8ICAgICAgICAgMTAwMCB8IDAz LTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgfCBWb2xnb2dyYWQgICAg ICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAg ICAgICAgfCBNb3Njb3cgICAgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKyAg ICAgICAgICAgMSB8IFRydW1wICAgICAgICAgfCBNYWdhZGFuICAgICAgICB8ICAgICAgICAg MTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAgOCB8IExpICAgICAgICAgICAgfCBWbGFk aXZvc3RvayAgICB8ICAgICAgICAgMTE1MCB8IDAzLTA5LTIwMjIKKyAgICAgICAgICAgMyB8 IEZvcmQgICAgICAgICAgfCBTdC4gUGV0ZXJzYnVyZyB8ICAgICAgICAgMjAwMCB8IDAzLTA1 LTIwMjIKKyAgICAgICAgICAgNyB8IE1heSAgICAgICAgICAgfCBVa2h0YSAgICAgICAgICB8 ICAgICAgICAgMTIwMCB8IDAzLTA2LTIwMjIKKyAgICAgICAgICAgOSB8IE1heSAgICAgICAg ICAgfCBVa2h0YSAgICAgICAgICB8ICAgICAgICAgMTIwMCB8IDAzLTExLTIwMjIKKyAgICAg ICAgICAxMCB8IEhhbGRlciAgICAgICAgfCBNdXJtYW5zayAgICAgICB8ICAgICAgICAgIDgw MCB8IDAzLTAyLTIwMjIKKygxNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3dlc3Q7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMiB8 IFNtaXJub2ZmICAgICAgfCBTbW9sZW5zayAgICB8ICAgICAgICAgIDUwMCB8IDAzLTAzLTIw MjIKKyAgICAgICAgICAgNSB8IERlZXYgICAgICAgICAgfCBWb3JvbmV6aCAgICB8ICAgICAg ICAgIDI1MCB8IDAzLTA3LTIwMjIKKyAgICAgICAgICAxMSB8IE11bGxlciAgICAgICAgfCBC cnlhbnNrICAgICB8ICAgICAgICAgIDY1MCB8IDAzLTA1LTIwMjIKKyAgICAgICAgICAxNCB8 IFBsYXRvICAgICAgICAgfCBWb3JvbmV6aCAgICB8ICAgICAgICAgIDk1MCB8IDAzLTA1LTIw MjIKKyg0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfZWFzdDsKKyBzYWxlc21hbl9p ZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVz X2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAxIHwgVHJ1bXAgICAgICAg ICB8IE1hZ2FkYW4gICAgIHwgICAgICAgICAxMDAwIHwgMDMtMDEtMjAyMgorICAgICAgICAg ICA4IHwgTGkgICAgICAgICAgICB8IFZsYWRpdm9zdG9rIHwgICAgICAgICAxMTUwIHwgMDMt MDktMjAyMgorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOworIHNhbGVz bWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8ICBzYWxlc19zdGF0ZSAgIHwgc2FsZXNfYW1vdW50 IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDMgfCBG b3JkICAgICAgICAgIHwgU3QuIFBldGVyc2J1cmcgfCAgICAgICAgIDIwMDAgfCAwMy0wNS0y MDIyCisgICAgICAgICAgIDcgfCBNYXkgICAgICAgICAgIHwgVWtodGEgICAgICAgICAgfCAg ICAgICAgIDEyMDAgfCAwMy0wNi0yMDIyCisgICAgICAgICAgIDkgfCBNYXkgICAgICAgICAg IHwgVWtodGEgICAgICAgICAgfCAgICAgICAgIDEyMDAgfCAwMy0xMS0yMDIyCisgICAgICAg ICAgMTAgfCBIYWxkZXIgICAgICAgIHwgTXVybWFuc2sgICAgICAgfCAgICAgICAgICA4MDAg fCAwMy0wMi0yMDIyCisoNCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWw7 Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19h bW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8 IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIw MjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCBLYXphbiAgICAgICB8ICAgICAg ICAgMTAwMCB8IDAzLTAxLTIwMjIKKyAgICAgICAgICAxMiB8IFNtaXRoICAgICAgICAgfCBW b2xnb2dyYWQgICB8ICAgICAgICAgIDM1MCB8IDAzLTEwLTIwMjIKKyAgICAgICAgICAxMyB8 IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDE1MCB8IDAzLTA4LTIw MjIKKyg0IHJvd3MpCisKKy0tIFVzZSBpbmRleHNjYW4gZm9yIHRlc3QgaW5kZXhlcyBhZnRl ciBzcGxpdCBwYXJ0aXRpb24KK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5h YmxlX3NlcXNjYW4gPSBPRkY7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2NlbnRyYWwgV0hFUkUg c2FsZXNfc3RhdGUgPSAnTW9zY293JzsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUg fCBzYWxlc19zdGF0ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLQorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8IE1vc2NvdyAgICAgIHwg ICAgICAgICAgNzUwIHwgMDMtMDQtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAg ICB8IE1vc2NvdyAgICAgIHwgICAgICAgICAgMTUwIHwgMDMtMDgtMjAyMgorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nv dyc7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxl c19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAg NCB8IEl2YW5vdiAgICAgICAgfCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0 LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCBNb3Njb3cgICAgICB8ICAg ICAgICAgIDE1MCB8IDAzLTA4LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2Fs ZXNfbGlzdCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfc3RhdGUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19k YXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNCB8IEl2YW5vdiAgICAgICAg fCBNb3Njb3cgICAgICB8ICAgICAgICAgIDc1MCB8IDAzLTA0LTIwMjIKKygxIHJvdykKKwor U0VUIGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOwor RFJPUCBUQUJMRSBzYWxlc19saXN0OworLS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIHNwbGl0 IERFRkFVTFQgcGFydGl0aW9uIHRvIHBhcnRpdGlvbnMgd2l0aCBzcGFjZXMgYmV0d2VlbiBi b3VuZHM7CistLSAgICogcmFuZG9tIG9yZGVyIG9mIHBhcnRpdGlvbnMgaW4gU1BMSVQgUEFS VElUSU9OIGNvbW1hbmQuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChzYWxlc21h bl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3VudCBJTlQs IHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRlKTsKK0NS RUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFV TFQ7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAx MDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgy LCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAn MjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0Rl ZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0w My0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29u JywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgw LCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIs ICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIw MjItMDUtMDQnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBz YWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxULAor ICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJT04gc2FsZXNfamFu MjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNhZGUgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykg VE8gKCcyMDIyLTA0LTEwJykpOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyXzFkZWNh ZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2Fs ZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKygxIHJvdykKKworU0VMRUNUICogRlJPTSBzYWxlc19mZWIy MDIyXzFkZWNhZGU7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1v dW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8 ICAgICAgICAgIDUwMCB8IDAyLTA5LTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAg ICAgfCAgICAgICAgICAxNTAgfCAwMi0wNy0yMDIyCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25h bWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcgfCBM aSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorKDEgcm93KQorCitT RUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNh bGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAg ICAgIDUgfCBEZWV2ICAgICAgICAgIHwgICAgICAgICAgMjUwIHwgMDQtMDctMjAyMgorICAg ICAgICAgIDExIHwgVHJ1bXAgICAgICAgICB8ICAgICAgICAgIDM4MCB8IDA0LTA2LTIwMjIK KygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworIHNhbGVzbWFuX2lk IHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0yMDIy CisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQtMzAt MjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8IDA0 LTEzLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAxODUg fCAwMi0yMy0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAgICAg MjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAg ICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAg ICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAg IHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAyMgorKDggcm93cykKKworRFJPUCBUQUJMRSBz YWxlc19yYW5nZTsKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBub24tREVGQVVM VCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVuIGJvdW5kczsK Ky0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQQVJUSVRJT04g Y29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElO VCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNf ZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxFIHNhbGVz X290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAxLTMx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYnLCA1 MDAsICAnMjAyMi0wMi0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgz LCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAsICAn MjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAgJ1Bv aXJvdCcsICAgMTUwLCAgJzIwMjItMDItMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNFUlQg SU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAyMi0w Mi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxlcics ICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0wNicp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAgMzUw LCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTMs ICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOworQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2FsbCBJTlRPCisg IChQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19qYW4y MDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0w MS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBU TyAoJzIwMjItMDQtMTAnKSk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjJfMWRlY2Fk ZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxl c19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tCisgICAgICAgICAgMTMgfCBHYW5kaSAgICAgICAgIHwgICAgICAgICAg Mzc3IHwgMDEtMDktMjAyMgorKDEgcm93KQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIw MjJfMWRlY2FkZTsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91 bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDIgfCBTbWlybm9mZiAgICAgIHwg ICAgICAgICAgNTAwIHwgMDItMDktMjAyMgorICAgICAgICAgICA2IHwgUG9pcm90ICAgICAg ICB8ICAgICAgICAgIDE1MCB8IDAyLTA3LTIwMjIKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gc2FsZXNfbWFyMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFt ZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgNyB8IExp ICAgICAgICAgICAgfCAgICAgICAgICAxNzUgfCAwMy0wOC0yMDIyCisoMSByb3cpCisKK1NF TEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xZGVjYWRlOworIHNhbGVzbWFuX2lkIHwgc2Fs ZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAg ICAgNSB8IERlZXYgICAgICAgICAgfCAgICAgICAgICAyNTAgfCAwNC0wNy0yMDIyCisgICAg ICAgICAgMTEgfCBUcnVtcCAgICAgICAgIHwgICAgICAgICAgMzgwIHwgMDQtMDYtMjAyMgor KDIgcm93cykKKworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7Cisgc2FsZXNtYW5faWQg fCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwgc2FsZXNfZGF0ZSAKKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAg ICAgICAgIDE0IHwgU21pdGggICAgICAgICB8ICAgICAgICAgIDUxMCB8IDA1LTA0LTIwMjIK KyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAwMS0zMS0y MDIyCisgICAgICAgICAgIDMgfCBGb3JkICAgICAgICAgIHwgICAgICAgICAyMDAwIHwgMDQt MzAtMjAyMgorICAgICAgICAgICA0IHwgSXZhbm92ICAgICAgICB8ICAgICAgICAgIDc1MCB8 IDA0LTEzLTIwMjIKKyAgICAgICAgICAgOCB8IEVyaWNzc29uICAgICAgfCAgICAgICAgICAx ODUgfCAwMi0yMy0yMDIyCisgICAgICAgICAgIDkgfCBNdWxsZXIgICAgICAgIHwgICAgICAg ICAgMjUwIHwgMDMtMTEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAg ICAgICAgIDM1MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAg fCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisoOCByb3dzKQorCitEUk9QIFRBQkxFIHNh bGVzX3JhbmdlOworLS0KKy0tIFRlc3QgZm9yIHNwbGl0IG5vbi1ERUZBVUxUIHBhcnRpdGlv biB0byBERUZBVUxUIHBhcnRpdGlvbiArIHBhcnRpdGlvbnMKKy0tIHdpdGggc3BhY2VzIGJl dHdlZW4gYm91bmRzLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5f aWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBz YWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVB VEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9N ICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcy MDIyLTAyLTEwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9y ZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0 LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90Jywg ICAxNTAsICAnMjAyMi0wMi0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAs ICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwg J0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAy Mi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRp JywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0w MScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZB VUxUKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAg IDUxMCwgICcyMDIyLTA1LTA0Jyk7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworIHNh bGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVzX2Ftb3VudCB8IHNhbGVzX2RhdGUg CistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyAgICAgICAgICAgMSB8IE1heSAgICAgICAgICAgfCAgICAgICAgIDEwMDAgfCAw MS0zMS0yMDIyCisgICAgICAgICAgMTAgfCBIYWxkZXIgICAgICAgIHwgICAgICAgICAgMzUw IHwgMDEtMjgtMjAyMgorICAgICAgICAgIDEzIHwgR2FuZGkgICAgICAgICB8ICAgICAgICAg IDM3NyB8IDAxLTA5LTIwMjIKKyAgICAgICAgICAgMiB8IFNtaXJub2ZmICAgICAgfCAgICAg ICAgICA1MDAgfCAwMi0xMC0yMDIyCisgICAgICAgICAgIDYgfCBQb2lyb3QgICAgICAgIHwg ICAgICAgICAgMTUwIHwgMDItMTEtMjAyMgorICAgICAgICAgICA4IHwgRXJpY3Nzb24gICAg ICB8ICAgICAgICAgIDE4NSB8IDAyLTIzLTIwMjIKKyAgICAgICAgICAgMyB8IEZvcmQgICAg ICAgICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFu b3YgICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwg RGVldiAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAx MSB8IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisgICAgICAg ICAgIDcgfCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAg ICAgICAgICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIK KyAgICAgICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0y MDIyCisgICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUt MDQtMjAyMgorKDE0IHJvd3MpCisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKKyBz YWxlc21hbl9pZCB8IHNhbGVzbWFuX25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRl IAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tCisgICAgICAgICAgIDEgfCBNYXkgICAgICAgICAgIHwgICAgICAgICAxMDAwIHwg MDEtMzEtMjAyMgorICAgICAgICAgIDEwIHwgSGFsZGVyICAgICAgICB8ICAgICAgICAgIDM1 MCB8IDAxLTI4LTIwMjIKKyAgICAgICAgICAxMyB8IEdhbmRpICAgICAgICAgfCAgICAgICAg ICAzNzcgfCAwMS0wOS0yMDIyCisoMyByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Zl YjIwMjI7Cisgc2FsZXNtYW5faWQgfCBzYWxlc21hbl9uYW1lIHwgc2FsZXNfYW1vdW50IHwg c2FsZXNfZGF0ZSAKKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLQorICAgICAgICAgICAyIHwgU21pcm5vZmYgICAgICB8ICAgICAg ICAgIDUwMCB8IDAyLTEwLTIwMjIKKyAgICAgICAgICAgNiB8IFBvaXJvdCAgICAgICAgfCAg ICAgICAgICAxNTAgfCAwMi0xMS0yMDIyCisgICAgICAgICAgIDggfCBFcmljc3NvbiAgICAg IHwgICAgICAgICAgMTg1IHwgMDItMjMtMjAyMgorKDMgcm93cykKKworU0VMRUNUICogRlJP TSBzYWxlc19hcHIyMDIyOworIHNhbGVzbWFuX2lkIHwgc2FsZXNtYW5fbmFtZSB8IHNhbGVz X2Ftb3VudCB8IHNhbGVzX2RhdGUgCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAgICAgMyB8IEZvcmQgICAgICAg ICAgfCAgICAgICAgIDIwMDAgfCAwNC0zMC0yMDIyCisgICAgICAgICAgIDQgfCBJdmFub3Yg ICAgICAgIHwgICAgICAgICAgNzUwIHwgMDQtMTMtMjAyMgorICAgICAgICAgICA1IHwgRGVl diAgICAgICAgICB8ICAgICAgICAgIDI1MCB8IDA0LTA3LTIwMjIKKyAgICAgICAgICAxMSB8 IFRydW1wICAgICAgICAgfCAgICAgICAgICAzODAgfCAwNC0wNi0yMDIyCisoNCByb3dzKQor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX290aGVyczsKKyBzYWxlc21hbl9pZCB8IHNhbGVzbWFu X25hbWUgfCBzYWxlc19hbW91bnQgfCBzYWxlc19kYXRlIAorLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgICAgICAgICAgIDcg fCBMaSAgICAgICAgICAgIHwgICAgICAgICAgMTc1IHwgMDMtMDgtMjAyMgorICAgICAgICAg ICA5IHwgTXVsbGVyICAgICAgICB8ICAgICAgICAgIDI1MCB8IDAzLTExLTIwMjIKKyAgICAg ICAgICAxMiB8IFBsYXRvICAgICAgICAgfCAgICAgICAgICAzNTAgfCAwMy0xOS0yMDIyCisg ICAgICAgICAgMTQgfCBTbWl0aCAgICAgICAgIHwgICAgICAgICAgNTEwIHwgMDUtMDQtMjAy MgorKDQgcm93cykKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKy0tCitEUk9QIFNDSEVN QSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKaW5kZXggMTAzZTExNDgzZDIuLmM2Zjk3NGQ3YjVjIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUKQEAgLTEyNyw3ICsxMjcsNyBAQCB0ZXN0OiBwbGFuY2FjaGUgbGlt aXQgcGxwZ3NxbCBjb3B5MiB0ZW1wIGRvbWFpbiByYW5nZWZ1bmNzIHByZXBhcmUgY29udmVy c2lvbiB0cgogIyBUaGUgc3RhdHMgdGVzdCByZXNldHMgc3RhdHMsIHNvIG5vdGhpbmcgZWxz ZSBuZWVkaW5nIHN0YXRzIGFjY2VzcyBjYW4gYmUgaW4KICMgdGhpcyBncm91cC4KICMgLS0t LS0tLS0tLQotdGVzdDogcGFydGl0aW9uX2pvaW4gcGFydGl0aW9uX3BydW5lIHJlbG9wdGlv bnMgaGFzaF9wYXJ0IGluZGV4aW5nIHBhcnRpdGlvbl9hZ2dyZWdhdGUgcGFydGl0aW9uX2lu Zm8gdHVwbGVzb3J0IGV4cGxhaW4gY29tcHJlc3Npb24gbWVtb2l6ZSBzdGF0cwordGVzdDog cGFydGl0aW9uX21lcmdlIHBhcnRpdGlvbl9zcGxpdCBwYXJ0aXRpb25fam9pbiBwYXJ0aXRp b25fcHJ1bmUgcmVsb3B0aW9ucyBoYXNoX3BhcnQgaW5kZXhpbmcgcGFydGl0aW9uX2FnZ3Jl Z2F0ZSBwYXJ0aXRpb25faW5mbyB0dXBsZXNvcnQgZXhwbGFpbiBjb21wcmVzc2lvbiBtZW1v aXplIHN0YXRzCiAKICMgZXZlbnRfdHJpZ2dlciBjYW5ub3QgcnVuIGNvbmN1cnJlbnRseSB3 aXRoIGFueSB0ZXN0IHRoYXQgcnVucyBEREwKICMgb2lkam9pbnMgaXMgcmVhZC1vbmx5LCB0 aG91Z2gsIGFuZCBzaG91bGQgcnVuIGxhdGUgZm9yIGJlc3QgY292ZXJhZ2UKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwgYi9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fbWVyZ2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi41YTcyNGNlNjVkYgotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9tZXJnZS5zcWwKQEAgLTAsMCArMSw0MTEg QEAKKy0tCistLSBQQVJUSVRJT05TX01FUkdFCistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxF IC4uLiBNRVJHRSBQQVJUSVRJT05TIC4uLiIgY29tbWFuZAorLS0KKworQ1JFQVRFIFNDSEVN QSBwYXJ0aXRpb25zX21lcmdlX3NjaGVtYTsKK1NFVCBzZWFyY2hfcGF0aCA9IHBhcnRpdGlv bnNfbWVyZ2Vfc2NoZW1hLCBwdWJsaWM7CisKKy0tCistLSBCWSBSQU5HRSBwYXJ0aXRpb25p bmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJvciBjb2RlcworLS0KK0NSRUFURSBUQUJM RSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIo MzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBS QU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMSBQQVJUSVRJ T04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMS0xMi0wMScpIFRPICgn MjAyMS0xMi0zMScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9G IHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjIt MDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpOwor CitDUkVBVEUgVEFCTEUgc2FsZXNfYXByMjAyMiAoc2FsZXNtYW5faWQgSU5ULCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5ULCBzYWxlc19kYXRlIERBVEUp IFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFCTEUgc2FsZXNf YXByXzEgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0wMScpIFRPICgnMjAyMi0wNC0xNScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl8y IFBBUlRJVElPTiBPRiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MTUnKSBUTyAoJzIwMjItMDUtMDEnKTsKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIEFUVEFD SCBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAx JykgVE8gKCcyMDIyLTA1LTAxJyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFS VElUSU9OIE9GIHNhbGVzX3JhbmdlIERFRkFVTFQ7CisKKy0tIEVSUk9SOiAgcGFydGl0aW9u IHdpdGggbmFtZSAic2FsZXNfZmViMjAyMiIgYWxyZWFkeSB1c2VkCitBTFRFUiBUQUJMRSBz YWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIyMDIyLCBzYWxlc19tYXIy MDIyLCBzYWxlc19mZWIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKKy0tIEVS Uk9SOiAgY2Fubm90IG1lcmdlIG5vbi10YWJsZSBwYXJ0aXRpb24gInNhbGVzX2FwcjIwMjIi CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19mZWIy MDIyLCBzYWxlc19tYXIyMDIyLCBzYWxlc19hcHIyMDIyKSBJTlRPIHNhbGVzX2ZlYl9tYXJf YXByMjAyMjsKKy0tIEVSUk9SOiAgaW52YWxpZCBwYXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRp b24gInNhbGVzX21hcjIwMjIiIGNhbiBub3QgYmUgbWVyZ2VkCistLSAoc3BhY2UgYmV0d2Vl biBzZWN0aW9ucyBzYWxlc19qYW4yMDIyIGFuZCBzYWxlc19tYXIyMDIyKQorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfamFuMjAyMiwgc2FsZXNf bWFyMjAyMikgSU5UTyBzYWxlc19qYW5fbWFyMjAyMjsKKy0tIEVSUk9SOiAgaW52YWxpZCBw YXJ0aXRpb25zIG9yZGVyLCBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIiIGNhbiBub3QgYmUg bWVyZ2VkCistLSAoc3BhY2UgYmV0d2VlbiBzZWN0aW9ucyBzYWxlc19kZWMyMDIxIGFuZCBz YWxlc19qYW4yMDIyKQorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElUSU9O UyAoc2FsZXNfZGVjMjAyMSwgc2FsZXNfamFuMjAyMiwgc2FsZXNfZmViMjAyMikgSU5UTyBz YWxlc19kZWNfamFuX2ZlYjIwMjI7CisKKy0tIE5PIEVSUk9SOiB0ZXN0IGZvciBjdXN0b20g cGFydGl0aW9ucyBvcmRlcgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgTUVSR0UgUEFSVElU SU9OUyAoc2FsZXNfZmViMjAyMiwgc2FsZXNfbWFyMjAyMiwgc2FsZXNfamFuMjAyMikgSU5U TyBzYWxlc19qYW5fZmViX21hcjIwMjI7CisKK1NFTEVDVCBjLm9pZDo6cGdfY2F0YWxvZy5y ZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9nLnBnX2dl dF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9nLnBnX2Ns YXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9IGkuaW5o cmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3MKKyAgT1JE RVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpID0g J0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0YWxvZy50ZXh0 OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gQWRkIHJvd3MgaW50byBw YXJ0aXRpb25lZCB0YWJsZSB0aGVuIG1lcmdlIHBhcnRpdGlvbnMKKy0tCitDUkVBVEUgVEFC TEUgc2FsZXNfcmFuZ2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkg UkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElU SU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAo JzIwMjItMDItMDEnKTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIy LTAzLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfbWFyMjAyMiBQQVJUSVRJT04gT0Ygc2Fs ZXNfcmFuZ2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0w MScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3Jh bmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsK K0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIERF RkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04gc2Fs ZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAg JzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdG b3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjIt MDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3Qn LCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1 MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEw LCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcy MDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2Fu ZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU IHBnX2NhdGFsb2cucGdfZ2V0X3BhcnRrZXlkZWYoJ3NhbGVzX3JhbmdlJzo6cmVnY2xhc3Mp OworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBjb25kaXRpb25zOgorU0VMRUNUIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtpbmQsIGluaGRldGFjaHBlbmRpbmcsIHBn X2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0Ym91bmQsIGMub2lkKQorICBGUk9NIHBn X2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxvZy5wZ19pbmhlcml0cyBpCisgIFdIRVJF IGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhwYXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpy ZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJv dW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpw Z19jYXRhbG9nLnRleHQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzX2ZlYjIwMjIsIHNhbGVzX21hcjIwMjIsIHNhbGVzX2FwcjIwMjIpIElO VE8gc2FsZXNfZmViX21hcl9hcHIyMDIyOworCistLSBzaG93IHBhcnRpdGlvbnMgd2l0aCBj b25kaXRpb25zOgorU0VMRUNUIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzLCBjLnJlbGtp bmQsIGluaGRldGFjaHBlbmRpbmcsIHBnX2NhdGFsb2cucGdfZ2V0X2V4cHIoYy5yZWxwYXJ0 Ym91bmQsIGMub2lkKQorICBGUk9NIHBnX2NhdGFsb2cucGdfY2xhc3MgYywgcGdfY2F0YWxv Zy5wZ19pbmhlcml0cyBpCisgIFdIRVJFIGMub2lkID0gaS5pbmhyZWxpZCBBTkQgaS5pbmhw YXJlbnQgPSAnc2FsZXNfcmFuZ2UnOjpyZWdjbGFzcworICBPUkRFUiBCWSBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkgPSAnREVGQVVMVCcsIGMub2lk OjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9nLnRleHQ7CisKK1NFTEVDVCAqIEZS T00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViX21hcl9hcHIyMDIy JyBhbmQgc2NoZW1hbmFtZSA9ICdwYXJ0aXRpb25zX21lcmdlX3NjaGVtYSc7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2phbjIwMjI7CitT RUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYl9tYXJfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2Fs ZXNfb3RoZXJzOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0ZXN0IGluZGV4ZXMKK1NFVCBl bmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViX21hcl9hcHIyMDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAn MjAyMi0wMS0wMSc7CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxl X3NlcXNjYW4gPSBPTjsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAz LTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCist LSBNZXJnZSBwYXJ0aXRpb25zIChpbmNsdWRlIERFRkFVTFQgcGFydGl0aW9uKSBpbnRvIHBh cnRpdGlvbiB3aXRoIHRoZSBzYW1lCistLSBuYW1lCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19tYXIyMDIyLCBzYWxl c19vdGhlcnMpIElOVE8gc2FsZXNfb3RoZXJzOworCitzZWxlY3QgKiBmcm9tIHNhbGVzX290 aGVyczsKKworLS0gc2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBj Lm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5n LCBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJP TSBwZ19jYXRhbG9nLnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBX SEVSRSBjLm9pZCA9IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX3Jhbmdl Jzo6cmVnY2xhc3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBh cnRib3VuZCwgYy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFz czo6cGdfY2F0YWxvZy50ZXh0OworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQor LS0gVGVzdCBmb3I6CistLSAgICogY29tcG9zaXRlIHBhcnRpdGlvbiBrZXk7CistLSAgICog R0VORVJBVEVEIGNvbHVtbjsKKy0tICAgKiBjb2x1bW4gd2l0aCBERUZBVUxUIHZhbHVlLgor LS0KK0NSRUFURSBUQUJMRSBzYWxlc19kYXRlIChzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzAp LCBzYWxlc195ZWFyIElOVCwgc2FsZXNfbW9udGggSU5ULCBzYWxlc19kYXkgSU5ULAorICBz YWxlc19kYXRlIFZBUkNIQVIoMTApIEdFTkVSQVRFRCBBTFdBWVMgQVMKKyAgICAoTFBBRChz YWxlc195ZWFyOjp0ZXh0LCA0LCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX21vbnRoOjp0 ZXh0LCAyLCAnMCcpIHx8ICcuJyB8fCBMUEFEKHNhbGVzX2RheTo6dGV4dCwgMiwgJzAnKSkg U1RPUkVELAorICBzYWxlc19kZXBhcnRtZW50IFZBUkNIQVIoMzApIERFRkFVTFQgJ1NhbGVz IGRlcGFydG1lbnQnKQorICBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX3llYXIsIHNhbGVz X21vbnRoLCBzYWxlc19kYXkpOworCitDUkVBVEUgVEFCTEUgc2FsZXNfZGVjMjAyMiBQQVJU SVRJT04gT0Ygc2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjEsIDEyLCAxKSBUTyAo MjAyMiwgMSwgMSk7CitDUkVBVEUgVEFCTEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Yg c2FsZXNfZGF0ZSBGT1IgVkFMVUVTIEZST00gKDIwMjIsIDEsIDEpIFRPICgyMDIyLCAyLCAx KTsKK0NSRUFURSBUQUJMRSBzYWxlc19mZWIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRl IEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMiwgMSkgVE8gKDIwMjIsIDMsIDEpOworQ1JFQVRF IFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMg RlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhWQUxVRSwgTUFYVkFMVUUpOwor CitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNh bGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMSwgMTIsIDcp OworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjEsIDEyLCA4 KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAxLCAx KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAyLCA0 KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAxLCAy KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCAyLCAx KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjEnLCAyMDIyLCAzLCAz KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjInLCAyMDIyLCAzLCA0 KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5fbmFtZSwgc2FsZXNfeWVhciwg c2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFuYWdlcjMnLCAyMDIyLCA1LCAx KTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19k ZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBz YWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcjsKKworQUxURVIgVEFC TEUgc2FsZXNfZGF0ZSBNRVJHRSBQQVJUSVRJT05TIChzYWxlc19qYW4yMDIyLCBzYWxlc19m ZWIyMDIyKSBJTlRPIHNhbGVzX2phbl9mZWIyMDIyOworCitJTlNFUlQgSU5UTyBzYWxlc19k YXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp IFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19qYW5fZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0RS T1AgVEFCTEUgc2FsZXNfZGF0ZTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMg b2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2VycworLS0KK0NSRUFURSBUQUJMRSBz YWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZB UkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKKworQ1JFQVRF IFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVF UyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzIwIFBBUlRJ VElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0NSRUFU RSBUQUJMRSBzYWxlc21hbnMyMF8zMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxV RVMgRlJPTSAoMjApIFRPICgzMCk7CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMzBfNDAgUEFS VElUSU9OIE9GIHNhbGVzbWFucyBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDApOworCitJ TlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAgJ1BvaXJvdCcpOworCitDUkVBVEUg T1IgUkVQTEFDRSBGVU5DVElPTiBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIoKSBSRVRVUk5T IHRyaWdnZXIgTEFOR1VBR0UgJ3BscGdzcWwnIEFTICRCT0RZJAorQkVHSU4KKwlSQUlTRSBO T1RJQ0UgJ3RyaWdnZXIoJSkgY2FsbGVkOiBhY3Rpb24gPSAlLCB3aGVuID0gJSwgbGV2ZWwg PSAlJywgVEdfQVJHVlswXSwgVEdfT1AsIFRHX1dIRU4sIFRHX0xFVkVMOworICAgIFJFVFVS TiBOVUxMOworRU5EOworJEJPRFkkOworCitDUkVBVEUgVFJJR0dFUiBzYWxlc21hbnNfYWZ0 ZXJfaW5zZXJ0X3N0YXRlbWVudF90cmlnZ2VyCisgICAgQUZURVIgSU5TRVJUCisgICAgT04g c2FsZXNtYW5zCisgICAgRk9SIEVBQ0ggU1RBVEVNRU5UCisgICAgRVhFQ1VURSBQUk9DRURV UkUgYWZ0ZXJfaW5zZXJ0X3Jvd190cmlnZ2VyKCdzYWxlc21hbnMnKTsKKworQ1JFQVRFIFRS SUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9yb3dfdHJpZ2dlcgorICAgIEFGVEVSIElO U0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFJPVworICAgIEVYRUNVVEUg UFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNtYW5zJyk7CisKKy0t IDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVyZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VS VCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CistLSAxIHRyaWdnZXIgc2hv dWxkIGZpcmUgaGVyZSAocm93KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzIwIFZBTFVF UyAoMTksICdJdmFub3YnKTsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIE1FUkdFIFBBUlRJ VElPTlMgKHNhbGVzbWFuczEwXzIwLCBzYWxlc21hbnMyMF8zMCwgc2FsZXNtYW5zMzBfNDAp IElOVE8gc2FsZXNtYW5zMTBfNDA7CisKKy0tIDIgdHJpZ2dlcnMgc2hvdWxkIGZpcmUgaGVy ZSAocm93ICsgc3RhdGVtZW50KToKK0lOU0VSVCBJTlRPIHNhbGVzbWFucyBWQUxVRVMgKDIw LCAnU21pcm5vZmYnKTsKKy0tIDEgdHJpZ2dlciBzaG91bGQgZmlyZSBoZXJlIChyb3cpOgor SU5TRVJUIElOVE8gc2FsZXNtYW5zMTBfNDAgVkFMVUVTICgzMCwgJ0ZvcmQnKTsKKworU0VM RUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBf NDA7CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IG1lcmdlIHBhcnRpdGlvbnMgd2l0 aCBkZWxldGVkIGNvbHVtbnMKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFu X2lkIElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSkgUEFSVElU SU9OIEJZIFJBTkdFIChzYWxlc21hbl9pZCk7CisKK0NSRUFURSBUQUJMRSBzYWxlc21hbnMw MV8xMCBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8gKDEw KTsKKy0tIENyZWF0ZSBwYXJ0aXRpb25zIHdpdGggc29tZSBkZWxldGVkIGNvbHVtbnM6CitD UkVBVEUgVEFCTEUgc2FsZXNtYW5zMTBfMjAoZDEgVkFSQ0hBUigzMCksIHNhbGVzbWFuX2lk IElOVCBQUklNQVJZIEtFWSwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSk7CitDUkVBVEUg VEFCTEUgc2FsZXNtYW5zMjBfMzAoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBkMiBJ TlQsICBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0NSRUFURSBUQUJMRSBzYWxlc21h bnMzMF80MChzYWxlc21hbl9pZCBJTlQgUFJJTUFSWSBLRVksIGQzIERBVEUsIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMxMF8yMCBWQUxV RVMgKCdkdW1teSB2YWx1ZSAxJywgMTksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVz bWFuczIwXzMwIFZBTFVFUyAoMjAsIDEwMSwgJ1NtaXJub2ZmJyk7CitJTlNFUlQgSU5UTyBz YWxlc21hbnMzMF80MCBWQUxVRVMgKDMxLCBub3coKSwgJ1BvcG92Jyk7CisKK0FMVEVSIFRB QkxFIHNhbGVzbWFuczEwXzIwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUgc2FsZXNt YW5zMjBfMzAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMzMF80MCBE Uk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQQVJUSVRJ T04gc2FsZXNtYW5zMTBfMjAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDIwKTsKK0FMVEVS IFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFSVElUSU9OIHNhbGVzbWFuczIwXzMwIEZPUiBW QUxVRVMgRlJPTSAoMjApIFRPICgzMCk7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMgQVRUQUNI IFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAoNDAp OworCitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxLCAnUG9pcm90Jyk7CitJTlNF UlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScpOworSU5TRVJUIElOVE8gc2Fs ZXNtYW5zIFZBTFVFUyAoMzAsICdGb3JkJyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBN RVJHRSBQQVJUSVRJT05TIChzYWxlc21hbnMxMF8yMCwgc2FsZXNtYW5zMjBfMzAsIHNhbGVz bWFuczMwXzQwKSBJTlRPIHNhbGVzbWFuczEwXzQwOworCitzZWxlY3QgKiBmcm9tIHNhbGVz bWFuczsKK3NlbGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNh bGVzbWFuczEwXzQwOworCitEUk9QIFRBQkxFIHNhbGVzbWFuczsKKworLS0KKy0tIFRlc3Q6 IG1lcmdlIHN1Yi1wYXJ0aXRpb25zCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9S IFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOworQ1JFQVRF IFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JFQVRFIFRB QkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJD SEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04g QlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJfMDFf MTAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNC0xMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIwMjJf MTBfMjAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2FwcjIw MjJfMjBfMzAgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgn MjAyMi0wNC0yMCcpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgQVRUQUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290 aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVY IHNhbGVzX3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVl IChzYWxlc19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAg J01heScsICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAy Mi0wNC0zMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5v dicsICAgNzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoNSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0x MScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAg MTc1LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo OCwgICdFcmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAg JzIwMjItMDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdU cnVtcCcsICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjIt MDEtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcs ICAgIDUxMCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7 CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2Fw cjIwMjJfMDFfMTA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMTBfMjA7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjJfMjBfMzA7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2Fw cjIwMjIgTUVSR0UgUEFSVElUSU9OUyAoc2FsZXNfYXByMjAyMl8wMV8xMCwgc2FsZXNfYXBy MjAyMl8xMF8yMCwgc2FsZXNfYXByMjAyMl8yMF8zMCkgSU5UTyBzYWxlc19hcHJfYWxsOwor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHJfYWxsOworCitEUk9QIFRBQkxFIHNhbGVz X3JhbmdlOworCistLQorLS0gQlkgTElTVCBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBU ZXN0OiBzcGVjaWZpYyBlcnJvcnMgZm9yIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorQ1JF QVRFIFRBQkxFIHNhbGVzX2xpc3QKKyhzYWxlc21hbl9pZCBJTlQgR0VORVJBVEVEIEFMV0FZ UyBBUyBJREVOVElUWSwKKyBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0 YXRlIFZBUkNIQVIoMjApLAorIHNhbGVzX2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRF KQorUEFSVElUSU9OIEJZIExJU1QgKHNhbGVzX3N0YXRlKTsKK0NSRUFURSBUQUJMRSBzYWxl c19ub3JkIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5z aycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dl c3QgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywg J1Ntb2xlbnNrJywgJ0JyeWFuc2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92 c2snLCAnVmxhZGl2b3N0b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAn Vm9sZ29ncmFkJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19saXN0IERFRkFVTFQ7CisKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2xpc3QyIChMSUtF IHNhbGVzX2xpc3QpIFBBUlRJVElPTiBCWSBMSVNUIChzYWxlc19zdGF0ZSk7CitDUkVBVEUg VEFCTEUgc2FsZXNfbm9yZDIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIEZPUiBWQUxVRVMg SU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJzYnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVyczIgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QyIERFRkFVTFQ7CisK KworQ1JFQVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsIChMSUtFIHNhbGVzX2xpc3QpOworQ1JF QVRFIFRBQkxFIHNhbGVzX2V4dGVybmFsMiAodmNoIFZBUkNIQVIoNSkpOworCistLSBFUlJP UjogIHBhcnRpdGlvbiBib3VuZCBmb3IgcmVsYXRpb24gInNhbGVzX2V4dGVybmFsIiBpcyBu dWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVzX3dl c3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsKSBJTlRPIHNhbGVzX2FsbDsKKy0tIEVS Uk9SOiAgcGFydGl0aW9uIGJvdW5kIGZvciByZWxhdGlvbiAic2FsZXNfZXh0ZXJuYWwyIiBp cyBudWxsCitBTFRFUiBUQUJMRSBzYWxlc19saXN0IE1FUkdFIFBBUlRJVElPTlMgKHNhbGVz X3dlc3QsIHNhbGVzX2Vhc3QsIHNhbGVzX2V4dGVybmFsMikgSU5UTyBzYWxlc19hbGw7Cist LSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19ub3JkMiIgaXMgbm90IGEgcGFydGl0aW9uIG9m IHJlbGF0aW9uICJzYWxlc19saXN0IgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBNRVJHRSBQ QVJUSVRJT05TIChzYWxlc193ZXN0LCBzYWxlc19ub3JkMiwgc2FsZXNfZWFzdCkgSU5UTyBz YWxlc19hbGw7CisKK0RST1AgVEFCTEUgc2FsZXNfZXh0ZXJuYWwyOworRFJPUCBUQUJMRSBz YWxlc19leHRlcm5hbDsKK0RST1AgVEFCTEUgc2FsZXNfbGlzdDI7CitEUk9QIFRBQkxFIHNh bGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmluZywgTUVSR0Ug UEFSVElUSU9OUyB3aXRoIGRhdGEKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNh bGVzbWFuX2lkIElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZLAorIHNhbGVzbWFu X25hbWUgVkFSQ0hBUigzMCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNf YW1vdW50IElOVCwKKyBzYWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2Fs ZXNfc3RhdGUpOworCitDUkVBVEUgSU5ERVggc2FsZXNfbGlzdF9zYWxlc21hbl9uYW1lX2lk eCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0cmVlIChzYWxlc21hbl9uYW1lKTsKK0NSRUFURSBJ TkRFWCBzYWxlc19saXN0X3NhbGVzX3N0YXRlX2lkeCBPTiBzYWxlc19saXN0IFVTSU5HIGJ0 cmVlIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19ub3JkIFBBUlRJVElP TiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNdXJtYW5zaycsICdTdC4gUGV0ZXJz YnVyZycsICdVa2h0YScpOworQ1JFQVRFIFRBQkxFIHNhbGVzX3dlc3QgUEFSVElUSU9OIE9G IHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ1Zvcm9uZXpoJywgJ1Ntb2xlbnNrJywgJ0Jy eWFuc2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19lYXN0IFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNYWdhZGFuJywgJ0toYWJhcm92c2snLCAnVmxhZGl2b3N0 b2snKTsKK0NSRUFURSBUQUJMRSBzYWxlc19jZW50cmFsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnS2F6YW4nLCAnVm9sZ29ncmFkJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFV TFQ7CisKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywgICAgJ01h Z2FkYW4nLCAgICAgICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ1NtaXJub2ZmJywgJ1Ntb2xlbnNrJywgICAgICAgNTAwLCAgJzIw MjItMDMtMDMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0ZvcmQnLCAg ICAgJ1N0LiBQZXRlcnNidXJnJywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0l2YW5vdicsICAgJ01vc2NvdycsICAgICAgICAgNzUw LCAgJzIwMjItMDMtMDQnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0Rl ZXYnLCAgICAgJ1Zvcm9uZXpoJywgICAgICAgMjUwLCAgJzIwMjItMDMtMDcnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0themFuJywgICAgICAg ICAgMTAwMCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAgJ1ZsYWRpdm9z dG9rJywgICAgMTE1MCwgJzIwMjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ01heScsICAgICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMt MTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0hhbGRlcicsICAgJ011 cm1hbnNrJywgICAgICAgODAwLCAgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ011bGxlcicsICAgJ0JyeWFuc2snLCAgICAgICAgNjUwLCAgJzIw MjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXRoJywg ICAgJ1ZvbGdvZ3JhZCcsICAgICAgMzUwLCAgJzIwMjItMDMtMTAnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0dhbmRpJywgICAgJ01vc2NvdycsICAgICAgICAgMTUw LCAgJzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1Bs YXRvJywgICAgJ1Zvcm9uZXpoJywgICAgICAgOTUwLCAgJzIwMjItMDMtMDUnKTsKKworLS0g c2hvdyBwYXJ0aXRpb25zIHdpdGggY29uZGl0aW9uczoKK1NFTEVDVCBjLm9pZDo6cGdfY2F0 YWxvZy5yZWdjbGFzcywgYy5yZWxraW5kLCBpbmhkZXRhY2hwZW5kaW5nLCBwZ19jYXRhbG9n LnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9pZCkKKyAgRlJPTSBwZ19jYXRhbG9n LnBnX2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfaW5oZXJpdHMgaQorICBXSEVSRSBjLm9pZCA9 IGkuaW5ocmVsaWQgQU5EIGkuaW5ocGFyZW50ID0gJ3NhbGVzX2xpc3QnOjpyZWdjbGFzcwor ICBPUkRFUiBCWSBwZ19jYXRhbG9nLnBnX2dldF9leHByKGMucmVscGFydGJvdW5kLCBjLm9p ZCkgPSAnREVGQVVMVCcsIGMub2lkOjpwZ19jYXRhbG9nLnJlZ2NsYXNzOjpwZ19jYXRhbG9n LnRleHQ7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgTUVSR0UgUEFSVElUSU9OUyAoc2Fs ZXNfd2VzdCwgc2FsZXNfZWFzdCwgc2FsZXNfY2VudHJhbCkgSU5UTyBzYWxlc19hbGw7CisK Ky0tIHNob3cgcGFydGl0aW9ucyB3aXRoIGNvbmRpdGlvbnM6CitTRUxFQ1QgYy5vaWQ6OnBn X2NhdGFsb2cucmVnY2xhc3MsIGMucmVsa2luZCwgaW5oZGV0YWNocGVuZGluZywgcGdfY2F0 YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwgYy5vaWQpCisgIEZST00gcGdfY2F0 YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2luaGVyaXRzIGkKKyAgV0hFUkUgYy5v aWQgPSBpLmluaHJlbGlkIEFORCBpLmluaHBhcmVudCA9ICdzYWxlc19saXN0Jzo6cmVnY2xh c3MKKyAgT1JERVIgQlkgcGdfY2F0YWxvZy5wZ19nZXRfZXhwcihjLnJlbHBhcnRib3VuZCwg Yy5vaWQpID0gJ0RFRkFVTFQnLCBjLm9pZDo6cGdfY2F0YWxvZy5yZWdjbGFzczo6cGdfY2F0 YWxvZy50ZXh0OworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2xpc3Q7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX25vcmQ7CitTRUxFQ1QgKiBGUk9NIHNhbGVzX2FsbDsKKworLS0gVXNlIGluZGV4 c2NhbiBmb3IgdGVzdCBpbmRleGVzIGFmdGVyIG1lcmdlIHBhcnRpdGlvbnMKK1NFVCBlbmFi bGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBPRkY7CisKK1NFTEVD VCAqIEZST00gc2FsZXNfYWxsIFdIRVJFIHNhbGVzX3N0YXRlID0gJ01vc2Nvdyc7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2xpc3QgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKK1NF TEVDVCAqIEZST00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc21hbl9uYW1lID0gJ0l2YW5vdic7 CisKK1NFVCBlbmFibGVfaW5kZXhzY2FuID0gT047CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBP TjsKKworRFJPUCBUQUJMRSBzYWxlc19saXN0OworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0 aW9uc19tZXJnZV9zY2hlbWE7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9w YXJ0aXRpb25fc3BsaXQuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0aW9uX3Nw bGl0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNzUxNzNl Mjc1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRp b25fc3BsaXQuc3FsCkBAIC0wLDAgKzEsODM5IEBACistLQorLS0gUEFSVElUSU9OX1NQTElU CistLSBUZXN0cyBmb3IgIkFMVEVSIFRBQkxFIC4uLiBTUExJVCBQQVJUSVRJT04gLi4uIiBj b21tYW5kCistLQorCitDUkVBVEUgU0NIRU1BIHBhcnRpdGlvbl9zcGxpdF9zY2hlbWE7CitT RVQgc2VhcmNoX3BhdGggPSBwYXJ0aXRpb25fc3BsaXRfc2NoZW1hLCBwdWJsaWM7CisKKy0t CistLSBCWSBSQU5HRSBwYXJ0aXRpb25pbmcKKy0tCisKKy0tCistLSBUZXN0IGZvciBlcnJv ciBjb2RlcworLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNtYW5faWQgaW50 LCBzYWxlc21hbl9uYW1lIHZhcmNoYXIoMzApLCBzYWxlc19hbW91bnQgaW50LCBzYWxlc19k YXRlIGRhdGUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitDUkVBVEUgVEFC TEUgc2FsZXNfamFuMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVFUyBG Uk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wMi0wMScpOworQ1JFQVRFIFRBQkxFIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRBQkxF IHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworLS0g RVJST1I6ICByZWxhdGlvbiAic2FsZXNfeHh4IiBkb2VzIG5vdCBleGlzdAorQUxURVIgVEFC TEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX3h4eCBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLSBFUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW4yMDIyIiBhbHJl YWR5IGV4aXN0cworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogIGludmFsaWQgYm91bmQgc3BlY2lmaWNhdGlvbiBmb3IgYSByYW5nZSBwYXJ0aXRpb24K K0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFy X2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2phbjIwMjIgRk9SIFZBTFVFUyBJ TiAoJzIwMjItMDUtMDEnLCAnMjAyMi0wNi0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21h cjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScp LAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS0gRVJST1I6ICBlbXB0eSByYW5nZSBi b3VuZCBzcGVjaWZpZWQgZm9yIHBhcnRpdGlvbiAic2FsZXNfbWFyMjAyMiIKK0FMVEVSIFRB QkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg SU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScpIFRPICgnMjAyMi0wMi0wMScpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0w MScpIFRPICgnMjAyMi0wNS0wMScpKTsKKworLS1FUlJPUjogIGxpc3Qgb2Ygc3BsaXR0ZWQg cGFydGl0aW9ucyBzaG91bGQgY29udGFpbnMgYXQgbGVhc3QgdHdvIGl0ZW1zCitBTFRFUiBU QUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIy IElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDItMDEnKSBUTyAoJzIwMjItMTAtMDEnKSk7CisKKy0tIEVSUk9SOiAgYm91bmRzIG9m IHBhcnRpdGlvbiAic2FsZXNfZmViMjAyMiIgYXJlIG91dHNpZGUgYm91bmRzIG9mIHNwbGl0 IHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNh bGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBG T1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQ QVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykg VE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJP UjogIG5hbWUgInNhbGVzX2ZlYl9tYXJfYXByMjAyMiIgYWxyZWFkeSB1c2VkCistLSAoV2Ug Y2FuIGNyZWF0ZSBwYXJ0aXRpb24gd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHNwbGl0IHBhcnRp dGlvbiwgYnV0IGNhbid0IGNyZWF0ZSB0d28gcGFydGl0aW9ucyB3aXRoIHRoZSBzYW1lIG5h bWUpCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmVi X21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIy LTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAy MiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOwor CistLSBFUlJPUjogIG5hbWUgInNhbGVzX2ZlYjIwMjIiIGFscmVhZHkgdXNlZAorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogICJzYWxlc19mZWJfbWFy X2FwcjIwMjIiIGlzIG5vdCBhIHBhcnRpdGlvbmVkIHRhYmxlCitBTFRFUiBUQUJMRSBzYWxl c19mZWJfbWFyX2FwcjIwMjIgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAxJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfZmVi MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCistLSBFUlJPUjogIHVwcGVyIGJvdW5kIG9m IHBhcnRpdGlvbiAic2FsZXNfYXByMjAyMiIgaXMgbm90IGVxdWFscyB0byB1cHBlciBib3Vu ZCBvZiBzcGxpdCBwYXJ0aXRpb24KK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19mZWJfbWFyX2FwcjIwMjIgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0w MScpLAorICAgUEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAy Mi0wMy0wMScpIFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIw MjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNi0wMScpKTsK KworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiB3b3VsZCBvdmVy bGFwIHdpdGggYW5vdGhlciAobm90IHNwbGl0KSBwYXJ0aXRpb24gInNhbGVzX2phbjIwMjIi CitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfZmViX21h cl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMg RlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBBUlRJVElPTiBz YWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjIt MDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAo JzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKKy0tIEVSUk9SOiAgbG93ZXIg Ym91bmQgb2YgcGFydGl0aW9uICJzYWxlc19tYXIyMDIyIiBpcyBub3QgZXF1YWxzIHRvIHVw cGVyIGJvdW5kIG9mIHByZXZpb3VzIHBhcnRpdGlvbgorQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCistLSBUZXN0cyBmb3Igc3BhY2VzIGJldHdlZW4gcGFydGl0aW9ucywg dGhlbSBzaG91bGQgYmUgZXhlY3V0ZWQgd2l0aG91dCBERUZBVUxUIHBhcnRpdGlvbgorQUxU RVIgVEFCTEUgc2FsZXNfcmFuZ2UgREVUQUNIIFBBUlRJVElPTiBzYWxlc19vdGhlcnM7CisK Ky0tIEVSUk9SOiAgbG93ZXIgYm91bmQgb2YgcGFydGl0aW9uICJzYWxlc19mZWIyMDIyIiBp cyBub3QgZXF1YWxzIHRvIGxvd2VyIGJvdW5kIG9mIHNwbGl0IHBhcnRpdGlvbgorQUxURVIg VEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAy MiBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTAyLTAyJykgVE8gKCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFy MjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyks CisgICBQQVJUSVRJT04gc2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0 LTAxJykgVE8gKCcyMDIyLTA1LTAxJykpOworCitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOwor RFJPUCBUQUJMRSBzYWxlc19vdGhlcnM7CisKKy0tCistLSBBZGQgcm93cyBpbnRvIHBhcnRp dGlvbmVkIHRhYmxlIHRoZW4gc3BsaXQgcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNh bGVzX3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCks IHNhbGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdF IChzYWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBP RiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIy LTAyLTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElP TiBPRiBzYWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcy MDIyLTA1LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBERUZBVUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMTAnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAs ICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAn SXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIy LTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAg ICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTEx Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAz NTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgx MSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAn MjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1Nt aXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFu Z2UgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2ZlYl9tYXJfYXByMjAyMiBJTlRPCisgIChQQVJU SVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8g KCcyMDIyLTAzLTAxJyksCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMiBGT1IgVkFMVUVT IEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTA0LTAxJyksCisgICBQQVJUSVRJT04g c2FsZXNfYXByMjAyMiBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTA0LTAxJykgVE8gKCcyMDIy LTA1LTAxJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19tYXIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOwor U0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2Ug Q0FTQ0FERTsKKworLS0KKy0tIEFkZCBzcGxpdCBwYXJ0aXRpb24gdGhlbiBhZGQgcm93cyBp bnRvIHBhcnRpdGlvbmVkIHRhYmxlCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3JhbmdlIChz YWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVzX2Ftb3Vu dCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc19kYXRl KTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitD UkVBVEUgVEFCTEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19y YW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7 CitDUkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBE RUZBVUxUOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2Fs ZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMtMDEnKSwKKyAgIFBB UlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBU TyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxV RVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7CisKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAsICcyMDIyLTAx LTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAnU21pcm5vZmYn LCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIyLTA0LTEzJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldicsICAgICAyNTAs ICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg2LCAg J1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAxODUsICAnMjAy Mi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5LCAgJ011bGxl cicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAnMjAyMi0wNC0w NicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1BsYXRvJywgICAg MzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDE0LCAnU21pdGgnLCAgICA1MTAsICAnMjAyMi0wNS0wNCcpOwor CitTRUxFQ1QgKiBGUk9NIHNhbGVzX3JhbmdlOworU0VMRUNUICogRlJPTSBzYWxlc19qYW4y MDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNUICogRlJPTSBzYWxl c19tYXIyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19vdGhlcnM7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FTQ0FERTsKKwor LS0KKy0tIFRlc3QgZm9yOgorLS0gICAqIGNvbXBvc2l0ZSBwYXJ0aXRpb24ga2V5OworLS0g ICAqIEdFTkVSQVRFRCBjb2x1bW47CistLSAgICogY29sdW1uIHdpdGggREVGQVVMVCB2YWx1 ZS4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfZGF0ZSAoc2FsZXNtYW5fbmFtZSBWQVJDSEFS KDMwKSwgc2FsZXNfeWVhciBJTlQsIHNhbGVzX21vbnRoIElOVCwgc2FsZXNfZGF5IElOVCwK KyAgc2FsZXNfZGF0ZSBWQVJDSEFSKDEwKSBHRU5FUkFURUQgQUxXQVlTIEFTCisgICAgKExQ QUQoc2FsZXNfeWVhcjo6dGV4dCwgNCwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19tb250 aDo6dGV4dCwgMiwgJzAnKSB8fCAnLicgfHwgTFBBRChzYWxlc19kYXk6OnRleHQsIDIsICcw JykpIFNUT1JFRCwKKyAgc2FsZXNfZGVwYXJ0bWVudCBWQVJDSEFSKDMwKSBERUZBVUxUICdT YWxlcyBkZXBhcnRtZW50JykKKyAgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxlc195ZWFyLCBz YWxlc19tb250aCwgc2FsZXNfZGF5KTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX2RlYzIwMjIg UEFSVElUSU9OIE9GIHNhbGVzX2RhdGUgRk9SIFZBTFVFUyBGUk9NICgyMDIxLCAxMiwgMSkg VE8gKDIwMjIsIDEsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbl9mZWIyMDIyIFBBUlRJ VElPTiBPRiBzYWxlc19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIw MjIsIDMsIDEpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVyIFBBUlRJVElPTiBPRiBzYWxl c19kYXRlIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMywgMSkgVE8gKE1BWFZBTFVFLCBNQVhW QUxVRSwgTUFYVkFMVUUpOworCitJTlNFUlQgSU5UTyBzYWxlc19kYXRlKHNhbGVzbWFuX25h bWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkpIFZBTFVFUyAoJ01hbmFn ZXIxJywgMjAyMSwgMTIsIDcpOworSU5TRVJUIElOVE8gc2FsZXNfZGF0ZShzYWxlc21hbl9u YW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5KSBWQUxVRVMgKCdNYW5h Z2VyMicsIDIwMjEsIDEyLCA4KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAxLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAyLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAxLCAyKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCAyLCAxKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjEnLCAyMDIyLCAzLCAzKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjInLCAyMDIyLCAzLCA0KTsKK0lOU0VSVCBJTlRPIHNhbGVzX2RhdGUoc2FsZXNtYW5f bmFtZSwgc2FsZXNfeWVhciwgc2FsZXNfbW9udGgsIHNhbGVzX2RheSkgVkFMVUVTICgnTWFu YWdlcjMnLCAyMDIyLCA1LCAxKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19kYXRlOworU0VM RUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19qYW5fZmVi MjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXI7CisKK0FMVEVSIFRBQkxFIHNhbGVz X2RhdGUgU1BMSVQgUEFSVElUSU9OIHNhbGVzX2phbl9mZWIyMDIyIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc19qYW4yMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMiwgMSwgMSkgVE8gKDIw MjIsIDIsIDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyLCAyLCAxKSBUTyAoMjAyMiwgMywgMSkpOworCitJTlNFUlQgSU5UTyBzYWxlc19k YXRlKHNhbGVzbWFuX25hbWUsIHNhbGVzX3llYXIsIHNhbGVzX21vbnRoLCBzYWxlc19kYXkp IFZBTFVFUyAoJ01hbmFnZXIxJywgMjAyMiwgMSwgMTApOworSU5TRVJUIElOVE8gc2FsZXNf ZGF0ZShzYWxlc21hbl9uYW1lLCBzYWxlc195ZWFyLCBzYWxlc19tb250aCwgc2FsZXNfZGF5 KSBWQUxVRVMgKCdNYW5hZ2VyMicsIDIwMjIsIDIsIDEwKTsKKworU0VMRUNUICogRlJPTSBz YWxlc19kYXRlOworU0VMRUNUICogRlJPTSBzYWxlc19kZWMyMDIyOworU0VMRUNUICogRlJP TSBzYWxlc19qYW4yMDIyOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyOworU0VMRUNU ICogRlJPTSBzYWxlc19vdGhlcjsKKworLS1FUlJPUjogIHJlbGF0aW9uICJzYWxlc19qYW5f ZmViMjAyMiIgZG9lcyBub3QgZXhpc3QKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuX2ZlYjIw MjI7CisKK0RST1AgVEFCTEUgc2FsZXNfZGF0ZSBDQVNDQURFOworCistLQorLS0gVGVzdDog c3BsaXQgREVGQVVMVCBwYXJ0aXRpb247IHVzaW5nIGEgaW5kZXggb24gcGFydGl0aW9uIGtl eTsgY2hlY2sgaW5kZXggYWZ0ZXIgc3BsaXQKKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFu Z2UgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNf YW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2phbjIwMjIgUEFSVElUSU9OIE9GIHNhbGVz X3JhbmdlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEnKSBUTyAoJzIwMjItMDItMDEn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX3Jhbmdl IERFRkFVTFQ7CitDUkVBVEUgSU5ERVggc2FsZXNfcmFuZ2Vfc2FsZXNfZGF0ZV9pZHggT04g c2FsZXNfcmFuZ2UgVVNJTkcgYnRyZWUgKHNhbGVzX2RhdGUpOworCitJTlNFUlQgSU5UTyBz YWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAgICAxMDAwLCAnMjAyMi0wMS0zMScp OworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgyLCAgJ1NtaXJub2ZmJywgNTAw LCAgJzIwMjItMDItMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMywg ICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7CitJTlNFUlQgSU5UTyBzYWxlc19y YW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAsICAnMjAyMi0wNC0xMycpOworSU5T RVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAgJ0RlZXYnLCAgICAgMjUwLCAgJzIw MjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNiwgICdQb2ly b3QnLCAgIDE1MCwgICcyMDIyLTAyLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBW QUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAyMi0wMy0wOCcpOworSU5TRVJUIElO VE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNzc29uJywgMTg1LCAgJzIwMjItMDIt MjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOSwgICdNdWxsZXInLCAg IDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMg KDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0yOCcpOworSU5TRVJUIElOVE8gc2Fs ZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAgMzgwLCAgJzIwMjItMDQtMDYnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTIsICdQbGF0bycsICAgIDM1MCwg ICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEzLCAn R2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VM RUNUICogRlJPTSBzYWxlc19vdGhlcnM7CitTRUxFQ1QgKiBGUk9NIHBnX2luZGV4ZXMgV0hF UkUgdGFibGVuYW1lID0gJ3NhbGVzX290aGVycycgYW5kIHNjaGVtYW5hbWUgPSAncGFydGl0 aW9uX3NwbGl0X3NjaGVtYSc7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIg Rk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAg UEFSVElUSU9OIHNhbGVzX21hcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMy0wMScp IFRPICgnMjAyMi0wNC0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworLS0gVXNlIGluZGV4c2NhbiBmb3IgdGVz dCBpbmRleGVzCitTRVQgZW5hYmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFz Y2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNhbGVzX2ZlYjIwMjIgd2hlcmUgc2FsZXNf ZGF0ZSA+ICcyMDIyLTAxLTAxJzsKK1NFTEVDVCAqIEZST00gc2FsZXNfbWFyMjAyMiB3aGVy ZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworU0VMRUNUICogRlJPTSBzYWxlc19hcHIy MDIyIHdoZXJlIHNhbGVzX2RhdGUgPiAnMjAyMi0wMS0wMSc7CitTRUxFQ1QgKiBGUk9NIHNh bGVzX290aGVycyB3aGVyZSBzYWxlc19kYXRlID4gJzIwMjItMDEtMDEnOworCitTRVQgZW5h YmxlX2luZGV4c2NhbiA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT047CisKK1NFTEVD VCAqIEZST00gcGdfaW5kZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfZmViMjAyMicg YW5kIHNjaGVtYW5hbWUgPSAncGFydGl0aW9uX3NwbGl0X3NjaGVtYSc7CitTRUxFQ1QgKiBG Uk9NIHBnX2luZGV4ZXMgV0hFUkUgdGFibGVuYW1lID0gJ3NhbGVzX21hcjIwMjInIGFuZCBz Y2hlbWFuYW1lID0gJ3BhcnRpdGlvbl9zcGxpdF9zY2hlbWEnOworU0VMRUNUICogRlJPTSBw Z19pbmRleGVzIFdIRVJFIHRhYmxlbmFtZSA9ICdzYWxlc19hcHIyMDIyJyBhbmQgc2NoZW1h bmFtZSA9ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKK1NFTEVDVCAqIEZST00gcGdfaW5k ZXhlcyBXSEVSRSB0YWJsZW5hbWUgPSAnc2FsZXNfb3RoZXJzJyBhbmQgc2NoZW1hbmFtZSA9 ICdwYXJ0aXRpb25fc3BsaXRfc2NoZW1hJzsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZSBD QVNDQURFOworCistLQorLS0gVGVzdDogc29tZSBjYXNlcyBmb3Igc3BsaXQgREVGQVVMVCBw YXJ0aXRpb24gKGRpZmZlcmVudCBib3VuZHMpCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKworLS0gc2FsZXNfZXJyb3IgaW50ZXJzZWN0cyB3aXRoIHNhbGVz X2RlYzIwMjIgKGxvd2VyIGJvdW5kKQorLS0gRVJST1I6ICBsb3dlciBib3VuZCBvZiBwYXJ0 aXRpb24gInNhbGVzX2Vycm9yIiBjb25mbGljdHMgd2l0aCB1cHBlciBib3VuZCBvZiBwcmV2 aW91cyBwYXJ0aXRpb24gInNhbGVzX2RlYzIwMjIiCitBTFRFUiBUQUJMRSBzYWxlc19yYW5n ZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEpIFRPICgyMDIyMDEwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZXJyb3IgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIzMCkgVE8g KDIwMjIwMjAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyIEZPUiBWQUxVRVMgRlJP TSAoMjAyMjAyMDEpIFRPICgyMDIyMDMwMSksCisgICBQQVJUSVRJT04gc2FsZXNfb3RoZXJz IERFRkFVTFQpOworCistLSBzYWxlc19lcnJvciBpbnRlcnNlY3RzIHdpdGggc2FsZXNfZmVi MjAyMiAodXBwZXIgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlv biAic2FsZXNfZmViMjAyMiIgY29uZmxpY3RzIHdpdGggdXBwZXIgYm91bmQgb2YgcHJldmlv dXMgcGFydGl0aW9uICJzYWxlc19lcnJvciIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQ TElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2Rl YzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBB UlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjIwMTAxKSBUTyAoMjAy MjAyMDIpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgy MDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVG QVVMVCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIy IChpbnNpZGUgYm91bmQpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRpdGlvbiAi c2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZpb3VzIHBh cnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElU IFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIw MjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJ VElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjEwKSBUTyAoMjAyMTEy MjApLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIy MDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgREVGQVVM VCk7CisKKy0tIHNhbGVzX2Vycm9yIGludGVyc2VjdHMgd2l0aCBzYWxlc19kZWMyMDIyIChl eGFjdCB0aGUgc2FtZSBib3VuZHMpCistLSBFUlJPUjogIGxvd2VyIGJvdW5kIG9mIHBhcnRp dGlvbiAic2FsZXNfZXJyb3IiIGNvbmZsaWN0cyB3aXRoIHVwcGVyIGJvdW5kIG9mIHByZXZp b3VzIHBhcnRpdGlvbiAic2FsZXNfZGVjMjAyMiIKK0FMVEVSIFRBQkxFIHNhbGVzX3Jhbmdl IFNQTElUIFBBUlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2RlYzIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAg IFBBUlRJVElPTiBzYWxlc19lcnJvciBGT1IgVkFMVUVTIEZST00gKDIwMjExMjAxKSBUTyAo MjAyMjAxMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZBTFVFUyBGUk9N ICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSwKKyAgIFBBUlRJVElPTiBzYWxlc19vdGhlcnMg REVGQVVMVCk7CisKKy0tIEVSUk9SOiAgYW55IHBhcnRpdGlvbiBpbiB0aGUgbGlzdCBzaG91 bGQgYmUgREVGQVVMVCBiZWNhdXNlIHNwbGl0IHBhcnRpdGlvbiBpcyBERUZBVUxUCitBTFRF UiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQQVJUSVRJT04gc2FsZXNfb3RoZXJzIElOVE8K KyAgKFBBUlRJVElPTiBzYWxlc19kZWMyMDIyIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTEyMDEp IFRPICgyMDIyMDEwMSksCisgICBQQVJUSVRJT04gc2FsZXNfamFuMjAyMiBGT1IgVkFMVUVT IEZST00gKDIwMjIwMTAxKSBUTyAoMjAyMjAyMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX2Zl YjIwMjIgRk9SIFZBTFVFUyBGUk9NICgyMDIyMDIwMSkgVE8gKDIwMjIwMzAxKSk7CisKKy0t IG5vIGVycm9yOiBib3VuZHMgb2Ygc2FsZXNfbm9lcnJvciBiZXR3ZWVuIHNhbGVzX2RlYzIw MjIgYW5kIHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBB UlRJVElPTiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIg Rk9SIFZBTFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElP TiBzYWxlc19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMjAxMTApIFRPICgyMDIyMDEy MCksCisgICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIw MjAxKSBUTyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxU KTsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgSU5UKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz X2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNf cmFuZ2UgREVGQVVMVDsKKworLS0gbm8gZXJyb3I6IGJvdW5kcyBvZiBzYWxlc19ub2Vycm9y IGVxdWFscyB0byBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIHNhbGVzX2RlYzIwMjIgYW5k IHNhbGVzX2ZlYjIwMjIKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElP TiBzYWxlc19vdGhlcnMgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX2RlYzIwMjIgRk9SIFZB TFVFUyBGUk9NICgyMDIxMTIwMSkgVE8gKDIwMjIwMTAxKSwKKyAgIFBBUlRJVElPTiBzYWxl c19ub2Vycm9yIEZPUiBWQUxVRVMgRlJPTSAoMjAyMTAxMDEpIFRPICgyMDIxMDIwMSksCisg ICBQQVJUSVRJT04gc2FsZXNfZmViMjAyMiBGT1IgVkFMVUVTIEZST00gKDIwMjIwMjAxKSBU TyAoMjAyMjAzMDEpLAorICAgUEFSVElUSU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKwor RFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlv biB3aXRoIENIRUNLIGFuZCBGT1JFSUdOIEtFWSBDT05TVFJBSU5UcyBvbiBwYXJ0aXRpb25l ZCB0YWJsZQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBS SU1BUlkgS0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKTsKK0lOU0VSVCBJTlRPIHNh bGVzbWFucyBWQUxVRVMgKDEsICAnUG9pcm90Jyk7CisKK0NSRUFURSBUQUJMRSBzYWxlc19y YW5nZSAoCitzYWxlc21hbl9pZCBJTlQgUkVGRVJFTkNFUyBzYWxlc21hbnMoc2FsZXNtYW5f aWQpLAorc2FsZXNfYW1vdW50IElOVCBDSEVDSyAoc2FsZXNfYW1vdW50ID4gMSksCitzYWxl c19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CisKK0NSRUFU RSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAxJyk7CitDUkVBVEUgVEFC TEUgc2FsZXNfZmViX21hcl9hcHIyMDIyIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CitDUkVBVEUg VEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZBVUxUOwor CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25yZWxpZCA9ICdzYWxlc19mZWJfbWFyX2FwcjIw MjInOjpyZWdjbGFzczo6b2lkOworCitBTFRFUiBUQUJMRSBzYWxlc19yYW5nZSBTUExJVCBQ QVJUSVRJT04gc2FsZXNfZmViX21hcl9hcHIyMDIyIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c19mZWIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDItMDEnKSBUTyAoJzIwMjItMDMt MDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19tYXIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIw MjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19hcHIy MDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQtMDEnKSBUTyAoJzIwMjItMDUtMDEnKSk7 CisKKy0tIFdlIHNob3VsZCBzZWUgdGhlIHNhbWUgQ09OU1RSQUlOVHMgYXMgb24gc2FsZXNf ZmViX21hcl9hcHIyMDIyIHBhcnRpdGlvbgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCksIGNvbm5hbWUsIGNvbmtleSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ucmVs aWQgPSAnc2FsZXNfZmViMjAyMic6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSwgY29ubmFtZSwgY29ua2V5IEZST00gcGdfY29uc3RyYWludCBX SEVSRSBjb25yZWxpZCA9ICdzYWxlc19tYXIyMDIyJzo6cmVnY2xhc3M6Om9pZDsKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpLCBjb25uYW1lLCBjb25rZXkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbnJlbGlkID0gJ3NhbGVzX2FwcjIwMjInOjpyZWdjbGFzczo6 b2lkOworCistLSBFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJzYWxlc19tYXIyMDIy IiB2aW9sYXRlcyBjaGVjayBjb25zdHJhaW50ICJzYWxlc19yYW5nZV9zYWxlc21hbl9pZF9j aGVjayIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgMCwgJzIwMjItMDMt MTEnKTsKKy0tIEVSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAic2FsZXNfbWFy MjAyMiIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAic2FsZXNfcmFuZ2Vfc2Fs ZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoLTEsIDEw LCAnMjAyMi0wMy0xMScpOworLS0gb2sKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVF UyAoMSwgMTAsICcyMDIyLTAzLTExJyk7CisKK0RST1AgVEFCTEUgc2FsZXNfcmFuZ2UgQ0FT Q0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBUZXN0OiBz cGxpdCBwYXJ0aXRpb24gb24gcGFydGl0aW9uZWQgdGFibGUgaW4gY2FzZSBleGlzdHMgRk9S RUlHTiBLRVkgcmVmZXJlbmNlIGZyb20gYW5vdGhlciB0YWJsZQorLS0KK0NSRUFURSBUQUJM RSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9uYW1l IFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKK0NSRUFU RSBUQUJMRSBzYWxlcyAoc2FsZXNtYW5faWQgSU5UIFJFRkVSRU5DRVMgc2FsZXNtYW5zKHNh bGVzbWFuX2lkKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZB TFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczEwXzQwIFBB UlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsKKwor SU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQb2lyb3QnKTsKK0lOU0VSVCBJ TlRPIHNhbGVzbWFucyBWQUxVRVMgKDEwLCAnTWF5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc21h bnMgVkFMVUVTICgxOSwgJ0l2YW5vdicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVF UyAoMjAsICdTbWlybm9mZicpOworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMzAs ICdGb3JkJyk7CisKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDEwMCwgJzIwMjIt MDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMSwgIDExMCwgJzIwMjItMDMt MDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDE1MCwgJzIwMjItMDMtMDEn KTsKK0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTAsIDkwLCAgJzIwMjItMDMtMDMnKTsK K0lOU0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMTksIDIwMCwgJzIwMjItMDMtMDQnKTsKK0lO U0VSVCBJTlRPIHNhbGVzIFZBTFVFUyAoMjAsIDUwLCAgJzIwMjItMDMtMTInKTsKK0lOU0VS VCBJTlRPIHNhbGVzIFZBTFVFUyAoMjAsIDE3MCwgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJ TlRPIHNhbGVzIFZBTFVFUyAoMzAsIDMwLCAgJzIwMjItMDMtMDQnKTsKKworU0VMRUNUICog RlJPTSBzYWxlc21hbnMwMV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfNDA7CisK K0FMVEVSIFRBQkxFIHNhbGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAg SU5UTworICAoUEFSVElUSU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTAp IFRPICgyMCksCisgICBQQVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9N ICgyMCkgVE8gKDMwKSwKKyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVT IEZST00gKDMwKSBUTyAoNDApKTsKKworU0VMRUNUICogRlJPTSBzYWxlc21hbnMwMV8xMDsK K1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMTBfMjA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFu czIwXzMwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMzMF80MDsKKworLS0gRVJST1I6ICBp bnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJzYWxlcyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAic2FsZXNfc2FsZXNtYW5faWRfZmtleSIKK0lOU0VSVCBJTlRPIHNhbGVz IFZBTFVFUyAoNDAsIDUwLCAgJzIwMjItMDMtMDQnKTsKKy0tIG9rCitJTlNFUlQgSU5UTyBz YWxlcyBWQUxVRVMgKDMwLCA1MCwgICcyMDIyLTAzLTA0Jyk7CisKK0RST1AgVEFCTEUgc2Fs ZXMgQ0FTQ0FERTsKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCistLSBU ZXN0OiBzcGxpdCBwYXJ0aXRpb24gb2YgcGFydGl0aW9uZWQgdGFibGUgd2l0aCB0cmlnZ2Vy cworLS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkg S0VZLCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNh bGVzbWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBP RiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworQ1JFQVRFIFRBQkxF IHNhbGVzbWFuczEwXzQwIFBBUlRJVElPTiBPRiBzYWxlc21hbnMgRk9SIFZBTFVFUyBGUk9N ICgxMCkgVE8gKDQwKTsKKworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgICdQ b2lyb3QnKTsKKworQ1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gYWZ0ZXJfaW5zZXJ0X3Jv d190cmlnZ2VyKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFICdwbHBnc3FsJyBBUyAkQk9E WSQKK0JFR0lOCisJUkFJU0UgTk9USUNFICd0cmlnZ2VyKCUpIGNhbGxlZDogYWN0aW9uID0g JSwgd2hlbiA9ICUsIGxldmVsID0gJScsIFRHX0FSR1ZbMF0sIFRHX09QLCBUR19XSEVOLCBU R19MRVZFTDsKKyAgICBSRVRVUk4gTlVMTDsKK0VORDsKKyRCT0RZJDsKKworQ1JFQVRFIFRS SUdHRVIgc2FsZXNtYW5zX2FmdGVyX2luc2VydF9zdGF0ZW1lbnRfdHJpZ2dlcgorICAgIEFG VEVSIElOU0VSVAorICAgIE9OIHNhbGVzbWFucworICAgIEZPUiBFQUNIIFNUQVRFTUVOVAor ICAgIEVYRUNVVEUgUFJPQ0VEVVJFIGFmdGVyX2luc2VydF9yb3dfdHJpZ2dlcignc2FsZXNt YW5zJyk7CisKK0NSRUFURSBUUklHR0VSIHNhbGVzbWFuc19hZnRlcl9pbnNlcnRfcm93X3Ry aWdnZXIKKyAgICBBRlRFUiBJTlNFUlQKKyAgICBPTiBzYWxlc21hbnMKKyAgICBGT1IgRUFD SCBST1cKKyAgICBFWEVDVVRFIFBST0NFRFVSRSBhZnRlcl9pbnNlcnRfcm93X3RyaWdnZXIo J3NhbGVzbWFucycpOworCistLSAyIHRyaWdnZXJzIHNob3VsZCBmaXJlIGhlcmUgKHJvdyAr IHN0YXRlbWVudCk6CitJTlNFUlQgSU5UTyBzYWxlc21hbnMgVkFMVUVTICgxMCwgJ01heScp OworLS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBz YWxlc21hbnMxMF80MCBWQUxVRVMgKDE5LCAnSXZhbm92Jyk7CisKK0FMVEVSIFRBQkxFIHNh bGVzbWFucyBTUExJVCBQQVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgSU5UTworICAoUEFSVElU SU9OIHNhbGVzbWFuczEwXzIwIEZPUiBWQUxVRVMgRlJPTSAoMTApIFRPICgyMCksCisgICBQ QVJUSVRJT04gc2FsZXNtYW5zMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSwK KyAgIFBBUlRJVElPTiBzYWxlc21hbnMzMF80MCBGT1IgVkFMVUVTIEZST00gKDMwKSBUTyAo NDApKTsKKworLS0gMiB0cmlnZ2VycyBzaG91bGQgZmlyZSBoZXJlIChyb3cgKyBzdGF0ZW1l bnQpOgorSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMjAsICdTbWlybm9mZicpOwor LS0gMSB0cmlnZ2VyIHNob3VsZCBmaXJlIGhlcmUgKHJvdyk6CitJTlNFUlQgSU5UTyBzYWxl c21hbnMzMF80MCBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz bWFuczAxXzEwOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMxMF8yMDsKK1NFTEVDVCAqIEZS T00gc2FsZXNtYW5zMjBfMzA7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczMwXzQwOworCitE Uk9QIFRBQkxFIHNhbGVzbWFucyBDQVNDQURFOworRFJPUCBGVU5DVElPTiBhZnRlcl9pbnNl cnRfcm93X3RyaWdnZXIoKTsKKworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRj aCBpZGVudGl0eSBjb2x1bW4KKy0tIElmIHNwbGl0IHBhcnRpdGlvbiBjb2x1bW4gaXMgaWRl bnRpdHktY29sdW1uLCBjb2x1bW5zIG9mIG5ldyBwYXJ0aXRpb25zIGFyZSBpZGVudGl0eS1j b2x1bW5zIHRvby4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zKHNhbGVzbWFuX2lkIElO VCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc21hbl9u YW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzbWFuX2lkKTsKKwor Q1JFQVRFIFRBQkxFIHNhbGVzbWFuczFfMiBQQVJUSVRJT04gT0Ygc2FsZXNtYW5zIEZPUiBW QUxVRVMgRlJPTSAoMSkgVE8gKDIpOworLS0gQ3JlYXRlIG5ldyBwYXJ0aXRpb24gd2l0aCBp ZGVudGl0eS1jb2x1bW46CitDUkVBVEUgVEFCTEUgc2FsZXNtYW5zMl81KHNhbGVzbWFuX2lk IElOVCBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZIFBSSU1BUlkgS0VZLCBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApKTsKK0FMVEVSIFRBQkxFIHNhbGVzbWFucyBBVFRBQ0ggUEFS VElUSU9OIHNhbGVzbWFuczJfNSBGT1IgVkFMVUVTIEZST00gKDIpIFRPICg1KTsKKworSU5T RVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdQb2lyb3QnKTsK K0lOU0VSVCBJTlRPIHNhbGVzbWFucyAoc2FsZXNtYW5fbmFtZSkgVkFMVUVTICgnSXZhbm92 Jyk7CisKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0eSwgYXR0Z2VuZXJhdGVkIEZST00g cGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5EIGF0dHJlbGlkID0gJ3NhbGVzbWFu cyc6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdl bmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxp ZCA9ICdzYWxlc21hbnMxXzInOjpyZWdjbGFzczo6b2lkOworLS0gU3BsaXQgcGFydGl0aW9u IGhhcyBpZGVudGl0eS1jb2x1bW46CitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0 dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRy ZWxpZCA9ICdzYWxlc21hbnMyXzUnOjpyZWdjbGFzczo6b2lkOworCitBTFRFUiBUQUJMRSBz YWxlc21hbnMgU1BMSVQgUEFSVElUSU9OIHNhbGVzbWFuczJfNSBJTlRPCisgIChQQVJUSVRJ T04gc2FsZXNtYW5zMl8zIEZPUiBWQUxVRVMgRlJPTSAoMikgVE8gKDMpLAorICAgUEFSVElU SU9OIHNhbGVzbWFuczNfNCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSwKKyAgIFBBUlRJ VElPTiBzYWxlc21hbnM0XzUgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSkpOworCitJTlNF UlQgSU5UTyBzYWxlc21hbnMgKHNhbGVzbWFuX25hbWUpIFZBTFVFUyAoJ01heScpOworSU5T RVJUIElOVE8gc2FsZXNtYW5zIChzYWxlc21hbl9uYW1lKSBWQUxVRVMgKCdGb3JkJyk7CisK K1NFTEVDVCAqIEZST00gc2FsZXNtYW5zMV8yOworU0VMRUNUICogRlJPTSBzYWxlc21hbnMy XzM7CitTRUxFQ1QgKiBGUk9NIHNhbGVzbWFuczNfNDsKK1NFTEVDVCAqIEZST00gc2FsZXNt YW5zNF81OworCitTRUxFQ1QgYXR0bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBG Uk9NIHBnX2F0dHJpYnV0ZSBXSEVSRSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxl c21hbnMnOjpyZWdjbGFzczo6b2lkOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBh dHRnZW5lcmF0ZWQgRlJPTSBwZ19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0 cmVsaWQgPSAnc2FsZXNtYW5zMV8yJzo6cmVnY2xhc3M6Om9pZDsKKy0tIE5ldyBwYXJ0aXRp b25zIGhhdmUgaWRlbnRpdHktY29sdW1uczoKK1NFTEVDVCBhdHRuYW1lLCBhdHRpZGVudGl0 eSwgYXR0Z2VuZXJhdGVkIEZST00gcGdfYXR0cmlidXRlIFdIRVJFIGF0dG51bSA+IDAgQU5E IGF0dHJlbGlkID0gJ3NhbGVzbWFuczJfMyc6OnJlZ2NsYXNzOjpvaWQ7CitTRUxFQ1QgYXR0 bmFtZSwgYXR0aWRlbnRpdHksIGF0dGdlbmVyYXRlZCBGUk9NIHBnX2F0dHJpYnV0ZSBXSEVS RSBhdHRudW0gPiAwIEFORCBhdHRyZWxpZCA9ICdzYWxlc21hbnMzXzQnOjpyZWdjbGFzczo6 b2lkOworU0VMRUNUIGF0dG5hbWUsIGF0dGlkZW50aXR5LCBhdHRnZW5lcmF0ZWQgRlJPTSBw Z19hdHRyaWJ1dGUgV0hFUkUgYXR0bnVtID4gMCBBTkQgYXR0cmVsaWQgPSAnc2FsZXNtYW5z NF81Jzo6cmVnY2xhc3M6Om9pZDsKKworRFJPUCBUQUJMRSBzYWxlc21hbnMgQ0FTQ0FERTsK KworLS0KKy0tIFRlc3Q6IHNwbGl0IHBhcnRpdGlvbiB3aXRoIGRlbGV0ZWQgY29sdW1ucwor LS0KK0NSRUFURSBUQUJMRSBzYWxlc21hbnMoc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZ LCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVz bWFuX2lkKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzbWFuczAxXzEwIFBBUlRJVElPTiBPRiBz YWxlc21hbnMgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMTApOworLS0gQ3JlYXRlIG5ldyBw YXJ0aXRpb24gd2l0aCBzb21lIGRlbGV0ZWQgY29sdW1uczoKK0NSRUFURSBUQUJMRSBzYWxl c21hbnMxMF80MChkMSBWQVJDSEFSKDMwKSwgc2FsZXNtYW5faWQgSU5UIFBSSU1BUlkgS0VZ LCBkMiBJTlQsIGQzIERBVEUsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCkpOworCitJTlNF UlQgSU5UTyBzYWxlc21hbnMxMF80MCBWQUxVRVMgKCdkdW1teSB2YWx1ZSAxJywgMTksIDEw MCwgbm93KCksICdJdmFub3YnKTsKK0lOU0VSVCBJTlRPIHNhbGVzbWFuczEwXzQwIFZBTFVF UyAoJ2R1bW15IHZhbHVlIDInLCAyMCwgMTAxLCBub3coKSwgJ1NtaXJub2ZmJyk7CisKK0FM VEVSIFRBQkxFIHNhbGVzbWFuczEwXzQwIERST1AgQ09MVU1OIGQxOworQUxURVIgVEFCTEUg c2FsZXNtYW5zMTBfNDAgRFJPUCBDT0xVTU4gZDI7CitBTFRFUiBUQUJMRSBzYWxlc21hbnMx MF80MCBEUk9QIENPTFVNTiBkMzsKKworQUxURVIgVEFCTEUgc2FsZXNtYW5zIEFUVEFDSCBQ QVJUSVRJT04gc2FsZXNtYW5zMTBfNDAgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8gKDQwKTsK KworSU5TRVJUIElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMSwgJ1BvaXJvdCcpOworSU5TRVJU IElOVE8gc2FsZXNtYW5zIFZBTFVFUyAoMTAsICdNYXknKTsKK0lOU0VSVCBJTlRPIHNhbGVz bWFucyBWQUxVRVMgKDMwLCAnRm9yZCcpOworCitBTFRFUiBUQUJMRSBzYWxlc21hbnMgU1BM SVQgUEFSVElUSU9OIHNhbGVzbWFuczEwXzQwIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc21h bnMxMF8yMCBGT1IgVkFMVUVTIEZST00gKDEwKSBUTyAoMjApLAorICAgUEFSVElUSU9OIHNh bGVzbWFuczIwXzMwIEZPUiBWQUxVRVMgRlJPTSAoMjApIFRPICgzMCksCisgICBQQVJUSVRJ T04gc2FsZXNtYW5zMzBfNDAgRk9SIFZBTFVFUyBGUk9NICgzMCkgVE8gKDQwKSk7CisKK3Nl bGVjdCAqIGZyb20gc2FsZXNtYW5zMDFfMTA7CitzZWxlY3QgKiBmcm9tIHNhbGVzbWFuczEw XzIwOworc2VsZWN0ICogZnJvbSBzYWxlc21hbnMyMF8zMDsKK3NlbGVjdCAqIGZyb20gc2Fs ZXNtYW5zMzBfNDA7CisKK0RST1AgVEFCTEUgc2FsZXNtYW5zIENBU0NBREU7CisKKy0tCist LSBUZXN0OiBzcGxpdCBzdWItcGFydGl0aW9uCistLQorQ1JFQVRFIFRBQkxFIHNhbGVzX3Jh bmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNhbGVz X2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChzYWxl c19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBzYWxl c19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAyLTAx Jyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfZmViMjAyMiBQQVJUSVRJT04gT0Ygc2FsZXNfcmFu Z2UgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX21hcjIwMjIgUEFSVElUSU9OIE9GIHNhbGVzX3JhbmdlIEZP UiBWQUxVRVMgRlJPTSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDQtMDEnKTsKKworQ1JF QVRFIFRBQkxFIHNhbGVzX2FwcjIwMjIgKHNhbGVzbWFuX2lkIElOVCwgc2FsZXNtYW5fbmFt ZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElOVCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJU SVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOworQ1JFQVRFIFRBQkxFIHNhbGVzX2Fwcl9h bGwgUEFSVElUSU9OIE9GIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0w NC0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgQVRU QUNIIFBBUlRJVElPTiBzYWxlc19hcHIyMDIyIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDUtMDEnKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX290aGVycyBQ QVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKworQ1JFQVRFIElOREVYIHNhbGVz X3JhbmdlX3NhbGVzX2RhdGVfaWR4IE9OIHNhbGVzX3JhbmdlIFVTSU5HIGJ0cmVlIChzYWxl c19kYXRlKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScs ICAgICAgMTAwMCwgJzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoMiwgICdTbWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTEwJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0z MCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAg NzUwLCAgJzIwMjItMDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo NSwgICdEZWV2JywgICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0xMScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAg JzIwMjItMDMtMDgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdF cmljc3NvbicsIDE4NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDksICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjIt MDEtMjgnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcs ICAgIDM4MCwgICcyMDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDEyLCAnUGxhdG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDkn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUx MCwgICcyMDIyLTA1LTA0Jyk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfcmFuZ2U7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX2FwcjIwMjI7CisKK0FMVEVSIFRBQkxFIHNhbGVzX2FwcjIwMjIg U1BMSVQgUEFSVElUSU9OIHNhbGVzX2Fwcl9hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVz X2FwcjIwMjJfMDFfMTAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScpIFRPICgnMjAy Mi0wNC0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMTBfMjAgRk9SIFZBTFVF UyBGUk9NICgnMjAyMi0wNC0xMCcpIFRPICgnMjAyMi0wNC0yMCcpLAorICAgUEFSVElUSU9O IHNhbGVzX2FwcjIwMjJfMjBfMzAgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0yMCcpIFRP ICgnMjAyMi0wNS0wMScpKTsKKworU0VMRUNUICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVD VCAqIEZST00gc2FsZXNfYXByMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8w MV8xMDsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAyMl8xMF8yMDsKK1NFTEVDVCAqIEZS T00gc2FsZXNfYXByMjAyMl8yMF8zMDsKKworRFJPUCBUQUJMRSBzYWxlc19yYW5nZTsKKwor LS0KKy0tIEJZIExJU1QgcGFydGl0aW9uaW5nCistLQorCistLQorLS0gVGVzdDogc3BlY2lm aWMgZXJyb3JzIGZvciBCWSBMSVNUIHBhcnRpdGlvbmluZworLS0KK0NSRUFURSBUQUJMRSBz YWxlc19saXN0Cisoc2FsZXNtYW5faWQgSU5ULAorIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigz MCksCisgc2FsZXNfc3RhdGUgVkFSQ0hBUigyMCksCisgc2FsZXNfYW1vdW50IElOVCwKKyBz YWxlc19kYXRlIERBVEUpCitQQVJUSVRJT04gQlkgTElTVCAoc2FsZXNfc3RhdGUpOworCitD UkVBVEUgVEFCTEUgc2FsZXNfbm9yZCBQQVJUSVRJT04gT0Ygc2FsZXNfbGlzdCBGT1IgVkFM VUVTIElOICgnTXVybWFuc2snLCAnU3QuIFBldGVyc2J1cmcnLCAnVWtodGEnKTsKK0NSRUFU RSBUQUJMRSBzYWxlc19hbGwgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJ TiAoJ01vc2NvdycsICdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJywgJ01hZ2Fk YW4nLCAnS2F6YW4nLCAnS2hhYmFyb3ZzaycsICdWb2xnb2dyYWQnLCAnVmxhZGl2b3N0b2sn KTsKK0NSRUFURSBUQUJMRSBzYWxlc19vdGhlcnMgUEFSVElUSU9OIE9GIHNhbGVzX2xpc3Qg REVGQVVMVDsKKworLS0gRVJST1I6ICBwYXJ0aXRpb24gInNhbGVzX2Vhc3QiIHdvdWxkIG92 ZXJsYXAgcGFydGl0aW9uICJzYWxlc19ub3JkIgorQUxURVIgVEFCTEUgc2FsZXNfbGlzdCBT UExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193ZXN0 IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyksCisg ICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdLaGFi YXJvdnNrJywgJ1ZsYWRpdm9zdG9rJywgJ011cm1hbnNrJyksCisgICBQQVJUSVRJT04gc2Fs ZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3Jh ZCcpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9uICJzYWxlc193ZXN0IiB3b3VsZCBv dmVybGFwIHdpdGggYW5vdGhlciBuZXcgcGFydGl0aW9uICJzYWxlc19jZW50cmFsIgorQUxU RVIgVEFCTEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAg KFBBUlRJVElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9s ZW5zaycsICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVT IElOICgnTWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJU SVRJT04gc2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywg J1Zvcm9uZXpoJywgJ1ZvbGdvZ3JhZCcpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9u ICJzYWxlc193ZXN0IiBjYW5ub3QgaGF2ZSBOVUxMIHZhbHVlIGJlY2F1c2Ugc3BsaXQgcGFy dGl0aW9uIGRvZXMgbm90IGhhdmUKK0FMVEVSIFRBQkxFIHNhbGVzX2xpc3QgU1BMSVQgUEFS VElUSU9OIHNhbGVzX2FsbCBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfd2VzdCBGT1IgVkFM VUVTIElOICgnVm9yb25lemgnLCAnU21vbGVuc2snLCAnQnJ5YW5zaycsIE5VTEwpLAorICAg UEFSVElUSU9OIHNhbGVzX2Vhc3QgRk9SIFZBTFVFUyBJTiAoJ01hZ2FkYW4nLCAnS2hhYmFy b3ZzaycsICdWbGFkaXZvc3RvaycpLAorICAgUEFSVElUSU9OIHNhbGVzX2NlbnRyYWwgRk9S IFZBTFVFUyBJTiAoJ01vc2NvdycsICdLYXphbicsICdWb2xnb2dyYWQnKSk7CisKK0RST1Ag VEFCTEUgc2FsZXNfbGlzdDsKKworLS0KKy0tIFRlc3Q6IHR3byBzcGVjaWZpYyBlcnJvcnMg Zm9yIEJZIExJU1QgcGFydGl0aW9uaW5nOgorLS0gICAqIG5ldyBwYXJ0aXRpb25zIG5vdCBo YXMgTlVMTCB2YWx1ZSB0aGF0IHNwbGl0IHBhcnRpdGlvbiBoYXMuCistLSAgICogbmV3IHBh cnRpdGlvbnMgbm90IGhhcyBhIHZhbHVlIHRoYXQgc3BsaXQgcGFydGl0aW9uIGhhcy4KKy0t CitDUkVBVEUgVEFCTEUgc2FsZXNfbGlzdAorKHNhbGVzbWFuX2lkIElOVCwKKyBzYWxlc21h bl9uYW1lIFZBUkNIQVIoMzApLAorIHNhbGVzX3N0YXRlIFZBUkNIQVIoMjApLAorIHNhbGVz X2Ftb3VudCBJTlQsCisgc2FsZXNfZGF0ZSBEQVRFKQorUEFSVElUSU9OIEJZIExJU1QgKHNh bGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQgUEFSVElUSU9OIE9GIHNh bGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0LiBQZXRlcnNidXJnJywg J1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19s aXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgnLCAnU21vbGVuc2snLCAn QnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92c2snLCAnVm9sZ29ncmFk JywgJ1ZsYWRpdm9zdG9rJywgTlVMTCk7CisKKy0tIEVSUk9SOiAgbmV3IHBhcnRpdGlvbnMg bm90IGhhdmUgdmFsdWUgTlVMTCBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIgVEFC TEUgc2FsZXNfbGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJ VElPTiBzYWxlc193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycs ICdCcnlhbnNrJyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgn TWFnYWRhbicsICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04g c2FsZXNfY2VudHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdv Z3JhZCcpKTsKKworLS0gRVJST1I6ICBuZXcgcGFydGl0aW9ucyBub3QgaGF2ZSB2YWx1ZSAn Vm9sZ29ncmFkJyBidXQgc3BsaXQgcGFydGl0aW9uIGhhcworQUxURVIgVEFCTEUgc2FsZXNf bGlzdCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxl c193ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNr JyksCisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbics ICdLaGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2Vu dHJhbCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgTlVMTCkpOworCitEUk9Q IFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0OiBCWSBMSVNUIHBhcnRpdGlvbmlu ZywgU1BMSVQgUEFSVElUSU9OIHdpdGggZGF0YQorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19s aXN0Cisoc2FsZXNtYW5faWQgSU5UIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFksCisg c2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwKKyBzYWxlc19zdGF0ZSBWQVJDSEFSKDIwKSwK KyBzYWxlc19hbW91bnQgSU5ULAorIHNhbGVzX2RhdGUgREFURSkKK1BBUlRJVElPTiBCWSBM SVNUIChzYWxlc19zdGF0ZSk7CisKK0NSRUFURSBJTkRFWCBzYWxlc19saXN0X3NhbGVzbWFu X25hbWVfaWR4IE9OIHNhbGVzX2xpc3QgVVNJTkcgYnRyZWUgKHNhbGVzbWFuX25hbWUpOwor Q1JFQVRFIElOREVYIHNhbGVzX2xpc3Rfc2FsZXNfc3RhdGVfaWR4IE9OIHNhbGVzX2xpc3Qg VVNJTkcgYnRyZWUgKHNhbGVzX3N0YXRlKTsKKworQ1JFQVRFIFRBQkxFIHNhbGVzX25vcmQg UEFSVElUSU9OIE9GIHNhbGVzX2xpc3QgRk9SIFZBTFVFUyBJTiAoJ011cm1hbnNrJywgJ1N0 LiBQZXRlcnNidXJnJywgJ1VraHRhJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJ VElPTiBPRiBzYWxlc19saXN0IEZPUiBWQUxVRVMgSU4gKCdNb3Njb3cnLCAnVm9yb25lemgn LCAnU21vbGVuc2snLCAnQnJ5YW5zaycsICdNYWdhZGFuJywgJ0themFuJywgJ0toYWJhcm92 c2snLCAnVm9sZ29ncmFkJywgJ1ZsYWRpdm9zdG9rJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNf b3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19saXN0IERFRkFVTFQ7CisKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1RydW1wJywgICAgJ01hZ2FkYW4nLCAgICAgICAgMTAw MCwgJzIwMjItMDMtMDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1Nt aXJub2ZmJywgJ1Ntb2xlbnNrJywgICAgICAgNTAwLCAgJzIwMjItMDMtMDMnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0ZvcmQnLCAgICAgJ1N0LiBQZXRlcnNidXJn JywgMjAwMCwgJzIwMjItMDMtMDUnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0l2YW5vdicsICAgJ01vc2NvdycsICAgICAgICAgNzUwLCAgJzIwMjItMDMtMDQnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0RlZXYnLCAgICAgJ1Zvcm9uZXpo JywgICAgICAgMjUwLCAgJzIwMjItMDMtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3Qg KHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUp IFZBTFVFUyAoJ1BvaXJvdCcsICAgJ0themFuJywgICAgICAgICAgMTAwMCwgJzIwMjItMDMt MDEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0 YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAgICAgJ1Vr aHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVz X2RhdGUpIFZBTFVFUyAoJ0xpJywgICAgICAgJ1ZsYWRpdm9zdG9rJywgICAgMTE1MCwgJzIw MjItMDMtMDknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNh bGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ01heScsICAg ICAgJ1VraHRhJywgICAgICAgICAgMTIwMCwgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQs IHNhbGVzX2RhdGUpIFZBTFVFUyAoJ0hhbGRlcicsICAgJ011cm1hbnNrJywgICAgICAgODAw LCAgJzIwMjItMDMtMDInKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25h bWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ011 bGxlcicsICAgJ0JyeWFuc2snLCAgICAgICAgNjUwLCAgJzIwMjItMDMtMDUnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19h bW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1NtaXRoJywgICAgJ1ZvbGdvZ3JhZCcsICAg ICAgMzUwLCAgJzIwMjItMDMtMTAnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVz bWFuX25hbWUsIHNhbGVzX3N0YXRlLCBzYWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVF UyAoJ0dhbmRpJywgICAgJ01vc2NvdycsICAgICAgICAgMTUwLCAgJzIwMjItMDMtMDgnKTsK K0lOU0VSVCBJTlRPIHNhbGVzX2xpc3QgKHNhbGVzbWFuX25hbWUsIHNhbGVzX3N0YXRlLCBz YWxlc19hbW91bnQsIHNhbGVzX2RhdGUpIFZBTFVFUyAoJ1BsYXRvJywgICAgJ1Zvcm9uZXpo JywgICAgICAgOTUwLCAgJzIwMjItMDMtMDUnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfbGlz dCBTUExJVCBQQVJUSVRJT04gc2FsZXNfYWxsIElOVE8KKyAgKFBBUlRJVElPTiBzYWxlc193 ZXN0IEZPUiBWQUxVRVMgSU4gKCdWb3JvbmV6aCcsICdTbW9sZW5zaycsICdCcnlhbnNrJyks CisgICBQQVJUSVRJT04gc2FsZXNfZWFzdCBGT1IgVkFMVUVTIElOICgnTWFnYWRhbicsICdL aGFiYXJvdnNrJywgJ1ZsYWRpdm9zdG9rJyksCisgICBQQVJUSVRJT04gc2FsZXNfY2VudHJh bCBGT1IgVkFMVUVTIElOICgnTW9zY293JywgJ0themFuJywgJ1ZvbGdvZ3JhZCcpKTsKKwor U0VMRUNUICogRlJPTSBzYWxlc19saXN0OworU0VMRUNUICogRlJPTSBzYWxlc193ZXN0Owor U0VMRUNUICogRlJPTSBzYWxlc19lYXN0OworU0VMRUNUICogRlJPTSBzYWxlc19ub3JkOwor U0VMRUNUICogRlJPTSBzYWxlc19jZW50cmFsOworCistLSBVc2UgaW5kZXhzY2FuIGZvciB0 ZXN0IGluZGV4ZXMgYWZ0ZXIgc3BsaXQgcGFydGl0aW9uCitTRVQgZW5hYmxlX2luZGV4c2Nh biA9IE9OOworU0VUIGVuYWJsZV9zZXFzY2FuID0gT0ZGOworCitTRUxFQ1QgKiBGUk9NIHNh bGVzX2NlbnRyYWwgV0hFUkUgc2FsZXNfc3RhdGUgPSAnTW9zY293JzsKK1NFTEVDVCAqIEZS T00gc2FsZXNfbGlzdCBXSEVSRSBzYWxlc19zdGF0ZSA9ICdNb3Njb3cnOworU0VMRUNUICog RlJPTSBzYWxlc19saXN0IFdIRVJFIHNhbGVzbWFuX25hbWUgPSAnSXZhbm92JzsKKworU0VU IGVuYWJsZV9pbmRleHNjYW4gPSBPTjsKK1NFVCBlbmFibGVfc2Vxc2NhbiA9IE9OOworCitE Uk9QIFRBQkxFIHNhbGVzX2xpc3Q7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxp dCBERUZBVUxUIHBhcnRpdGlvbiB0byBwYXJ0aXRpb25zIHdpdGggc3BhY2VzIGJldHdlZW4g Ym91bmRzOworLS0gICAqIHJhbmRvbSBvcmRlciBvZiBwYXJ0aXRpb25zIGluIFNQTElUIFBB UlRJVElPTiBjb21tYW5kLgorLS0KK0NSRUFURSBUQUJMRSBzYWxlc19yYW5nZSAoc2FsZXNt YW5faWQgSU5ULCBzYWxlc21hbl9uYW1lIFZBUkNIQVIoMzApLCBzYWxlc19hbW91bnQgSU5U LCBzYWxlc19kYXRlIERBVEUpIFBBUlRJVElPTiBCWSBSQU5HRSAoc2FsZXNfZGF0ZSk7CitD UkVBVEUgVEFCTEUgc2FsZXNfb3RoZXJzIFBBUlRJVElPTiBPRiBzYWxlc19yYW5nZSBERUZB VUxUOworCitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEsICAnTWF5JywgICAg ICAxMDAwLCAnMjAyMi0wMS0zMScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVT ICgyLCAgJ1NtaXJub2ZmJywgNTAwLCAgJzIwMjItMDItMDknKTsKK0lOU0VSVCBJTlRPIHNh bGVzX3JhbmdlIFZBTFVFUyAoMywgICdGb3JkJywgICAgIDIwMDAsICcyMDIyLTA0LTMwJyk7 CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDQsICAnSXZhbm92JywgICA3NTAs ICAnMjAyMi0wNC0xMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg1LCAg J0RlZXYnLCAgICAgMjUwLCAgJzIwMjItMDQtMDcnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jh bmdlIFZBTFVFUyAoNiwgICdQb2lyb3QnLCAgIDE1MCwgICcyMDIyLTAyLTA3Jyk7CitJTlNF UlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDcsICAnTGknLCAgICAgICAxNzUsICAnMjAy Mi0wMy0wOCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg4LCAgJ0VyaWNz c29uJywgMTg1LCAgJzIwMjItMDItMjMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZB TFVFUyAoOSwgICdNdWxsZXInLCAgIDI1MCwgICcyMDIyLTAzLTExJyk7CitJTlNFUlQgSU5U TyBzYWxlc19yYW5nZSBWQUxVRVMgKDEwLCAnSGFsZGVyJywgICAzNTAsICAnMjAyMi0wMS0y OCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMSwgJ1RydW1wJywgICAg MzgwLCAgJzIwMjItMDQtMDYnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAo MTIsICdQbGF0bycsICAgIDM1MCwgICcyMDIyLTAzLTE5Jyk7CitJTlNFUlQgSU5UTyBzYWxl c19yYW5nZSBWQUxVRVMgKDEzLCAnR2FuZGknLCAgICAzNzcsICAnMjAyMi0wMS0wOScpOwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAg JzIwMjItMDUtMDQnKTsKKworQUxURVIgVEFCTEUgc2FsZXNfcmFuZ2UgU1BMSVQgUEFSVElU SU9OIHNhbGVzX290aGVycyBJTlRPCisgIChQQVJUSVRJT04gc2FsZXNfb3RoZXJzIERFRkFV TFQsCisgICBQQVJUSVRJT04gc2FsZXNfbWFyMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJP TSAoJzIwMjItMDMtMDEnKSBUTyAoJzIwMjItMDMtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxl c19qYW4yMDIyXzFkZWNhZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgn MjAyMi0wMS0xMCcpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjJfMWRlY2FkZSBGT1Ig VkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTAyLTEwJyksCisgICBQQVJU SVRJT04gc2FsZXNfYXByMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDQt MDEnKSBUTyAoJzIwMjItMDQtMTAnKSk7CisKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAy Ml8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19mZWIyMDIyXzFkZWNhZGU7CitTRUxF Q1QgKiBGUk9NIHNhbGVzX21hcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNf YXByMjAyMl8xZGVjYWRlOworU0VMRUNUICogRlJPTSBzYWxlc19vdGhlcnM7CisKK0RST1Ag VEFCTEUgc2FsZXNfcmFuZ2U7CisKKy0tCistLSBUZXN0IGZvcjoKKy0tICAgKiBzcGxpdCBu b24tREVGQVVMVCBwYXJ0aXRpb24gdG8gcGFydGl0aW9ucyB3aXRoIHNwYWNlcyBiZXR3ZWVu IGJvdW5kczsKKy0tICAgKiByYW5kb20gb3JkZXIgb2YgcGFydGl0aW9ucyBpbiBTUExJVCBQ QVJUSVRJT04gY29tbWFuZC4KKy0tCitDUkVBVEUgVEFCTEUgc2FsZXNfcmFuZ2UgKHNhbGVz bWFuX2lkIElOVCwgc2FsZXNtYW5fbmFtZSBWQVJDSEFSKDMwKSwgc2FsZXNfYW1vdW50IElO VCwgc2FsZXNfZGF0ZSBEQVRFKSBQQVJUSVRJT04gQlkgUkFOR0UgKHNhbGVzX2RhdGUpOwor Q1JFQVRFIFRBQkxFIHNhbGVzX2FsbCBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMS0wMScpIFRPICgnMjAyMi0wNS0wMScpOworQ1JFQVRFIFRB QkxFIHNhbGVzX290aGVycyBQQVJUSVRJT04gT0Ygc2FsZXNfcmFuZ2UgREVGQVVMVDsKKwor SU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxLCAgJ01heScsICAgICAgMTAwMCwg JzIwMjItMDEtMzEnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMiwgICdT bWlybm9mZicsIDUwMCwgICcyMDIyLTAyLTA5Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5n ZSBWQUxVRVMgKDMsICAnRm9yZCcsICAgICAyMDAwLCAnMjAyMi0wNC0zMCcpOworSU5TRVJU IElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg0LCAgJ0l2YW5vdicsICAgNzUwLCAgJzIwMjIt MDQtMTMnKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNSwgICdEZWV2Jywg ICAgIDI1MCwgICcyMDIyLTA0LTA3Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxV RVMgKDYsICAnUG9pcm90JywgICAxNTAsICAnMjAyMi0wMi0wNycpOworSU5TRVJUIElOVE8g c2FsZXNfcmFuZ2UgVkFMVUVTICg3LCAgJ0xpJywgICAgICAgMTc1LCAgJzIwMjItMDMtMDgn KTsKK0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoOCwgICdFcmljc3NvbicsIDE4 NSwgICcyMDIyLTAyLTIzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDks ICAnTXVsbGVyJywgICAyNTAsICAnMjAyMi0wMy0xMScpOworSU5TRVJUIElOVE8gc2FsZXNf cmFuZ2UgVkFMVUVTICgxMCwgJ0hhbGRlcicsICAgMzUwLCAgJzIwMjItMDEtMjgnKTsKK0lO U0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTEsICdUcnVtcCcsICAgIDM4MCwgICcy MDIyLTA0LTA2Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDEyLCAnUGxh dG8nLCAgICAzNTAsICAnMjAyMi0wMy0xOScpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxMywgJ0dhbmRpJywgICAgMzc3LCAgJzIwMjItMDEtMDknKTsKK0lOU0VSVCBJ TlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMTQsICdTbWl0aCcsICAgIDUxMCwgICcyMDIyLTA1 LTA0Jyk7CisKK0FMVEVSIFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxl c19hbGwgSU5UTworICAoUEFSVElUSU9OIHNhbGVzX21hcjIwMjJfMWRlY2FkZSBGT1IgVkFM VUVTIEZST00gKCcyMDIyLTAzLTAxJykgVE8gKCcyMDIyLTAzLTEwJyksCisgICBQQVJUSVRJ T04gc2FsZXNfamFuMjAyMl8xZGVjYWRlIEZPUiBWQUxVRVMgRlJPTSAoJzIwMjItMDEtMDEn KSBUTyAoJzIwMjItMDEtMTAnKSwKKyAgIFBBUlRJVElPTiBzYWxlc19mZWIyMDIyXzFkZWNh ZGUgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMi0xMCcpLAor ICAgUEFSVElUSU9OIHNhbGVzX2FwcjIwMjJfMWRlY2FkZSBGT1IgVkFMVUVTIEZST00gKCcy MDIyLTA0LTAxJykgVE8gKCcyMDIyLTA0LTEwJykpOworCitTRUxFQ1QgKiBGUk9NIHNhbGVz X2phbjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfZmViMjAyMl8xZGVjYWRl OworU0VMRUNUICogRlJPTSBzYWxlc19tYXIyMDIyXzFkZWNhZGU7CitTRUxFQ1QgKiBGUk9N IHNhbGVzX2FwcjIwMjJfMWRlY2FkZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOwor CitEUk9QIFRBQkxFIHNhbGVzX3JhbmdlOworCistLQorLS0gVGVzdCBmb3Igc3BsaXQgbm9u LURFRkFVTFQgcGFydGl0aW9uIHRvIERFRkFVTFQgcGFydGl0aW9uICsgcGFydGl0aW9ucwor LS0gd2l0aCBzcGFjZXMgYmV0d2VlbiBib3VuZHMuCistLQorQ1JFQVRFIFRBQkxFIHNhbGVz X3JhbmdlIChzYWxlc21hbl9pZCBJTlQsIHNhbGVzbWFuX25hbWUgVkFSQ0hBUigzMCksIHNh bGVzX2Ftb3VudCBJTlQsIHNhbGVzX2RhdGUgREFURSkgUEFSVElUSU9OIEJZIFJBTkdFIChz YWxlc19kYXRlKTsKK0NSRUFURSBUQUJMRSBzYWxlc19qYW4yMDIyIFBBUlRJVElPTiBPRiBz YWxlc19yYW5nZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAxLTAxJykgVE8gKCcyMDIyLTAy LTAxJyk7CitDUkVBVEUgVEFCTEUgc2FsZXNfYWxsIFBBUlRJVElPTiBPRiBzYWxlc19yYW5n ZSBGT1IgVkFMVUVTIEZST00gKCcyMDIyLTAyLTAxJykgVE8gKCcyMDIyLTA1LTAxJyk7CisK K0lOU0VSVCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoMSwgICdNYXknLCAgICAgIDEwMDAs ICcyMDIyLTAxLTMxJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDIsICAn U21pcm5vZmYnLCA1MDAsICAnMjAyMi0wMi0xMCcpOworSU5TRVJUIElOVE8gc2FsZXNfcmFu Z2UgVkFMVUVTICgzLCAgJ0ZvcmQnLCAgICAgMjAwMCwgJzIwMjItMDQtMzAnKTsKK0lOU0VS VCBJTlRPIHNhbGVzX3JhbmdlIFZBTFVFUyAoNCwgICdJdmFub3YnLCAgIDc1MCwgICcyMDIy LTA0LTEzJyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDUsICAnRGVldics ICAgICAyNTAsICAnMjAyMi0wNC0wNycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFM VUVTICg2LCAgJ1BvaXJvdCcsICAgMTUwLCAgJzIwMjItMDItMTEnKTsKK0lOU0VSVCBJTlRP IHNhbGVzX3JhbmdlIFZBTFVFUyAoNywgICdMaScsICAgICAgIDE3NSwgICcyMDIyLTAzLTA4 Jyk7CitJTlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDgsICAnRXJpY3Nzb24nLCAx ODUsICAnMjAyMi0wMi0yMycpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICg5 LCAgJ011bGxlcicsICAgMjUwLCAgJzIwMjItMDMtMTEnKTsKK0lOU0VSVCBJTlRPIHNhbGVz X3JhbmdlIFZBTFVFUyAoMTAsICdIYWxkZXInLCAgIDM1MCwgICcyMDIyLTAxLTI4Jyk7CitJ TlNFUlQgSU5UTyBzYWxlc19yYW5nZSBWQUxVRVMgKDExLCAnVHJ1bXAnLCAgICAzODAsICAn MjAyMi0wNC0wNicpOworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2UgVkFMVUVTICgxMiwgJ1Bs YXRvJywgICAgMzUwLCAgJzIwMjItMDMtMTknKTsKK0lOU0VSVCBJTlRPIHNhbGVzX3Jhbmdl IFZBTFVFUyAoMTMsICdHYW5kaScsICAgIDM3NywgICcyMDIyLTAxLTA5Jyk7CisKK0FMVEVS IFRBQkxFIHNhbGVzX3JhbmdlIFNQTElUIFBBUlRJVElPTiBzYWxlc19hbGwgSU5UTworICAo UEFSVElUSU9OIHNhbGVzX2FwcjIwMjIgRk9SIFZBTFVFUyBGUk9NICgnMjAyMi0wNC0wMScp IFRPICgnMjAyMi0wNS0wMScpLAorICAgUEFSVElUSU9OIHNhbGVzX2ZlYjIwMjIgRk9SIFZB TFVFUyBGUk9NICgnMjAyMi0wMi0wMScpIFRPICgnMjAyMi0wMy0wMScpLAorICAgUEFSVElU SU9OIHNhbGVzX290aGVycyBERUZBVUxUKTsKKworSU5TRVJUIElOVE8gc2FsZXNfcmFuZ2Ug VkFMVUVTICgxNCwgJ1NtaXRoJywgICAgNTEwLCAgJzIwMjItMDUtMDQnKTsKKworU0VMRUNU ICogRlJPTSBzYWxlc19yYW5nZTsKK1NFTEVDVCAqIEZST00gc2FsZXNfamFuMjAyMjsKK1NF TEVDVCAqIEZST00gc2FsZXNfZmViMjAyMjsKK1NFTEVDVCAqIEZST00gc2FsZXNfYXByMjAy MjsKK1NFTEVDVCAqIEZST00gc2FsZXNfb3RoZXJzOworCitEUk9QIFRBQkxFIHNhbGVzX3Jh bmdlOworCistLQorRFJPUCBTQ0hFTUEgcGFydGl0aW9uX3NwbGl0X3NjaGVtYTsK --------------ZMzzTL7az0Lk1xDqEC5o0Ddn--