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 1nUb2T-0002EQ-A1 for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Mar 2022 21:18:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nUb1T-0003vS-WF for pgsql-hackers@arkaria.postgresql.org; Wed, 16 Mar 2022 21:17:36 +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 1nUb1T-0003ub-0O for pgsql-hackers@lists.postgresql.org; Wed, 16 Mar 2022 21:17:35 +0000 Received: from mail-oi1-x22b.google.com ([2607:f8b0:4864:20::22b]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nUb1P-00022Q-Hq for pgsql-hackers@lists.postgresql.org; Wed, 16 Mar 2022 21:17:34 +0000 Received: by mail-oi1-x22b.google.com with SMTP id q189so3716108oia.9 for ; Wed, 16 Mar 2022 14:17:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=mKzKwzfweIlRFFuotRnrj7RAz+uHnlt+nyi1Kl41Kpc=; b=bMPEpur/hLTw+e0hHrbZqwLX4Te/sDKPlfmI88ysaEjLFAXpfb5eEPI39Ec1FYNp2C 81x8aNc88vEPWY2Ni4PMikvvhj5VUJX8kGQIEyCMRozMmJF1UAEDiT1yzAd9lk4taiHp bM2FzXDTlRbHh1FY6gTmiPteQBb238QuBucyVaO7ensFCPsx4rvtO2HwvN33nTGQI/ZN juFclO93NhI36z5ZDG+L65csi0r4louKfeWKNezTLb+6iDbwmpPi7a0NBnDHJAMYOul4 SW5RRgv4E/EJNjx/KD491hLZq27RacaLLMJyB65EQ6X0zXRaGy6C6XPn9/uyPXf+stQA QJOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=mKzKwzfweIlRFFuotRnrj7RAz+uHnlt+nyi1Kl41Kpc=; b=lQk59Lbh47kfshDxD+he0ExRgNyQPDJrk8K+626SXWv5Cfqnjt70Oz5Pj5HpdIAV1f 4x538NU+KVwlbcNCIOUmcqQNYYQBmgxGUPuMAAr2cTOXmVOWcYWEeuOAhA4aGIYRjXqF oteUuZA8HA5/7OL3JKi6FXSPhtOBIyIjeXu3VcJ+F7YHimRHy4r2o4MA/OyS6Qp4GiVN hAZzw7Y1CLKlr2Tll+8LFQ7BWcbvmNDbUKfhQdWcmlD+vPF+uCULA2SDo53EnU3Cuc91 d+D2zAj1THDsT5Z1O+BZHaQT5PxGxa5fIAdoLSkiEdWppR6HIQFcNIY7XZLpO9FVCIJc Ruog== X-Gm-Message-State: AOAM532KkasnypBcTG36k0abVU9E5dOJGI7DIIWFI1MjFhuGd+B3A2MS zO9MiwpSokCTmndYNMYUFus1aEhYKZ+eJ7FiiyWTeYu+rQw= X-Google-Smtp-Source: ABdhPJyrJVF+OTmqQhtnhSUDG4CWAoRap5KCZNg210fYW/9uVJPLqLhRIg527MKsiYhriYHo2K4QoXE+ylBRT8h9lh0= X-Received: by 2002:a05:6808:13ca:b0:2d0:6e82:6983 with SMTP id d10-20020a05680813ca00b002d06e826983mr4597288oiw.5.1647465449521; Wed, 16 Mar 2022 14:17:29 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Zheng Li Date: Wed, 16 Mar 2022 17:17:18 -0400 Message-ID: Subject: Re: Support logical replication of DDLs To: Dilip Kumar Cc: PostgreSQL Hackers , rajesh.rs0541@gmail.com Content-Type: multipart/mixed; boundary="000000000000e61e1505da5c70ff" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000e61e1505da5c70ff Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, >If you don't mind, would you like to share the POC or the branch for this = work? The POC patch is attached. It currently supports the following functionalit= ies: 1. Configure either database level or table level DDL replication via the CREATE PUBLICATION command. 2.Supports replication of DDL of the following types when database level DDL replication is turned on. Other less common DDL types could be added later. T_CreateSchemaStmt T_CreateStmt T_CreateForeignTableStmt T_AlterDomainStmt T_DefineStmt T_CompositeTypeStmt T_CreateEnumStmt T_CreateRangeStmt T_AlterEnumStmt T_ViewStmt T_CreateFunctionStmt T_AlterFunctionStmt T_CreateTrigStmt T_CreateDomainStmt T_CreateCastStmt T_CreateOpClassStmt T_CreateOpFamilyStmt T_AlterOpFamilyStmt T_AlterOperatorStmt T_AlterTypeStmt T_GrantStmt T_AlterCollationStmt T_AlterTableStmt T_IndexStmt 3.Supports replication of DDLs of the following types if only table level DDL replication is turned on. T_AlterTableStmt T_IndexStmt 4.Supports seamless DML replication of new tables created via DDL replication without having to manually running =E2=80=9CALTER SUBSCRIPTION = ... REFRESH PUBLICATION" on the subscriber. Here is a demo: source_db=3D# create publication mypub FOR ALL TABLES with (ddl =3D =E2=80= =98database=E2=80=99); target_db=3D# create subscription mysub CONNECTION 'dbname=3Dsource_db host=3Dlocalhost user=3Dmyuser port=3D5432' PUBLICATION mypub; source_db=3D# BEGIN; CREATE TABLE foo (a int); CREATE INDEX foo_idx ON foo (a); ALTER TABLE foo ADD COLUMN b timestamptz; CREATE FUNCTION foo_ts() RETURNS trigger AS $$ BEGIN NEW.b :=3D current_timestamp; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER foo_ts BEFORE INSERT OR UPDATE ON foo FOR EACH ROW EXECUTE FUNCTION foo_ts(); INSERT INTO foo VALUES (1); COMMIT; source_db=3D# select * from foo; a | b ---+------------------------------- 1 | 2022-03-15 19:07:53.005215+00 (1 row) target_db=3D# select * from foo; a | b ---+------------------------------- 1 | 2022-03-15 19:07:53.005215+00 (1 row) Here is the remaining work for this patch: 1. Test and handle corner case DDLs, such as the ones listed in my first email[1]. 2. Investigate less common DDL types (categorized in function LogLogicalDDLCommand) and decide if and under what conditions they should be replicated. 3. Determine if we want to include table-level DDL replication. If so, we need to continue to enhance and test this feature. I think this will be ready to consider for commit once 1 and 2 are resolved. I think 3 can be done in the second phase. If you are reviewing the code, I=E2=80=99ve provided a detailed description= of the patch below: 1. Syntax, pg_publication and pg_dump change: Allows the user to configure either database level or table level DDL replication via the CREATE PUBLICATION command as proposed in my first email. Two new columns are added to the pg_publication catalog to show the DDL replication levels, test output publication.out is updated accordingly. pg_dump is also modified to accommodate the pg_publication catalog change. 2. Logical logging change a. A new WAL record type xl_logical_ddl_message is introduced to support logical logging of DDL command. xl_logical_ddl_message is similar to the existing xl_logical_message for generic message logging. The reason for not using xl_logical_message directly as proposed initially is I found out we need to log more information (such as user role, search path and potentially more in the future) than just one string, and we don=E2=80=99t want to make too much changes to the existing xl_logical_message which may break its current consumers. b. The logging of DDL command string is processed in function LogLogicalDDLCommand. We categorize DDL command types into three categories in this function: 1. replicated in database level replication only (such as CREATE TABLE, CREATE FUNCTION). 2. replicated in database or table level replication depending on the configuration (such as ALTER TABLE). 3. not supported for replication or pending investigation. 3. Logical decoding and Reorderbuffer change Supports logical decoding of the new WAL record xl_logical_ddl_message. This is similar to the logical decoding of xl_logical_message. Tests for this change are added in the test_decoding plugin. 4. Integration with pgoutput Supports sending and receiving the DDL message using the logical replication wire protocol. A new LogicalRepMsgType is introduced for this purpose: LOGICAL_REP_MSG_DDLMESSAGE =3D 'L'. 5. Logical replication worker change Supports execution of the DDL command in the original user role and search_path. For any new table created this way, we also set its srsubstate in the pg_subscription_rel catalog to SUBREL_STATE_INIT, So that DML replication can progress on this new table without manually running "ALTER SUBSCRIPTION ... REFRESH PUBLICATION". 6. TAP test A new TAP test 030_rep_ddl.pl is added. We mainly focused on testing the happy path of database level replication so far. Corner case DDLs and table level DDL replication are still to be carefully tested. >> However, there are still many edge cases to sort out because not every >> DDL statement can/should be replicated. Some of these include: >> 3. CREATE TABLE AS and SELECT INTO, For example: >> >> CREATE TABLE foo AS >> SELECT field_1, field_2 FROM bar; >> >> There are a few issues that can occur here. For one, it=E2=80=99s possib= le >> that table bar doesn't exist on the subscriber. Even if =E2=80=9Cbar=E2= =80=9D does >> exist, it may not be fully up-to-date with the publisher, which would >> cause a data mismatch on =E2=80=9Cfoo=E2=80=9D between the publisher and= subscriber. >In such cases why don't we just log the table creation WAL for DDL >instead of a complete statement which creates the table and inserts >the tuple? Because we are already WAL logging individual inserts and >once you make sure of replicating the table creation I think the exact >data insertion on the subscriber side will be taken care of by the >insert WALs no? The table creation WAL and table insert WAL are available. The tricky part is how do we break down this command into two parts (a normal CREATE TABLE followed by insertions) either from the parsetree or the WALs. I=E2=80=99ll have to dig more on this. I look forward to your feedback. Regards, Zheng [1] https://www.postgresql.org/message-id/CAAD30U+pVmfKwUKy8cbZOnUXyguJ-uBN= ejwD75Kyo=3DOjdQGJ9g@mail.gmail.com On Sun, Mar 13, 2022 at 7:35 AM Dilip Kumar wrote: > > On Mon, Feb 21, 2022 at 9:43 PM Zheng Li wrote: > > > > Hello, > > > > One of the most frequently requested improvements from our customers > > is to reduce downtime associated with software updates (both major and > > minor versions). To do this, we have reviewed potential contributions t= o > > improving logical replication. > > > > I=E2=80=99m working on a patch to support logical replication of data > > definition language statements (DDLs). This is a useful feature when a > > database in logical replication has lots of tables, functions and > > other objects that change over time, such as in online cross major > > version upgrade. > > +1 > > > I put together a prototype that replicates DDLs using the generic > > messages for logical decoding. The idea is to log the candidate DDL > > string in ProcessUtilitySlow() using LogLogicalMessge() with a new > > flag in WAL record type xl_logical_message indicating it=E2=80=99s a DD= L > > message. The xl_logical_message record is decoded and sent to the > > subscriber via pgoutput. The logical replication worker process is > > dispatched for this new DDL message type and executes the command > > accordingly. > > If you don't mind, would you like to share the POC or the branch for this= work? > > > However, there are still many edge cases to sort out because not every > > DDL statement can/should be replicated. Some of these include: > > > 3. CREATE TABLE AS and SELECT INTO, For example: > > > > CREATE TABLE foo AS > > SELECT field_1, field_2 FROM bar; > > > > There are a few issues that can occur here. For one, it=E2=80=99s p= ossible > > that table bar doesn't exist on the subscriber. Even if =E2=80=9Cbar=E2= =80=9D does > > exist, it may not be fully up-to-date with the publisher, which would > > cause a data mismatch on =E2=80=9Cfoo=E2=80=9D between the publisher an= d subscriber. > > In such cases why don't we just log the table creation WAL for DDL > instead of a complete statement which creates the table and inserts > the tuple? Because we are already WAL logging individual inserts and > once you make sure of replicating the table creation I think the exact > data insertion on the subscriber side will be taken care of by the > insert WALs no? > > > -- > Regards, > Dilip Kumar > EnterpriseDB: http://www.enterprisedb.com --000000000000e61e1505da5c70ff Content-Type: application/octet-stream; name="ddl_replication.patch1" Content-Disposition: attachment; filename="ddl_replication.patch1" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0u2by0i0 Y29tbWl0IDE0ODVlOTYwM2MxNTI5MTk2MmY2ODY4N2QzNzc2YTc1Y2FkZGU5NmEKQXV0aG9yOiBa aGVuZyAoWmFuZSkgTGkgPHpoZWxsaUBhbWF6b24uY29tPgpEYXRlOiAgIFdlZCBNYXIgMTYgMjA6 NTA6NDIgMjAyMiArMDAwMAoKICAgIFN1cHBvcnRzIGxvZ2ljYWwgcmVwbGljYXRpb24gb2YgRERM IGNvbW1hbmRzLgogICAgCiAgICAxLiBTeW50YXgsIHBnX3B1YmxpY2F0aW9uIGFuZCBwZ19kdW1w IGNoYW5nZToKICAgICAgICBBbGxvd3MgdGhlIHVzZXIgdG8gY29uZmlndXJlIGVpdGhlciBkYXRh YmFzZSBsZXZlbCBvciB0YWJsZSBsZXZlbAogICAgRERMIHJlcGxpY2F0aW9uIHZpYSB0aGUgQ1JF QVRFIFBVQkxJQ0FUSU9OIGNvbW1hbmQgYXMgcHJvcG9zZWQgaW4gbXkKICAgIGZpcnN0IGVtYWls LiBUd28gbmV3IGNvbHVtbnMgYXJlIGFkZGVkIHRvIHRoZSBwZ19wdWJsaWNhdGlvbiBjYXRhbG9n IHRvCiAgICBzaG93IHRoZSBEREwgcmVwbGljYXRpb24gbGV2ZWxzLCB0ZXN0IG91dHB1dCBwdWJs aWNhdGlvbi5vdXQgaXMgdXBkYXRlZAogICAgYWNjb3JkaW5nbHkuIHBnX2R1bXAgaXMgYWxzbyBt b2RpZmllZCB0byBhY2NvbW1vZGF0ZSB0aGUgcGdfcHVibGljYXRpb24KICAgIGNhdGFsb2cgY2hh bmdlLgogICAgCiAgICAyLiBMb2dpY2FsIGxvZ2dpbmcgY2hhbmdlCiAgICAgICAgYS4gQSBuZXcg V0FMIHJlY29yZCB0eXBlIHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgaXMgaW50cm9kdWNlZCB0bwog ICAgc3VwcG9ydCBsb2dpY2FsIGxvZ2dpbmcgb2YgRERMIGNvbW1hbmQuIHhsX2xvZ2ljYWxfZGRs X21lc3NhZ2UgaXMKICAgIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIHhsX2xvZ2ljYWxfbWVzc2Fn ZSBmb3IgZ2VuZXJpYyBtZXNzYWdlIGxvZ2dpbmcuCiAgICBUaGUgcmVhc29uIGZvciBub3QgdXNp bmcgeGxfbG9naWNhbF9tZXNzYWdlIGRpcmVjdGx5IGFzIHByb3Bvc2VkCiAgICBpbml0aWFsbHkg aXMgSSBmb3VuZCBvdXQgd2UgbmVlZCB0byBsb2cgbW9yZSBpbmZvcm1hdGlvbiAoc3VjaCBhcyB1 c2VyCiAgICByb2xlLCBzZWFyY2ggcGF0aCBhbmQgcG90ZW50aWFsbHkgbW9yZSBpbiB0aGUgZnV0 dXJlKSB0aGFuIGp1c3Qgb25lCiAgICBzdHJpbmcsIGFuZCB3ZSBkb27igJl0IHdhbnQgdG8gbWFr ZSB0b28gbXVjaCBjaGFuZ2VzIHRvIHRoZSBleGlzdGluZwogICAgeGxfbG9naWNhbF9tZXNzYWdl IHdoaWNoIG1heSBicmVhayBpdHMgY3VycmVudCBjb25zdW1lcnMuCiAgICAgICAgYi4gVGhlIGxv Z2dpbmcgb2YgRERMIGNvbW1hbmQgc3RyaW5nIGlzIHByb2Nlc3NlZCBpbiBmdW5jdGlvbgogICAg TG9nTG9naWNhbERETENvbW1hbmQuIFdlIGNhdGVnb3JpemUgRERMIGNvbW1hbmQgdHlwZXMgaW50 byB0aHJlZQogICAgY2F0ZWdvcmllcyBpbiB0aGlzIGZ1bmN0aW9uOgogICAgICAgICAgICAxLiBy ZXBsaWNhdGVkIGluIGRhdGFiYXNlIGxldmVsIHJlcGxpY2F0aW9uIG9ubHkgKHN1Y2ggYXMKICAg ICAgICAgICAgQ1JFQVRFIFRBQkxFLCBDUkVBVEUgRlVOQ1RJT04pLgogICAgICAgICAgICAyLiBy ZXBsaWNhdGVkIGluIGRhdGFiYXNlIG9yIHRhYmxlIGxldmVsIHJlcGxpY2F0aW9uIGRlcGVuZGlu ZwogICAgICAgICAgICBvbiB0aGUgY29uZmlndXJhdGlvbiAoc3VjaCBhcyBBTFRFUiBUQUJMRSku CiAgICAgICAgICAgIDMuIG5vdCBzdXBwb3J0ZWQgZm9yIHJlcGxpY2F0aW9uIG9yIHBlbmRpbmcg aW52ZXN0aWdhdGlvbi4KICAgIAogICAgMy4gTG9naWNhbCBkZWNvZGluZyBhbmQgUmVvcmRlcmJ1 ZmZlciBjaGFuZ2UKICAgICAgICBTdXBwb3J0cyBsb2dpY2FsIGRlY29kaW5nIG9mIHRoZSBuZXcg V0FMIHJlY29yZAogICAgICAgIHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UuIFRoaXMgaXMgc2ltaWxh ciB0byB0aGUgbG9naWNhbCBkZWNvZGluZyBvZgogICAgICAgIHhsX2xvZ2ljYWxfbWVzc2FnZS4g VGVzdHMgZm9yIHRoaXMgY2hhbmdlIGFyZSBhZGRlZCBpbiB0aGUKICAgICAgICB0ZXN0X2RlY29k aW5nIHBsdWdpbi4KICAgIAogICAgNC4gSW50ZWdyYXRpb24gd2l0aCBwZ291dHB1dAogICAgICAg IFN1cHBvcnRzIHNlbmRpbmcgYW5kIHJlY2VpdmluZyB0aGUgRERMIG1lc3NhZ2UgdXNpbmcgdGhl IGxvZ2ljYWwKICAgICAgICByZXBsaWNhdGlvbiB3aXJlIHByb3RvY29sLiBBIG5ldyBMb2dpY2Fs UmVwTXNnVHlwZSBpcyBpbnRyb2R1Y2VkCiAgICAgICAgZm9yIHRoaXMgcHVycG9zZTogTE9HSUNB TF9SRVBfTVNHX0RETE1FU1NBR0UgPSAnTCcuCiAgICAKICAgIDUuIExvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGNoYW5nZQogICAgICAgIFN1cHBvcnRzIGV4ZWN1dGlvbiBvZiB0aGUgRERMIGNv bW1hbmQgaW4gdGhlIG9yaWdpbmFsIHVzZXIgcm9sZSBhbmQKICAgIHNlYXJjaF9wYXRoLiBGb3Ig YW55IG5ldyB0YWJsZSBjcmVhdGVkIHRoaXMgd2F5LCB3ZSBhbHNvIHNldCBpdHMKICAgIHNyc3Vi c3RhdGUgaW4gdGhlIHBnX3N1YnNjcmlwdGlvbl9yZWwgY2F0YWxvZyB0byBTVUJSRUxfU1RBVEVf SU5JVCwgU28KICAgIHRoYXQgRE1MIHJlcGxpY2F0aW9uIGNhbiBwcm9ncmVzcyBvbiB0aGlzIG5l dyB0YWJsZSB3aXRob3V0IG1hbnVhbGx5CiAgICBydW5uaW5nICJBTFRFUiBTVUJTQ1JJUFRJT04g Li4uIFJFRlJFU0ggUFVCTElDQVRJT04iLgogICAgCiAgICA2LiBUQVAgdGVzdAogICAgICAgIEEg bmV3IFRBUCB0ZXN0IDAzMF9yZXBfZGRsLnBsIGlzIGFkZGVkLiBXZSBtYWlubHkgZm9jdXNlZCBv bgogICAgdGVzdGluZyB0aGUgaGFwcHkgcGF0aCBvZiBkYXRhYmFzZSBsZXZlbCByZXBsaWNhdGlv biBzbyBmYXIuIENvcm5lcgogICAgY2FzZSBERExzIGFuZCB0YWJsZSBsZXZlbCBEREwgcmVwbGlj YXRpb24gYXJlIHN0aWxsIHRvIGJlIGNhcmVmdWxseQogICAgdGVzdGVkLgoKZGlmZiAtLWdpdCBh L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9NYWtlZmlsZSBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9N YWtlZmlsZQppbmRleCAzNjkyOWRkOTdkLi5kNTA5MWM1NjhkIDEwMDY0NAotLS0gYS9jb250cmli L3Rlc3RfZGVjb2RpbmcvTWFrZWZpbGUKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5nL01ha2Vm aWxlCkBAIC00LDcgKzQsNyBAQCBNT0RVTEVTID0gdGVzdF9kZWNvZGluZwogUEdGSUxFREVTQyA9 ICJ0ZXN0X2RlY29kaW5nIC0gZXhhbXBsZSBvZiBhIGxvZ2ljYWwgZGVjb2Rpbmcgb3V0cHV0IHBs dWdpbiIKIAogUkVHUkVTUyA9IGRkbCB4YWN0IHJld3JpdGUgdG9hc3QgcGVybWlzc2lvbnMgZGVj b2RpbmdfaW5feGFjdCBcCi0JZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5IHByZXBhcmVkIHJlcGxv cmlnaW4gdGltZSBtZXNzYWdlcyBcCisJZGVjb2RpbmdfaW50b19yZWwgYmluYXJ5IHByZXBhcmVk IHJlcGxvcmlnaW4gdGltZSBtZXNzYWdlcyBkZGxtZXNzYWdlc1wKIAlzcGlsbCBzbG90IHRydW5j YXRlIHN0cmVhbSBzdGF0cyB0d29waGFzZSB0d29waGFzZV9zdHJlYW0gXAogCXNlcXVlbmNlCiBJ U09MQVRJT04gPSBteGFjdCBkZWxheWVkX3N0YXJ0dXAgb25kaXNrX3N0YXJ0dXAgY29uY3VycmVu dF9kZGxfZG1sIFwKZGlmZiAtLWdpdCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9k ZGxtZXNzYWdlcy5vdXQgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsbWVzc2Fn ZXMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmE5MmE5NTljYWQK LS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvZGRsbWVz c2FnZXMub3V0CkBAIC0wLDAgKzEsNDggQEAKKy0tIHByZWRpY3RhYmlsaXR5CitTRVQgc3luY2hy b25vdXNfY29tbWl0ID0gb247CistLSB0dXJuIG9uIGxvZ2ljYWwgZGRsIG1lc3NhZ2UgbG9nZ2lu ZworQ1JFQVRFIHB1YmxpY2F0aW9uIG15cHViIEZPUiBBTEwgVEFCTEVTIHdpdGggKGRkbCA9ICdk YXRhYmFzZScpOworU0VMRUNUICdpbml0JyBGUk9NIHBnX2NyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0 aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcsICd0ZXN0X2RlY29kaW5nJyk7CisgP2NvbHVtbj8g CistLS0tLS0tLS0tCisgaW5pdAorKDEgcm93KQorCitDUkVBVEUgVEFCTEUgdGFiMSAoaWQgc2Vy aWFsIHVuaXF1ZSwgZGF0YSBpbnQpOworQUxURVIgVEFCTEUgdGFiMSBhZGQgYzMgdmFyY2hhcjsK K0FMVEVSIFRBQkxFIHRhYjEgZHJvcCBjMzsKK0RST1AgVEFCTEUgdGFiMTsKK0JFR0lOOworQ1JF QVRFIFRBQkxFIHRhYjEgKGlkIHNlcmlhbCB1bmlxdWUsIGRhdGEgaW50KTsKK0FMVEVSIFRBQkxF IHRhYjEgYWRkIGMzIHZhcmNoYXI7CitST0xMQkFDSzsKK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRh YjEgKGlkIHNlcmlhbCB1bmlxdWUsIGRhdGEgaW50KTsKK0FMVEVSIFRBQkxFIHRhYjEgYWRkIGMz IHZhcmNoYXI7CitDT01NSVQ7CitcbyB8IHNlZCAncy9yb2xlLipzZWFyY2hfcGF0aC9yb2xlOiBy ZWRhY3RlZCwgc2VhcmNoX3BhdGgvZycKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLCBOVUxMLCAnaW5jbHVkZS14aWRz JywgJzAnLCAnc2tpcC1lbXB0eS14YWN0cycsICcxJyk7CitTRUxFQ1QgcGdfZHJvcF9yZXBsaWNh dGlvbl9zbG90KCdyZWdyZXNzaW9uX3Nsb3QnKTsKK0RST1AgVEFCTEUgdGFiMTsKK0RST1AgcHVi bGljYXRpb24gbXlwdWI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIERETCBtZXNzYWdlOiB0cmFuc2FjdGlvbmFs OiAxIHByZWZpeDogIHJvbGU6IHJlZGFjdGVkLCBzZWFyY2hfcGF0aDogIiR1c2VyIiwgcHVibGlj LCBzejogNDcgY29udGVudDpDUkVBVEUgVEFCTEUgdGFiMSAoaWQgc2VyaWFsIHVuaXF1ZSwgZGF0 YSBpbnQpOworIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRhYjFfaWRfc2VxOiB0cmFuc2FjdGlv bmFsOjEgbGFzdF92YWx1ZTogMSBsb2dfY250OiAwIGlzX2NhbGxlZDowCisgQ09NTUlUCisgRERM IG1lc3NhZ2U6IHRyYW5zYWN0aW9uYWw6IDEgcHJlZml4OiAgcm9sZTogcmVkYWN0ZWQsIHNlYXJj aF9wYXRoOiAiJHVzZXIiLCBwdWJsaWMsIHN6OiAzMiBjb250ZW50OkFMVEVSIFRBQkxFIHRhYjEg YWRkIGMzIHZhcmNoYXI7CisgRERMIG1lc3NhZ2U6IHRyYW5zYWN0aW9uYWw6IDEgcHJlZml4OiAg cm9sZTogcmVkYWN0ZWQsIHNlYXJjaF9wYXRoOiAiJHVzZXIiLCBwdWJsaWMsIHN6OiAyNSBjb250 ZW50OkFMVEVSIFRBQkxFIHRhYjEgZHJvcCBjMzsKKyBEREwgbWVzc2FnZTogdHJhbnNhY3Rpb25h bDogMSBwcmVmaXg6ICByb2xlOiByZWRhY3RlZCwgc2VhcmNoX3BhdGg6ICIkdXNlciIsIHB1Ymxp Yywgc3o6IDE2IGNvbnRlbnQ6RFJPUCBUQUJMRSB0YWIxOworIERETCBtZXNzYWdlOiB0cmFuc2Fj dGlvbmFsOiAxIHByZWZpeDogIHJvbGU6IHJlZGFjdGVkLCBzZWFyY2hfcGF0aDogIiR1c2VyIiwg cHVibGljLCBzejogNDcgY29udGVudDpDUkVBVEUgVEFCTEUgdGFiMSAoaWQgc2VyaWFsIHVuaXF1 ZSwgZGF0YSBpbnQpOworIEJFR0lOCisgc2VxdWVuY2UgcHVibGljLnRhYjFfaWRfc2VxOiB0cmFu c2FjdGlvbmFsOjEgbGFzdF92YWx1ZTogMSBsb2dfY250OiAwIGlzX2NhbGxlZDowCisgRERMIG1l c3NhZ2U6IHRyYW5zYWN0aW9uYWw6IDEgcHJlZml4OiAgcm9sZTogcmVkYWN0ZWQsIHNlYXJjaF9w YXRoOiAiJHVzZXIiLCBwdWJsaWMsIHN6OiAzMiBjb250ZW50OkFMVEVSIFRBQkxFIHRhYjEgYWRk IGMzIHZhcmNoYXI7CisgQ09NTUlUCisoMTIgcm93cykKKworIHBnX2Ryb3BfcmVwbGljYXRpb25f c2xvdCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKZGlmZiAtLWdp dCBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9zcWwvZGRsbWVzc2FnZXMuc3FsIGIvY29udHJpYi90 ZXN0X2RlY29kaW5nL3NxbC9kZGxtZXNzYWdlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uZTRmYzNkODliZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvdGVz dF9kZWNvZGluZy9zcWwvZGRsbWVzc2FnZXMuc3FsCkBAIC0wLDAgKzEsMjggQEAKKy0tIHByZWRp Y3RhYmlsaXR5CitTRVQgc3luY2hyb25vdXNfY29tbWl0ID0gb247CistLSB0dXJuIG9uIGxvZ2lj YWwgZGRsIG1lc3NhZ2UgbG9nZ2luZworQ1JFQVRFIHB1YmxpY2F0aW9uIG15cHViIEZPUiBBTEwg VEFCTEVTIHdpdGggKGRkbCA9ICdkYXRhYmFzZScpOworCitTRUxFQ1QgJ2luaXQnIEZST00gcGdf Y3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdCgncmVncmVzc2lvbl9zbG90JywgJ3Rlc3Rf ZGVjb2RpbmcnKTsKKworQ1JFQVRFIFRBQkxFIHRhYjEgKGlkIHNlcmlhbCB1bmlxdWUsIGRhdGEg aW50KTsKK0FMVEVSIFRBQkxFIHRhYjEgYWRkIGMzIHZhcmNoYXI7CitBTFRFUiBUQUJMRSB0YWIx IGRyb3AgYzM7CitEUk9QIFRBQkxFIHRhYjE7CisKK0JFR0lOOworQ1JFQVRFIFRBQkxFIHRhYjEg KGlkIHNlcmlhbCB1bmlxdWUsIGRhdGEgaW50KTsKK0FMVEVSIFRBQkxFIHRhYjEgYWRkIGMzIHZh cmNoYXI7CitST0xMQkFDSzsKKworQkVHSU47CitDUkVBVEUgVEFCTEUgdGFiMSAoaWQgc2VyaWFs IHVuaXF1ZSwgZGF0YSBpbnQpOworQUxURVIgVEFCTEUgdGFiMSBhZGQgYzMgdmFyY2hhcjsKK0NP TU1JVDsKKworXG8gfCBzZWQgJ3Mvcm9sZS4qc2VhcmNoX3BhdGgvcm9sZTogcmVkYWN0ZWQsIHNl YXJjaF9wYXRoL2cnCitTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdl cygncmVncmVzc2lvbl9zbG90JywgTlVMTCwgTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywgJ3Nr aXAtZW1wdHkteGFjdHMnLCAnMScpOworU0VMRUNUIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCgn cmVncmVzc2lvbl9zbG90Jyk7CitEUk9QIFRBQkxFIHRhYjE7CitEUk9QIHB1YmxpY2F0aW9uIG15 cHViOworCmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNvZGluZy5j IGIvY29udHJpYi90ZXN0X2RlY29kaW5nL3Rlc3RfZGVjb2RpbmcuYwppbmRleCBlYTIyNjQ5ZTQx Li41ZTAyYjI3NGM1IDEwMDY0NAotLS0gYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvdGVzdF9kZWNv ZGluZy5jCisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy90ZXN0X2RlY29kaW5nLmMKQEAgLTc3 LDYgKzc3LDExIEBAIHN0YXRpYyB2b2lkIHBnX2RlY29kZV9tZXNzYWdlKExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwKIAkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwKIAkJCQkJCQkgIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAq cHJlZml4LAogCQkJCQkJCSAgU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CitzdGF0aWMg dm9pZCBwZ19kZWNvZGVfZGRsbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJ CQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJ CQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJ IGNvbnN0IGNoYXIgKnJvbGUsIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLAorCQkJCQkJCQkgU2l6 ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBzdGF0aWMgdm9pZCBwZ19kZWNvZGVfc2VxdWVu Y2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLCBYTG9nUmVjUHRyIHNlcXVlbmNlX2xzbiwKIAkJCQkJCQkgIFJlbGF0aW9uIHJlbCwg Ym9vbCB0cmFuc2FjdGlvbmFsLApAQCAtMTIxLDYgKzEyNiwxMSBAQCBzdGF0aWMgdm9pZCBwZ19k ZWNvZGVfc3RyZWFtX21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJ CQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKIAkJCQkJ CQkJCSBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKIAkJCQkJCQkJCSBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIHBnX2RlY29kZV9zdHJl YW1fZGRsbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJUmVv cmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIG1lc3NhZ2VfbHNuLAorCQkJCQkJCQkJCWJv b2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCWNvbnN0IGNo YXIgKnJvbGUsIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLAorCQkJCQkJCQkJCVNpemUgc3osIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOwogc3RhdGljIHZvaWQgcGdfZGVjb2RlX3N0cmVhbV9zZXF1ZW5j ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sCiAJCQkJCQkJCQkgIFJlbGF0aW9uIHJl bCwgYm9vbCB0cmFuc2FjdGlvbmFsLApAQCAtMTUwLDYgKzE2MCw3IEBAIF9QR19vdXRwdXRfcGx1 Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+ZmlsdGVyX2J5X29yaWdp bl9jYiA9IHBnX2RlY29kZV9maWx0ZXI7CiAJY2ItPnNodXRkb3duX2NiID0gcGdfZGVjb2RlX3No dXRkb3duOwogCWNiLT5tZXNzYWdlX2NiID0gcGdfZGVjb2RlX21lc3NhZ2U7CisJY2ItPmRkbG1l c3NhZ2VfY2IgPSBwZ19kZWNvZGVfZGRsbWVzc2FnZTsKIAljYi0+c2VxdWVuY2VfY2IgPSBwZ19k ZWNvZGVfc2VxdWVuY2U7CiAJY2ItPmZpbHRlcl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2ZpbHRl cl9wcmVwYXJlOwogCWNiLT5iZWdpbl9wcmVwYXJlX2NiID0gcGdfZGVjb2RlX2JlZ2luX3ByZXBh cmVfdHhuOwpAQCAtMTYzLDYgKzE3NCw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0 UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+c3RyZWFtX2NvbW1pdF9jYiA9IHBnX2RlY29kZV9z dHJlYW1fY29tbWl0OwogCWNiLT5zdHJlYW1fY2hhbmdlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV9j aGFuZ2U7CiAJY2ItPnN0cmVhbV9tZXNzYWdlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV9tZXNzYWdl OworCWNiLT5zdHJlYW1fZGRsbWVzc2FnZV9jYiA9IHBnX2RlY29kZV9zdHJlYW1fZGRsbWVzc2Fn ZTsKIAljYi0+c3RyZWFtX3NlcXVlbmNlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV9zZXF1ZW5jZTsK IAljYi0+c3RyZWFtX3RydW5jYXRlX2NiID0gcGdfZGVjb2RlX3N0cmVhbV90cnVuY2F0ZTsKIH0K QEAgLTc1OCw3ICs3NzAsOCBAQCBwZ19kZWNvZGVfdHJ1bmNhdGUoTG9naWNhbERlY29kaW5nQ29u dGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiBzdGF0aWMgdm9pZAogcGdfZGVjb2Rl X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCSAgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAotCQkJCSAgY29u c3QgY2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQorCQkJCSAgY29u c3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAorCQkJCSAgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsK IAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKIAlhcHBlbmRTdHJpbmdJbmZv KGN0eC0+b3V0LCAibWVzc2FnZTogdHJhbnNhY3Rpb25hbDogJWQgcHJlZml4OiAlcywgc3o6ICV6 dSBjb250ZW50OiIsCkBAIC03OTksNiArODEyLDE5IEBAIHBnX2RlY29kZV9zZXF1ZW5jZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAlPdXRwdXRQ bHVnaW5Xcml0ZShjdHgsIHRydWUpOwogfQogCitzdGF0aWMgdm9pZAorcGdfZGVjb2RlX2RkbG1l c3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCSAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCSAgY29uc3Qg Y2hhciAqcHJlZml4LCBjb25zdCBjaGFyICpyb2xlLCBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwK KwkJCQkgIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJT3V0cHV0UGx1Z2luUHJl cGFyZVdyaXRlKGN0eCwgdHJ1ZSk7CisJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgIkRETCBt ZXNzYWdlOiB0cmFuc2FjdGlvbmFsOiAlZCBwcmVmaXg6ICVzIHJvbGU6ICVzLCBzZWFyY2hfcGF0 aDogJXMsIHN6OiAlenUgY29udGVudDoiLAorCQkJCQkgdHJhbnNhY3Rpb25hbCwgcHJlZml4LCBy b2xlLCBzZWFyY2hfcGF0aCwgc3opOworCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oY3R4LT5vdXQs IG1lc3NhZ2UsIHN6KTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiBzdGF0 aWMgdm9pZAogcGdfZGVjb2RlX3N0cmVhbV9zdGFydChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCiAJCQkJCSAgIFJlb3JkZXJCdWZmZXJUWE4gKnR4bikKQEAgLTk3OSw3ICsxMDA1LDggQEAg cGdfZGVjb2RlX3N0cmVhbV9jaGFuZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogc3Rh dGljIHZvaWQKIHBnX2RlY29kZV9zdHJlYW1fbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0 ICpjdHgsCiAJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRyIGxzbiwgYm9v bCB0cmFuc2FjdGlvbmFsLAotCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwgU2l6ZSBzeiwgY29u c3QgY2hhciAqbWVzc2FnZSkKKwkJCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osCisJ CQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKIAlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUo Y3R4LCB0cnVlKTsKIApAQCAtOTkxLDcgKzEwMTgsMzUgQEAgcGdfZGVjb2RlX3N0cmVhbV9tZXNz YWdlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAllbHNlCiAJewogCQlhcHBlbmRTdHJp bmdJbmZvKGN0eC0+b3V0LCAic3RyZWFtaW5nIG1lc3NhZ2U6IHRyYW5zYWN0aW9uYWw6ICVkIHBy ZWZpeDogJXMsIHN6OiAlenUgY29udGVudDoiLAotCQkJCQkJIHRyYW5zYWN0aW9uYWwsIHByZWZp eCwgc3opOworCQkJCQkJCSB0cmFuc2FjdGlvbmFsLCBwcmVmaXgsIHN6KTsKKwkJYXBwZW5kQmlu YXJ5U3RyaW5nSW5mbyhjdHgtPm91dCwgbWVzc2FnZSwgc3opOworCX0KKworCU91dHB1dFBsdWdp bldyaXRlKGN0eCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBJbiBzdHJlYW1pbmcgbW9kZSwgd2UgZG9u J3QgZGlzcGxheSB0aGUgY29udGVudHMgZm9yIHRyYW5zYWN0aW9uYWwgbWVzc2FnZXMKKyAqIGFz IHRoZSB0cmFuc2FjdGlvbiBjYW4gYWJvcnQgYXQgYSBsYXRlciBwb2ludCBpbiB0aW1lLiAgV2Ug ZG9uJ3Qgd2FudCB1c2VycyB0bworICogc2VlIHRoZSBtZXNzYWdlIGNvbnRlbnRzIHVudGlsIHRo ZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisgKi8KK3N0YXRpYyB2b2lkCitwZ19kZWNvZGVf c3RyZWFtX2RkbG1lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAorCQkJCQkJCVJl b3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBsc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwK KwkJCQkJCQljb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKiByb2xlLCBjb25zdCBjaGFy ICogc2VhcmNoX3BhdGgsCisJCQkJCQkJU2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sK KwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKKworCWlmICh0cmFuc2FjdGlv bmFsKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mbyhjdHgtPm91dCwgInN0cmVhbWluZyBEREwgbWVz c2FnZTogdHJhbnNhY3Rpb25hbDogJWQgcHJlZml4OiAlcyByb2xlOiAlcywgc2VhcmNoX3BhdGg6 ICVzLCBzejogJXp1IiwKKwkJCQkJCSB0cmFuc2FjdGlvbmFsLCBwcmVmaXgsIHJvbGUsIHNlYXJj aF9wYXRoLCBzeik7CisJfQorCWVsc2UKKwl7CisJCWFwcGVuZFN0cmluZ0luZm8oY3R4LT5vdXQs ICJzdHJlYW1pbmcgRERMIG1lc3NhZ2U6IHRyYW5zYWN0aW9uYWw6ICVkIHByZWZpeDogJXMgcm9s ZTogJXMsIHNlYXJjaF9wYXRoOiAlcywgc3o6ICV6dSBjb250ZW50OiIsCisJCQkJCQkgdHJhbnNh Y3Rpb25hbCwgcHJlZml4LCByb2xlLCBzZWFyY2hfcGF0aCwgc3opOwogCQlhcHBlbmRCaW5hcnlT dHJpbmdJbmZvKGN0eC0+b3V0LCBtZXNzYWdlLCBzeik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvTWFrZWZpbGUKaW5kZXggZjg4ZDcyZmQ4Ni4uYjhlMjllOGRmMyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9NYWtlZmlsZQpAQCAtMTksNiArMTksNyBAQCBPQkpTID0gXAogCWhhc2hk ZXNjLm8gXAogCWhlYXBkZXNjLm8gXAogCWxvZ2ljYWxtc2dkZXNjLm8gXAorCWxvZ2ljYWxkZGxt c2dkZXNjLm8gXAogCW14YWN0ZGVzYy5vIFwKIAluYnRkZXNjLm8gXAogCXJlbG1hcGRlc2MubyBc CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rl c2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9sb2dpY2FsZGRsbXNnZGVzYy5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdhMzUyZDU0MGEKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvbG9naWNhbGRkbG1zZ2Rlc2Mu YwpAQCAtMCwwICsxLDU0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBsb2dpY2FsZGRs bXNnZGVzYy5jCisgKgkgIHJtZ3IgZGVzY3JpcHRvciByb3V0aW5lcyBmb3IgcmVwbGljYXRpb24v bG9naWNhbC9kZGxtZXNzYWdlLmMKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDIwMTUt MjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2xvZ2ljYWxkZGxt c2dkZXNjLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCisKK3ZvaWQKK2xvZ2lj YWxkZGxtc2dfZGVzYyhTdHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCit7 CisJY2hhcgkgICAqcmVjID0gWExvZ1JlY0dldERhdGEocmVjb3JkKTsKKwl1aW50OAkJaW5mbyA9 IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiB+WExSX0lORk9fTUFTSzsKKworCWlmIChpbmZvID09 IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwl7CisJCXhsX2xvZ2ljYWxfZGRsX21lc3NhZ2Ug KnhscmVjID0gKHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKikgcmVjOworCQljaGFyCSAgICpwcmVm aXggPSB4bHJlYy0+bWVzc2FnZTsKKwkJY2hhciAgICAgICAqcm9sZSA9IHhscmVjLT5tZXNzYWdl ICsgeGxyZWMtPnByZWZpeF9zaXplOworCQljaGFyICAgICAgICpzZWFyY2hfcGF0aCA9IHhscmVj LT5tZXNzYWdlICsgeGxyZWMtPnByZWZpeF9zaXplICsgeGxyZWMtPnJvbGVfc2l6ZTsKKwkJY2hh cgkgICAqbWVzc2FnZSA9IHhscmVjLT5tZXNzYWdlICsgeGxyZWMtPnByZWZpeF9zaXplICsgeGxy ZWMtPnJvbGVfc2l6ZSArIHhscmVjLT5zZWFyY2hfcGF0aF9zaXplOworCQljaGFyCSAgICpzZXAg PSAiIjsKKworCQlBc3NlcnQocHJlZml4W3hscmVjLT5wcmVmaXhfc2l6ZV0gIT0gJ1wwJyk7CisK KwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIlcywgcHJlZml4IFwiJXNcIjsgcm9sZSBcIiVzXCI7 IHNlYXJjaF9wYXRoIFwiJXNcIjsgcGF5bG9hZCAoJXp1IGJ5dGVzKTogIiwKKwkJCQkJCSB4bHJl Yy0+dHJhbnNhY3Rpb25hbCA/ICJ0cmFuc2FjdGlvbmFsIiA6ICJub24tdHJhbnNhY3Rpb25hbCIs CisJCQkJCQkgcHJlZml4LCByb2xlLCBzZWFyY2hfcGF0aCwgeGxyZWMtPm1lc3NhZ2Vfc2l6ZSk7 CisJCS8qIFdyaXRlIG1lc3NhZ2UgcGF5bG9hZCBhcyBhIHNlcmllcyBvZiBoZXggYnl0ZXMgKi8K KwkJZm9yIChpbnQgY250ID0gMDsgY250IDwgeGxyZWMtPm1lc3NhZ2Vfc2l6ZTsgY250KyspCisJ CXsKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiJXMlMDJYIiwgc2VwLCAodW5zaWduZWQgY2hh cikgbWVzc2FnZVtjbnRdKTsKKwkJCXNlcCA9ICIgIjsKKwkJfQorCX0KK30KKworY29uc3QgY2hh ciAqCitsb2dpY2FsZGRsbXNnX2lkZW50aWZ5KHVpbnQ4IGluZm8pCit7CisJaWYgKChpbmZvICYg flhMUl9JTkZPX01BU0spID09IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJcmV0dXJuICJE REwgTUVTU0FHRSI7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3Iu YwppbmRleCBmODg0N2Q1YWViLi5iNzYxNjYyZDI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1n ci5jCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL21l c3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAi cmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsbWFwcGVyLmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMK aW5kZXggNzg5Yjg5NWRiOC4uZmM2NTEwOWExMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19wdWJsaWNhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGlj YXRpb24uYwpAQCAtODU3LDYgKzg1Nyw4IEBAIEdldFB1YmxpY2F0aW9uKE9pZCBwdWJpZCkKIAlw dWItPnB1YmFjdGlvbnMucHViZGVsZXRlID0gcHViZm9ybS0+cHViZGVsZXRlOwogCXB1Yi0+cHVi YWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IHB1YmZvcm0tPnB1YnRydW5jYXRlOwogCXB1Yi0+cHVidmlh cm9vdCA9IHB1YmZvcm0tPnB1YnZpYXJvb3Q7CisJcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9kYXRh YmFzZSA9IHB1YmZvcm0tPnB1YmRkbF9kYXRhYmFzZTsKKwlwdWItPnB1YmFjdGlvbnMucHViZGRs X3RhYmxlID0gcHViZm9ybS0+cHViZGRsX3RhYmxlOwogCiAJUmVsZWFzZVN5c0NhY2hlKHR1cCk7 CiAKQEAgLTEwMDUsMyArMTAwNyw1NSBAQCBwZ19nZXRfcHVibGljYXRpb25fdGFibGVzKFBHX0ZV TkNUSU9OX0FSR1MpCiAKIAlTUkZfUkVUVVJOX0RPTkUoZnVuY2N0eCk7CiB9CisKKy8qCisgKiBD aGVja3MgaWYgRERMIG9uIHJlbGF0aW9uIChyZWxpZCkgbmVlZCB4bG9nIGZvciBsb2dpY2FsIHJl cGxpY2F0aW9uCisgKi8KK2Jvb2wKK2RkbF9uZWVkX3hsb2coT2lkIHJlbGlkLCBib29sIGZvckFs bFRhYlB1Yk9ubHksIGJvb2wgaXNUb3BMZXZlbCkKK3sKKwlMaXN0ICphbGxUYWJsZVB1YnMgPSBO SUw7CisJTGlzdCAqdGFibGVQdWJzID0gTklMOworCUxpc3RDZWxsICpsYzsKKworCS8qIE9ubHkg cmVwbGljYXRlIHRvcGxldmVsIERETCBjb21tYW5kICovCisJaWYgKCFpc1RvcExldmVsKQorCQly ZXR1cm4gZmFsc2U7CisJaWYgKHJlbGlkID09IEludmFsaWRPaWQgJiYgIWZvckFsbFRhYlB1Yk9u bHkpCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogTG9nIHRoZSBEREwgY29tbWFuZCBpZgor CSAqIHRoZXJlIGlzIGFueSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiB3aXRoIHB1YmRkbF9k YXRhYmFzZSBvbgorCSAqIG9yCisJICogdGhpcyBUQUJMRSBiZWxvbmdzIHRvIGFueSBub24gRk9S IEFMTCBwdWJsaWNhdGlvbnMgd2l0aCBwdWJkZGxfdGFibGUgb24KKwkgKi8KKwlhbGxUYWJsZVB1 YnMgPSBHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnMoKTsKKwlmb3JlYWNoKGxjLCBhbGxUYWJsZVB1 YnMpCisJeworCQlPaWQgcHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJUHVibGljYXRpb24gKnB1 YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsKKworCQlpZiAocHViLT5wdWJhY3Rpb25zLnB1YmRk bF9kYXRhYmFzZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogSWYgZm9yQWxsVGFi UHViT25seSBpcyB0cnVlIChpLmUuIGRhdGFiYXNlIGxldmVsIHJlcGxpY2F0aW9uIGlzIHJlcXVp cmVkIGZvciB0aGUgRERMCisJICogdG8gYmUgbG9nZ2VkKSwgd2UgY2FuIGJhaWwgbm93IHNpbmNl IG5vIHB1YmxpY2F0aW9uIGhhcyBiZWVuIGZvdW5kIHdpdGggcHViZGRsX2RhdGFiYXNlIG9uCisJ ICovCisJaWYgKGZvckFsbFRhYlB1Yk9ubHkpCisJCXJldHVybiBmYWxzZTsKKworCXRhYmxlUHVi cyA9IEdldFJlbGF0aW9uUHVibGljYXRpb25zKHJlbGlkKTsKKwlmb3JlYWNoKGxjLCB0YWJsZVB1 YnMpCisJeworCQlPaWQgcHViaWQgPSBsZmlyc3Rfb2lkKGxjKTsKKwkJUHVibGljYXRpb24gKnB1 YiA9IEdldFB1YmxpY2F0aW9uKHB1YmlkKTsKKworCQlpZiAocHViLT5wdWJhY3Rpb25zLnB1YmRk bF90YWJsZSkKKwkJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9k cm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCBjOWI1NzMy NDQ4Li45M2M0MWM1MmRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAgLTI2LDYgKzI2LDcg QEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIK ICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2Rk bG1lc3NhZ2UuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWls dGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9w dWJsaWNhdGlvbmNtZHMuYwppbmRleCAxYWFkMmU3NjljLi43ZDc2N2MyYmM0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwpAQCAtODAsMTAgKzgwLDEyIEBAIHN0YXRpYyB2 b2lkIFB1YmxpY2F0aW9uRHJvcFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29s IG1pc3Npbmdfb2spOwogc3RhdGljIHZvaWQKIHBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMoUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBMaXN0ICpvcHRpb25zLAorCQkJCQkJICBib29sIGZv cl9hbGxfdGFibGVzLAogCQkJCQkJICBib29sICpwdWJsaXNoX2dpdmVuLAogCQkJCQkJICBQdWJs aWNhdGlvbkFjdGlvbnMgKnB1YmFjdGlvbnMsCiAJCQkJCQkgIGJvb2wgKnB1Ymxpc2hfdmlhX3Bh cnRpdGlvbl9yb290X2dpdmVuLAotCQkJCQkJICBib29sICpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCkKKwkJCQkJCSAgYm9vbCAqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QsCisJCQkJCQkg IGJvb2wgKmRkbF9sZXZlbF9naXZlbikKIHsKIAlMaXN0Q2VsbCAgICpsYzsKIApAQCAtOTYsNiAr OTgsMTYgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ cHViYWN0aW9ucy0+cHViZGVsZXRlID0gdHJ1ZTsKIAlwdWJhY3Rpb25zLT5wdWJ0cnVuY2F0ZSA9 IHRydWU7CiAJKnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gZmFsc2U7CisJaWYgKGZvcl9h bGxfdGFibGVzKQorCXsKKwkJcHViYWN0aW9ucy0+cHViZGRsX2RhdGFiYXNlID0gdHJ1ZTsKKwkJ cHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJcHViYWN0 aW9ucy0+cHViZGRsX2RhdGFiYXNlID0gZmFsc2U7CisJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJs ZSA9IGZhbHNlOworCX0KIAogCS8qIFBhcnNlIG9wdGlvbnMgKi8KIAlmb3JlYWNoKGxjLCBvcHRp b25zKQpAQCAtMTU0LDYgKzE2Niw1NyBAQCBwYXJzZV9wdWJsaWNhdGlvbl9vcHRpb25zKFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCSpwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbiA9IHRy dWU7CiAJCQkqcHVibGlzaF92aWFfcGFydGl0aW9uX3Jvb3QgPSBkZWZHZXRCb29sZWFuKGRlZmVs KTsKIAkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJkZGwiKSA9PSAwKQor CQl7CisJCQljaGFyCSAgICpkZGxfbGV2ZWw7CisJCQlMaXN0CSAgICpkZGxfbGlzdDsKKwkJCUxp c3RDZWxsICAgKmxjOworCisJCQlpZiAoKmRkbF9sZXZlbF9naXZlbikKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1z ZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCisJCQkvKgorCQkJICog SWYgcHVibGlzaCBvcHRpb24gd2FzIGdpdmVuIG9ubHkgdGhlIGV4cGxpY2l0bHkgbGlzdGVkIGFj dGlvbnMKKwkJCSAqIHNob3VsZCBiZSBwdWJsaXNoZWQuCisJCQkgKi8KKwkJCXB1YmFjdGlvbnMt PnB1YmRkbF9kYXRhYmFzZSA9IGZhbHNlOworCQkJcHViYWN0aW9ucy0+cHViZGRsX3RhYmxlID0g ZmFsc2U7CisKKwkJCSpkZGxfbGV2ZWxfZ2l2ZW4gPSB0cnVlOworCQkJZGRsX2xldmVsID0gZGVm R2V0U3RyaW5nKGRlZmVsKTsKKworCQkJaWYgKCFTcGxpdElkZW50aWZpZXJTdHJpbmcoZGRsX2xl dmVsLCAnLCcsICZkZGxfbGlzdCkpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJtc2coImludmFsaWQgbGlzdCBzeW50 YXggZm9yIFwiZGRsXCIgb3B0aW9uIikpKTsKKworCQkJLyogUHJvY2VzcyB0aGUgb3B0aW9uIGxp c3QuICovCisJCQlmb3JlYWNoKGxjLCBkZGxfbGlzdCkKKwkJCXsKKwkJCQljaGFyCSAgICpwdWJs aXNoX29wdCA9IChjaGFyICopIGxmaXJzdChsYyk7CisKKwkJCQlpZiAoc3RyY21wKHB1Ymxpc2hf b3B0LCAiZGF0YWJhc2UiKSA9PSAwKQorCQkJCXsKKwkJCQkJaWYgKCFmb3JfYWxsX3RhYmxlcykK KwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VS Uk9SKSwKKwkJCQkJCQkJIGVycm1zZygiRERMIHJlcGxpY2F0aW9uIG9uIHRoZSBkYXRhYmFzZSBs ZXZlbCBpcyBvbmx5IHN1cHBvcnRlZCBpbiBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiIpKSk7 CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJcHViYWN0aW9ucy0+cHViZGRsX2RhdGFiYXNlID0g dHJ1ZTsKKwkJCQkJCXB1YmFjdGlvbnMtPnB1YmRkbF90YWJsZSA9IHRydWU7CisJCQkJCX0KKwkJ CQl9CisJCQkJZWxzZSBpZiAoc3RyY21wKHB1Ymxpc2hfb3B0LCAidGFibGUiKSA9PSAwKQorCQkJ CQlwdWJhY3Rpb25zLT5wdWJkZGxfdGFibGUgPSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJ IGVycm1zZygidW5yZWNvZ25pemVkIFwiZGRsXCIgdmFsdWU6IFwiJXNcIiIsIHB1Ymxpc2hfb3B0 KSkpOworCQkJfQorCQl9CiAJCWVsc2UKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTYyMiw2ICs2ODUsNyBAQCBDcmVhdGVQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAlE YXR1bQkJdmFsdWVzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlIZWFwVHVwbGUJdHVwOwogCWJv b2wJCXB1Ymxpc2hfZ2l2ZW47CisJYm9vbAkJZGRsX2xldmVsX2dpdmVuOwogCVB1YmxpY2F0aW9u QWN0aW9ucyBwdWJhY3Rpb25zOwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dp dmVuOwogCWJvb2wJCXB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290OwpAQCAtNjY0LDkgKzcyOCwx MSBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0 aW9uU3RtdCAqc3RtdCkKIAogCXBhcnNlX3B1YmxpY2F0aW9uX29wdGlvbnMocHN0YXRlLAogCQkJ CQkJCSAgc3RtdC0+b3B0aW9ucywKKwkJCQkJCQkgIHN0bXQtPmZvcl9hbGxfdGFibGVzLAogCQkJ CQkJCSAgJnB1Ymxpc2hfZ2l2ZW4sICZwdWJhY3Rpb25zLAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlh X3BhcnRpdGlvbl9yb290X2dpdmVuLAotCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9y b290KTsKKwkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCwKKwkJCQkJCQkgICZk ZGxfbGV2ZWxfZ2l2ZW4pOwogCiAJcHVib2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHJlbCwgUHVi bGljYXRpb25PYmplY3RJbmRleElkLAogCQkJCQkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX29pZCk7 CkBAIC02ODMsNiArNzQ5LDEwIEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQlCb29sR2V0RGF0dW0ocHViYWN0aW9u cy5wdWJ0cnVuY2F0ZSk7CiAJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAt IDFdID0KIAkJQm9vbEdldERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwl2YWx1 ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfZGF0YWJhc2UgLSAxXSA9CisJCUJvb2xHZXRE YXR1bShwdWJhY3Rpb25zLnB1YmRkbF9kYXRhYmFzZSk7CisJdmFsdWVzW0FudW1fcGdfcHVibGlj YXRpb25fcHViZGRsX3RhYmxlIC0gMV0gPQorCQlCb29sR2V0RGF0dW0ocHViYWN0aW9ucy5wdWJk ZGxfdGFibGUpOwogCiAJdHVwID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocmVs KSwgdmFsdWVzLCBudWxscyk7CiAKQEAgLTc2Niw2ICs4MzYsNyBAQCBBbHRlclB1YmxpY2F0aW9u T3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LAog CWJvb2wJCXJlcGxhY2VzW05hdHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlEYXR1bQkJdmFsdWVzW05h dHRzX3BnX3B1YmxpY2F0aW9uXTsKIAlib29sCQlwdWJsaXNoX2dpdmVuOworCWJvb2wgICAgICAg IGRkbF9sZXZlbF9naXZlbjsKIAlQdWJsaWNhdGlvbkFjdGlvbnMgcHViYWN0aW9uczsKIAlib29s CQlwdWJsaXNoX3ZpYV9wYXJ0aXRpb25fcm9vdF9naXZlbjsKIAlib29sCQlwdWJsaXNoX3ZpYV9w YXJ0aXRpb25fcm9vdDsKQEAgLTc3NCwxMSArODQ1LDE1IEBAIEFsdGVyUHVibGljYXRpb25PcHRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsCiAJTGlz dAkgICAqcm9vdF9yZWxpZHMgPSBOSUw7CiAJTGlzdENlbGwgICAqbGM7CiAKKwlwdWJmb3JtID0g KEZvcm1fcGdfcHVibGljYXRpb24pIEdFVFNUUlVDVCh0dXApOworCiAJcGFyc2VfcHVibGljYXRp b25fb3B0aW9ucyhwc3RhdGUsCiAJCQkJCQkJICBzdG10LT5vcHRpb25zLAorCQkJCQkJCSAgcHVi Zm9ybS0+cHViYWxsdGFibGVzLAogCQkJCQkJCSAgJnB1Ymxpc2hfZ2l2ZW4sICZwdWJhY3Rpb25z LAogCQkJCQkJCSAgJnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVuLAotCQkJCQkJCSAg JnB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKKwkJCQkJCQkgICZwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCwKKwkJCQkJCQkgICZkZGxfbGV2ZWxfZ2l2ZW4pOwogCiAJcHViZm9ybSA9IChG b3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRTVFJVQ1QodHVwKTsKIApAQCAtODU5LDYgKzkzNCwxNSBA QCBBbHRlclB1YmxpY2F0aW9uT3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGlj YXRpb25TdG10ICpzdG10LAogCQlyZXBsYWNlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YnRydW5j YXRlIC0gMV0gPSB0cnVlOwogCX0KIAorCWlmIChkZGxfbGV2ZWxfZ2l2ZW4pCisJeworCQl2YWx1 ZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfZGF0YWJhc2UgLSAxXSA9IEJvb2xHZXREYXR1 bShwdWJhY3Rpb25zLnB1YmRkbF9kYXRhYmFzZSk7CisJCXJlcGxhY2VzW0FudW1fcGdfcHVibGlj YXRpb25fcHViZGRsX2RhdGFiYXNlIC0gMV0gPSB0cnVlOworCisJCXZhbHVlc1tBbnVtX3BnX3B1 YmxpY2F0aW9uX3B1YmRkbF90YWJsZSAtIDFdID0gQm9vbEdldERhdHVtKHB1YmFjdGlvbnMucHVi ZGRsX3RhYmxlKTsKKwkJcmVwbGFjZXNbQW51bV9wZ19wdWJsaWNhdGlvbl9wdWJkZGxfdGFibGUg LSAxXSA9IHRydWU7CisJfQorCiAJaWYgKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290X2dpdmVu KQogCXsKIAkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHVidmlhcm9vdCAtIDFdID0gQm9v bEdldERhdHVtKHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290KTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggZGM1ODcyZjk4OC4uZjU2ZWE0YzQ5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5k cy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0ZGVzYy5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIKICNpbmNsdWRlICJyZXdy aXRlL3Jld3JpdGVEZWZpbmUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgi CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKQEAgLTEzMjUsMTMgKzEzMjYsMTQg QEAgRHJvcEVycm9yTXNnV3JvbmdUeXBlKGNvbnN0IGNoYXIgKnJlbG5hbWUsIGNoYXIgd3Jvbmdr aW5kLCBjaGFyIHJpZ2h0a2luZCkKICAqCQlEUk9QIE1BVEVSSUFMSVpFRCBWSUVXLCBEUk9QIEZP UkVJR04gVEFCTEUKICAqLwogdm9pZAotUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKQor UmVtb3ZlUmVsYXRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgRHJvcFN0bXQgKmRyb3AsIGJvb2wg aXNUb3BMZXZlbCkKIHsKIAlPYmplY3RBZGRyZXNzZXMgKm9iamVjdHM7CiAJY2hhcgkJcmVsa2lu ZDsKIAlMaXN0Q2VsbCAgICpjZWxsOwogCWludAkJCWZsYWdzID0gMDsKIAlMT0NLTU9ERQlsb2Nr bW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CisJYm9vbAkJZGRseGxvZyA9IFhMb2dMb2dpY2Fs SW5mb0FjdGl2ZSgpOwogCiAJLyogRFJPUCBDT05DVVJSRU5UTFkgdXNlcyBhIHdlYWtlciBsb2Nr LCBhbmQgaGFzIHNvbWUgcmVzdHJpY3Rpb25zICovCiAJaWYgKGRyb3AtPmNvbmN1cnJlbnQpCkBA IC0xNDI3LDEwICsxNDI5LDM3IEBAIFJlbW92ZVJlbGF0aW9ucyhEcm9wU3RtdCAqZHJvcCkKIAkJ LyogTm90IHRoZXJlPyAqLwogCQlpZiAoIU9pZElzVmFsaWQocmVsT2lkKSkKIAkJeworCQkJZGRs eGxvZyA9IGZhbHNlOwogCQkJRHJvcEVycm9yTXNnTm9uRXhpc3RlbnQocmVsLCByZWxraW5kLCBk cm9wLT5taXNzaW5nX29rKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJLyoKKwkJICogT25seSBs b2cgRFJPUCBSRUxBVElPTiBjbWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gaWYKKwkJICogdGhl cmUgaXMgYW55IEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIHdpdGggcHViZGRsX2RhdGFiYXNl IG9uIG9yCisJCSAqIGV2ZXJ5IHJlbGF0aW9uIHRvIGJlIGRyb3BwZWQgYmVsb25ncyB0byBhbnkg bm9uIEZPUiBBTEwgcHVibGljYXRpb25zIHdpdGggcHViZGRsX3RhYmxlIG9uCisJCSAqLworCQlp ZiAoZGRseGxvZykKKwkJeworCQkJT2lkIHRhYmxlT2lkID0gSW52YWxpZE9pZDsKKworCQkJaWYg KHJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTikKKwkJCQl0YWJsZU9pZCA9IHJlbE9pZDsKKwkJ CWVsc2UgaWYgKHJlbGtpbmQgPT0gUkVMS0lORF9JTkRFWCkKKwkJCQl0YWJsZU9pZCA9IEluZGV4 R2V0UmVsYXRpb24ocmVsT2lkLCB0cnVlKTsKKwkJCS8qCisJCQkgKiBPdGhlciByZWxhdGlvbiB0 eXBlcyByZXF1aXJlIGRhdGFiYXNlIGxldmVsIGRkbCByZXBsaWNhdGlvbiBhbmQgYXJlCisJCQkg KiBhbHJlYWR5IGxvZ2dlZCBpbiBMb2dMb2dpY2FsRERMQ29tbWFuZCgpIGlmIG5lZWRlZC4KKwkJ CSAqLworCQkJZWxzZQorCQkJCWRkbHhsb2cgPSBmYWxzZTsKKworCQkJLyogRFJPUCBSRUxBVElP TiBvciBJTkRFWCBhcmUgYWxsb3dlZCBpbiB0YWJsZSBsZXZlbCBEREwgcmVwbGljYXRpb24gKi8K KwkJCWlmICh0YWJsZU9pZCAhPSBJbnZhbGlkT2lkICYmCisJCQkJIWRkbF9uZWVkX3hsb2codGFi bGVPaWQsIGZhbHNlLCBpc1RvcExldmVsKSkKKwkJCQlkZGx4bG9nID0gZmFsc2U7CisJCX0KKwog CQkvKgogCQkgKiBEZWNpZGUgaWYgY29uY3VycmVudCBtb2RlIG5lZWRzIHRvIGJlIHVzZWQgaGVy ZSBvciBub3QuICBUaGUKIAkJICogcmVsYXRpb24gcGVyc2lzdGVuY2UgY2Fubm90IGJlIGtub3du IHdpdGhvdXQgaXRzIE9JRC4KQEAgLTE0NjIsNiArMTQ5MSwxOCBAQCBSZW1vdmVSZWxhdGlvbnMo RHJvcFN0bXQgKmRyb3ApCiAJCWFkZF9leGFjdF9vYmplY3RfYWRkcmVzcygmb2JqLCBvYmplY3Rz KTsKIAl9CiAKKwkvKiBMb2cgdGhlIERyb3AgY29tbWFuZCBmb3IgbG9naWNhbCByZXBsaWNhdGlv biAqLworCWlmIChkZGx4bG9nKQorCXsKKwkJYm9vbCB0cmFuc2FjdGlvbmFsID0gdHJ1ZTsKKwkJ Y29uc3QgY2hhciogcHJlZml4ID0gIiI7CisJCUxvZ0xvZ2ljYWxERExNZXNzYWdlKHByZWZpeCwK KwkJCQkJCQkgR2V0VXNlcklkKCksCisJCQkJCQkJIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJ CQkJCSBzdHJsZW4ocHN0YXRlLT5wX3NvdXJjZXRleHQpLAorCQkJCQkJCSB0cmFuc2FjdGlvbmFs KTsKKwl9CisKIAlwZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMob2JqZWN0cywgZHJvcC0+YmVoYXZp b3IsIGZsYWdzKTsKIAogCWZyZWVfb2JqZWN0X2FkZHJlc3NlcyhvYmplY3RzKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGViNzEuLmYzZWViNjcz MTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTYsNiAr MTYsNyBAQCBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBP QkpTID0gXAogCWRlY29kZS5vIFwKKwlkZGxtZXNzYWdlLm9cCiAJbGF1bmNoZXIubyBcCiAJbG9n aWNhbC5vIFwKIAlsb2dpY2FsZnVuY3MubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RkbG1lc3NhZ2UuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGRsbWVzc2FnZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu LmY5MzU3MzA3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2RkbG1lc3NhZ2UuYwpAQCAtMCwwICsxLDk5IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCisgKiBkZGxtZXNzYWdlLmMKKyAqCSAgTG9naWNhbCBEREwgbWVzc2FnZXMuCisgKgorICog Q29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAor ICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGRsbWVzc2FnZS5jCisgKgorICogTk9URVMKKyAqCisgKiBMb2dpY2FsIERETCBtZXNzYWdl cyBhbGxvdyBYTE9HIGxvZ2dpbmcgb2YgRERMIGNvbW1hbmQgc3RyaW5ncyB0aGF0CisgKiBnZXQg cGFzc2VkIHRvIHRoZSBsb2dpY2FsIGRlY29kaW5nIHBsdWdpbi4gSW4gbm9ybWFsIFhMT0cgcHJv Y2Vzc2luZyB0aGV5CisgKiBhcmUgc2FtZSBhcyBOT09QLgorICoKKyAqIFNpbWlhcmwgdG8gdGhl IGdlbmVyaWMgbG9naWNhbCBtZXNzYWdlcywgVGhlc2UgRERMIG1lc3NhZ2VzIGNhbiBiZSBlaXRo ZXIKKyAqIHRyYW5zYWN0aW9uYWwgb3Igbm9uLXRyYW5zYWN0aW9uYWwuIE5vdGUgYnkgZGVmYXVs dCBERExzIGluIFBvc3RncmVTUUwgYXJlCisgKiB0cmFuc2FjdGlvbmFsLgorICogVHJhbnNhY3Rp b25hbCBtZXNzYWdlcyBhcmUgcGFydCBvZiBjdXJyZW50IHRyYW5zYWN0aW9uIGFuZCB3aWxsIGJl IHNlbnQgdG8KKyAqIGRlY29kaW5nIHBsdWdpbiB1c2luZyBpbiBhIHNhbWUgd2F5IGFzIERNTCBv cGVyYXRpb25zLgorICogTm9uLXRyYW5zYWN0aW9uYWwgbWVzc2FnZXMgYXJlIHNlbnQgdG8gdGhl IHBsdWdpbiBhdCB0aGUgdGltZSB3aGVuIHRoZQorICogbG9naWNhbCBkZWNvZGluZyByZWFkcyB0 aGVtIGZyb20gWExPRy4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgdHJhbnNhY3Rpb25hbAorICogbWVz c2FnZXMgd29uJ3QgYmUgZGVsaXZlcmVkIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcm9sbGVkIGJh Y2sgYnV0IHRoZQorICogbm9uLXRyYW5zYWN0aW9uYWwgb25lIHdpbGwgYWx3YXlzIGJlIGRlbGl2 ZXJlZC4KKyAqCisgKiBFdmVyeSBtZXNzYWdlIGNhcnJpZXMgcHJlZml4IHRvIGF2b2lkIGNvbmZs aWN0cyBiZXR3ZWVuIGRpZmZlcmVudCBkZWNvZGluZworICogcGx1Z2lucy4gVGhlIHBsdWdpbiBh dXRob3JzIG11c3QgdGFrZSBleHRyYSBjYXJlIHRvIHVzZSB1bmlxdWUgcHJlZml4LAorICogZ29v ZCBvcHRpb25zIHNlZW1zIHRvIGJlIGZvciBleGFtcGxlIHRvIHVzZSB0aGUgbmFtZSBvZiB0aGUg ZXh0ZW5zaW9uLgorICoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRlICJw b3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiYWNjZXNzL3hhY3QuaCIKKyNpbmNsdWRlICJhY2Nlc3Mv eGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAi bWlzY2FkbWluLmgiCisjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgiCisjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2RkbG1lc3NhZ2UuaCIK KyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorCisvKgorICogV3JpdGUgbG9naWNhbCBkZWNv ZGluZyBEREwgbWVzc2FnZSBpbnRvIFhMb2cuCisgKi8KK1hMb2dSZWNQdHIKK0xvZ0xvZ2ljYWxE RExNZXNzYWdlKGNvbnN0IGNoYXIgKnByZWZpeCwgT2lkIHJvbGVvaWQsIGNvbnN0IGNoYXIgKm1l c3NhZ2UsCisJCQkJCSBzaXplX3Qgc2l6ZSwgYm9vbCB0cmFuc2FjdGlvbmFsKQoreworCXhsX2xv Z2ljYWxfZGRsX21lc3NhZ2UgeGxyZWM7CisJY29uc3QgY2hhciAqcm9sZTsKKworCXJvbGUgPSAg R2V0VXNlck5hbWVGcm9tSWQocm9sZW9pZCwgZmFsc2UpOworCisJLyoKKwkgKiBGb3JjZSB4aWQg dG8gYmUgYWxsb2NhdGVkIGlmIHdlJ3JlIGVtaXR0aW5nIGEgdHJhbnNhY3Rpb25hbCBtZXNzYWdl LgorCSAqLworCWlmICh0cmFuc2FjdGlvbmFsKQorCXsKKwkJQXNzZXJ0KElzVHJhbnNhY3Rpb25T dGF0ZSgpKTsKKwkJR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKKwl9CisKKwl4bHJlYy5kYklk ID0gTXlEYXRhYmFzZUlkOworCXhscmVjLnRyYW5zYWN0aW9uYWwgPSB0cmFuc2FjdGlvbmFsOwor CS8qIHRyYWlsaW5nIHplcm8gaXMgY3JpdGljYWw7IHNlZSBsb2dpY2FsZGRsbXNnX2Rlc2MgKi8K Kwl4bHJlYy5wcmVmaXhfc2l6ZSA9IHN0cmxlbihwcmVmaXgpICsgMTsKKwl4bHJlYy5yb2xlX3Np emUgPSBzdHJsZW4ocm9sZSkgKyAxOworCXhscmVjLnNlYXJjaF9wYXRoX3NpemUgPSBzdHJsZW4o bmFtZXNwYWNlX3NlYXJjaF9wYXRoKSArIDE7CisJeGxyZWMubWVzc2FnZV9zaXplID0gc2l6ZTsK KworCVhMb2dCZWdpbkluc2VydCgpOworCVhMb2dSZWdpc3RlckRhdGEoKGNoYXIgKikgJnhscmVj LCBTaXplT2ZMb2dpY2FsRERMTWVzc2FnZSk7CisJWExvZ1JlZ2lzdGVyRGF0YSh1bmNvbnN0aWZ5 KGNoYXIgKiwgcHJlZml4KSwgeGxyZWMucHJlZml4X3NpemUpOworCVhMb2dSZWdpc3RlckRhdGEo dW5jb25zdGlmeShjaGFyICosIHJvbGUpLCB4bHJlYy5yb2xlX3NpemUpOworCVhMb2dSZWdpc3Rl ckRhdGEobmFtZXNwYWNlX3NlYXJjaF9wYXRoLCB4bHJlYy5zZWFyY2hfcGF0aF9zaXplKTsKKwlY TG9nUmVnaXN0ZXJEYXRhKHVuY29uc3RpZnkoY2hhciAqLCBtZXNzYWdlKSwgc2l6ZSk7CisKKwkv KiBhbGxvdyBvcmlnaW4gZmlsdGVyaW5nICovCisJWExvZ1NldFJlY29yZEZsYWdzKFhMT0dfSU5D TFVERV9PUklHSU4pOworCisJcmV0dXJuIFhMb2dJbnNlcnQoUk1fTE9HSUNBTERETE1TR19JRCwg WExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKTsKK30KKworLyoKKyAqIFJlZG8gaXMgYmFzaWNhbGx5 IGp1c3Qgbm9vcCBmb3IgbG9naWNhbCBkZWNvZGluZyBkZGwgbWVzc2FnZXMuCisgKi8KK3ZvaWQK K2xvZ2ljYWxkZGxtc2dfcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKK3sKKwl1aW50OAkJ aW5mbyA9IFhMb2dSZWNHZXRJbmZvKHJlY29yZCkgJiB+WExSX0lORk9fTUFTSzsKKworCWlmIChp bmZvICE9IFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRSkKKwkJZWxvZyhQQU5JQywgImxvZ2ljYWxk ZGxtc2dfcmVkbzogdW5rbm93biBvcCBjb2RlICV1IiwgaW5mbyk7CisKKwkvKiBUaGlzIGlzIG9u bHkgaW50ZXJlc3RpbmcgZm9yIGxvZ2ljYWwgZGVjb2RpbmcsIHNlZSBkZWNvZGUuYy4gKi8KK30K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDhjMDBhNzNjYjku LmI5ZjMwODZlMmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpA QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnRyb2wuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZWNvZGUuaCIK KyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vbG9naWNhbC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL21lc3NhZ2UuaCIKICNpbmNsdWRl ICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKQEAgLTYwNSw2ICs2MDYsNjEgQEAgbG9naWNhbG1zZ19k ZWNvZGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYp CiAJCQkJCQkJICBtZXNzYWdlLT5tZXNzYWdlICsgbWVzc2FnZS0+cHJlZml4X3NpemUpOwogfQog CisvKgorICogSGFuZGxlIHJtZ3IgTE9HSUNBTERETE1TR19JRCByZWNvcmRzIGZvciBEZWNvZGVS ZWNvcmRJbnRvUmVvcmRlckJ1ZmZlcigpLgorICovCit2b2lkCitsb2dpY2FsZGRsbXNnX2RlY29k ZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZikKK3sK KwlTbmFwQnVpbGQgICpidWlsZGVyID0gY3R4LT5zbmFwc2hvdF9idWlsZGVyOworCVhMb2dSZWFk ZXJTdGF0ZSAqciA9IGJ1Zi0+cmVjb3JkOworCVRyYW5zYWN0aW9uSWQgeGlkID0gWExvZ1JlY0dl dFhpZChyKTsKKwl1aW50OAkJaW5mbyA9IFhMb2dSZWNHZXRJbmZvKHIpICYgflhMUl9JTkZPX01B U0s7CisJUmVwT3JpZ2luSWQgb3JpZ2luX2lkID0gWExvZ1JlY0dldE9yaWdpbihyKTsKKwlTbmFw c2hvdAlzbmFwc2hvdDsKKwl4bF9sb2dpY2FsX2RkbF9tZXNzYWdlICptZXNzYWdlOworCisJaWYg KGluZm8gIT0gWExPR19MT0dJQ0FMX0RETF9NRVNTQUdFKQorCQllbG9nKEVSUk9SLCAidW5leHBl Y3RlZCBSTV9MT0dJQ0FMRERMTVNHX0lEIHJlY29yZCB0eXBlOiAldSIsIGluZm8pOworCisJUmVv cmRlckJ1ZmZlclByb2Nlc3NYaWQoY3R4LT5yZW9yZGVyLCBYTG9nUmVjR2V0WGlkKHIpLCBidWYt Pm9yaWdwdHIpOworCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBoYXZlIHNuYXBzaG90IG9yIHdlIGFy ZSBqdXN0IGZhc3QtZm9yd2FyZGluZywgdGhlcmUgaXMgbm8KKwkgKiBwb2ludCBpbiBkZWNvZGlu ZyBkZGwgbWVzc2FnZXMuCisJICovCisJaWYgKFNuYXBCdWlsZEN1cnJlbnRTdGF0ZShidWlsZGVy KSA8IFNOQVBCVUlMRF9GVUxMX1NOQVBTSE9UIHx8CisJCWN0eC0+ZmFzdF9mb3J3YXJkKQorCQly ZXR1cm47CisKKwltZXNzYWdlID0gKHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UgKikgWExvZ1JlY0dl dERhdGEocik7CisKKwlpZiAobWVzc2FnZS0+ZGJJZCAhPSBjdHgtPnNsb3QtPmRhdGEuZGF0YWJh c2UgfHwKKwkJRmlsdGVyQnlPcmlnaW4oY3R4LCBvcmlnaW5faWQpKQorCQlyZXR1cm47CisKKwlp ZiAobWVzc2FnZS0+dHJhbnNhY3Rpb25hbCAmJgorCQkhU25hcEJ1aWxkUHJvY2Vzc0NoYW5nZShi dWlsZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cikpCisJCXJldHVybjsKKwllbHNlIGlmICghbWVzc2Fn ZS0+dHJhbnNhY3Rpb25hbCAmJgorCQkJIChTbmFwQnVpbGRDdXJyZW50U3RhdGUoYnVpbGRlcikg IT0gU05BUEJVSUxEX0NPTlNJU1RFTlQgfHwKKwkJCSAgU25hcEJ1aWxkWGFjdE5lZWRzU2tpcChi dWlsZGVyLCBidWYtPm9yaWdwdHIpKSkKKwkJcmV0dXJuOworCisJc25hcHNob3QgPSBTbmFwQnVp bGRHZXRPckJ1aWxkU25hcHNob3QoYnVpbGRlciwgeGlkKTsKKwlSZW9yZGVyQnVmZmVyUXVldWVE RExNZXNzYWdlKGN0eC0+cmVvcmRlciwgeGlkLCBzbmFwc2hvdCwgYnVmLT5lbmRwdHIsCisJCQkJ CQkJICBtZXNzYWdlLT50cmFuc2FjdGlvbmFsLAorCQkJCQkJCSAgbWVzc2FnZS0+bWVzc2FnZSwK KwkJCQkJCQkgIC8qIGZpcnN0IHBhcnQgb2YgbWVzc2FnZSBpcyBwcmVmaXggKi8KKwkJCQkJCQkg IG1lc3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5wcmVmaXhfc2l6ZSwKKwkJCQkJCQkgIC8qIFNl Y29uZCBwYXJ0IG9mIG1lc3NhZ2UgaXMgcm9sZSovCisJCQkJCQkJICBtZXNzYWdlLT5tZXNzYWdl ICsgbWVzc2FnZS0+cHJlZml4X3NpemUgKyBtZXNzYWdlLT5yb2xlX3NpemUsCisJCQkJCQkJICAv KiBUaGlyZCBwYXJ0IG9mIG1lc3NhZ2UgaXMgc2VhcmNoX3BhdGggKi8KKwkJCQkJCQkgIG1lc3Nh Z2UtPm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJCQkgIG1lc3NhZ2UtPm1lc3NhZ2UgKyBtZXNzYWdlLT5w cmVmaXhfc2l6ZSArCisJCQkJCQkJICBtZXNzYWdlLT5yb2xlX3NpemUgKyBtZXNzYWdlLT5zZWFy Y2hfcGF0aF9zaXplKTsKK30KKwogLyoKICAqIENvbnNvbGlkYXRlZCBjb21taXQgcmVjb3JkIGhh bmRsaW5nIGJldHdlZW4gdGhlIGRpZmZlcmVudCBmb3JtIG9mIGNvbW1pdAogICogcmVjb3Jkcy4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsLmMKaW5kZXggOTM0YWExM2Yy ZC4uNGU4NDcwNTAwNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sb2dpY2FsLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2Fs LmMKQEAgLTczLDYgKzczLDEwIEBAIHN0YXRpYyB2b2lkIHRydW5jYXRlX2NiX3dyYXBwZXIoUmVv cmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIHN0YXRpYyB2b2lkIG1l c3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAq dHhuLAogCQkJCQkJCSAgIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25h bCwKIAkJCQkJCQkgICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25z dCBjaGFyICptZXNzYWdlKTsKK3N0YXRpYyB2b2lkIGRkbG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9y ZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCQkgIFhMb2dS ZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkJICBjb25zdCBj aGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnJvbGUsIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLAor CQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIHN0YXRp YyB2b2lkIHNlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24sIFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJYm9vbCB0cmFuc2FjdGlvbmFsLApAQCAtOTQsNiArOTgsMTAgQEAgc3Rh dGljIHZvaWQgc3RyZWFtX2NoYW5nZV9jYl93cmFwcGVyKFJlb3JkZXJCdWZmZXIgKmNhY2hlLCBS ZW9yZGVyQnVmZmVyVFhOICp0eG4KIHN0YXRpYyB2b2lkIHN0cmVhbV9tZXNzYWdlX2NiX3dyYXBw ZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJCQkJ CSAgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAogCQkJCQkJCQkJ ICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICptZXNz YWdlKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV9kZGxtZXNzYWdlX2NiX3dyYXBwZXIoUmVvcmRlckJ1 ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKKwkJCQkJCQkJCQkgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCSBjb25zdCBjaGFy ICpwcmVmaXgsIGNvbnN0IGNoYXIgKnJvbGUsIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLAorCQkJ CQkJCQkJCSBTaXplIG1lc3NhZ2Vfc2l6ZSwgY29uc3QgY2hhciAqbWVzc2FnZSk7CiBzdGF0aWMg dm9pZCBzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuLAogCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBzZXF1ZW5jZV9sc24s IFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgIGJvb2wgdHJhbnNhY3Rpb25hbCwKQEAgLTIyNiw2 ICsyMzQsNyBAQCBTdGFydHVwRGVjb2RpbmdDb250ZXh0KExpc3QgKm91dHB1dF9wbHVnaW5fb3B0 aW9ucywKIAljdHgtPnJlb3JkZXItPmFwcGx5X3RydW5jYXRlID0gdHJ1bmNhdGVfY2Jfd3JhcHBl cjsKIAljdHgtPnJlb3JkZXItPmNvbW1pdCA9IGNvbW1pdF9jYl93cmFwcGVyOwogCWN0eC0+cmVv cmRlci0+bWVzc2FnZSA9IG1lc3NhZ2VfY2Jfd3JhcHBlcjsKKwljdHgtPnJlb3JkZXItPmRkbG1l c3NhZ2UgPSBkZGxtZXNzYWdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zZXF1ZW5jZSA9 IHNlcXVlbmNlX2NiX3dyYXBwZXI7CiAKIAkvKgpAQCAtMjQzLDYgKzI1Miw3IEBAIFN0YXJ0dXBE ZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3BsdWdpbl9vcHRpb25zLAogCQkoY3R4LT5jYWxs YmFja3Muc3RyZWFtX2NvbW1pdF9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3Ry ZWFtX2NoYW5nZV9jYiAhPSBOVUxMKSB8fAogCQkoY3R4LT5jYWxsYmFja3Muc3RyZWFtX21lc3Nh Z2VfY2IgIT0gTlVMTCkgfHwKKwkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV9kZGxtZXNzYWdlX2Ni ICE9IE5VTEwpIHx8CiAJCShjdHgtPmNhbGxiYWNrcy5zdHJlYW1fc2VxdWVuY2VfY2IgIT0gTlVM TCkgfHwKIAkJKGN0eC0+Y2FsbGJhY2tzLnN0cmVhbV90cnVuY2F0ZV9jYiAhPSBOVUxMKTsKIApA QCAtMjYxLDYgKzI3MSw3IEBAIFN0YXJ0dXBEZWNvZGluZ0NvbnRleHQoTGlzdCAqb3V0cHV0X3Bs dWdpbl9vcHRpb25zLAogCWN0eC0+cmVvcmRlci0+c3RyZWFtX2NvbW1pdCA9IHN0cmVhbV9jb21t aXRfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV9jaGFuZ2UgPSBzdHJlYW1fY2hh bmdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fbWVzc2FnZSA9IHN0cmVhbV9t ZXNzYWdlX2NiX3dyYXBwZXI7CisJY3R4LT5yZW9yZGVyLT5zdHJlYW1fZGRsbWVzc2FnZSA9IHN0 cmVhbV9kZGxtZXNzYWdlX2NiX3dyYXBwZXI7CiAJY3R4LT5yZW9yZGVyLT5zdHJlYW1fc2VxdWVu Y2UgPSBzdHJlYW1fc2VxdWVuY2VfY2Jfd3JhcHBlcjsKIAljdHgtPnJlb3JkZXItPnN0cmVhbV90 cnVuY2F0ZSA9IHN0cmVhbV90cnVuY2F0ZV9jYl93cmFwcGVyOwogCkBAIC0xMjUwLDYgKzEyNjEs NDQgQEAgc2VxdWVuY2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1 ZmZlclRYTiAqdHhuLAogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKIH0KIAorc3RhdGljIHZvaWQKK2RkbG1lc3NhZ2VfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVy ICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkgIFhMb2dSZWNQdHIgbWVzc2Fn ZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIGNv bnN0IGNoYXIgKnJvbGUsCisJCQkJCSAgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgsIFNpemUgbWVz c2FnZV9zaXplLAorCQkJCQkgIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlMb2dpY2FsRXJyb3JDYWxs YmFja1N0YXRlIHN0YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOworCisJ QXNzZXJ0KCFjdHgtPmZhc3RfZm9yd2FyZCk7CisKKwlpZiAoY3R4LT5jYWxsYmFja3MuZGRsbWVz c2FnZV9jYiA9PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBQdXNoIGNhbGxiYWNrICsgaW5mbyBv biB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCXN0YXRlLmN0eCA9IGN0eDsKKwlzdGF0ZS5j YWxsYmFja19uYW1lID0gImRkbG1lc3NhZ2UiOworCXN0YXRlLnJlcG9ydF9sb2NhdGlvbiA9IG1l c3NhZ2VfbHNuOworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gb3V0cHV0X3BsdWdpbl9lcnJvcl9j YWxsYmFjazsKKwllcnJjYWxsYmFjay5hcmcgPSAodm9pZCAqKSAmc3RhdGU7CisJZXJyY2FsbGJh Y2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sg PSAmZXJyY2FsbGJhY2s7CisKKwkvKiBzZXQgb3V0cHV0IHN0YXRlICovCisJY3R4LT5hY2NlcHRf d3JpdGVzID0gdHJ1ZTsKKwljdHgtPndyaXRlX3hpZCA9IHR4biAhPSBOVUxMID8gdHhuLT54aWQg OiBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwljdHgtPndyaXRlX2xvY2F0aW9uID0gbWVzc2FnZV9s c247CisKKwkvKiBkbyB0aGUgYWN0dWFsIHdvcms6IGNhbGwgY2FsbGJhY2sgKi8KKwljdHgtPmNh bGxiYWNrcy5kZGxtZXNzYWdlX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgdHJhbnNhY3Rpb25h bCwgcHJlZml4LAorCQkJCQkJCQkgcm9sZSwgc2VhcmNoX3BhdGgsIG1lc3NhZ2Vfc2l6ZSwgbWVz c2FnZSk7CisKKwkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KKwllcnJvcl9jb250 ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7Cit9CisKIHN0YXRpYyB2b2lkCiBzdHJl YW1fc3RhcnRfY2Jfd3JhcHBlcihSZW9yZGVyQnVmZmVyICpjYWNoZSwgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAogCQkJCQkJWExvZ1JlY1B0ciBmaXJzdF9sc24pCkBAIC0xNTk2LDYgKzE2NDUsNDgg QEAgc3RyZWFtX3NlcXVlbmNlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJl dmlvdXM7CiB9CiAKK3N0YXRpYyB2b2lkCitzdHJlYW1fZGRsbWVzc2FnZV9jYl93cmFwcGVyKFJl b3JkZXJCdWZmZXIgKmNhY2hlLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJIFhMb2dS ZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNhY3Rpb25hbCwKKwkJCQkJCQkgY29uc3QgY2hh ciAqcHJlZml4LCBjb25zdCBjaGFyICpyb2xlLAorCQkJCQkJCSBjb25zdCBjaGFyKiBzZWFyY2hf cGF0aCwgU2l6ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7 CisJTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4ID0gY2FjaGUtPnByaXZhdGVfZGF0YTsKKwlM b2dpY2FsRXJyb3JDYWxsYmFja1N0YXRlIHN0YXRlOworCUVycm9yQ29udGV4dENhbGxiYWNrIGVy cmNhbGxiYWNrOworCisJQXNzZXJ0KCFjdHgtPmZhc3RfZm9yd2FyZCk7CisKKwkvKiBXZSdyZSBv bmx5IHN1cHBvc2VkIHRvIGNhbGwgdGhpcyB3aGVuIHN0cmVhbWluZyBpcyBzdXBwb3J0ZWQuICov CisJQXNzZXJ0KGN0eC0+c3RyZWFtaW5nKTsKKworCS8qIHRoaXMgY2FsbGJhY2sgaXMgb3B0aW9u YWwgKi8KKwlpZiAoY3R4LT5jYWxsYmFja3Muc3RyZWFtX2RkbG1lc3NhZ2VfY2IgPT0gTlVMTCkK KwkJcmV0dXJuOworCisJLyogUHVzaCBjYWxsYmFjayArIGluZm8gb24gdGhlIGVycm9yIGNvbnRl eHQgc3RhY2sgKi8KKwlzdGF0ZS5jdHggPSBjdHg7CisJc3RhdGUuY2FsbGJhY2tfbmFtZSA9ICJz dHJlYW1fZGRsbWVzc2FnZSI7CisJc3RhdGUucmVwb3J0X2xvY2F0aW9uID0gbWVzc2FnZV9sc247 CisJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBvdXRwdXRfcGx1Z2luX2Vycm9yX2NhbGxiYWNrOwor CWVycmNhbGxiYWNrLmFyZyA9ICh2b2lkICopICZzdGF0ZTsKKwllcnJjYWxsYmFjay5wcmV2aW91 cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJjYWxs YmFjazsKKworCS8qIHNldCBvdXRwdXQgc3RhdGUgKi8KKwljdHgtPmFjY2VwdF93cml0ZXMgPSB0 cnVlOworCWN0eC0+d3JpdGVfeGlkID0gdHhuICE9IE5VTEwgPyB0eG4tPnhpZCA6IEludmFsaWRU cmFuc2FjdGlvbklkOworCWN0eC0+d3JpdGVfbG9jYXRpb24gPSBtZXNzYWdlX2xzbjsKKworCS8q IGRvIHRoZSBhY3R1YWwgd29yazogY2FsbCBjYWxsYmFjayAqLworCWN0eC0+Y2FsbGJhY2tzLnN0 cmVhbV9kZGxtZXNzYWdlX2NiKGN0eCwgdHhuLCBtZXNzYWdlX2xzbiwgdHJhbnNhY3Rpb25hbCwg cHJlZml4LAorCQkJCQkJCQkJCXJvbGUsIHNlYXJjaF9wYXRoLCBtZXNzYWdlX3NpemUsIG1lc3Nh Z2UpOworCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrICovCisJZXJyb3JfY29udGV4 dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZpb3VzOworfQorCiBzdGF0aWMgdm9pZAogc3RyZWFt X3RydW5jYXRlX2NiX3dyYXBwZXIoUmVvcmRlckJ1ZmZlciAqY2FjaGUsIFJlb3JkZXJCdWZmZXJU WE4gKnR4biwKIAkJCQkJCSAgIGludCBucmVsYXRpb25zLCBSZWxhdGlvbiByZWxhdGlvbnNbXSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBjOWIwZWVlZmQ3Li43 NjJiODk3NTQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3By b3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCkBAIC02 MjYsOCArNjI2LDggQEAgbG9naWNhbHJlcF9yZWFkX3RydW5jYXRlKFN0cmluZ0luZm8gaW4sCiAg Ki8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAotCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwg Y29uc3QgY2hhciAqcHJlZml4LCBTaXplIHN6LAotCQkJCQkJIGNvbnN0IGNoYXIgKm1lc3NhZ2Up CisJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkJCQkg U2l6ZSBzeiwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKIAl1aW50OAkJZmxhZ3MgPSAwOwogCkBA IC02NDgsNiArNjQ4LDYzIEBAIGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91 dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAogCXBxX3NlbmRieXRlcyhvdXQs IG1lc3NhZ2UsIHN6KTsKIH0KIAorLyoKKyAqIFJlYWQgRERMIE1FU1NBR0UgZnJvbSBzdHJlYW0K KyAqLworY29uc3QgY2hhciAqCitsb2dpY2FscmVwX3JlYWRfZGRsbWVzc2FnZShTdHJpbmdJbmZv IGluLCBYTG9nUmVjUHRyICpsc24sCisJCQkJCQkgICBjb25zdCBjaGFyICoqcHJlZml4LAorCQkJ CQkJICAgY29uc3QgY2hhciAqKnJvbGUsCisJCQkJCQkgICBjb25zdCBjaGFyICoqc2VhcmNoX3Bh dGgsCisJCQkJCQkgICBib29sICp0cmFuc2FjdGlvbmFsLAorCQkJCQkJICAgU2l6ZSAqc3opCit7 CisJdWludDggZmxhZ3M7CisJY29uc3QgY2hhciAqbXNnOworCisJLy9UT0RPIGRvdWJsZSBjaGVj ayB3aGVuIGRvIHdlIG5lZWQgdG8gZ2V0IFRyYW5zYWN0aW9uSWQuCisKKwlmbGFncyA9IHBxX2dl dG1zZ2ludChpbiwgMSk7CisJKnRyYW5zYWN0aW9uYWwgPSAoZmxhZ3MgJiBNRVNTQUdFX1RSQU5T QUNUSU9OQUwpID4gMDsKKwkqbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCSpwcmVmaXggPSBw cV9nZXRtc2dzdHJpbmcoaW4pOworCSpyb2xlID0gcHFfZ2V0bXNnc3RyaW5nKGluKTsKKwkqc2Vh cmNoX3BhdGggPSBwcV9nZXRtc2dzdHJpbmcoaW4pOworCSpzeiA9IHBxX2dldG1zZ2ludChpbiwg NCk7CisJbXNnID0gcHFfZ2V0bXNnYnl0ZXMoaW4sICpzeik7CisKKwlyZXR1cm4gbXNnOworfQor CisvKgorICogV3JpdGUgRERMIE1FU1NBR0UgdG8gc3RyZWFtCisgKi8KK3ZvaWQKK2xvZ2ljYWxy ZXBfd3JpdGVfZGRsbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuLAorCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJl Zml4LCBjb25zdCBjaGFyICpyb2xlLAorCQkJCQkJIGNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLCBT aXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKQoreworCXVpbnQ4CQlmbGFncyA9IDA7CisKKwlw cV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19ERExNRVNTQUdFKTsKKworCS8qIGVuY29k ZSBhbmQgc2VuZCBtZXNzYWdlIGZsYWdzICovCisJaWYgKHRyYW5zYWN0aW9uYWwpCisJCWZsYWdz IHw9IE1FU1NBR0VfVFJBTlNBQ1RJT05BTDsKKworCS8qIHRyYW5zYWN0aW9uIElEIChpZiBub3Qg dmFsaWQsIHdlJ3JlIG5vdCBzdHJlYW1pbmcpICovCisJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHhpZCkpCisJCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CisKKwlwcV9zZW5kaW50OChvdXQsIGZs YWdzKTsKKwlwcV9zZW5kaW50NjQob3V0LCBsc24pOworCXBxX3NlbmRzdHJpbmcob3V0LCBwcmVm aXgpOworCXBxX3NlbmRzdHJpbmcob3V0LCByb2xlKTsKKwlwcV9zZW5kc3RyaW5nKG91dCwgc2Vh cmNoX3BhdGgpOworCXBxX3NlbmRpbnQzMihvdXQsIHN6KTsKKwlwcV9zZW5kYnl0ZXMob3V0LCBt ZXNzYWdlLCBzeik7Cit9CisKIC8qCiAgKiBXcml0ZSByZWxhdGlvbiBkZXNjcmlwdGlvbiB0byB0 aGUgb3V0cHV0IHN0cmVhbS4KICAqLwpAQCAtMTE4NSw2ICsxMjQyLDggQEAgbG9naWNhbHJlcF9t ZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKQogCQkJcmV0dXJuICJUWVBFIjsK IAkJY2FzZSBMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRToKIAkJCXJldHVybiAiTUVTU0FHRSI7CisJ CWNhc2UgTE9HSUNBTF9SRVBfTVNHX0RETE1FU1NBR0U6CisJCQlyZXR1cm4gIkRETCI7CiAJCWNh c2UgTE9HSUNBTF9SRVBfTVNHX0JFR0lOX1BSRVBBUkU6CiAJCQlyZXR1cm4gIkJFR0lOIFBSRVBB UkUiOwogCQljYXNlIExPR0lDQUxfUkVQX01TR19QUkVQQVJFOgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCBjMmQ5YmU4MWZhLi41OTlk Y2VmNmJmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJi dWZmZXIuYwpAQCAtNTU1LDYgKzU1NSwyMCBAQCBSZW9yZGVyQnVmZmVyUmV0dXJuQ2hhbmdlKFJl b3JkZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyQ2hhbmdlICpjaGFuZ2UsCiAJCQkJcGZyZWUo Y2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlKTsKIAkJCWNoYW5nZS0+ZGF0YS5tc2cubWVzc2FnZSA9 IE5VTEw7CiAJCQlicmVhazsKKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMTUVTU0FH RToKKwkJCWlmIChjaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCAhPSBOVUxMKQorCQkJCXBmcmVl KGNoYW5nZS0+ZGF0YS5kZGxtc2cucHJlZml4KTsKKwkJCWNoYW5nZS0+ZGF0YS5kZGxtc2cucHJl Zml4ID0gTlVMTDsKKwkJCWlmIChjaGFuZ2UtPmRhdGEuZGRsbXNnLnJvbGUgIT0gTlVMTCkKKwkJ CQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRsbXNnLnJvbGUpOworCQkJY2hhbmdlLT5kYXRhLmRkbG1z Zy5yb2xlID0gTlVMTDsKKwkJCWlmIChjaGFuZ2UtPmRhdGEuZGRsbXNnLnNlYXJjaF9wYXRoICE9 IE5VTEwpCisJCQkJcGZyZWUoY2hhbmdlLT5kYXRhLmRkbG1zZy5zZWFyY2hfcGF0aCk7CisJCQlj aGFuZ2UtPmRhdGEuZGRsbXNnLnNlYXJjaF9wYXRoID0gTlVMTDsKKwkJCWlmIChjaGFuZ2UtPmRh dGEuZGRsbXNnLm1lc3NhZ2UgIT0gTlVMTCkKKwkJCQlwZnJlZShjaGFuZ2UtPmRhdGEuZGRsbXNn Lm1lc3NhZ2UpOworCQkJY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlID0gTlVMTDsKKwkJCWJy ZWFrOwogCQljYXNlIFJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CiAJCQlpZiAo Y2hhbmdlLT5kYXRhLmludmFsLmludmFsaWRhdGlvbnMpCiAJCQkJcGZyZWUoY2hhbmdlLT5kYXRh LmludmFsLmludmFsaWRhdGlvbnMpOwpAQCAtMTE0MCw2ICsxMTU0LDY0IEBAIFJlb3JkZXJCdWZm ZXJRdWV1ZVNlcXVlbmNlKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAl9 CiB9CiAKKy8qCisgKiBBIHRyYW5zYWN0aW9uYWwgRERMIG1lc3NhZ2UgaXMgcXVldWVkIHRvIGJl IHByb2Nlc3NlZCB1cG9uIGNvbW1pdCBhbmQgYQorICogbm9uLXRyYW5zYWN0aW9uYWwgRERMIG1l c3NhZ2UgZ2V0cyBwcm9jZXNzZWQgaW1tZWRpYXRlbHkuCisgKi8KK3ZvaWQKK1Jlb3JkZXJCdWZm ZXJRdWV1ZURETE1lc3NhZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAor CQkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkgIGJvb2wg dHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJICBjb25zdCBjaGFyICpy b2xlLCBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwKKwkJCQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUs IGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7CisJaWYgKHRyYW5zYWN0aW9uYWwpCisJeworCQlNZW1v cnlDb250ZXh0IG9sZGNvbnRleHQ7CisJCVJlb3JkZXJCdWZmZXJDaGFuZ2UgKmNoYW5nZTsKKwor CQlBc3NlcnQoeGlkICE9IEludmFsaWRUcmFuc2FjdGlvbklkKTsKKworCQlvbGRjb250ZXh0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKHJiLT5jb250ZXh0KTsKKworCQljaGFuZ2UgPSBSZW9yZGVy QnVmZmVyR2V0Q2hhbmdlKHJiKTsKKwkJY2hhbmdlLT5hY3Rpb24gPSBSRU9SREVSX0JVRkZFUl9D SEFOR0VfRERMTUVTU0FHRTsKKwkJY2hhbmdlLT5kYXRhLmRkbG1zZy5wcmVmaXggPSBwc3RyZHVw KHByZWZpeCk7CisJCWNoYW5nZS0+ZGF0YS5kZGxtc2cucm9sZSA9IHBzdHJkdXAocm9sZSk7CisJ CWNoYW5nZS0+ZGF0YS5kZGxtc2cuc2VhcmNoX3BhdGggPSBwc3RyZHVwKHNlYXJjaF9wYXRoKTsK KwkJY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlX3NpemUgPSBtZXNzYWdlX3NpemU7CisJCWNo YW5nZS0+ZGF0YS5kZGxtc2cubWVzc2FnZSA9IHBhbGxvYyhtZXNzYWdlX3NpemUpOworCQltZW1j cHkoY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlLCBtZXNzYWdlLCBtZXNzYWdlX3NpemUpOwor CisJCVJlb3JkZXJCdWZmZXJRdWV1ZUNoYW5nZShyYiwgeGlkLCBsc24sIGNoYW5nZSwgZmFsc2Up OworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwl9CisJZWxzZQorCXsK KwkJUmVvcmRlckJ1ZmZlclRYTiAqdHhuID0gTlVMTDsKKwkJdm9sYXRpbGUgU25hcHNob3Qgc25h cHNob3Rfbm93ID0gc25hcHNob3Q7CisKKwkJaWYgKHhpZCAhPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZCkKKwkJCXR4biA9IFJlb3JkZXJCdWZmZXJUWE5CeVhpZChyYiwgeGlkLCB0cnVlLCBOVUxMLCBs c24sIHRydWUpOworCisJCS8qIHNldHVwIHNuYXBzaG90IHRvIGFsbG93IGNhdGFsb2cgYWNjZXNz ICovCisJCVNldHVwSGlzdG9yaWNTbmFwc2hvdChzbmFwc2hvdF9ub3csIE5VTEwpOworCQlQR19U UlkoKTsKKwkJeworCQkJcmItPmRkbG1lc3NhZ2UocmIsIHR4biwgbHNuLCBmYWxzZSwgcHJlZml4 LCByb2xlLCBzZWFyY2hfcGF0aCwgbWVzc2FnZV9zaXplLCBtZXNzYWdlKTsKKworCQkJVGVhcmRv d25IaXN0b3JpY1NuYXBzaG90KGZhbHNlKTsKKwkJfQorCQlQR19DQVRDSCgpOworCQl7CisJCQlU ZWFyZG93bkhpc3RvcmljU25hcHNob3QodHJ1ZSk7CisJCQlQR19SRV9USFJPVygpOworCQl9CisJ CVBHX0VORF9UUlkoKTsKKwl9Cit9CisKIC8qCiAgKiBBc3NlcnRUWE5Mc25PcmRlcgogICoJCVZl cmlmeSBMU04gb3JkZXJpbmcgb2YgdHJhbnNhY3Rpb24gbGlzdHMgaW4gdGhlIHJlb3JkZXJidWZm ZXIKQEAgLTIyMzQsNiArMjMwNiwyOSBAQCBSZW9yZGVyQnVmZmVyQXBwbHlNZXNzYWdlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCWNoYW5nZS0+ZGF0YS5t c2cubWVzc2FnZSk7CiB9CiAKKy8qCisgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFJlb3JkZXJCdWZm ZXJQcm9jZXNzVFhOIGZvciBhcHBseWluZyB0aGUgRERMIG1lc3NhZ2UuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorUmVvcmRlckJ1ZmZlckFwcGx5RERMTWVzc2FnZShSZW9yZGVyQnVmZmVyICpy YiwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAorCQkJCQkJCSBSZW9yZGVyQnVmZmVyQ2hhbmdlICpj aGFuZ2UsIGJvb2wgc3RyZWFtaW5nKQoreworCWlmIChzdHJlYW1pbmcpCisJCXJiLT5zdHJlYW1f ZGRsbWVzc2FnZShyYiwgdHhuLCBjaGFuZ2UtPmxzbiwgdHJ1ZSwKKwkJCQkJCQkgIGNoYW5nZS0+ ZGF0YS5kZGxtc2cucHJlZml4LAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbG1zZy5yb2xlLAor CQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbG1zZy5zZWFyY2hfcGF0aCwKKwkJCQkJCQkgIGNoYW5n ZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXplLAorCQkJCQkJCSAgY2hhbmdlLT5kYXRhLmRkbG1z Zy5tZXNzYWdlKTsKKwllbHNlCisJCXJiLT5kZGxtZXNzYWdlKHJiLCB0eG4sIGNoYW5nZS0+bHNu LCB0cnVlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCwKKwkJCQkJICAgY2hh bmdlLT5kYXRhLmRkbG1zZy5yb2xlLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsbXNnLnNlYXJj aF9wYXRoLAorCQkJCQkgICBjaGFuZ2UtPmRhdGEuZGRsbXNnLm1lc3NhZ2Vfc2l6ZSwKKwkJCQkJ ICAgY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlKTsKK30KKwogLyoKICAqIEhlbHBlciBmdW5j dGlvbiBmb3IgUmVvcmRlckJ1ZmZlclByb2Nlc3NUWE4gZm9yIGFwcGx5aW5nIHNlcXVlbmNlcy4K ICAqLwpAQCAtMjYzNSw2ICsyNzMwLDEwIEBAIFJlb3JkZXJCdWZmZXJQcm9jZXNzVFhOKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJCVJlb3JkZXJCdWZmZXJB cHBseU1lc3NhZ2UocmIsIHR4biwgY2hhbmdlLCBzdHJlYW1pbmcpOwogCQkJCQlicmVhazsKIAor CQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RETE1FU1NBR0U6CisJCQkJCVJlb3JkZXJC dWZmZXJBcHBseURETE1lc3NhZ2UocmIsIHR4biwgY2hhbmdlLCBzdHJlYW1pbmcpOworCQkJCQli cmVhazsKKwogCQkJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElPTjoKIAkJ CQkJLyogRXhlY3V0ZSB0aGUgaW52YWxpZGF0aW9uIG1lc3NhZ2VzIGxvY2FsbHkgKi8KIAkJCQkJ UmVvcmRlckJ1ZmZlckV4ZWN1dGVJbnZhbGlkYXRpb25zKApAQCAtNDAzNCw2ICs0MTMzLDUzIEBA IFJlb3JkZXJCdWZmZXJTZXJpYWxpemVDaGFuZ2UoUmVvcmRlckJ1ZmZlciAqcmIsIFJlb3JkZXJC dWZmZXJUWE4gKnR4biwKIAkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUpOwog CQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7CiAKKwkJCQlicmVhazsK KwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMTUVTU0FHRToKKwkJCXsKKwkJ CQljaGFyCSAgICpkYXRhOworCQkJCVNpemUJCXByZWZpeF9zaXplID0gc3RybGVuKGNoYW5nZS0+ ZGF0YS5kZGxtc2cucHJlZml4KSArIDE7CisJCQkJU2l6ZQkJcm9sZV9zaXplID0gc3RybGVuKGNo YW5nZS0+ZGF0YS5kZGxtc2cucm9sZSkgKyAxOworCQkJCVNpemUJCXNlYXJjaF9wYXRoX3NpemUg PSBzdHJsZW4oY2hhbmdlLT5kYXRhLmRkbG1zZy5zZWFyY2hfcGF0aCkgKyAxOworCisJCQkJc3og Kz0gcHJlZml4X3NpemUgKyByb2xlX3NpemUgKyBzZWFyY2hfcGF0aF9zaXplICsKKwkJCQkJICBj aGFuZ2UtPmRhdGEuZGRsbXNnLm1lc3NhZ2Vfc2l6ZSArCisJCQkJCSAgc2l6ZW9mKFNpemUpICsg c2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpOworCQkJCVJlb3JkZXJC dWZmZXJTZXJpYWxpemVSZXNlcnZlKHJiLCBzeik7CisKKwkJCQlkYXRhID0gKChjaGFyICopIHJi LT5vdXRidWYpICsgc2l6ZW9mKFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlKTsKKworCQkJCS8qIG1p Z2h0IGhhdmUgYmVlbiByZWFsbG9jYXRlZCBhYm92ZSAqLworCQkJCW9uZGlzayA9IChSZW9yZGVy QnVmZmVyRGlza0NoYW5nZSAqKSByYi0+b3V0YnVmOworCisJCQkJLyogd3JpdGUgdGhlIHByZWZp eCBpbmNsdWRpbmcgdGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJnByZWZpeF9zaXplLCBz aXplb2YoU2l6ZSkpOworCQkJCWRhdGEgKz0gc2l6ZW9mKFNpemUpOworCQkJCW1lbWNweShkYXRh LCBjaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCwKKwkJCQkJICAgcHJlZml4X3NpemUpOworCQkJ CWRhdGEgKz0gcHJlZml4X3NpemU7CisKKwkJCQkvKiB3cml0ZSB0aGUgcm9sZSBpbmNsdWRpbmcg dGhlIHNpemUgKi8KKwkJCQltZW1jcHkoZGF0YSwgJnJvbGVfc2l6ZSwgc2l6ZW9mKFNpemUpKTsK KwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRh LmRkbG1zZy5yb2xlLAorCQkJCQkgICByb2xlX3NpemUpOworCQkJCWRhdGEgKz0gcm9sZV9zaXpl OworCisJCQkJLyogd3JpdGUgdGhlIHNlYXJjaF9wYXRoIGluY2x1ZGluZyB0aGUgc2l6ZSAqLwor CQkJCW1lbWNweShkYXRhLCAmc2VhcmNoX3BhdGhfc2l6ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlk YXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1jcHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbG1z Zy5zZWFyY2hfcGF0aCwKKwkJCQkJICAgc2VhcmNoX3BhdGhfc2l6ZSk7CisJCQkJZGF0YSArPSBz ZWFyY2hfcGF0aF9zaXplOworCisJCQkJLyogd3JpdGUgdGhlIG1lc3NhZ2UgaW5jbHVkaW5nIHRo ZSBzaXplICovCisJCQkJbWVtY3B5KGRhdGEsICZjaGFuZ2UtPmRhdGEuZGRsbXNnLm1lc3NhZ2Vf c2l6ZSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsKKwkJCQltZW1j cHkoZGF0YSwgY2hhbmdlLT5kYXRhLmRkbG1zZy5tZXNzYWdlLAorCQkJCQkgICBjaGFuZ2UtPmRh dGEuZGRsbXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFuZ2UtPmRhdGEuZGRsbXNn Lm1lc3NhZ2Vfc2l6ZTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJFT1JERVJfQlVGRkVS X0NIQU5HRV9JTlZBTElEQVRJT046CkBAIC00MzgxLDYgKzQ1MjcsMTggQEAgUmVvcmRlckJ1ZmZl ckNoYW5nZVNpemUoUmVvcmRlckJ1ZmZlckNoYW5nZSAqY2hhbmdlKQogCQkJCXN6ICs9IHByZWZp eF9zaXplICsgY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemUgKwogCQkJCQlzaXplb2YoU2l6 ZSkgKyBzaXplb2YoU2l6ZSk7CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JV RkZFUl9DSEFOR0VfRERMTUVTU0FHRToKKwkJCXsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZSA9IHN0 cmxlbihjaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCkgKyAxOworCQkJCVNpemUJCXJvbGVfc2l6 ZSA9IHN0cmxlbihjaGFuZ2UtPmRhdGEuZGRsbXNnLnJvbGUpICsgMTsKKwkJCQlTaXplCQlzZWFy Y2hfcGF0aF9zaXplID0gc3RybGVuKGNoYW5nZS0+ZGF0YS5kZGxtc2cuc2VhcmNoX3BhdGgpICsg MTsKKworCQkJCXN6ICs9IHByZWZpeF9zaXplICsgcm9sZV9zaXplICsgc2VhcmNoX3BhdGhfc2l6 ZSArCisJCQkJCWNoYW5nZS0+ZGF0YS5kZGxtc2cubWVzc2FnZV9zaXplICsKKwkJCQkJc2l6ZW9m KFNpemUpICsgc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpICsgc2l6ZW9mKFNpemUpOworCiAJ CQkJYnJlYWs7CiAJCQl9CiAJCWNhc2UgUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0lOVkFMSURBVElP TjoKQEAgLTQ2NTcsOCArNDgxNSw3IEBAIFJlb3JkZXJCdWZmZXJSZXN0b3JlQ2hhbmdlKFJlb3Jk ZXJCdWZmZXIgKnJiLCBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCiAJCQkJLyogcmVhZCBwcmVmaXgg Ki8KIAkJCQltZW1jcHkoJnByZWZpeF9zaXplLCBkYXRhLCBzaXplb2YoU2l6ZSkpOwogCQkJCWRh dGEgKz0gc2l6ZW9mKFNpemUpOwotCQkJCWNoYW5nZS0+ZGF0YS5tc2cucHJlZml4ID0gTWVtb3J5 Q29udGV4dEFsbG9jKHJiLT5jb250ZXh0LAotCQkJCQkJCQkJCQkJCQkJIHByZWZpeF9zaXplKTsK KwkJCQljaGFuZ2UtPmRhdGEubXNnLnByZWZpeCA9IE1lbW9yeUNvbnRleHRBbGxvYyhyYi0+Y29u dGV4dCwgcHJlZml4X3NpemUpOwogCQkJCW1lbWNweShjaGFuZ2UtPmRhdGEubXNnLnByZWZpeCwg ZGF0YSwgcHJlZml4X3NpemUpOwogCQkJCUFzc2VydChjaGFuZ2UtPmRhdGEubXNnLnByZWZpeFtw cmVmaXhfc2l6ZSAtIDFdID09ICdcMCcpOwogCQkJCWRhdGEgKz0gcHJlZml4X3NpemU7CkBAIC00 NjcyLDYgKzQ4MjksNDkgQEAgUmVvcmRlckJ1ZmZlclJlc3RvcmVDaGFuZ2UoUmVvcmRlckJ1ZmZl ciAqcmIsIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwKIAkJCQkJICAgY2hhbmdlLT5kYXRhLm1zZy5t ZXNzYWdlX3NpemUpOwogCQkJCWRhdGEgKz0gY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlX3NpemU7 CiAKKwkJCQlicmVhazsKKwkJCX0KKwkJY2FzZSBSRU9SREVSX0JVRkZFUl9DSEFOR0VfRERMTUVT U0FHRToKKwkJCXsKKwkJCQlTaXplCQlwcmVmaXhfc2l6ZTsKKwkJCQlTaXplCQlyb2xlX3NpemU7 CisJCQkJU2l6ZQkJc2VhcmNoX3BhdGhfc2l6ZTsKKworCQkJCS8qIHJlYWQgcHJlZml4ICovCisJ CQkJbWVtY3B5KCZwcmVmaXhfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9 IHNpemVvZihTaXplKTsKKwkJCQljaGFuZ2UtPmRhdGEuZGRsbXNnLnByZWZpeCA9IE1lbW9yeUNv bnRleHRBbGxvYyhyYi0+Y29udGV4dCwgcHJlZml4X3NpemUpOworCQkJCW1lbWNweShjaGFuZ2Ut PmRhdGEuZGRsbXNnLnByZWZpeCwgZGF0YSwgcHJlZml4X3NpemUpOworCQkJCUFzc2VydChjaGFu Z2UtPmRhdGEuZGRsbXNnLnByZWZpeFtwcmVmaXhfc2l6ZSAtIDFdID09ICdcMCcpOworCQkJCWRh dGEgKz0gcHJlZml4X3NpemU7CisKKwkJCQkvKiByZWFkIHJvbGUgKi8KKwkJCQltZW1jcHkoJnJv bGVfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXplKTsK KwkJCQljaGFuZ2UtPmRhdGEuZGRsbXNnLnJvbGUgPSBNZW1vcnlDb250ZXh0QWxsb2MocmItPmNv bnRleHQsCisJCQkJCQkJCQkJCQkJCQkgIHJvbGVfc2l6ZSk7CisJCQkJbWVtY3B5KGNoYW5nZS0+ ZGF0YS5kZGxtc2cucm9sZSwgZGF0YSwgcm9sZV9zaXplKTsKKwkJCQlBc3NlcnQoY2hhbmdlLT5k YXRhLmRkbG1zZy5yb2xlW3JvbGVfc2l6ZSAtIDFdID09ICdcMCcpOworCQkJCWRhdGEgKz0gcm9s ZV9zaXplOworCisJCQkJLyogcmVhZCBzZWFyY2hfcGF0aCAqLworCQkJCW1lbWNweSgmc2VhcmNo X3BhdGhfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNpemVvZihTaXpl KTsKKwkJCQljaGFuZ2UtPmRhdGEuZGRsbXNnLnNlYXJjaF9wYXRoID0gTWVtb3J5Q29udGV4dEFs bG9jKHJiLT5jb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJCQkgc2VhcmNoX3BhdGhfc2l6ZSk7CisJ CQkJbWVtY3B5KGNoYW5nZS0+ZGF0YS5kZGxtc2cuc2VhcmNoX3BhdGgsIGRhdGEsIHNlYXJjaF9w YXRoX3NpemUpOworCQkJCUFzc2VydChjaGFuZ2UtPmRhdGEuZGRsbXNnLnNlYXJjaF9wYXRoW3Nl YXJjaF9wYXRoX3NpemUgLSAxXSA9PSAnXDAnKTsKKwkJCQlkYXRhICs9IHNlYXJjaF9wYXRoX3Np emU7CisKKwkJCQkvKiByZWFkIHRoZSBtZXNzYWdlICovCisJCQkJbWVtY3B5KCZjaGFuZ2UtPmRh dGEubXNnLm1lc3NhZ2Vfc2l6ZSwgZGF0YSwgc2l6ZW9mKFNpemUpKTsKKwkJCQlkYXRhICs9IHNp emVvZihTaXplKTsKKwkJCQljaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2UgPSBNZW1vcnlDb250ZXh0 QWxsb2MocmItPmNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgIGNoYW5nZS0+ZGF0YS5tc2cubWVz c2FnZV9zaXplKTsKKwkJCQltZW1jcHkoY2hhbmdlLT5kYXRhLm1zZy5tZXNzYWdlLCBkYXRhLAor CQkJCQkgICBjaGFuZ2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZSk7CisJCQkJZGF0YSArPSBjaGFu Z2UtPmRhdGEubXNnLm1lc3NhZ2Vfc2l6ZTsKKwogCQkJCWJyZWFrOwogCQkJfQogCQljYXNlIFJF T1JERVJfQlVGRkVSX0NIQU5HRV9JTlZBTElEQVRJT046CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwppbmRleCAwM2UwNjljN2NkLi4yNmZhNTg5NzNmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE1NSw2ICsxNTUsNyBAQAogI2lu Y2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1 ZGUgIm9wdGltaXplci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJwYXJzZXIvYW5hbHl6ZS5oIgog I2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3b3JrZXIuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgpAQCAtMTc5LDYgKzE4MCw4IEBACiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidGNvcC9wcXVlcnkuaCIKKyNpbmNs dWRlICJ0Y29wL3V0aWxpdHkuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1 dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2NhdGNhY2hlLmgiCkBAIC0zMjksNiAr MzMyLDEwIEBAIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCiAJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqcmVtb3Rlc2xv dCwKIAkJCQkJCQkJCSAgIExvZ2ljYWxSZXBUdXBsZURhdGEgKm5ld3R1cCwKIAkJCQkJCQkJCSAg IENtZFR5cGUgb3BlcmF0aW9uKTsKK3N0YXRpYyB2b2lkIGFwcGx5X2V4ZWN1dGVfc3FsX2NvbW1h bmQoY29uc3QgY2hhciAqY21kc3RyLAorCQkJCQkJCQkJICBjb25zdCBjaGFyKiByb2xlLAorCQkJ CQkJCQkJICBjb25zdCBjaGFyKiBzZWFyY2hfcGF0aCwKKwkJCQkJCQkJCSAgYm9vbCBpc1RvcExl dmVsKTsKIAogLyogQ29tcHV0ZSBHSUQgZm9yIHR3b19waGFzZSB0cmFuc2FjdGlvbnMgKi8KIHN0 YXRpYyB2b2lkIFR3b1BoYXNlVHJhbnNhY3Rpb25HaWQoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklk IHhpZCwgY2hhciAqZ2lkLCBpbnQgc3pnaWQpOwpAQCAtMjM2MCw2ICsyMzY3LDI1OSBAQCBhcHBs eV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7 CiB9CiAKKy8qCisgKiBIYW5kbGUgZ2VuZXJpYyBtZXNzYWdlcy4KKyAqLworc3RhdGljIHZvaWQK K2FwcGx5X2hhbmRsZV9kZGxtZXNzYWdlKFN0cmluZ0luZm8gcykKK3sKKwlYTG9nUmVjUHRyIGxz bjsKKwlib29sIHRyYW5zYWN0aW9uYWw7CisJU2l6ZSBzejsKKwljb25zdCBjaGFyICpwcmVmaXg7 CisJY29uc3QgY2hhciAqcm9sZTsKKwljb25zdCBjaGFyICpzZWFyY2hfcGF0aDsKKwljb25zdCBj aGFyICptc2c7CisKKwltc2cgPSBsb2dpY2FscmVwX3JlYWRfZGRsbWVzc2FnZShzLCAmbHNuLCAm cHJlZml4LCAmcm9sZSwgJnNlYXJjaF9wYXRoLCAmdHJhbnNhY3Rpb25hbCwgJnN6KTsKKworCWFw cGx5X2V4ZWN1dGVfc3FsX2NvbW1hbmQobXNnLCByb2xlLCBzZWFyY2hfcGF0aCwgdHJ1ZSk7Cit9 CisKKy8qCisgKiBBZGQgY29udGV4dCB0byB0aGUgZXJyb3JzIHByb2R1Y2VkIGJ5IGFwcGx5X2V4 ZWN1dGVfc3FsX2NvbW1hbmQoKS4KKyAqLworc3RhdGljIHZvaWQKK2V4ZWN1dGVfc3FsX2NvbW1h bmRfZXJyb3JfY2Iodm9pZCAqYXJnKQoreworCWVycmNvbnRleHQoImR1cmluZyBleGVjdXRpb24g b2YgU1FMIHN0YXRlbWVudDogJXMiLCAoY2hhciAqKSBhcmcpOworfQorCisvKgorICogRXhlY3V0 ZSBhbiBTUUwgY29tbWFuZC4gVGhpcyBjYW4gYmUgbXVsdGlwbGUgcXVlcmllcy4KKyAqIFRoaXMg aXMgbW9kaWZpZWQgYmFzZWQgb24gcGdsb2dpY2FsX2V4ZWN1dGVfc3FsX2NvbW1hbmQoKS4KKyAq Lworc3RhdGljIHZvaWQKK2FwcGx5X2V4ZWN1dGVfc3FsX2NvbW1hbmQoY29uc3QgY2hhciAqY21k c3RyLCBjb25zdCBjaGFyICpyb2xlLCBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwKKwkJCQkJCSAg Ym9vbCBpc1RvcExldmVsKQoreworCWNvbnN0IGNoYXIgKnNhdmVfZGVidWdfcXVlcnlfc3RyaW5n ID0gZGVidWdfcXVlcnlfc3RyaW5nOworCUxpc3QJICAgKnBhcnNldHJlZV9saXN0OworCUxpc3RD ZWxsICAgKnBhcnNldHJlZV9pdGVtOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlFcnJv ckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlpbnQJCQlzYXZlX25lc3RsZXZlbDsKKwor CS8qCisJICogU3dpdGNoIHRvIGFwcHJvcHJpYXRlIGNvbnRleHQgZm9yIGNvbnN0cnVjdGluZyBw YXJzZXRyZWVzLgorCSAqLworCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBw bHlNZXNzYWdlQ29udGV4dCk7CisJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJLyoKKwkg KiBTZXQgdGhlIGN1cnJlbnQgcm9sZSB0byB0aGUgdXNlciB0aGF0IGV4ZWN1dGVkIHRoZSBjb21t YW5kIG9uIHRoZQorCSAqIHB1YmxpY2F0aW9uIHNlcnZlci4KKwkgKiBTZXQgdGhlIGN1cnJlbnQg c2VhcmNoX3BhdGggdG8gdGhlIHNlYXJjaF9wYXRoIG9uIHRoZSBwdWJsaWNhdGlvbgorCSAqIHNl cnZlciB3aGVuIHRoZSBjb21tYW5kIHdhcyBleGVjdXRlZC4KKwkgKi8KKwlzYXZlX25lc3RsZXZl bCA9IE5ld0dVQ05lc3RMZXZlbCgpOworCVNldENvbmZpZ09wdGlvbigicm9sZSIsIHJvbGUsIFBH Q19JTlRFUk5BTCwgUEdDX1NfT1ZFUlJJREUpOworCVNldENvbmZpZ09wdGlvbigic2VhcmNoX3Bh dGgiLCBzZWFyY2hfcGF0aCwgUEdDX0lOVEVSTkFMLCBQR0NfU19PVkVSUklERSk7CisKKwllcnJj YWxsYmFjay5jYWxsYmFjayA9IGV4ZWN1dGVfc3FsX2NvbW1hbmRfZXJyb3JfY2I7CisJZXJyY2Fs bGJhY2suYXJnID0gKGNoYXIgKikgY21kc3RyOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJy b3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOwor CisJZGVidWdfcXVlcnlfc3RyaW5nID0gY21kc3RyOworCisJcGFyc2V0cmVlX2xpc3QgPSBwZ19w YXJzZV9xdWVyeShjbWRzdHIpOworCisJLyoKKwkgKiBEbyBhIGxpbWl0ZWQgYW1vdW50IG9mIHNh ZmV0eSBjaGVja2luZyBhZ2FpbnN0IENPTkNVUlJFTlRMWSBjb21tYW5kcworCSAqIGV4ZWN1dGVk IGluIHNpdHVhdGlvbnMgd2hlcmUgdGhleSBhcmVuJ3QgYWxsb3dlZC4gVGhlIHNlbmRlciBzaWRl IHNob3VsZAorCSAqIHByb3ZpZGUgcHJvdGVjdGlvbiwgYnV0IGJldHRlciBiZSBzYWZlIHRoYW4g c29ycnkuCisJICovCisJaXNUb3BMZXZlbCA9IGlzVG9wTGV2ZWwgJiYgKGxpc3RfbGVuZ3RoKHBh cnNldHJlZV9saXN0KSA9PSAxKTsKKworCS8qCisJICogU3dpdGNoIGJhY2sgdG8gdHJhbnNhY3Rp b24gY29udGV4dCB0byBlbnRlciB0aGUgbG9vcC4KKwkgKi8KKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY29udGV4dCk7CisKKwlmb3JlYWNoKHBhcnNldHJlZV9pdGVtLCBwYXJzZXRyZWVfbGlz dCkKKwl7CisJCUxpc3QJICAgKnBsYW50cmVlX2xpc3Q7CisJCUxpc3QJICAgKnF1ZXJ5dHJlZV9s aXN0OworCQlSYXdTdG10CSAgICpjb21tYW5kID0gKFJhd1N0bXQgKikgbGZpcnN0KHBhcnNldHJl ZV9pdGVtKTsKKwkJQ29tbWFuZFRhZwljb21tYW5kVGFnOworCQlNZW1vcnlDb250ZXh0IHBlcl9w YXJzZXRyZWVfY29udGV4dCA9IE5VTEw7CisJCVBvcnRhbAkJcG9ydGFsOworCQlEZXN0UmVjZWl2 ZXIgKnJlY2VpdmVyOworCQlib29sCQkgc25hcHNob3Rfc2V0ID0gZmFsc2U7CisJCWNoYXIgCQkg KnNjaGVtYW5hbWUgPSBOVUxMOyAvKiBGb3IgQ1JFQVRFIFRBQkxFIHN0bXQgb25seSAqLworCQlj aGFyCQkgKnJlbG5hbWUgPSBOVUxMOyAvKiBGb3IgQ1JFQVRFIFRBQkxFIHN0bXQgb25seSAqLwor CisJCWNvbW1hbmRUYWcgPSBDcmVhdGVDb21tYW5kVGFnKChOb2RlICopY29tbWFuZCk7CisKKwkJ LyoKKwkJICogUmVtZW1iZXIgdGhlIHNjaGVtYW5hbWUgYW5kIHJlbG5hbWUgaWYgaXQncyBhIENS RUFURSBUQUJMRSBzdG10CisJCSAqIGJlY2F1c2Ugd2Ugd2lsbCBuZWVkIHRoZW0gZm9yIHNvbWUg cG9zdC1wcm9jZXNzaW5nIGFmdGVyIHdlCisJCSAqIGV4ZWN1dGUgdGhlIHN0bXQuIEF0IHRoYXQg cG9pbnQsIENyZWF0ZVN0bXQgbWF5IGhhdmUgYmVlbiBmcmVlZWQgdXAuCisJCSAqLworCQlpZiAo Y29tbWFuZFRhZyA9PSBDTURUQUdfQ1JFQVRFX1RBQkxFKQorCQl7CisJCQlDcmVhdGVTdG10ICpj c3RtdCA9IChDcmVhdGVTdG10ICopY29tbWFuZC0+c3RtdDsKKwkJCVJhbmdlVmFyICpydiA9IGNz dG10LT5yZWxhdGlvbjsKKwkJCXNjaGVtYW5hbWUgPSBydi0+c2NoZW1hbmFtZTsKKwkJCXJlbG5h bWUgPSBydi0+cmVsbmFtZTsKKwkJfQorCisJCS8qCisJCSAqIFNldCB1cCBhIHNuYXBzaG90IGlm IHBhcnNlIGFuYWx5c2lzL3BsYW5uaW5nIHdpbGwgbmVlZCBvbmUuCisJCSAqLworCQlpZiAoYW5h bHl6ZV9yZXF1aXJlc19zbmFwc2hvdChjb21tYW5kKSkKKwkJeworCQkJUHVzaEFjdGl2ZVNuYXBz aG90KEdldFRyYW5zYWN0aW9uU25hcHNob3QoKSk7CisJCQlzbmFwc2hvdF9zZXQgPSB0cnVlOwor CQl9CisKKwkJLyoKKwkJICogT0sgdG8gYW5hbHl6ZSwgcmV3cml0ZSwgYW5kIHBsYW4gdGhpcyBx dWVyeS4KKwkJICoKKwkJICogU3dpdGNoIHRvIGFwcHJvcHJpYXRlIGNvbnRleHQgZm9yIGNvbnN0 cnVjdGluZyBxdWVyeSBhbmQgcGxhbiB0cmVlcworCQkgKiAodGhlc2UgY2FuJ3QgYmUgaW4gdGhl IHRyYW5zYWN0aW9uIGNvbnRleHQsIGFzIHRoYXQgd2lsbCBnZXQgcmVzZXQKKwkJICogd2hlbiB0 aGUgY29tbWFuZCBpcyBDT01NSVQvUk9MTEJBQ0spLiAgSWYgd2UgaGF2ZSBtdWx0aXBsZQorCQkg KiBwYXJzZXRyZWVzLCB3ZSB1c2UgYSBzZXBhcmF0ZSBjb250ZXh0IGZvciBlYWNoIG9uZSwgc28g dGhhdCB3ZSBjYW4KKwkJICogZnJlZSB0aGF0IG1lbW9yeSBiZWZvcmUgbW92aW5nIG9uIHRvIHRo ZSBuZXh0IG9uZS4gIEJ1dCBmb3IgdGhlCisJCSAqIGxhc3QgKG9yIG9ubHkpIHBhcnNldHJlZSwg anVzdCB1c2UgTWVzc2FnZUNvbnRleHQsIHdoaWNoIHdpbGwgYmUKKwkJICogcmVzZXQgc2hvcnRs eSBhZnRlciBjb21wbGV0aW9uIGFueXdheS4gIEluIGV2ZW50IG9mIGFuIGVycm9yLCB0aGUKKwkJ ICogcGVyX3BhcnNldHJlZV9jb250ZXh0IHdpbGwgYmUgZGVsZXRlZCB3aGVuIE1lc3NhZ2VDb250 ZXh0IGlzIHJlc2V0LgorCQkgKi8KKwkJaWYgKGxuZXh0KHBhcnNldHJlZV9saXN0LCBwYXJzZXRy ZWVfaXRlbSkgIT0gTlVMTCkKKwkJeworCQkJcGVyX3BhcnNldHJlZV9jb250ZXh0ID0KKwkJCQlB bGxvY1NldENvbnRleHRDcmVhdGUoTWVzc2FnZUNvbnRleHQsCisJCQkJCQkJCQkgICJwZXItcGFy c2V0cmVlIG1lc3NhZ2UgY29udGV4dCIsCisJCQkJCQkJCQkgIEFMTE9DU0VUX0RFRkFVTFRfU0la RVMpOworCQkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwZXJfcGFyc2V0cmVl X2NvbnRleHQpOworCQl9CisJCWVsc2UKKwkJCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dp dGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJcXVlcnl0cmVlX2xpc3QgPSBwZ19hbmFs eXplX2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKAorCQkJY29tbWFuZCwKKwkJCWNtZHN0ciwKKwkJ CU5VTEwsIDAsIE5VTEwpOworCisJCXBsYW50cmVlX2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMoCisJ CQlxdWVyeXRyZWVfbGlzdCwgY21kc3RyLCAwLCBOVUxMKTsKKworCQkvKgorCQkgKiBEb25lIHdp dGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcnNpbmcvcGxhbm5pbmcuCisJCSAqCisJCSAqIFdo aWxlIGl0IGxvb2tzIHByb21pc2luZyB0byByZXVzZSB0aGUgc2FtZSBzbmFwc2hvdCBmb3IgcXVl cnkKKwkJICogZXhlY3V0aW9uIChhdCBsZWFzdCBmb3Igc2ltcGxlIHByb3RvY29sKSwgdW5mb3J0 dW5hdGVseSBpdCBjYXVzZXMKKwkJICogZXhlY3V0aW9uIHRvIHVzZSBhIHNuYXBzaG90IHRoYXQg aGFzIGJlZW4gYWNxdWlyZWQgYmVmb3JlIGxvY2tpbmcKKwkJICogYW55IG9mIHRoZSB0YWJsZXMg bWVudGlvbmVkIGluIHRoZSBxdWVyeS4gIFRoaXMgY3JlYXRlcyB1c2VyLQorCQkgKiB2aXNpYmxl IGFub21hbGllcywgc28gcmVmcmFpbi4gIFJlZmVyIHRvCisJCSAqIGh0dHBzOi8vcG9zdGdyLmVz L20vZmxhdC81MDc1RDhERi42MDUwNTAwQGZ1enp5LmN6IGZvciBkZXRhaWxzLgorCQkgKi8KKwkJ aWYgKHNuYXBzaG90X3NldCkKKwkJCVBvcEFjdGl2ZVNuYXBzaG90KCk7CisKKwkJcG9ydGFsID0g Q3JlYXRlUG9ydGFsKCJsb2dpY2FsIHJlcGxpY2F0aW9uIiwgdHJ1ZSwgdHJ1ZSk7CisKKwkJLyoK KwkJICogV2UgZG9uJ3QgaGF2ZSB0byBjb3B5IGFueXRoaW5nIGludG8gdGhlIHBvcnRhbCwgYmVj YXVzZSBldmVyeXRoaW5nCisJCSAqIHdlIGFyZSBwYXNzaW5nIGhlcmUgaXMgaW4gTWVzc2FnZUNv bnRleHQgb3IgdGhlCisJCSAqIHBlcl9wYXJzZXRyZWVfY29udGV4dCwgYW5kIHNvIHdpbGwgb3V0 bGl2ZSB0aGUgcG9ydGFsIGFueXdheS4KKwkJICovCisJCVBvcnRhbERlZmluZVF1ZXJ5KHBvcnRh bCwKKwkJCQkJCSAgTlVMTCwKKwkJCQkJCSAgY21kc3RyLAorCQkJCQkJICBjb21tYW5kVGFnLAor CQkJCQkJICBwbGFudHJlZV9saXN0LAorCQkJCQkJICBOVUxMKTsKKworCQkvKgorCQkgKiBTdGFy dCB0aGUgcG9ydGFsLiAgTm8gcGFyYW1ldGVycyBoZXJlLgorCQkgKi8KKwkJUG9ydGFsU3RhcnQo cG9ydGFsLCBOVUxMLCAwLCBJbnZhbGlkU25hcHNob3QpOworCisJCS8qIERlc3ROb25lIGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uICovCisJCXJlY2VpdmVyID0gQ3JlYXRlRGVzdFJlY2VpdmVyKERl c3ROb25lKTsKKworCQkvKgorCQkgKiBTd2l0Y2ggYmFjayB0byB0cmFuc2FjdGlvbiBjb250ZXh0 IGZvciBleGVjdXRpb24uCisJCSAqLworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4 dCk7CisKKwkJKHZvaWQpIFBvcnRhbFJ1bihwb3J0YWwsCisJCQkJCQkgRkVUQ0hfQUxMLAorCQkJ CQkJIGlzVG9wTGV2ZWwsCisJCQkJCQkgdHJ1ZSwKKwkJCQkJCSByZWNlaXZlciwKKwkJCQkJCSBy ZWNlaXZlciwKKwkJCQkJCSBOVUxMKTsKKwkJKCpyZWNlaXZlci0+ckRlc3Ryb3kpIChyZWNlaXZl cik7CisKKwkJUG9ydGFsRHJvcChwb3J0YWwsIGZhbHNlKTsKKworCQlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOworCisJCS8qCisJCSAqIFRhYmxlIGNyZWF0ZWQgYnkgRERMIHJlcGxpY2F0aW9u IChkYXRhYmFzZSBsZXZlbCkgaXMgYXV0b21hdGljYWxseQorCQkgKiBhZGRlZCB0byB0aGUgc3Vi c2NyaXB0aW9uIGhlcmUuCisJCSAqCisJCSAqIENhbGwgQWRkU3Vic2NyaXB0aW9uUmVsU3RhdGUg Zm9yIENSRUFURSBUQUJFTCBjb21tYW5kIHRvIHNldAorCQkgKiB0aGUgcmVsc3RhdGUgdG8gU1VC UkVMX1NUQVRFX0lOSVQgc28gRE1MIGNoYW5nZXMgb24gdGhpcworCQkgKiBuZXcgdGFibGUgY2Fu IGJlIHJlcGxpY2F0ZWQgd2l0aG91dCBoYXZpbmcgdG8gbWFudWFsbHkgcnVuCisJCSAqICJhbHRl ciBzdWJzY3JpcHRpb24gLi4uIHJlZnJlc2ggcHVibGljYXRpb24iCisJCSAqLworCQlpZiAoY29t bWFuZFRhZyA9PSBDTURUQUdfQ1JFQVRFX1RBQkxFKQorCQl7CisJCQlPaWQgcmVsaWQ7CisJCQlP aWQgcmVsbmFtZXNwYWNlID0gSW52YWxpZE9pZDsKKworCQkJaWYgKHNjaGVtYW5hbWUgIT0gTlVM TCkKKwkJCQlyZWxuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX29pZChzY2hlbWFuYW1lLCBmYWxz ZSk7CisJCQlpZiAocmVsbmFtZXNwYWNlICE9IEludmFsaWRPaWQpCisJCQkJcmVsaWQgPSBnZXRf cmVsbmFtZV9yZWxpZChyZWxuYW1lLCByZWxuYW1lc3BhY2UpOworCQkJZWxzZQorCQkJeworCQkJ CS8qCisJCQkJICogVHJ5IHRvIHJlc29sdmUgdW5xdWFsaWZpZWQgcmVsbmFtZS4KKwkJCQkgKiBO b3RpY2Ugd2UgaGF2ZSBzZXQgdGhlIHNlYXJjaF9wYXRoIHRvIHRoZSBvcmlnaW5hbCBzZWFyY2hf cGF0aCBvbiB0aGUgcHVibGlzaGVyCisJCQkJICogYXQgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGZ1 bmN0aW9uLgorCQkJCSAqLworCQkJCXJlbGlkID0gUmVsbmFtZUdldFJlbGlkKHJlbG5hbWUpOwor CQkJfQorCisJCQlpZiAocmVsaWQgIT0gSW52YWxpZE9pZCkKKwkJCXsKKwkJCQlBZGRTdWJzY3Jp cHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+b2lkLCByZWxpZCwKKwkJCQkJCQkJCQlTVUJS RUxfU1RBVEVfSU5JVCwKKwkJCQkJCQkJCQlJbnZhbGlkWExvZ1JlY1B0cik7CisJCQkJZXJlcG9y dChERUJVRzEsCisJCQkJCQkoZXJybXNnX2ludGVybmFsKCJ0YWJsZSBcIiVzXCIgYWRkZWQgdG8g c3Vic2NyaXB0aW9uIFwiJXNcIiIsCisJCQkJCQkJCQkJIHJlbG5hbWUsIE15U3Vic2NyaXB0aW9u LT5uYW1lKSkpOworCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBSZXN0b3JlIHRoZSBHVUMgdmFy aWFibGVzIHdlIHNldCBhYm92ZS4KKwkgKi8KKwlBdEVPWGFjdF9HVUModHJ1ZSwgc2F2ZV9uZXN0 bGV2ZWwpOworCisJLyogcHJvdGVjdCBhZ2FpbnN0IHN0YWNrIHJlc2V0cyBkdXJpbmcgQ09OQ1VS UkVOVExZIHByb2Nlc3NpbmcgKi8KKwlpZiAoZXJyb3JfY29udGV4dF9zdGFjayA9PSAmZXJyY2Fs bGJhY2spCisJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKwor CWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHNhdmVfZGVidWdfcXVlcnlfc3RyaW5nOworCWVuZF9yZXBs aWNhdGlvbl9zdGVwKCk7Cit9CiAKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29s IG1lc3NhZ2UgZGlzcGF0Y2hlci4KQEAgLTI0MjUsNiArMjY4NSwxMCBAQCBhcHBseV9kaXNwYXRj aChTdHJpbmdJbmZvIHMpCiAJCQkgKi8KIAkJCWJyZWFrOwogCisJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX0RETE1FU1NBR0U6CisJCQlhcHBseV9oYW5kbGVfZGRsbWVzc2FnZShzKTsKKwkJCWJyZWFr OworCiAJCWNhc2UgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVEFSVDoKIAkJCWFwcGx5X2hhbmRs ZV9zdHJlYW1fc3RhcnQocyk7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9w Z291dHB1dC9wZ291dHB1dC5jCmluZGV4IGQ4NjlmM2U5M2UuLjBkZGY0YzA4NWYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwpAQCAtNTMsNiArNTMsMTAg QEAgc3RhdGljIHZvaWQgcGdvdXRwdXRfbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpj dHgsCiAJCQkJCQkJIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwKIAkJCQkJCQkgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJ CQkJIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworc3RhdGljIHZvaWQgcGdvdXRwdXRf ZGRsbWVzc2FnZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCVJlb3JkZXJC dWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJYm9vbCB0cmFu c2FjdGlvbmFsLCBjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKnJvbGUsCisJCQkJCQkJ CWNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsK IHN0YXRpYyBib29sIHBnb3V0cHV0X29yaWdpbl9maWx0ZXIoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LAogCQkJCQkJCQkgICBSZXBPcmlnaW5JZCBvcmlnaW5faWQpOwogc3RhdGljIHZvaWQg cGdvdXRwdXRfYmVnaW5fcHJlcGFyZV90eG4oTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LApA QCAtMjA4LDYgKzIxMiw3IEBAIF9QR19vdXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2Fs bGJhY2tzICpjYikKIAljYi0+Y2hhbmdlX2NiID0gcGdvdXRwdXRfY2hhbmdlOwogCWNiLT50cnVu Y2F0ZV9jYiA9IHBnb3V0cHV0X3RydW5jYXRlOwogCWNiLT5tZXNzYWdlX2NiID0gcGdvdXRwdXRf bWVzc2FnZTsKKwljYi0+ZGRsbWVzc2FnZV9jYiA9IHBnb3V0cHV0X2RkbG1lc3NhZ2U7CiAJY2It PmNvbW1pdF9jYiA9IHBnb3V0cHV0X2NvbW1pdF90eG47CiAKIAljYi0+YmVnaW5fcHJlcGFyZV9j YiA9IHBnb3V0cHV0X2JlZ2luX3ByZXBhcmVfdHhuOwpAQCAtMjI0LDYgKzIyOSw3IEBAIF9QR19v dXRwdXRfcGx1Z2luX2luaXQoT3V0cHV0UGx1Z2luQ2FsbGJhY2tzICpjYikKIAljYi0+c3RyZWFt X2NvbW1pdF9jYiA9IHBnb3V0cHV0X3N0cmVhbV9jb21taXQ7CiAJY2ItPnN0cmVhbV9jaGFuZ2Vf Y2IgPSBwZ291dHB1dF9jaGFuZ2U7CiAJY2ItPnN0cmVhbV9tZXNzYWdlX2NiID0gcGdvdXRwdXRf bWVzc2FnZTsKKwljYi0+c3RyZWFtX2RkbG1lc3NhZ2VfY2IgPSBwZ291dHB1dF9kZGxtZXNzYWdl OwogCWNiLT5zdHJlYW1fdHJ1bmNhdGVfY2IgPSBwZ291dHB1dF90cnVuY2F0ZTsKIAkvKiB0cmFu c2FjdGlvbiBzdHJlYW1pbmcgLSB0d28tcGhhc2UgY29tbWl0ICovCiAJY2ItPnN0cmVhbV9wcmVw YXJlX2NiID0gcGdvdXRwdXRfc3RyZWFtX3ByZXBhcmVfdHhuOwpAQCAtMTQxMyw4ICsxNDE5LDgg QEAgcGdvdXRwdXRfdHJ1bmNhdGUoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCiAKIHN0YXRpYyB2b2lkCiBwZ291dHB1dF9tZXNzYWdlKExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLAotCQkJCSBYTG9nUmVj UHRyIG1lc3NhZ2VfbHNuLCBib29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwg U2l6ZSBzeiwKLQkJCQkgY29uc3QgY2hhciAqbWVzc2FnZSkKKwkJCQkgWExvZ1JlY1B0ciBtZXNz YWdlX2xzbiwgYm9vbCB0cmFuc2FjdGlvbmFsLAorCQkJCSBjb25zdCBjaGFyICpwcmVmaXgsIFNp emUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCiB7CiAJUEdPdXRwdXREYXRhICpkYXRhID0gKFBH T3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKIAlUcmFuc2FjdGlvbklk IHhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwpAQCAtMTQ0MCw2ICsxNDQ2LDU3IEBAIHBnb3V0 cHV0X21lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVyQnVmZmVyVFhO ICp0eG4sCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4LCB0cnVlKTsKIH0KIAorc3RhdGljIHZvaWQK K3Bnb3V0cHV0X2RkbG1lc3NhZ2UoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBSZW9yZGVy QnVmZmVyVFhOICp0eG4sCisJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sIGJvb2wgdHJhbnNh Y3Rpb25hbCwKKwkJCQkgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBjaGFyICogcm9sZSwKKwkJ CQkgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgsIFNpemUgc3osIGNvbnN0IGNoYXIgKm1lc3NhZ2Up Cit7CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9w bHVnaW5fcHJpdmF0ZTsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklk OworCUxpc3RDZWxsICpsYzsKKworCS8qIFJlbG9hZCBwdWJsaWNhdGlvbnMgaWYgbmVlZGVkIGJl Zm9yZSB1c2UuICovCisJaWYgKCFwdWJsaWNhdGlvbnNfdmFsaWQpCisJeworCQlNZW1vcnlDb250 ZXh0IG9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhDYWNoZU1lbW9yeUNvbnRleHQpOwor CQlpZiAoZGF0YS0+cHVibGljYXRpb25zKQorCQkJbGlzdF9mcmVlX2RlZXAoZGF0YS0+cHVibGlj YXRpb25zKTsKKworCQlkYXRhLT5wdWJsaWNhdGlvbnMgPSBMb2FkUHVibGljYXRpb25zKGRhdGEt PnB1YmxpY2F0aW9uX25hbWVzKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJ CXB1YmxpY2F0aW9uc192YWxpZCA9IHRydWU7CisJfQorCisJLyogQ2hlY2sgaWYgZGRsIHJlcGxp Y2F0aW9uIGlzIHR1cm5lZCBvbiBmb3IgdGhlIHB1YmxpY2F0aW9ucyAqLworCWZvcmVhY2gobGMs IGRhdGEtPnB1YmxpY2F0aW9ucykKKwl7CisJCVB1YmxpY2F0aW9uICpwdWIgPSAoUHVibGljYXRp b24gKikgbGZpcnN0KGxjKTsKKwkJLyogVE9ETyBuZWVkIHRvIGNoZWNrIHJlbGlkIGZvciB0YWJs ZSBsZXZlbCBERExzICovCisJCWlmICghcHViLT5wdWJhY3Rpb25zLnB1YmRkbF9kYXRhYmFzZSAm JiAhcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZSkKKwkJCXJldHVybjsKKwl9CisKKwkvKgor CSAqIFJlbWVtYmVyIHRoZSB4aWQgZm9yIHRoZSBtZXNzYWdlIGluIHN0cmVhbWluZyBtb2RlLiBT ZWUKKwkgKiBwZ291dHB1dF9jaGFuZ2UuCisJICovCisJaWYgKGluX3N0cmVhbWluZykKKwkJeGlk ID0gdHhuLT54aWQ7CisKKwlPdXRwdXRQbHVnaW5QcmVwYXJlV3JpdGUoY3R4LCB0cnVlKTsKKwls b2dpY2FscmVwX3dyaXRlX2RkbG1lc3NhZ2UoY3R4LT5vdXQsCisJCQkJCQkJIHhpZCwKKwkJCQkJ CQkgbWVzc2FnZV9sc24sCisJCQkJCQkJIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJIHByZWZpeCwK KwkJCQkJCQkgcm9sZSwKKwkJCQkJCQkgc2VhcmNoX3BhdGgsCisJCQkJCQkJIHN6LAorCQkJCQkJ CSBtZXNzYWdlKTsKKwlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOworfQorCiAvKgogICog Q3VycmVudGx5IHdlIGFsd2F5cyBmb3J3YXJkLgogICovCkBAIC0xNzI1LDcgKzE3ODIsOSBAQCBn ZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRhICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikK IAkJZW50cnktPnNjaGVtYV9zZW50ID0gZmFsc2U7CiAJCWVudHJ5LT5zdHJlYW1lZF90eG5zID0g TklMOwogCQllbnRyeS0+cHViYWN0aW9ucy5wdWJpbnNlcnQgPSBlbnRyeS0+cHViYWN0aW9ucy5w dWJ1cGRhdGUgPQotCQkJZW50cnktPnB1YmFjdGlvbnMucHViZGVsZXRlID0gZW50cnktPnB1YmFj dGlvbnMucHVidHJ1bmNhdGUgPSBmYWxzZTsKKwkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0 ZSA9IGVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlID0KKwkJCWVudHJ5LT5wdWJhY3Rpb25z LnB1YmRkbF9kYXRhYmFzZSA9CisJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgPSBm YWxzZTsKIAkJZW50cnktPm5ld19zbG90ID0gTlVMTDsKIAkJZW50cnktPm9sZF9zbG90ID0gTlVM TDsKIAkJbWVtc2V0KGVudHJ5LT5leHByc3RhdGUsIDAsIHNpemVvZihlbnRyeS0+ZXhwcnN0YXRl KSk7CkBAIC0xNzgwLDYgKzE4MzksOCBAQCBnZXRfcmVsX3N5bmNfZW50cnkoUEdPdXRwdXREYXRh ICpkYXRhLCBSZWxhdGlvbiByZWxhdGlvbikKIAkJZW50cnktPnB1YmFjdGlvbnMucHVidXBkYXRl ID0gZmFsc2U7CiAJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSA9IGZhbHNlOwogCQllbnRy eS0+cHViYWN0aW9ucy5wdWJ0cnVuY2F0ZSA9IGZhbHNlOworCQllbnRyeS0+cHViYWN0aW9ucy5w dWJkZGxfZGF0YWJhc2UgPSBmYWxzZTsKKwkJZW50cnktPnB1YmFjdGlvbnMucHViZGRsX3RhYmxl ID0gZmFsc2U7CiAKIAkJLyoKIAkJICogVHVwbGUgc2xvdHMgY2xlYW51cHMuIChXaWxsIGJlIHJl YnVpbHQgbGF0ZXIgaWYgbmVlZGVkKS4KQEAgLTE4ODksNiArMTk1MCw4IEBAIGdldF9yZWxfc3lu Y19lbnRyeShQR091dHB1dERhdGEgKmRhdGEsIFJlbGF0aW9uIHJlbGF0aW9uKQogCQkJCWVudHJ5 LT5wdWJhY3Rpb25zLnB1YnVwZGF0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHVidXBkYXRlOwogCQkJ CWVudHJ5LT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWItPnB1YmFjdGlvbnMucHViZGVsZXRl OwogCQkJCWVudHJ5LT5wdWJhY3Rpb25zLnB1YnRydW5jYXRlIHw9IHB1Yi0+cHViYWN0aW9ucy5w dWJ0cnVuY2F0ZTsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJkZGxfZGF0YWJhc2UgfD0gcHVi LT5wdWJhY3Rpb25zLnB1YmRkbF9kYXRhYmFzZTsKKwkJCQllbnRyeS0+cHViYWN0aW9ucy5wdWJk ZGxfdGFibGUgfD0gcHViLT5wdWJhY3Rpb25zLnB1YmRkbF90YWJsZTsKIAogCQkJCXJlbF9wdWJs aWNhdGlvbnMgPSBsYXBwZW5kKHJlbF9wdWJsaWNhdGlvbnMsIHB1Yik7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMK aW5kZXggMzc4MGM2ZTgxMi4uZTVlYzU3MTNmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNv cC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKQEAgLTYyLDYgKzYy LDcgQEAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdXRp bGNtZC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIuaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlRGVmaW5lLmgi CiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlUmVtb3ZlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9m ZC5oIgpAQCAtODYsNyArODcsNyBAQCBzdGF0aWMgdm9pZCBQcm9jZXNzVXRpbGl0eVNsb3coUGFy c2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAog CQkJCQkJCSAgIERlc3RSZWNlaXZlciAqZGVzdCwKIAkJCQkJCQkgICBRdWVyeUNvbXBsZXRpb24g KnFjKTsKLXN0YXRpYyB2b2lkIEV4ZWNEcm9wU3RtdChEcm9wU3RtdCAqc3RtdCwgYm9vbCBpc1Rv cExldmVsKTsKK3N0YXRpYyB2b2lkIEV4ZWNEcm9wU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERy b3BTdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwogCiAvKgogICogQ29tbWFuZElzUmVhZE9u bHk6IGlzIGFuIGV4ZWN1dGFibGUgcXVlcnkgcmVhZC1vbmx5PwpAQCAtOTg2LDcgKzk4Nyw3IEBA IHN0YW5kYXJkX1Byb2Nlc3NVdGlsaXR5KFBsYW5uZWRTdG10ICpwc3RtdCwKIAkJCQkJCQkJCSAg IGNvbnRleHQsIHBhcmFtcywgcXVlcnlFbnYsCiAJCQkJCQkJCQkgICBkZXN0LCBxYyk7CiAJCQkJ ZWxzZQotCQkJCQlFeGVjRHJvcFN0bXQoc3RtdCwgaXNUb3BMZXZlbCk7CisJCQkJCUV4ZWNEcm9w U3RtdChwc3RhdGUsIHN0bXQsIGlzVG9wTGV2ZWwpOwogCQkJfQogCQkJYnJlYWs7CiAKQEAgLTEw ODYsNiArMTA4NywxNTQgQEAgc3RhbmRhcmRfUHJvY2Vzc1V0aWxpdHkoUGxhbm5lZFN0bXQgKnBz dG10LAogCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiB9CiAKKy8qCisgKiBMb2cgYSBEREwg Y29tbWFuZCBmb3IgbG9naWNhbCByZXBsaWNhdGlvbgorICogU29tZSBERExzIGFyZSBvbmx5IHJl cGxpY2F0ZWQgaW4gRGF0YWJhc2UgTGV2ZWwgRERMIHJlcGxpY2F0aW9uCisgKiBTb21lIGNhbiBi ZSByZXBsaWNhdGVkIGluIFRhYmxlIExldmVsIERETCByZXBsaWNhdGlvbi4KKyAqCisgKiBDdXJy ZW50bHkgd2UgZm9jdXMgb24gc3VwcG9ydGluZyBEYXRhYmFzZSBMZXZlbCBEREwgcmVwbGljYXRp b24KKyAqLworc3RhdGljIHZvaWQKK0xvZ0xvZ2ljYWxERExDb21tYW5kKE5vZGUgKnBhcnNldHJl ZSwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCit7CisJc3dpdGNoIChub2RlVGFnKHBhcnNldHJl ZSkpCisJeworCQkvKiBGaXNydGx5LCBjb21tYW5kcyB0aGF0IGFyZSBvbmx5IHN1cHBvcnRlZCBp biBEYXRhYmFzZSBsZXZlbCBEREwgcmVwbGljYXRpb24gKi8KKwkJY2FzZSBUX0NyZWF0ZVNjaGVt YVN0bXQ6CisJCWNhc2UgVF9DcmVhdGVTdG10OgorCQljYXNlIFRfQ3JlYXRlRm9yZWlnblRhYmxl U3RtdDoKKwkJY2FzZSBUX0FsdGVyRG9tYWluU3RtdDoKKwkJY2FzZSBUX0RlZmluZVN0bXQ6CisJ CWNhc2UgVF9Db21wb3NpdGVUeXBlU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZUVudW1TdG10OgorCQlj YXNlIFRfQ3JlYXRlUmFuZ2VTdG10OgorCQljYXNlIFRfQWx0ZXJFbnVtU3RtdDoKKwkJY2FzZSBU X1ZpZXdTdG10OgorCQljYXNlIFRfQ3JlYXRlRnVuY3Rpb25TdG10OgorCQljYXNlIFRfQWx0ZXJG dW5jdGlvblN0bXQ6CisJCWNhc2UgVF9DcmVhdGVUcmlnU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZURv bWFpblN0bXQ6CisJCWNhc2UgVF9DcmVhdGVDYXN0U3RtdDoKKwkJY2FzZSBUX0NyZWF0ZU9wQ2xh c3NTdG10OgorCQljYXNlIFRfQ3JlYXRlT3BGYW1pbHlTdG10OgorCQljYXNlIFRfQWx0ZXJPcEZh bWlseVN0bXQ6CisJCWNhc2UgVF9BbHRlck9wZXJhdG9yU3RtdDoKKwkJY2FzZSBUX0FsdGVyVHlw ZVN0bXQ6CisJCWNhc2UgVF9HcmFudFN0bXQ6CisJCWNhc2UgVF9BbHRlckNvbGxhdGlvblN0bXQ6 CisJCQkvKgorCQkJICogTG9nIHRoZXNlIHN0bXQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gaWYK KwkJCSAqIHRoZXJlIGlzIGFueSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiB3aXRoIHB1YmRk bF9kYXRhYmFzZSBvbi4KKwkJCSAqIGkuZS4gRGF0YWJhc2UgbGV2ZWwgRERMIHJlcGxpY2F0aW9u IGlzIG9uIGZvciBzb21lIHB1YmxpY2F0aW9uLgorCQkJICovCisJCQlpZiAoZGRsX25lZWRfeGxv ZyhJbnZhbGlkT2lkLCB0cnVlLCB0cnVlKSkKKwkJCXsKKwkJCQlib29sIHRyYW5zYWN0aW9uYWwg PSB0cnVlOworCQkJCWNvbnN0IGNoYXIqIHByZWZpeCA9ICIiOworCQkJCUxvZ0xvZ2ljYWxERExN ZXNzYWdlKHByZWZpeCwKKwkJCQkJCQkJCSBHZXRVc2VySWQoKSwKKwkJCQkJCQkJCSBxdWVyeVN0 cmluZywKKwkJCQkJCQkJCSBzdHJsZW4ocXVlcnlTdHJpbmcpLAorCQkJCQkJCQkJIHRyYW5zYWN0 aW9uYWwpOworCQkJfQorCQkJYnJlYWs7CisKKwkJLyoKKwkJICogU2Vjb25kbHksIGNvbW1hbmRz IHRoYXQgbWF5IGJlIGFsbG93ZWQgaW4gVGFibGUgbGV2ZWwgRERMIHJlcGxpY2F0aW9uLgorCQkg KiBUaGVzZSBhcmUgY3VycmVudGx5IGhhbmRsZWQgaW4gdGhlIGxhdGVyIGV4ZWN1dGlvbiBwYXRo IG9mIHRoZSBjb21tYW5kLgorCQkgKiBCZWNhdXNlIHdlIG5lZWQgdG8gZ2V0IHRoZSByZWxhdGlv biBpZCB3aGljaCByZWFkaWx5IGF2YWlsYWJsZSBpbiBsYXRlcgorCQkgKiBjb2RlIHBhdGguCisJ CSAqLworCQljYXNlIFRfQWx0ZXJUYWJsZVN0bXQ6CisJCWNhc2UgVF9JbmRleFN0bXQ6CisJCWNh c2UgVF9SZW5hbWVTdG10OiAvKiBUT0RPICovCisJCWNhc2UgVF9BbHRlck93bmVyU3RtdDogLyog VE9ETyAqLworCQkJYnJlYWs7CisKKwkJLyogRHJvcFN0bXQgZGVwZW5kcyBvbiB0aGUgcmVtb3Zl VHlwZSAqLworCQljYXNlIFRfRHJvcFN0bXQ6CisJCXsKKwkJCURyb3BTdG10KiBzdG10ID0gKERy b3BTdG10KikgcGFyc2V0cmVlOworCQkJc3dpdGNoIChzdG10LT5yZW1vdmVUeXBlKQorCQkJewor CQkJCS8qIE1heWJlIGFsbG93ZWQgaW4gVGFibGUgbGV2ZWwgRERMIHJlcGxpY2F0aW9uLCBoYW5k bGVkIGluIGxhdGVyIGNvZGUgcGF0aCAqLworCQkJCWNhc2UgT0JKRUNUX0lOREVYOgorCQkJCWNh c2UgT0JKRUNUX1RBQkxFOgorCQkJCQlicmVhazsKKwkJCQkvKiBEcm9wIG9mIHNlcXVlbmNlIGlz IGJ5IGxvZ2ljYWwgcmVwbGljYXRpb24gb2Ygc2VxdWVuY2VzIHNlcGFyYXRlbHkgKi8KKwkJCQlj YXNlIE9CSkVDVF9TRVFVRU5DRToKKwkJCQkJYnJlYWs7CisJCQkJLyogRHJvcCBvZiBvdGhlciBv YmplY3RzIGFyZSBhbGxvd2VkIGluIERhdGFiYXNlIGxldmVsIERETCByZXBsaWNhdGlvbiBvbmx5 ICovCisJCQkJY2FzZSBPQkpFQ1RfVklFVzoKKwkJCQljYXNlIE9CSkVDVF9NQVRWSUVXOgorCQkJ CWNhc2UgT0JKRUNUX0ZPUkVJR05fVEFCTEU6CisJCQkJZGVmYXVsdDoKKwkJCQkJLyoKKwkJCQkJ ICogTG9nIHRoZXNlIERyb3BTdG10IGZvciBsb2dpY2FsIHJlcGxpY2F0aW9uIGlmCisJCQkJCSAq IHRoZXJlIGlzIGFueSBGT1IgQUxMIFRBQkxFUyBwdWJsaWNhdGlvbiB3aXRoIHB1YmRkbF9kYXRh YmFzZSBvbi4KKwkJCQkJICogaS5lLiBEYXRhYmFzZSBsZXZlbCBEREwgcmVwbGljYXRpb24gaXMg b24gZm9yIHNvbWUgcHVibGljYXRpb24uCisJCQkJCSAqLworCQkJCQlpZiAoZGRsX25lZWRfeGxv ZyhJbnZhbGlkT2lkLCB0cnVlLCB0cnVlKSkKKwkJCQkJeworCQkJCQkJYm9vbCB0cmFuc2FjdGlv bmFsID0gdHJ1ZTsKKwkJCQkJCWNvbnN0IGNoYXIqIHByZWZpeCA9ICIiOworCQkJCQkJTG9nTG9n aWNhbERETE1lc3NhZ2UocHJlZml4LAorCQkJCQkJCQkJCQkgR2V0VXNlcklkKCksCisJCQkJCQkJ CQkJCSBxdWVyeVN0cmluZywKKwkJCQkJCQkJCQkJIHN0cmxlbihxdWVyeVN0cmluZyksCisJCQkJ CQkJCQkJCSB0cmFuc2FjdGlvbmFsKTsKKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQor CQkvKgorCQkgKiBMYXN0bHksIHJ1bGUgb3V0IERETHMgd2UgZG9uJ3QgcmVwbGljYXRlIHlldCBp biBEREwgcmVwbGljYXRpb24KKwkJICogU29tZSBvZiB0aGVzZSBjYW4gYmUgc3VwcG9ydGVkLCB3 ZSBqdXN0IG5lZWQgdG8gaW52ZXN0aWdhdGUgYW5kIHJ1biB0ZXN0cy4KKwkJICovCisJCWNhc2Ug VF9DcmVhdGVFeHRlbnNpb25TdG10OgorCQljYXNlIFRfQWx0ZXJFeHRlbnNpb25TdG10OgorCQlj YXNlIFRfQWx0ZXJFeHRlbnNpb25Db250ZW50c1N0bXQ6CisJCWNhc2UgVF9DcmVhdGVGZHdTdG10 OgorCQljYXNlIFRfQWx0ZXJGZHdTdG10OgorCQljYXNlIFRfQ3JlYXRlRm9yZWlnblNlcnZlclN0 bXQ6CisJCWNhc2UgVF9BbHRlckZvcmVpZ25TZXJ2ZXJTdG10OgorCQljYXNlIFRfQ3JlYXRlVXNl ck1hcHBpbmdTdG10OgorCQljYXNlIFRfQWx0ZXJVc2VyTWFwcGluZ1N0bXQ6CisJCWNhc2UgVF9E cm9wVXNlck1hcHBpbmdTdG10OgorCQljYXNlIFRfSW1wb3J0Rm9yZWlnblNjaGVtYVN0bXQ6CisJ CWNhc2UgVF9SdWxlU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVNlcVN0bXQ6CisJCWNhc2UgVF9BbHRl clNlcVN0bXQ6CisJCWNhc2UgVF9DcmVhdGVUYWJsZUFzU3RtdDoKKwkJY2FzZSBUX1JlZnJlc2hN YXRWaWV3U3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVBMYW5nU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZUNv bnZlcnNpb25TdG10OgorCQljYXNlIFRfQ3JlYXRlVHJhbnNmb3JtU3RtdDoKKwkJY2FzZSBUX0Fs dGVyVFNEaWN0aW9uYXJ5U3RtdDoKKwkJY2FzZSBUX0FsdGVyVFNDb25maWd1cmF0aW9uU3RtdDoK KwkJY2FzZSBUX0FsdGVyVGFibGVNb3ZlQWxsU3RtdDoKKwkJY2FzZSBUX0FsdGVyT2JqZWN0RGVw ZW5kc1N0bXQ6CisJCWNhc2UgVF9BbHRlck9iamVjdFNjaGVtYVN0bXQ6CisJCWNhc2UgVF9Db21t ZW50U3RtdDoKKwkJY2FzZSBUX0Ryb3BPd25lZFN0bXQ6CisJCWNhc2UgVF9BbHRlckRlZmF1bHRQ cml2aWxlZ2VzU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVBvbGljeVN0bXQ6CisJCWNhc2UgVF9BbHRl clBvbGljeVN0bXQ6CisJCWNhc2UgVF9TZWNMYWJlbFN0bXQ6CisJCWNhc2UgVF9DcmVhdGVBbVN0 bXQ6CisJCWNhc2UgVF9DcmVhdGVQdWJsaWNhdGlvblN0bXQ6CisJCWNhc2UgVF9BbHRlclB1Ymxp Y2F0aW9uU3RtdDoKKwkJY2FzZSBUX0NyZWF0ZVN1YnNjcmlwdGlvblN0bXQ6CisJCWNhc2UgVF9B bHRlclN1YnNjcmlwdGlvblN0bXQ6CisJCWNhc2UgVF9Ecm9wU3Vic2NyaXB0aW9uU3RtdDoKKwkJ Y2FzZSBUX0NyZWF0ZVN0YXRzU3RtdDoKKwkJY2FzZSBUX0FsdGVyU3RhdHNTdG10OgorCQkJYnJl YWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwl9Cit9CisKIC8qCiAgKiBUaGUgIlNsb3ciIHZh cmlhbnQgb2YgUHJvY2Vzc1V0aWxpdHkgc2hvdWxkIG9ubHkgcmVjZWl2ZSBzdGF0ZW1lbnRzCiAg KiBzdXBwb3J0ZWQgYnkgdGhlIGV2ZW50IHRyaWdnZXJzIGZhY2lsaXR5LiAgVGhlcmVmb3JlLCB3 ZSBhbHdheXMKQEAgLTExMTgsNiArMTI2NywxMyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VT dGF0ZSAqcHN0YXRlLAogCQlpZiAoaXNDb21wbGV0ZVF1ZXJ5KQogCQkJRXZlbnRUcmlnZ2VyRERM Q29tbWFuZFN0YXJ0KHBhcnNldHJlZSk7CiAKKwkJLyoKKwkJICogQ29uc2lkZXIgbG9nZ2luZyB0 aGUgRERMIGNvbW1hbmQgaWYgbG9naWNhbCBsb2dnaW5nIGlzIGVuYWJsZWQgYW5kIHRoaXMgaXMK KwkJICogYSB0b3AgbGV2ZWwgcXVlcnkuCisJCSAqLworCQlpZiAoWExvZ0xvZ2ljYWxJbmZvQWN0 aXZlKCkgJiYgaXNUb3BMZXZlbCkKKwkJCUxvZ0xvZ2ljYWxERExDb21tYW5kKHBhcnNldHJlZSwg cXVlcnlTdHJpbmcpOworCiAJCXN3aXRjaCAobm9kZVRhZyhwYXJzZXRyZWUpKQogCQl7CiAJCQkJ LyoKQEAgLTEzMjAsNiArMTQ3NiwyMyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAq cHN0YXRlLAogCQkJCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KHBhcnNldHJlZSk7CiAJ CQkJCQlFdmVudFRyaWdnZXJBbHRlclRhYmxlUmVsaWQocmVsaWQpOwogCisJCQkJCQkvKgorCQkJ CQkJICogTG9nIHRoZSBBTFRFUiBUQUJMRSBjb21tYW5kIGlmCisJCQkJCQkgKiBUaGVyZSBpcyBh bnkgcHVibGljYXRpb24gd2l0aCBkYXRhYmFzZSBsZXZlbCBkZGwgb24gb3IKKwkJCQkJCSAqIHRo aXMgVEFCTEUgYmVsb25ncyB0byBhbnkgcHVibGljYXRpb24gd2l0aCB0YWJsZSBsZXZlbCBkZGwg b24KKwkJCQkJCSAqLworCQkJCQkJaWYgKFhMb2dMb2dpY2FsSW5mb0FjdGl2ZSgpICYmCisJCQkJ CQkJZGRsX25lZWRfeGxvZyhyZWxpZCwgZmFsc2UsIGlzVG9wTGV2ZWwpKQorCQkJCQkJeworCQkJ CQkJCWJvb2wgdHJhbnNhY3Rpb25hbCA9IHRydWU7CisJCQkJCQkJY29uc3QgY2hhciogcHJlZml4 ID0gIiI7CisJCQkJCQkJTG9nTG9naWNhbERETE1lc3NhZ2UocHJlZml4LAorCQkJCQkJCQkJCQkJ IEdldFVzZXJJZCgpLAorCQkJCQkJCQkJCQkJIHF1ZXJ5U3RyaW5nLAorCQkJCQkJCQkJCQkJIHN0 cmxlbihxdWVyeVN0cmluZyksCisJCQkJCQkJCQkJCQkgdHJhbnNhY3Rpb25hbCk7CisJCQkJCQl9 CisKIAkJCQkJCS8qIC4uLiBhbmQgZG8gaXQgKi8KIAkJCQkJCUFsdGVyVGFibGUoYXRzdG10LCBs b2NrbW9kZSwgJmF0Y29udGV4dCk7CiAKQEAgLTE1MzgsNiArMTcxMSwyNCBAQCBQcm9jZXNzVXRp bGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCiAJCQkJCS8qIC4uLiBhbmQgZG8gaXQgKi8K IAkJCQkJRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KHBhcnNldHJlZSk7CisKKwkJCQkJLyoK KwkJCQkJICogTG9nIENSRUFURSBJTkRFWCBjbWQgZm9yIGxvZ2ljYWwgcmVwbGljYXRpb24gaWYK KwkJCQkJICogdGhlcmUgaXMgYW55IHB1YmxpY2F0aW9uIHdpdGggZGF0YWJhc2UgbGV2ZWwgZGRs IG9uIG9yCisJCQkJCSAqIHRoaXMgVEFCTEUgYmVsb25ncyB0byBhbnkgcHVibGljYXRpb24gd2l0 aCB0YWJsZSBsZXZlbCBkZGwgb24uCisJCQkJCSAqLworCQkJCQlpZiAoWExvZ0xvZ2ljYWxJbmZv QWN0aXZlKCkgJiYKKwkJCQkJCWRkbF9uZWVkX3hsb2cocmVsaWQsIGZhbHNlLCBpc1RvcExldmVs KSkKKwkJCQkJeworCQkJCQkJYm9vbCB0cmFuc2FjdGlvbmFsID0gdHJ1ZTsKKwkJCQkJCWNvbnN0 IGNoYXIqIHByZWZpeCA9ICIiOworCQkJCQkJTG9nTG9naWNhbERETE1lc3NhZ2UocHJlZml4LAor CQkJCQkJCQkJCQkgR2V0VXNlcklkKCksCisJCQkJCQkJCQkJCSBxdWVyeVN0cmluZywKKwkJCQkJ CQkJCQkJIHN0cmxlbihxdWVyeVN0cmluZyksCisJCQkJCQkJCQkJCSB0cmFuc2FjdGlvbmFsKTsK KwkJCQkJfQorCiAJCQkJCWFkZHJlc3MgPQogCQkJCQkJRGVmaW5lSW5kZXgocmVsaWQsCS8qIE9J RCBvZiBoZWFwIHJlbGF0aW9uICovCiAJCQkJCQkJCQlzdG10LApAQCAtMTc1NCw3ICsxOTQ1LDcg QEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQlicmVhazsKIAog CQkJY2FzZSBUX0Ryb3BTdG10OgotCQkJCUV4ZWNEcm9wU3RtdCgoRHJvcFN0bXQgKikgcGFyc2V0 cmVlLCBpc1RvcExldmVsKTsKKwkJCQlFeGVjRHJvcFN0bXQocHN0YXRlLCAoRHJvcFN0bXQgKikg cGFyc2V0cmVlLCBpc1RvcExldmVsKTsKIAkJCQkvKiBubyBjb21tYW5kcyBzdGFzaGVkIGZvciBE Uk9QICovCiAJCQkJY29tbWFuZENvbGxlY3RlZCA9IHRydWU7CiAJCQkJYnJlYWs7CkBAIC0xOTc1 LDcgKzIxNjYsNyBAQCBQcm9jZXNzVXRpbGl0eUZvckFsdGVyVGFibGUoTm9kZSAqc3RtdCwgQWx0 ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQogICogRGlzcGF0Y2ggZnVuY3Rpb24gZm9y IERyb3BTdG10CiAgKi8KIHN0YXRpYyB2b2lkCi1FeGVjRHJvcFN0bXQoRHJvcFN0bXQgKnN0bXQs IGJvb2wgaXNUb3BMZXZlbCkKK0V4ZWNEcm9wU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERyb3BT dG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpCiB7CiAJc3dpdGNoIChzdG10LT5yZW1vdmVUeXBl KQogCXsKQEAgLTE5OTAsNyArMjE4MSw3IEBAIEV4ZWNEcm9wU3RtdChEcm9wU3RtdCAqc3RtdCwg Ym9vbCBpc1RvcExldmVsKQogCQljYXNlIE9CSkVDVF9WSUVXOgogCQljYXNlIE9CSkVDVF9NQVRW SUVXOgogCQljYXNlIE9CSkVDVF9GT1JFSUdOX1RBQkxFOgotCQkJUmVtb3ZlUmVsYXRpb25zKHN0 bXQpOworCQkJUmVtb3ZlUmVsYXRpb25zKHBzdGF0ZSwgc3RtdCwgaXNUb3BMZXZlbCk7CiAJCQli cmVhazsKIAkJZGVmYXVsdDoKIAkJCVJlbW92ZU9iamVjdHMoc3RtdCk7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2Fj aGUvcmVsY2FjaGUuYwppbmRleCBmY2NmZmNlNTcyLi5kODhiMmFhNjQyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxz L2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU2MDYsNiArNTYwNiw4IEBAIFJlbGF0aW9uQnVpbGRQdWJs aWNhdGlvbkRlc2MoUmVsYXRpb24gcmVsYXRpb24sIFB1YmxpY2F0aW9uRGVzYyAqcHViZGVzYykK IAkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJ1cGRhdGUgfD0gcHViZm9ybS0+cHVidXBkYXRlOwog CQlwdWJkZXNjLT5wdWJhY3Rpb25zLnB1YmRlbGV0ZSB8PSBwdWJmb3JtLT5wdWJkZWxldGU7CiAJ CXB1YmRlc2MtPnB1YmFjdGlvbnMucHVidHJ1bmNhdGUgfD0gcHViZm9ybS0+cHVidHJ1bmNhdGU7 CisJCXB1YmRlc2MtPnB1YmFjdGlvbnMucHViZGRsX2RhdGFiYXNlIHw9IHB1YmZvcm0tPnB1YmRk bF9kYXRhYmFzZTsKKwkJcHViZGVzYy0+cHViYWN0aW9ucy5wdWJkZGxfdGFibGUgfD0gcHViZm9y bS0+cHViZGRsX3RhYmxlOwogCiAJCS8qCiAJCSAqIENoZWNrIGlmIGFsbCBjb2x1bW5zIHJlZmVy ZW5jZWQgaW4gdGhlIGZpbHRlciBleHByZXNzaW9uIGFyZSBwYXJ0IG9mCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRl eCA0ZGQyNGI4Yzg5Li41ZTI2YmNiNzFhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTM3OTMsNiArMzc5Myw4 IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykK IAlpbnQJCQlpX3B1YmRlbGV0ZTsKIAlpbnQJCQlpX3B1YnRydW5jYXRlOwogCWludAkJCWlfcHVi dmlhcm9vdDsKKwlpbnQJCQlpX3B1YmRkbF9kYXRhYmFzZTsKKwlpbnQJCQlpX3B1YmRkbF90YWJs ZTsKIAlpbnQJCQlpLAogCQkJCW50dXBzOwogCkBAIC0zODA3LDIzICszODA5LDI5IEBAIGdldFB1 YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVB1YmxpY2F0aW9ucykKIAlyZXNldFBR RXhwQnVmZmVyKHF1ZXJ5KTsKIAogCS8qIEdldCB0aGUgcHVibGljYXRpb25zLiAqLwotCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+ PSAxNTAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAorCQkJCQkJICAiU0VMRUNUIHAu dGFibGVvaWQsIHAub2lkLCBwLnB1Ym5hbWUsICIKKwkJCQkJCSAgInAucHVib3duZXIsICIKKwkJ CQkJCSAgInAucHViYWxsdGFibGVzLCBwLnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVs ZXRlLCBwLnB1YnRydW5jYXRlLCBwLnB1YnZpYXJvb3QsIHAucHViZGRsX2RhdGFiYXNlLCBwLnB1 YmRkbF90YWJsZSAiCisJCQkJCQkgICJGUk9NIHBnX3B1YmxpY2F0aW9uIHAiKTsKKwllbHNlIGlm IChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDEzMDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXIocXVl cnksCiAJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAucHVibmFtZSwgIgogCQkJ CQkJICAicC5wdWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0YWJsZXMsIHAucHViaW5zZXJ0 LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIHAucHVidmlhcm9vdCAi CisJCQkJCQkgICJwLnB1YmFsbHRhYmxlcywgcC5wdWJpbnNlcnQsIHAucHVidXBkYXRlLCBwLnB1 YmRlbGV0ZSwgcC5wdWJ0cnVuY2F0ZSwgcC5wdWJ2aWFyb290LCBmYWxzZSBBUyBwdWJkZGxfZGF0 YWJhc2UsIGZhbHNlIEFTIHB1YmRkbF90YWJsZSAiCiAJCQkJCQkgICJGUk9NIHBnX3B1YmxpY2F0 aW9uIHAiKTsKIAllbHNlIGlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDExMDAwMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQs IHAucHVibmFtZSwgIgogCQkJCQkJICAicC5wdWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0 YWJsZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNh dGUsIGZhbHNlIEFTIHB1YnZpYXJvb3QgIgorCQkJCQkJICAicC5wdWJhbGx0YWJsZXMsIHAucHVi aW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIHAucHVidHJ1bmNhdGUsIGZhbHNlIEFT IHB1YnZpYXJvb3QsIGZhbHNlIEFTIHB1YmRkbF9kYXRhYmFzZSwgZmFsc2UgQVMgcHViZGRsX3Rh YmxlICIKIAkJCQkJCSAgIkZST00gcGdfcHVibGljYXRpb24gcCIpOwogCWVsc2UKIAkJYXBwZW5k UFFFeHBCdWZmZXIocXVlcnksCiAJCQkJCQkgICJTRUxFQ1QgcC50YWJsZW9pZCwgcC5vaWQsIHAu cHVibmFtZSwgIgogCQkJCQkJICAicC5wdWJvd25lciwgIgotCQkJCQkJICAicC5wdWJhbGx0YWJs ZXMsIHAucHViaW5zZXJ0LCBwLnB1YnVwZGF0ZSwgcC5wdWJkZWxldGUsIGZhbHNlIEFTIHB1YnRy dW5jYXRlLCBmYWxzZSBBUyBwdWJ2aWFyb290ICIKKwkJCQkJCSAgInAucHViYWxsdGFibGVzLCBw LnB1Ymluc2VydCwgcC5wdWJ1cGRhdGUsIHAucHViZGVsZXRlLCBmYWxzZSBBUyBwdWJ0cnVuY2F0 ZSwgZmFsc2UgQVMgcHVidmlhcm9vdCwgZmFsc2UgQVMgcHViZGRsX2RhdGFiYXNlLCBmYWxzZSBB UyBwdWJkZGxfdGFibGUgIgogCQkJCQkJICAiRlJPTSBwZ19wdWJsaWNhdGlvbiBwIik7CiAKIAly ZXMgPSBFeGVjdXRlU3FsUXVlcnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7 CkBAIC0zODQwLDYgKzM4NDgsOCBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCwgaW50 ICpudW1QdWJsaWNhdGlvbnMpCiAJaV9wdWJkZWxldGUgPSBQUWZudW1iZXIocmVzLCAicHViZGVs ZXRlIik7CiAJaV9wdWJ0cnVuY2F0ZSA9IFBRZm51bWJlcihyZXMsICJwdWJ0cnVuY2F0ZSIpOwog CWlfcHVidmlhcm9vdCA9IFBRZm51bWJlcihyZXMsICJwdWJ2aWFyb290Iik7CisJaV9wdWJkZGxf ZGF0YWJhc2UgPSBQUWZudW1iZXIocmVzLCAicHViZGRsX2RhdGFiYXNlIik7CisJaV9wdWJkZGxf dGFibGUgPSBQUWZudW1iZXIocmVzLCAicHViZGRsX3RhYmxlIik7CiAKIAlwdWJpbmZvID0gcGdf bWFsbG9jKG50dXBzICogc2l6ZW9mKFB1YmxpY2F0aW9uSW5mbykpOwogCkBAIC0zODY0LDYgKzM4 NzQsMTAgQEAgZ2V0UHVibGljYXRpb25zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtUHVibGljYXRp b25zKQogCQkJKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9wdWJ0cnVuY2F0ZSksICJ0Iikg PT0gMCk7CiAJCXB1YmluZm9baV0ucHVidmlhcm9vdCA9CiAJCQkoc3RyY21wKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3B1YnZpYXJvb3QpLCAidCIpID09IDApOworCQlwdWJpbmZvW2ldLnB1YmRkbF9k YXRhYmFzZSA9CisJCQkoc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3B1YmRkbF9kYXRhYmFz ZSksICJ0IikgPT0gMCk7CisJCXB1YmluZm9baV0ucHViZGRsX3RhYmxlID0KKwkJCShzdHJjbXAo UFFnZXR2YWx1ZShyZXMsIGksIGlfcHViZGRsX3RhYmxlKSwgInQiKSA9PSAwKTsKIAogCQkvKiBE ZWNpZGUgd2hldGhlciB3ZSB3YW50IHRvIGR1bXAgaXQgKi8KIAkJc2VsZWN0RHVtcGFibGVPYmpl Y3QoJihwdWJpbmZvW2ldLmRvYmopLCBmb3V0KTsKQEAgLTM5NDMsNiArMzk1NywyOSBAQCBkdW1w UHVibGljYXRpb24oQXJjaGl2ZSAqZm91dCwgY29uc3QgUHVibGljYXRpb25JbmZvICpwdWJpbmZv KQogCiAJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICInIik7CiAKKwlhcHBlbmRQUUV4cEJ1 ZmZlclN0cihxdWVyeSwgIiwgZGRsID0gJyIpOworCWZpcnN0ID0gdHJ1ZTsKKworCWlmIChwdWJp bmZvLT5wdWJkZGxfZGF0YWJhc2UpCisJeworCQlpZiAoIWZpcnN0KQorCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIsICIpOworCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAi ZGF0YWJhc2UiKTsKKwkJZmlyc3QgPSBmYWxzZTsKKwl9CisKKwlpZiAocHViaW5mby0+cHViZGRs X3RhYmxlKQorCXsKKwkJaWYgKCFmaXJzdCkKKwkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5 LCAiLCAiKTsKKworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgInRhYmxlIik7CisJCWZp cnN0ID0gZmFsc2U7CisJfQorCisJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICInIik7CisK IAlpZiAocHViaW5mby0+cHVidmlhcm9vdCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIsIHB1Ymxpc2hfdmlhX3BhcnRpdGlvbl9yb290ID0gdHJ1ZSIpOwogCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRl eCA3NzJkYzBjZjdhLi4xNzc4OWVhMjcxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5oCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTYyMCw2ICs2MjAsOCBA QCB0eXBlZGVmIHN0cnVjdCBfUHVibGljYXRpb25JbmZvCiAJYm9vbAkJcHViZGVsZXRlOwogCWJv b2wJCXB1YnRydW5jYXRlOwogCWJvb2wJCXB1YnZpYXJvb3Q7CisJYm9vbAkJcHViZGRsX2RhdGFi YXNlOworCWJvb2wJCXB1YmRkbF90YWJsZTsKIH0gUHVibGljYXRpb25JbmZvOwogCiAvKgpkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgYi9zcmMvYmluL3BnX3dhbGR1 bXAvcm1ncmRlc2MuYwppbmRleCA2YTRlYmQxMzEwLi5jMzhjMTYzZjI4IDEwMDY0NAotLS0gYS9z cmMvYmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcm1n cmRlc2MuYwpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3NlcXVlbmNlLmgi CiAjaW5jbHVkZSAiY29tbWFuZHMvdGFibGVzcGFjZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L21lc3NhZ2UuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3N0YW5kYnlkZWZzLmgiCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3Jp YmUuYyBiL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCmluZGV4IDkyMjllYWNiNmQuLjNiYTE5Yzhi ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jCisrKyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCkBAIC01Nzk5LDcgKzU3OTksNyBAQCBsaXN0UHVibGljYXRpb25zKGNvbnN0 IGNoYXIgKnBhdHRlcm4pCiAJUFFFeHBCdWZmZXJEYXRhIGJ1ZjsKIAlQR3Jlc3VsdCAgICpyZXM7 CiAJcHJpbnRRdWVyeU9wdCBteW9wdCA9IHBzZXQucG9wdDsKLQlzdGF0aWMgY29uc3QgYm9vbCB0 cmFuc2xhdGVfY29sdW1uc1tdID0ge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZX07CisJc3RhdGljIGNvbnN0IGJvb2wgdHJhbnNsYXRlX2NvbHVt bnNbXSA9IHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg ZmFsc2UsIGZhbHNlLCBmYWxzZX07CiAKIAlpZiAocHNldC5zdmVyc2lvbiA8IDEwMDAwMCkKIAl7 CkBAIC01ODM0LDYgKzU4MzQsMTUgQEAgbGlzdFB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0 ZXJuKQogCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJICAiLFxuICBwdWJ2aWFyb290 IEFTIFwiJXNcIiIsCiAJCQkJCQkgIGdldHRleHRfbm9vcCgiVmlhIHJvb3QiKSk7CisJaWYgKHBz ZXQuc3ZlcnNpb24gPj0gMTQwMDAwKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKKwkJ CQkJCSAgIixcbiAgcHViZGRsX2RhdGFiYXNlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRf bm9vcCgiRGF0YWJhc2UgbGV2ZWwgRERMcyIpKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwK KwkJCQkJCSAgIixcbiAgcHViZGRsX3RhYmxlIEFTIFwiJXNcIiIsCisJCQkJCQkgIGdldHRleHRf bm9vcCgiVGFibGUgbGV2ZWwgRERMcyIpKTsKKwl9CiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigm YnVmLAogCQkJCQkJICJcbkZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvblxuIik7CkBAIC01 OTE1LDYgKzU5MjQsNyBAQCBkZXNjcmliZVB1YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJu KQogCVBHcmVzdWx0ICAgKnJlczsKIAlib29sCQloYXNfcHVidHJ1bmNhdGU7CiAJYm9vbAkJaGFz X3B1YnZpYXJvb3Q7CisJYm9vbAkJaGFzX3B1YmRkbDsKIAogCVBRRXhwQnVmZmVyRGF0YSB0aXRs ZTsKIAlwcmludFRhYmxlQ29udGVudCBjb250OwpAQCAtNTkzMSw2ICs1OTQxLDcgQEAgZGVzY3Jp YmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAogCWhhc19wdWJ0cnVuY2F0ZSA9 IChwc2V0LnN2ZXJzaW9uID49IDExMDAwMCk7CiAJaGFzX3B1YnZpYXJvb3QgPSAocHNldC5zdmVy c2lvbiA+PSAxMzAwMDApOworCWhhc19wdWJkZGwgPSAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDAp OwogCiAJaW5pdFBRRXhwQnVmZmVyKCZidWYpOwogCkBAIC01OTQ0LDYgKzU5NTUsMTEgQEAgZGVz Y3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikKIAlpZiAoaGFzX3B1YnZpYXJv b3QpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCiAJCQkJCQkJICIsIHB1YnZpYXJvb3Qi KTsKKwlpZiAoaGFzX3B1YmRkbCkKKwl7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJ CQkJCQkJICIsIHB1YmRkbF9kYXRhYmFzZSwgcHViZGRsX3RhYmxlIik7CisJfQogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsCiAJCQkJCQkgIlxuRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0 aW9uXG4iKTsKIApAQCAtNTk5MCw2ICs2MDA2LDggQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJCW5jb2xzKys7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJ CW5jb2xzKys7CisJCWlmIChoYXNfcHViZGRsKQorCQkJbmNvbHMgKz0gMjsKIAogCQlpbml0UFFF eHBCdWZmZXIoJnRpdGxlKTsKIAkJcHJpbnRmUFFFeHBCdWZmZXIoJnRpdGxlLCBfKCJQdWJsaWNh dGlvbiAlcyIpLCBwdWJuYW1lKTsKQEAgLTYwMDQsNiArNjAyMiwxMSBAQCBkZXNjcmliZVB1Ymxp Y2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJcHJpbnRUYWJsZUFkZEhlYWRlcigmY29u dCwgZ2V0dGV4dF9ub29wKCJUcnVuY2F0ZXMiKSwgdHJ1ZSwgYWxpZ24pOwogCQlpZiAoaGFzX3B1 YnZpYXJvb3QpCiAJCQlwcmludFRhYmxlQWRkSGVhZGVyKCZjb250LCBnZXR0ZXh0X25vb3AoIlZp YSByb290IiksIHRydWUsIGFsaWduKTsKKwkJaWYgKGhhc19wdWJkZGwpCisJCXsKKwkJCXByaW50 VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9vcCgiRGF0YWJhc2UgbGV2ZWwgRERMIiks IHRydWUsIGFsaWduKTsKKwkJCXByaW50VGFibGVBZGRIZWFkZXIoJmNvbnQsIGdldHRleHRfbm9v cCgiVGFibGUgbGV2ZWwgRERMIiksIHRydWUsIGFsaWduKTsKKwkJfQogCiAJCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMiksIGZhbHNlLCBmYWxzZSk7CiAJCXBy aW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMyksIGZhbHNlLCBmYWxz ZSk7CkBAIC02MDE0LDYgKzYwMzcsMTEgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hh ciAqcGF0dGVybikKIAkJCXByaW50VGFibGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywg aSwgNyksIGZhbHNlLCBmYWxzZSk7CiAJCWlmIChoYXNfcHVidmlhcm9vdCkKIAkJCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOCksIGZhbHNlLCBmYWxzZSk7CisJ CWlmIChoYXNfcHViZGRsKQorCQl7CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2 YWx1ZShyZXMsIGksIDkpLCBmYWxzZSwgZmFsc2UpOworCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNv bnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7CisJCX0KIAogCQlpZiAo IXB1YmFsbHRhYmxlcykKIAkJewpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3Js aXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAppbmRleCBjZjhiNmQ0ODE5Li41 ZmZkYzE2Y2NhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaAorKysg Yi9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1ncmxpc3QuaApAQCAtNDcsMyArNDcsNCBAQCBQR19STUdS KFJNX0NPTU1JVF9UU19JRCwgIkNvbW1pdFRzIiwgY29tbWl0X3RzX3JlZG8sIGNvbW1pdF90c19k ZXNjLCBjb21taXRfdHNfaQogUEdfUk1HUihSTV9SRVBMT1JJR0lOX0lELCAiUmVwbGljYXRpb25P cmlnaW4iLCByZXBsb3JpZ2luX3JlZG8sIHJlcGxvcmlnaW5fZGVzYywgcmVwbG9yaWdpbl9pZGVu dGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKIFBHX1JNR1IoUk1fR0VORVJJQ19JRCwgIkdl bmVyaWMiLCBnZW5lcmljX3JlZG8sIGdlbmVyaWNfZGVzYywgZ2VuZXJpY19pZGVudGlmeSwgTlVM TCwgTlVMTCwgZ2VuZXJpY19tYXNrLCBOVUxMKQogUEdfUk1HUihSTV9MT0dJQ0FMTVNHX0lELCAi TG9naWNhbE1lc3NhZ2UiLCBsb2dpY2FsbXNnX3JlZG8sIGxvZ2ljYWxtc2dfZGVzYywgbG9naWNh bG1zZ19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgbG9naWNhbG1zZ19kZWNvZGUpCitQR19S TUdSKFJNX0xPR0lDQUxERExNU0dfSUQsICJMb2dpY2FsRERMTWVzc2FnZSIsIGxvZ2ljYWxkZGxt c2dfcmVkbywgbG9naWNhbGRkbG1zZ19kZXNjLCBsb2dpY2FsZGRsbXNnX2lkZW50aWZ5LCBOVUxM LCBOVUxMLCBOVUxMLCBsb2dpY2FsZGRsbXNnX2RlY29kZSkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVi bGljYXRpb24uaAppbmRleCBmZTc3M2NmOWI3Li5iODZiNDlhYWZjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wdWJsaWNhdGlvbi5oCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9n ZW5ia2kuaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX2QuaCIKKyNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKIAog LyogLS0tLS0tLS0tLS0tLS0tLQogICoJCXBnX3B1YmxpY2F0aW9uIGRlZmluaXRpb24uICBjcHAg dHVybnMgdGhpcyBpbnRvCkBAIC01NCw2ICs1NSwxMiBAQCBDQVRBTE9HKHBnX3B1YmxpY2F0aW9u LDYxMDQsUHVibGljYXRpb25SZWxhdGlvbklkKQogCiAJLyogdHJ1ZSBpZiBwYXJ0aXRpb24gY2hh bmdlcyBhcmUgcHVibGlzaGVkIHVzaW5nIHJvb3Qgc2NoZW1hICovCiAJYm9vbAkJcHVidmlhcm9v dDsKKworCS8qIHRydWUgaWYgZGF0YWJhc2UgbGV2ZWwgZGRscyBhcmUgcHVibGlzaGVkICovCisJ Ym9vbAkJcHViZGRsX2RhdGFiYXNlOworCisJLyogdHJ1ZSBpZiB0YWJsZSBsZXZlbCBkZGxzIGFy ZSBwdWJsaXNoZWQgKi8KKwlib29sCQlwdWJkZGxfdGFibGU7CiB9IEZvcm1EYXRhX3BnX3B1Ymxp Y2F0aW9uOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC03Miw2ICs3OSw4IEBAIHR5cGVkZWYg c3RydWN0IFB1YmxpY2F0aW9uQWN0aW9ucwogCWJvb2wJCXB1YnVwZGF0ZTsKIAlib29sCQlwdWJk ZWxldGU7CiAJYm9vbAkJcHVidHJ1bmNhdGU7CisJYm9vbAkJcHViZGRsX2RhdGFiYXNlOworCWJv b2wJCXB1YmRkbF90YWJsZTsKIH0gUHVibGljYXRpb25BY3Rpb25zOwogCiB0eXBlZGVmIHN0cnVj dCBQdWJsaWNhdGlvbkRlc2MKQEAgLTE0Niw1ICsxNTUsNiBAQCBleHRlcm4gT2JqZWN0QWRkcmVz cyBwdWJsaWNhdGlvbl9hZGRfc2NoZW1hKE9pZCBwdWJpZCwgT2lkIHNjaGVtYWlkLAogCiBleHRl cm4gT2lkCWdldF9wdWJsaWNhdGlvbl9vaWQoY29uc3QgY2hhciAqcHVibmFtZSwgYm9vbCBtaXNz aW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfcHVibGljYXRpb25fbmFtZShPaWQgcHViaWQsIGJv b2wgbWlzc2luZ19vayk7CitleHRlcm4gYm9vbCBkZGxfbmVlZF94bG9nKE9pZCByZWxpZCwgYm9v bCBmb3JBbGxUYWJQdWJPbmx5LCBib29sIGlzVG9wTGV2ZWwpOwogCiAjZW5kaWYJCQkJCQkJLyog UEdfUFVCTElDQVRJT05fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVm cmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCA1NmQyYmI2NjE2Li4w NzNmNDZlZjFhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtMTUsNiArMTUsNyBAQAogI2RlZmlu ZSBERUZSRU1fSAogCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCisjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1ZGUgIm5vZGVzL3BhcmFtcy5oIgog I2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgiCiAjaW5jbHVkZSAidGNvcC9kZXN0LmgiCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IDVkNDAzN2YyNmUuLjY4NzgxMzY1ZGUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiY2F0YWxv Zy9kZXBlbmRlbmN5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9vYmplY3RhZGRyZXNzLmgiCiAjaW5j bHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9ub2RlLmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIK IApAQCAtMjcsNyArMjgsNyBAQCBzdHJ1Y3QgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0OwkvKiBh dm9pZCBpbmNsdWRpbmcgdGNvcC91dGlsaXR5LmggaGVyZSAqLwogZXh0ZXJuIE9iamVjdEFkZHJl c3MgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3du ZXJJZCwKIAkJCQkJCQkJCU9iamVjdEFkZHJlc3MgKnR5cGFkZHJlc3MsIGNvbnN0IGNoYXIgKnF1 ZXJ5U3RyaW5nKTsKIAotZXh0ZXJuIHZvaWQgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9w KTsKK2V4dGVybiB2b2lkIFJlbW92ZVJlbGF0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIERyb3BT dG10ICpkcm9wLCBib29sIGlzVG9wTGV2ZWwpOwogCiBleHRlcm4gT2lkCUFsdGVyVGFibGVMb29r dXBSZWxhdGlvbihBbHRlclRhYmxlU3RtdCAqc3RtdCwgTE9DS01PREUgbG9ja21vZGUpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9kZGxtZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMWU4ZWYyMjI5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2RkbG1lc3NhZ2UuaApAQCAtMCwwICsxLDQ3IEBACisvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqIGRkbG1lc3NhZ2UuaAorICoJICAgRXhwb3J0cyBmcm9tIHJlcGxpY2F0aW9uL2xvZ2lj YWwvZGRsbWVzc2FnZS5jCisgKgorICogQ29weXJpZ2h0IChjKSAyMDIyLCBQb3N0Z3JlU1FMIEds b2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Rk bG1lc3NhZ2UuaAorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEdfTE9HSUNBTF9E RExfTUVTU0FHRV9ICisjZGVmaW5lIFBHX0xPR0lDQUxfRERMX01FU1NBR0VfSAorCisjaW5jbHVk ZSAiYWNjZXNzL3hsb2cuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRl ICJhY2Nlc3MveGxvZ3JlYWRlci5oIgorCisvKgorICogR2VuZXJpYyBsb2dpY2FsIGRlY29kaW5n IERETCBtZXNzYWdlIHdhbCByZWNvcmQuCisgKi8KK3R5cGVkZWYgc3RydWN0IHhsX2xvZ2ljYWxf ZGRsX21lc3NhZ2UKK3sKKwlPaWQJCQlkYklkOwkJCS8qIGRhdGFiYXNlIE9pZCBlbWl0dGVkIGZy b20gKi8KKwlib29sCQl0cmFuc2FjdGlvbmFsOwkvKiBpcyBtZXNzYWdlIHRyYW5zYWN0aW9uYWw/ ICovCisJU2l6ZQkJcHJlZml4X3NpemU7CS8qIGxlbmd0aCBvZiBwcmVmaXggKi8KKwlTaXplCQly b2xlX3NpemU7ICAgICAgLyogbGVuZ3RoIG9mIHRoZSByb2xlIHRoYXQgZXhlY3V0ZXMgdGhlIERE TCBjb21tYW5kICovCisJU2l6ZQkJc2VhcmNoX3BhdGhfc2l6ZTsgLyogbGVuZ3RoIG9mIHRoZSBz ZWFyY2ggcGF0aCAqLworCVNpemUJCW1lc3NhZ2Vfc2l6ZTsJICAvKiBzaXplIG9mIHRoZSBtZXNz YWdlICovCisJLyoKKwkgKiBwYXlsb2FkLCBpbmNsdWRpbmcgbnVsbC10ZXJtaW5hdGVkIHByZWZp eCBvZiBsZW5ndGggcHJlZml4X3NpemUKKwkgKiBhbmQgbnVsbC10ZXJtaW5hdGVkIHJvbGUgb2Yg bGVuZ3RoIHJvbGVfc2l6ZQorCSAqIGFuZCBudWxsLXRlcm1pbmF0ZWQgc2VhcmNoX3BhdGggb2Yg bGVuZ3RoIHNlYXJjaF9wYXRoX3NpemUKKwkgKi8KKwljaGFyCQltZXNzYWdlW0ZMRVhJQkxFX0FS UkFZX01FTUJFUl07Cit9IHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2U7CisKKyNkZWZpbmUgU2l6ZU9m TG9naWNhbERETE1lc3NhZ2UJKG9mZnNldG9mKHhsX2xvZ2ljYWxfZGRsX21lc3NhZ2UsIG1lc3Nh Z2UpKQorCitleHRlcm4gWExvZ1JlY1B0ciBMb2dMb2dpY2FsRERMTWVzc2FnZShjb25zdCBjaGFy ICpwcmVmaXgsIE9pZCByb2xlb2lkLCBjb25zdCBjaGFyICpkZGxfbWVzc2FnZSwKKwkJCQkJCQkJ CSAgIHNpemVfdCBzaXplLCBib29sIHRyYW5zYWN0aW9uYWwpOworCisvKiBSTUdSIEFQSSovCisj ZGVmaW5lIFhMT0dfTE9HSUNBTF9ERExfTUVTU0FHRQkweDAwCit2b2lkCQlsb2dpY2FsZGRsbXNn X3JlZG8oWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpOwordm9pZAkJbG9naWNhbGRkbG1zZ19kZXNj KFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7Citjb25zdCBjaGFyICps b2dpY2FsZGRsbXNnX2lkZW50aWZ5KHVpbnQ4IGluZm8pOworCisjZW5kaWYJCQkJCQkJLyogUEdf TE9HSUNBTF9ERExfTUVTU0FHRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9kZWNvZGUuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCmluZGV4IDhl MDdiYjc0MDkuLmVhMGY3ZTVjYjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2RlY29kZS5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2RlY29kZS5oCkBAIC0yOCw2 ICsyOCw3IEBAIGV4dGVybiB2b2lkIHhhY3RfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQg KmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHN0YW5kYnlfZGVjb2Rl KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4 dGVybiB2b2lkIGxvZ2ljYWxtc2dfZGVjb2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwg WExvZ1JlY29yZEJ1ZmZlciAqYnVmKTsKIGV4dGVybiB2b2lkIHNlcXVlbmNlX2RlY29kZShMb2dp Y2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1Zik7CitleHRlcm4g dm9pZCBsb2dpY2FsZGRsbXNnX2RlY29kZShMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhM b2dSZWNvcmRCdWZmZXIgKmJ1Zik7CiAKIGV4dGVybiB2b2lkCUxvZ2ljYWxEZWNvZGluZ1Byb2Nl c3NSZWNvcmQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkJCQkJCSBYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmlu ZGV4IDRkMmM4ODE2NDQuLjg2MmVkNDY3YTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCkBAIC02MSw2ICs2MSw3IEBAIHR5cGVkZWYgZW51bSBMb2dpY2FsUmVwTXNnVHlw ZQogCUxPR0lDQUxfUkVQX01TR19SRUxBVElPTiA9ICdSJywKIAlMT0dJQ0FMX1JFUF9NU0dfVFlQ RSA9ICdZJywKIAlMT0dJQ0FMX1JFUF9NU0dfTUVTU0FHRSA9ICdNJywKKwlMT0dJQ0FMX1JFUF9N U0dfRERMTUVTU0FHRSA9ICdMJywKIAlMT0dJQ0FMX1JFUF9NU0dfQkVHSU5fUFJFUEFSRSA9ICdi JywKIAlMT0dJQ0FMX1JFUF9NU0dfUFJFUEFSRSA9ICdQJywKIAlMT0dJQ0FMX1JFUF9NU0dfQ09N TUlUX1BSRVBBUkVEID0gJ0snLApAQCAtMjI5LDcgKzIzMCwxNCBAQCBleHRlcm4gdm9pZCBsb2dp Y2FscmVwX3dyaXRlX3RydW5jYXRlKFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwK IGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3JlYWRfdHJ1bmNhdGUoU3RyaW5nSW5mbyBpbiwKIAkJ CQkJCQkJCSAgYm9vbCAqY2FzY2FkZSwgYm9vbCAqcmVzdGFydF9zZXFzKTsKIGV4dGVybiB2b2lk IGxvZ2ljYWxyZXBfd3JpdGVfbWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuLAotCQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3Qg Y2hhciAqcHJlZml4LCBTaXplIHN6LCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkJCQkJCQkJCSBi b29sIHRyYW5zYWN0aW9uYWwsIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJCQkJCSBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfZGRs bWVzc2FnZShTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNu LAorCQkJCQkJCQkJCWJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25z dCBjaGFyICpyb2xlLAorCQkJCQkJCQkJCWNvbnN0IGNoYXIgKnNlYXJjaF9wYXRoLCBTaXplIHN6 LCBjb25zdCBjaGFyICptZXNzYWdlKTsKK2V4dGVybiBjb25zdCBjaGFyICpsb2dpY2FscmVwX3Jl YWRfZGRsbWVzc2FnZShTdHJpbmdJbmZvIGluLCBYTG9nUmVjUHRyICpsc24sIGNvbnN0IGNoYXIg KipwcmVmaXgsCisJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqKnJvbGUsIGNvbnN0IGNoYXIgKipz ZWFyY2hfcGF0aCwKKwkJCQkJCQkJCQkJICBib29sICp0cmFuc2FjdGlvbmFsLCBTaXplICpzeik7 CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3JlbChTdHJpbmdJbmZvIG91dCwgVHJhbnNh Y3Rpb25JZCB4aWQsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwpOwogZXh0ZXJuIExvZ2ljYWxSZXBS ZWxhdGlvbiAqbG9naWNhbHJlcF9yZWFkX3JlbChTdHJpbmdJbmZvIGluKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL291dHB1dF9wbHVnaW4uaAppbmRleCBhMTZiZWJmNzZjLi5mMGZkMWVhODk1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vdXRwdXRfcGx1Z2luLmgKKysrIGIv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3V0cHV0X3BsdWdpbi5oCkBAIC04OCw2ICs4OCwxOSBA QCB0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVjb2RlTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxE ZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJCQkJCQlTaXplIG1lc3NhZ2Vfc2l6ZSwKIAkJCQkJ CQkJCQljb25zdCBjaGFyICptZXNzYWdlKTsKIAorLyoKKyAqIENhbGxlZCBmb3IgdGhlIGxvZ2lj YWwgZGVjb2RpbmcgRERMIG1lc3NhZ2VzLgorICovCit0eXBlZGVmIHZvaWQgKCpMb2dpY2FsRGVj b2RlRERMTWVzc2FnZUNCKSAoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKKwkJ CQkJCQkJCQkgICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0 ciBtZXNzYWdlX2xzbiwKKwkJCQkJCQkJCQkgICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJ CQkJICAgY29uc3QgY2hhciAqcHJlZml4LAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnJvbGUs CisJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgsCisJCQkJCQkJCQkJICAgU2l6 ZSBtZXNzYWdlX3NpemUsCisJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqbWVzc2FnZSk7CisKIC8q CiAgKiBDYWxsZWQgZm9yIHRoZSBnZW5lcmljIGxvZ2ljYWwgZGVjb2Rpbmcgc2VxdWVuY2VzLgog ICovCkBAIC0yMTEsNiArMjI0LDIwIEBAIHR5cGVkZWYgdm9pZCAoKkxvZ2ljYWxEZWNvZGVTdHJl YW1NZXNzYWdlQ0IpIChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4CiAJCQkJCQkJ CQkJCSAgU2l6ZSBtZXNzYWdlX3NpemUsCiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqbWVzc2Fn ZSk7CiAKKy8qCisgKiBDYWxsYmFjayBmb3Igc3RyZWFtaW5nIGxvZ2ljYWwgZGVjb2RpbmcgRERM IG1lc3NhZ2VzIGZyb20gaW4tcHJvZ3Jlc3MKKyAqIHRyYW5zYWN0aW9ucy4KKyAqLwordHlwZWRl ZiB2b2lkICgqTG9naWNhbERlY29kZVN0cmVhbURETE1lc3NhZ2VDQikgKHN0cnVjdCBMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCisJCQkJCQkJCQkJCQkgUmVvcmRlckJ1ZmZlclRYTiAqdHhu LAorCQkJCQkJCQkJCQkJIFhMb2dSZWNQdHIgbWVzc2FnZV9sc24sCisJCQkJCQkJCQkJCQkgYm9v bCB0cmFuc2FjdGlvbmFsLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnByZWZpeCwKKwkJCQkJ CQkJCQkJCSBjb25zdCBjaGFyICpyb2xlLAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnNlYXJj aF9wYXRoLAorCQkJCQkJCQkJCQkJIFNpemUgbWVzc2FnZV9zaXplLAorCQkJCQkJCQkJCQkJIGNv bnN0IGNoYXIgKm1lc3NhZ2UpOworCiAvKgogICogQ2FsbGVkIGZvciB0aGUgc3RyZWFtaW5nIGdl bmVyaWMgbG9naWNhbCBkZWNvZGluZyBzZXF1ZW5jZXMgZnJvbSBpbi1wcm9ncmVzcwogICogdHJh bnNhY3Rpb25zLgpAQCAtMjQ0LDYgKzI3MSw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdp bkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVUcnVuY2F0ZUNCIHRydW5jYXRlX2NiOwogCUxvZ2lj YWxEZWNvZGVDb21taXRDQiBjb21taXRfY2I7CiAJTG9naWNhbERlY29kZU1lc3NhZ2VDQiBtZXNz YWdlX2NiOworCUxvZ2ljYWxEZWNvZGVERExNZXNzYWdlQ0IgZGRsbWVzc2FnZV9jYjsKIAlMb2dp Y2FsRGVjb2RlU2VxdWVuY2VDQiBzZXF1ZW5jZV9jYjsKIAlMb2dpY2FsRGVjb2RlRmlsdGVyQnlP cmlnaW5DQiBmaWx0ZXJfYnlfb3JpZ2luX2NiOwogCUxvZ2ljYWxEZWNvZGVTaHV0ZG93bkNCIHNo dXRkb3duX2NiOwpAQCAtMjYzLDYgKzI5MSw3IEBAIHR5cGVkZWYgc3RydWN0IE91dHB1dFBsdWdp bkNhbGxiYWNrcwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1Db21taXRDQiBzdHJlYW1fY29tbWl0X2Ni OwogCUxvZ2ljYWxEZWNvZGVTdHJlYW1DaGFuZ2VDQiBzdHJlYW1fY2hhbmdlX2NiOwogCUxvZ2lj YWxEZWNvZGVTdHJlYW1NZXNzYWdlQ0Igc3RyZWFtX21lc3NhZ2VfY2I7CisJTG9naWNhbERlY29k ZVN0cmVhbURETE1lc3NhZ2VDQiBzdHJlYW1fZGRsbWVzc2FnZV9jYjsKIAlMb2dpY2FsRGVjb2Rl U3RyZWFtU2VxdWVuY2VDQiBzdHJlYW1fc2VxdWVuY2VfY2I7CiAJTG9naWNhbERlY29kZVN0cmVh bVRydW5jYXRlQ0Igc3RyZWFtX3RydW5jYXRlX2NiOwogfSBPdXRwdXRQbHVnaW5DYWxsYmFja3M7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggMGJjYzE1MGIzMy4u MDgxOTM2MWQyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1 ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAt NTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gUmVvcmRlckJ1ZmZlckNoYW5nZVR5cGUKIAlSRU9S REVSX0JVRkZFUl9DSEFOR0VfSU5TRVJULAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9VUERBVEUs CiAJUkVPUkRFUl9CVUZGRVJfQ0hBTkdFX0RFTEVURSwKKwlSRU9SREVSX0JVRkZFUl9DSEFOR0Vf RERMTUVTU0FHRSwKIAlSRU9SREVSX0JVRkZFUl9DSEFOR0VfTUVTU0FHRSwKIAlSRU9SREVSX0JV RkZFUl9DSEFOR0VfSU5WQUxJREFUSU9OLAogCVJFT1JERVJfQlVGRkVSX0NIQU5HRV9JTlRFUk5B TF9TTkFQU0hPVCwKQEAgLTEzMSw2ICsxMzIsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1 ZmZlckNoYW5nZQogCQkJY2hhcgkgICAqbWVzc2FnZTsKIAkJfQkJCW1zZzsKIAorCQkvKiBEREwg TWVzc2FnZS4gKi8KKwkJc3RydWN0CisJCXsKKwkJCWNoYXIJICAgKnByZWZpeDsKKwkJCWNoYXIJ ICAgKnJvbGU7CisJCQljaGFyCSAgICpzZWFyY2hfcGF0aDsKKwkJCVNpemUJCW1lc3NhZ2Vfc2l6 ZTsKKwkJCWNoYXIJICAgKm1lc3NhZ2U7CisJCX0JCQlkZGxtc2c7CisKIAkJLyogTmV3IHNuYXBz aG90LCBzZXQgd2hlbiBhY3Rpb24gPT0gKl9JTlRFUk5BTF9TTkFQU0hPVCAqLwogCQlTbmFwc2hv dAlzbmFwc2hvdDsKIApAQCAtNDM4LDYgKzQ0OSwxNyBAQCB0eXBlZGVmIHZvaWQgKCpSZW9yZGVy QnVmZmVyTWVzc2FnZUNCKSAoUmVvcmRlckJ1ZmZlciAqcmIsCiAJCQkJCQkJCQkJY29uc3QgY2hh ciAqcHJlZml4LCBTaXplIHN6LAogCQkJCQkJCQkJCWNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCisv KiBEREwgbWVzc2FnZSBjYWxsYmFjayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3Jk ZXJCdWZmZXJERExNZXNzYWdlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkgICBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJICAgWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwKKwkJCQkJCQkJCQkgICBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkJICAgY29uc3Qg Y2hhciAqcHJlZml4LAorCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKnJvbGUsCisJCQkJCQkJCQkJ ICAgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgsCisJCQkJCQkJCQkJICAgU2l6ZSBzeiwKKwkJCQkJ CQkJCQkgICBjb25zdCBjaGFyICptZXNzYWdlKTsKKwogLyogc2VxdWVuY2UgY2FsbGJhY2sgc2ln bmF0dXJlICovCiB0eXBlZGVmIHZvaWQgKCpSZW9yZGVyQnVmZmVyU2VxdWVuY2VDQikgKFJlb3Jk ZXJCdWZmZXIgKnJiLAogCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyVFhOICp0eG4sCkBAIC01MTMs NiArNTM1LDE4IEBAIHR5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1NZXNzYWdlQ0Ip ICgKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpwcmVmaXgsIFNpemUgc3osCiAJCQkJCQkJCQkJ CSAgY29uc3QgY2hhciAqbWVzc2FnZSk7CiAKKy8qIHN0cmVhbSBEREwgbWVzc2FnZSBjYWxsYmFj ayBzaWduYXR1cmUgKi8KK3R5cGVkZWYgdm9pZCAoKlJlb3JkZXJCdWZmZXJTdHJlYW1ERExNZXNz YWdlQ0IpICgKKwkJCQkJCQkJCQkJCSBSZW9yZGVyQnVmZmVyICpyYiwKKwkJCQkJCQkJCQkJCSBS ZW9yZGVyQnVmZmVyVFhOICp0eG4sCisJCQkJCQkJCQkJCQkgWExvZ1JlY1B0ciBtZXNzYWdlX2xz biwKKwkJCQkJCQkJCQkJCSBib29sIHRyYW5zYWN0aW9uYWwsCisJCQkJCQkJCQkJCQkgY29uc3Qg Y2hhciAqcHJlZml4LAorCQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKnJvbGUsCisJCQkJCQkJCQkJ CQkgY29uc3QgY2hhciAqc2VhcmNoX3BhdGgsCisJCQkJCQkJCQkJCQkgU2l6ZSBzeiwKKwkJCQkJ CQkJCQkJCSBjb25zdCBjaGFyICptZXNzYWdlKTsKKwogLyogc3RyZWFtIHNlcXVlbmNlIGNhbGxi YWNrIHNpZ25hdHVyZSAqLwogdHlwZWRlZiB2b2lkICgqUmVvcmRlckJ1ZmZlclN0cmVhbVNlcXVl bmNlQ0IpIChSZW9yZGVyQnVmZmVyICpyYiwKIAkJCQkJCQkJCQkJICAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLApAQCAtNTczLDYgKzYwNyw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVyCiAJUmVvcmRl ckJ1ZmZlckFwcGx5VHJ1bmNhdGVDQiBhcHBseV90cnVuY2F0ZTsKIAlSZW9yZGVyQnVmZmVyQ29t bWl0Q0IgY29tbWl0OwogCVJlb3JkZXJCdWZmZXJNZXNzYWdlQ0IgbWVzc2FnZTsKKwlSZW9yZGVy QnVmZmVyRERMTWVzc2FnZUNCIGRkbG1lc3NhZ2U7CiAJUmVvcmRlckJ1ZmZlclNlcXVlbmNlQ0Ig c2VxdWVuY2U7CiAKIAkvKgpAQCAtNTkzLDYgKzYyOCw3IEBAIHN0cnVjdCBSZW9yZGVyQnVmZmVy CiAJUmVvcmRlckJ1ZmZlclN0cmVhbUNvbW1pdENCIHN0cmVhbV9jb21taXQ7CiAJUmVvcmRlckJ1 ZmZlclN0cmVhbUNoYW5nZUNCIHN0cmVhbV9jaGFuZ2U7CiAJUmVvcmRlckJ1ZmZlclN0cmVhbU1l c3NhZ2VDQiBzdHJlYW1fbWVzc2FnZTsKKwlSZW9yZGVyQnVmZmVyU3RyZWFtRERMTWVzc2FnZUNC IHN0cmVhbV9kZGxtZXNzYWdlOwogCVJlb3JkZXJCdWZmZXJTdHJlYW1TZXF1ZW5jZUNCIHN0cmVh bV9zZXF1ZW5jZTsKIAlSZW9yZGVyQnVmZmVyU3RyZWFtVHJ1bmNhdGVDQiBzdHJlYW1fdHJ1bmNh dGU7CiAKQEAgLTY2OSw2ICs3MDUsOSBAQCB2b2lkCQlSZW9yZGVyQnVmZmVyUXVldWVDaGFuZ2Uo UmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLAogdm9pZAkJUmVvcmRlckJ1ZmZlclF1ZXVl TWVzc2FnZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFNuYXBzaG90IHNuYXBzaG90 LCBYTG9nUmVjUHRyIGxzbiwKIAkJCQkJCQkJCSAgYm9vbCB0cmFuc2FjdGlvbmFsLCBjb25zdCBj aGFyICpwcmVmaXgsCiAJCQkJCQkJCQkgIFNpemUgbWVzc2FnZV9zaXplLCBjb25zdCBjaGFyICpt ZXNzYWdlKTsKK3ZvaWQJCVJlb3JkZXJCdWZmZXJRdWV1ZURETE1lc3NhZ2UoUmVvcmRlckJ1ZmZl ciAqLCBUcmFuc2FjdGlvbklkLCBTbmFwc2hvdCBzbmFwc2hvdCwgWExvZ1JlY1B0ciBsc24sCisJ CQkJCQkJCQkJIGJvb2wgdHJhbnNhY3Rpb25hbCwgY29uc3QgY2hhciAqcHJlZml4LCBjb25zdCBj aGFyICpyb2xlLAorCQkJCQkJCQkJCSBjb25zdCBjaGFyICpzZWFyY2hfcGF0aCwgU2l6ZSBtZXNz YWdlX3NpemUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogdm9pZAkJUmVvcmRlckJ1ZmZlclF1ZXVl U2VxdWVuY2UoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCQkJ ICAgU25hcHNob3Qgc25hcHNob3QsIFhMb2dSZWNQdHIgbHNuLCBSZXBPcmlnaW5JZCBvcmlnaW5f aWQsCiAJCQkJCQkJCQkgICBSZWxGaWxlTm9kZSBybm9kZSwgYm9vbCB0cmFuc2FjdGlvbmFsLCBi b29sIGNyZWF0ZWQsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1Ymxp Y2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0Cmlu ZGV4IDRlMTkxYzEyMGEuLjY3NjFlM2JiYzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv cHVibGljYXRpb24ub3V0CkBAIC0zMCwyMCArMzAsMjAgQEAgRVJST1I6ICBjb25mbGljdGluZyBv ciByZWR1bmRhbnQgb3B0aW9ucwogTElORSAxOiAuLi51Yl94eHggV0lUSCAocHVibGlzaF92aWFf cGFydGl0aW9uX3Jvb3QgPSAndHJ1ZScsIHB1Ymxpc2hfdmkuLi4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiBcZFJwCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNh dGlvbnMKLSAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHRlc3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBm Ci0gdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMaXN0IG9mIHB1YmxpY2F0aW9ucworICAgICAgICBOYW1lICAgICAgICB8ICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVsIERETHMgfCBUYWJsZSBs ZXZlbCBERExzIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLQorIHRl c3RwaWJfaW5zX3RydW5jdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAg fCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IGYg ICAgICAgICAgICAgICAgICAgfCBmCisgdGVzdHB1Yl9kZWZhdWx0ICAgIHwgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IGYgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgICB8IGYKICgyIHJvd3Mp CiAKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVmYXVsdCBTRVQgKHB1Ymxpc2ggPSAnaW5z ZXJ0LCB1cGRhdGUsIGRlbGV0ZScpOwogXGRScAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0gICAgICAgIE5hbWUgICAg ICAgIHwgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSB0ZXN0cGliX2luc190 cnVuY3QgfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IGYgICAgICAgfCBmICAgICAgIHwgZiAgICAgICAgIHwgZgotIHRlc3RwdWJfZGVmYXVsdCAgICB8 IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlv bnMKKyAgICAgICAgTmFtZSAgICAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgfCBEYXRhYmFzZSBsZXZlbCBERExzIHwgVGFibGUgbGV2ZWwgRERMcyAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0KKyB0ZXN0cGliX2luc190cnVuY3QgfCByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBm ICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgIHwgZgor IHRlc3RwdWJfZGVmYXVsdCAgICB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICAgfCBmCiAoMiByb3dzKQogCiAtLS0gYWRkaW5nIHRhYmxlcwpA QCAtODcsMTAgKzg3LDEwIEBAIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAtLSBzaG91bGQg YmUgYWJsZSB0byBhZGQgc2NoZW1hIHRvICdGT1IgVEFCTEUnIHB1YmxpY2F0aW9uCiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEFERCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJf dGVzdDsKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBs ZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8 IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBm ICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRl c3RwdWJfdGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CkBAIC05OSwyMCArOTksMjAgQEAgVGFi bGVzIGZyb20gc2NoZW1hczoKIC0tIHNob3VsZCBiZSBhYmxlIHRvIGRyb3Agc2NoZW1hIGZyb20g J0ZPUiBUQUJMRScgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFi bGUgRFJPUCBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFxkUnArIHRlc3RwdWJfZm9y dGFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 Yl9mb3J0YWJsZQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAg ICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKIAogLS0gc2hvdWxk IGJlIGFibGUgdG8gc2V0IHNjaGVtYSB0byAnRk9SIFRBQkxFJyBwdWJsaWNhdGlvbgogQUxURVIg UFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHVi X3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUg bGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgog ICAgICJwdWJfdGVzdCIKIApAQCAtMTM0LDEwICsxMzQsMTAgQEAgRVJST1I6ICByZWxhdGlvbiAi dGVzdHB1Yl9ub3BrIiBpcyBub3QgcGFydCBvZiB0aGUgcHVibGljYXRpb24KIC0tIHNob3VsZCBi ZSBhYmxlIHRvIHNldCB0YWJsZSB0byBzY2hlbWEgcHVibGljYXRpb24KIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWJfZm9yc2NoZW1hIFNFVCBUQUJMRSBwdWJfdGVzdC50ZXN0cHViX25vcGs7CiBc ZFJwKyB0ZXN0cHViX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBE REwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QudGVzdHB1 Yl9ub3BrIgogCkBAIC0xNTksMTAgKzE1OSwxMCBAQCBQdWJsaWNhdGlvbnM6CiAgICAgInRlc3Rw dWJfZm9yYWxsdGFibGVzIgogCiBcZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGx0YWJsZXMKLSAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9m b3JhbGx0YWJsZXMKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFz ZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYg ICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IHQgICAgICAgICAgICAgICAgICB8IHQKICgx IHJvdykKIAogRFJPUCBUQUJMRSB0ZXN0cHViX3RibDI7CkBAIC0xNzQsMTkgKzE3NCwxOSBAQCBD UkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjMgRk9SIFRBQkxFIHRlc3RwdWJfdGJsMzsKIENSRUFU RSBQVUJMSUNBVElPTiB0ZXN0cHViNCBGT1IgVEFCTEUgT05MWSB0ZXN0cHViX3RibDM7CiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjMKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCi0gICAgICAgICAgT3duZXIg ICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRy dW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0K LSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVs ZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUg bGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50 ZXN0cHViX3RibDMiCiAgICAgInB1YmxpYy50ZXN0cHViX3RibDNhIgogCiBcZFJwKyB0ZXN0cHVi NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjQKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFz ZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAicHVibGljLnRlc3RwdWJfdGJsMyIKIApAQCAtMjA3LDEwICsyMDcsMTAgQEAg VVBEQVRFIHRlc3RwdWJfcGFydGVkMSBTRVQgYSA9IDE7CiAtLSBvbmx5IHBhcmVudCBpcyBsaXN0 ZWQgYXMgYmVpbmcgaW4gcHVibGljYXRpb24sIG5vdCB0aGUgcGFydGl0aW9uCiBBTFRFUiBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnBhcnRlZCBBREQgVEFCTEUgdGVzdHB1Yl9wYXJ0ZWQ7CiBcZFJw KyB0ZXN0cHViX2ZvcnBhcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHRlc3RwdWJfZm9ycGFydGVkCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JwYXJ0ZWQKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcGFy dGVkIgogCkBAIC0yMjMsMTAgKzIyMywxMCBAQCBBTFRFUiBUQUJMRSB0ZXN0cHViX3BhcnRlZCBE RVRBQ0ggUEFSVElUSU9OIHRlc3RwdWJfcGFydGVkMTsKIFVQREFURSB0ZXN0cHViX3BhcnRlZDEg U0VUIGEgPSAxOwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JwYXJ0ZWQgU0VUIChwdWJs aXNoX3ZpYV9wYXJ0aXRpb25fcm9vdCA9IHRydWUpOwogXGRScCsgdGVzdHB1Yl9mb3JwYXJ0ZWQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnBh cnRlZAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWJfZm9ycGFydGVkCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwg RGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgdCAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCBmCiBUYWJsZXM6CiAgICAgInB1YmxpYy50ZXN0cHViX3BhcnRlZCIKIApAQCAtMjU1LDEwICsy NTUsMTAgQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRlc3RwdWI1IEZPUiBUQUJMRSB0ZXN0cHViX3JmX3RibDEsIHRlc3RwdWJfcmZfdGJs MiBXSEVSRSAoYyA8PiAndGVzdCcgQU5EIGQgPCA1KSBXSVRIIChwdWJsaXNoID0gJ2luc2VydCcp OwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIFxkUnArIHRlc3RwdWI1Ci0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVsIERETCB8 IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJw dWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwyIiBXSEVS RSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTI3MSwxMCArMjcxLDEwIEBA IFRhYmxlczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgQUREIFRBQkxFIHRlc3RwdWJf cmZfdGJsMyBXSEVSRSAoZSA+IDEwMDAgQU5EIGUgPCAyMDAwKTsKIFxkUnArIHRlc3RwdWI1Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxl dmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAg ICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogVGFibGVz OgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwxIgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90 YmwyIiBXSEVSRSAoKGMgPD4gJ3Rlc3QnOjp0ZXh0KSBBTkQgKGQgPCA1KSkKQEAgLTI5MCwxMCAr MjkwLDEwIEBAIFB1YmxpY2F0aW9uczoKIAogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjUgRFJP UCBUQUJMRSB0ZXN0cHViX3JmX3RibDI7CiBcZFJwKyB0ZXN0cHViNQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjUKKyAgICAg ICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBE ZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJs ZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl ciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAg fCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGlj LnRlc3RwdWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKChl ID4gMTAwMCkgQU5EIChlIDwgMjAwMCkpCkBAIC0zMDEsMTAgKzMwMSwxMCBAQCBUYWJsZXM6CiAt LSByZW1vdmUgdGVzdHB1Yl9yZl90YmwxIGFuZCBhZGQgdGVzdHB1Yl9yZl90YmwzIGFnYWluIChh bm90aGVyIFdIRVJFIGV4cHJlc3Npb24pCiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQg VEFCTEUgdGVzdHB1Yl9yZl90YmwzIFdIRVJFIChlID4gMzAwIEFORCBlIDwgNTAwKTsKIFxkUnAr IHRlc3RwdWI1Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViNQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViNQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8 IERhdGFiYXNlIGxldmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAg ICAgIHwgZiAgICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgZgogVGFibGVzOgogICAgICJwdWJsaWMudGVzdHB1Yl9yZl90YmwzIiBXSEVSRSAoKGUgPiAz MDApIEFORCAoZSA8IDUwMCkpCiAKQEAgLTMzNywxMCArMzM3LDEwIEBAIFNFVCBjbGllbnRfbWlu X21lc3NhZ2VzID0gJ0VSUk9SJzsKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX3N5bnRheDEg Rk9SIFRBQkxFIHRlc3RwdWJfcmZfdGJsMSwgT05MWSB0ZXN0cHViX3JmX3RibDMgV0hFUkUgKGUg PCA5OTkpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3Nh Z2VzOwogXGRScCsgdGVzdHB1Yl9zeW50YXgxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MQotICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAg ICAgICB8IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDEKKyAgICAgICAgICBP d25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVz IHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZl bCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYg ICAgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAg ICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3Rw dWJfcmZfdGJsMSIKICAgICAicHVibGljLnRlc3RwdWJfcmZfdGJsMyIgV0hFUkUgKGUgPCA5OTkp CkBAIC0zNTAsMTAgKzM1MCwxMCBAQCBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7 CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9zeW50YXgyIEZPUiBUQUJMRSB0ZXN0cHViX3Jm X3RibDEsIHRlc3RwdWJfcmZfc2NoZW1hMS50ZXN0cHViX3JmX3RibDUgV0hFUkUgKGggPCA5OTkp IFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0Jyk7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwog XGRScCsgdGVzdHB1Yl9zeW50YXgyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1 YmxpY2F0aW9uIHRlc3RwdWJfc3ludGF4MgotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFs bCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEg cm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCBmICAgICAgIHwgZiAgICAgICB8 IGYgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX3N5bnRheDIKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHVibGljLnRlc3RwdWJfcmZf dGJsMSIKICAgICAidGVzdHB1Yl9yZl9zY2hlbWExLnRlc3RwdWJfcmZfdGJsNSIgV0hFUkUgKGgg PCA5OTkpCkBAIC02NTgsMTAgKzY1OCwxMCBAQCBFUlJPUjogIHJlbGF0aW9uICJ0ZXN0cHViX3Ri bDEiIGlzIGFscmVhZHkgbWVtYmVyIG9mIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRibAogQ1JF QVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGJsIEZPUiBUQUJMRSB0ZXN0cHViX3RibDE7CiBF UlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHViX2ZvcnRibCIgYWxyZWFkeSBleGlzdHMKIFxkUnAr IHRlc3RwdWJfZm9ydGJsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNh dGlvbiB0ZXN0cHViX2ZvcnRibAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRibAorICAgICAgICAgIE93bmVyICAgICAgICAg ICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMg fCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAg ICAgICAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAg ICAgInB1YmxpYy50ZXN0cHViX3RibDEiCkBAIC02OTksMTAgKzY5OSwxMCBAQCBQdWJsaWNhdGlv bnM6CiAgICAgInRlc3RwdWJfZm9ydGJsIgogCiBcZFJwKyB0ZXN0cHViX2RlZmF1bHQKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9kZWZhdWx0Ci0g ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwg dCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZGVmYXVsdAorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNl IGxldmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVz c19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IGYgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogVGFi bGVzOgogICAgICJwdWJfdGVzdC50ZXN0cHViX25vcGsiCiAgICAgInB1YmxpYy50ZXN0cHViX3Ri bDEiCkBAIC03ODAsMTAgKzc4MCwxMCBAQCBSRVZPS0UgQ1JFQVRFIE9OIERBVEFCQVNFIHJlZ3Jl c3Npb24gRlJPTSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogRFJPUCBUQUJMRSB0ZXN0cHVi X3BhcnRlZDsKIERST1AgVEFCTEUgdGVzdHB1Yl90YmwxOwogXGRScCsgdGVzdHB1Yl9kZWZhdWx0 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWJfZGVm YXVsdAotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IGYgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2RlZmF1bHQKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBE YXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCBmICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 IGYKICgxIHJvdykKIAogLS0gZmFpbCAtIG11c3QgYmUgb3duZXIgb2YgcHVibGljYXRpb24KQEAg LTc5MywyMCArNzkzLDIwIEBAIEVSUk9SOiAgbXVzdCBiZSBvd25lciBvZiBwdWJsaWNhdGlvbiB0 ZXN0cHViX2RlZmF1bHQKIFJFU0VUIFJPTEU7CiBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2Rl ZmF1bHQgUkVOQU1FIFRPIHRlc3RwdWJfZm9vOwogXGRScCB0ZXN0cHViX2ZvbwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2YgcHVibGljYXRpb25zCi0g ICAgTmFtZSAgICAgfCAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gdGVzdHB1Yl9mb28g fCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMK KyAgICBOYW1lICAgICB8ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFi YXNlIGxldmVsIERETHMgfCBUYWJsZSBsZXZlbCBERExzIAorLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tCisgdGVzdHB1Yl9mb28gfCByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBm ICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZiAg ICAgICAgfCBmICAgICAgICAgICAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSByZW5hbWUgYmFj ayB0byBrZWVwIHRoZSByZXN0IHNpbXBsZQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb28g UkVOQU1FIFRPIHRlc3RwdWJfZGVmYXVsdDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZGVm YXVsdCBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIyOwogXGRScCB0ZXN0cHViX2Rl ZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qg b2YgcHVibGljYXRpb25zCi0gICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0 ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNl cjIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBwdWJsaWNhdGlvbnMKKyAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERMcyB8 IFRhYmxlIGxldmVsIERETHMgCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LQorIHRlc3RwdWJfZGVmYXVsdCB8IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgZiAgICAgICAgIHwgZiAgICAgICAg fCBmICAgICAgICAgICAgICAgICAgIHwgZgogKDEgcm93KQogCiAtLSBhZGRpbmcgc2NoZW1hcyBh bmQgdGFibGVzCkBAIC04MjIsMTkgKzgyMiwxOSBAQCBDUkVBVEUgVEFCTEUgIkNVUlJFTlRfU0NI RU1BIi4iQ1VSUkVOVF9TQ0hFTUEiKGlkIGludCk7CiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9 ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIEZPUiBBTEwg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDE7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hl bWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVw ZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRl c3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMg fCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERh dGFiYXNlIGxldmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisg cmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwg ZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogCiBDUkVBVEUgUFVCTElD QVRJT04gdGVzdHB1YjJfZm9yc2NoZW1hIEZPUiBBTEwgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVz dDEsIHB1Yl90ZXN0MiwgcHViX3Rlc3QzOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2NoZW1h Ci0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0 cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwg SW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRh YmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJl Z3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYK IFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpA QCAtODQ4LDQ0ICs4NDgsNDQgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWI2X2ZvcnNjaGVt YSBGT1IgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgIkNVUlJFTlRfU0NIRU1BIiwKIENSRUFURSBQVUJM SUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIEZPUiBUQUJMRSAiQ1VSUkVOVF9TQ0hFTUEiLiJDVVJS RU5UX1NDSEVNQSI7CiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogXGRScCsgdGVzdHB1YjNf Zm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1YjNfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8 IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAg IHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ dWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAg fCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwg VmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAg ICAgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1YmxpYyIKIAogXGRS cCsgdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjRfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1 YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNF9mb3JzY2hlbWEKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBE REwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNV UlJFTlRfU0NIRU1BIgogCiBcZFJwKyB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNV9mb3JzY2hlbWEKLSAgICAgICAg ICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxl dGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWI1X2ZvcnNj aGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVs IERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJs aWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogVGFibGVzIGZy b20gc2NoZW1hczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEiCiAgICAgInB1YmxpYyIKIAogXGRScCsg dGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjZfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViNl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgIkNVUlJF TlRfU0NIRU1BIgogICAgICJwdWJsaWMiCiAKIFxkUnArIHRlc3RwdWJfZm9ydGFibGUKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3J0YWJsZQot ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWJfZm9ydGFibGUKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5z ZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFz ZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jl c3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRh YmxlczoKICAgICAiQ1VSUkVOVF9TQ0hFTUEuQ1VSUkVOVF9TQ0hFTUEiCiAKQEAgLTkxOSwxMCAr OTE5LDEwIEBAIEVSUk9SOiAgc2NoZW1hICJ0ZXN0cHViX3ZpZXciIGRvZXMgbm90IGV4aXN0CiAt LSBkcm9wcGluZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGlj YXRpb24KIERST1AgU0NIRU1BIHB1Yl90ZXN0MzsKIFxkUnArIHRlc3RwdWIyX2ZvcnNjaGVtYQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIyX2ZvcnNj aGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwg VXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24g dGVzdHB1YjJfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxl cyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwg RGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0K KyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAg fCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0 MiIKQEAgLTkzMCwyMCArOTMwLDIwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSByZW5hbWlu ZyB0aGUgc2NoZW1hIHNob3VsZCByZWZsZWN0IHRoZSBjaGFuZ2UgaW4gcHVibGljYXRpb24KIEFM VEVSIFNDSEVNQSBwdWJfdGVzdDEgUkVOQU1FIHRvIHB1Yl90ZXN0MV9yZW5hbWVkOwogXGRScCsg dGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjJfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAg ICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8 IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90 ZXN0MV9yZW5hbWVkIgogICAgICJwdWJfdGVzdDIiCiAKIEFMVEVSIFNDSEVNQSBwdWJfdGVzdDFf cmVuYW1lZCBSRU5BTUUgdG8gcHViX3Rlc3QxOwogXGRScCsgdGVzdHB1YjJfZm9yc2NoZW1hCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjJfZm9yc2No ZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0 ZXN0cHViMl9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVz IHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBE YXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQor IHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8 IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3Qy IgpAQCAtOTUxLDEwICs5NTEsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIGFsdGVyIHB1 YmxpY2F0aW9uIGFkZCBzY2hlbWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVt YSBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1 YjFfZm9yc2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IElu c2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIg fCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwg ZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJs aWNhdGlvbiB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBB bGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlh IHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAg ICAgICAgICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAi cHViX3Rlc3QyIgpAQCAtOTYzLDEwICs5NjMsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFM VEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBBREQgQUxMIFRBQkxFUyBJTiBTQ0hF TUEgbm9uX2V4aXN0ZW50X3NjaGVtYTsKIEVSUk9SOiAgc2NoZW1hICJub25fZXhpc3RlbnRfc2No ZW1hIiBkb2VzIG5vdCBleGlzdAogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCi0gICAg ICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9m b3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0 cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBs ZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxl cyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKICAgICAicHViX3Rlc3QyIgpAQCAtOTc1 LDEwICs5NzUsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRl c3RwdWIxX2ZvcnNjaGVtYSBBREQgQUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QxOwogRVJS T1I6ICBzY2hlbWEgInB1Yl90ZXN0MSIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgcHVibGljYXRpb24g InRlc3RwdWIxX2ZvcnNjaGVtYSIKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8 IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFf Zm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2Vy dHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2Ug bGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNz X3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJs ZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTk4 NiwxMCArOTg2LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAtLSBhbHRlciBwdWJsaWNhdGlv biBkcm9wIHNjaGVtYQogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIERST1Ag QUxMIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3QyOwogXGRScCsgdGVzdHB1YjFfZm9yc2NoZW1h Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9y c2NoZW1hCi0gICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMg fCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IAotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAg ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViMV9mb3JzY2hlbWEKKyAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFi bGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3Qg fCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBEREwgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAgICB8IGYgICAgICAgICAgICAgICAg ICB8IGYKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0MSIKIApAQCAtOTk3LDEw ICs5OTcsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWIxX2ZvcnNjaGVtYSBEUk9QIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MjsKIEVSUk9S OiAgdGFibGVzIGZyb20gc2NoZW1hICJwdWJfdGVzdDIiIGFyZSBub3QgcGFydCBvZiB0aGUgcHVi bGljYXRpb24KIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVy ICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBU cnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ci0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVz IHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwg VGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9u X3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hl bWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTEwMDgsMjkgKzEwMDgsMjkgQEAgVGFibGVzIGZy b20gc2NoZW1hczoKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9QIEFM TCBUQUJMRVMgSU4gU0NIRU1BIG5vbl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAi bm9uX2V4aXN0ZW50X3NjaGVtYSIgZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNj aGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIx X2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNl cnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGlj YXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxs IHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSBy b290IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAg ICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIC0tIGRy b3AgYWxsIHNjaGVtYXMKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBEUk9Q IEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVt YQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2Zv cnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAg ICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRp b24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290 IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAg ICAgfCBmCiAoMSByb3cpCiAKIC0tIGFsdGVyIHB1YmxpY2F0aW9uIHNldCBtdWx0aXBsZSBzY2hl bWEKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWIxX2ZvcnNjaGVtYSBTRVQgQUxMIFRBQkxFUyBJ TiBTQ0hFTUEgcHViX3Rlc3QxLCBwdWJfdGVzdDI7CiBcZFJwKyB0ZXN0cHViMV9mb3JzY2hlbWEK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViMV9mb3Jz Y2hlbWEKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8 IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9u IHRlc3RwdWIxX2ZvcnNjaGVtYQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8 IERhdGFiYXNlIGxldmVsIERETCB8IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t CisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAg IHwgZgogVGFibGVzIGZyb20gc2NoZW1hczoKICAgICAicHViX3Rlc3QxIgogICAgICJwdWJfdGVz dDIiCkBAIC0xMDM5LDEwICsxMDM5LDEwIEBAIFRhYmxlcyBmcm9tIHNjaGVtYXM6CiBBTFRFUiBQ VUJMSUNBVElPTiB0ZXN0cHViMV9mb3JzY2hlbWEgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1BIG5v bl9leGlzdGVudF9zY2hlbWE7CiBFUlJPUjogIHNjaGVtYSAibm9uX2V4aXN0ZW50X3NjaGVtYSIg ZG9lcyBub3QgZXhpc3QKIFxkUnArIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIxX2ZvcnNjaGVtYQotICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg fCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjFfZm9yc2No ZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBV cGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwg RERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1Ymxp Y2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJsZXMgZnJv bSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAgICAgInB1Yl90ZXN0MiIKQEAgLTEwNTEsMTAg KzEwNTEsMTAgQEAgVGFibGVzIGZyb20gc2NoZW1hczoKIC0tIHJlbW92aW5nIHRoZSBkdXBsaWNh dGUgc2NoZW1hcwogQUxURVIgUFVCTElDQVRJT04gdGVzdHB1YjFfZm9yc2NoZW1hIFNFVCBBTEwg VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDEsIHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIxX2Zv cnNjaGVtYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3Rw dWIxX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJ bnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy IHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8 IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1YjFfZm9yc2NoZW1hCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg QWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZp YSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERMIHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAg ICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAg LTExMjQsMTggKzExMjQsMTggQEAgU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwog Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWIzX2ZvcnNjaGVtYTsKIFJFU0VUIGNsaWVudF9taW5f bWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViM19mb3JzY2hlbWEKLSAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQor ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRl cyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVsIERETCB8 IFRhYmxlIGxldmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgICB8IGYgICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogKDEgcm93KQogCiBBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViM19mb3JzY2hlbWEgU0VUIEFMTCBUQUJMRVMgSU4gU0NIRU1B IHB1Yl90ZXN0MTsKIFxkUnArIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHRlc3RwdWIzX2ZvcnNjaGVtYQotICAgICAgICAgIE93 bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMg fCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tCi0gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1YjNfZm9yc2NoZW1h CisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEluc2VydHMgfCBVcGRh dGVzIHwgRGVsZXRlcyB8IFRydW5jYXRlcyB8IFZpYSByb290IHwgRGF0YWJhc2UgbGV2ZWwgRERM IHwgVGFibGUgbGV2ZWwgRERMIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgZiAgICAgICAgfCBmICAgICAgICAgICAgICAgICAgfCBmCiBUYWJsZXMgZnJvbSBz Y2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKQEAgLTExNDUsMjAgKzExNDUsMjAgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2NoZW1hX2ZvcnRhYmxlIEZPUiBBTEwgVEFCTEVTIElO IFNDSEVNQSBwdWJfdGVzdDEKIENSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlX2Zv cnNjaGVtYSBGT1IgVEFCTEUgcHViX3Rlc3QyLnRibDEsIEFMTCBUQUJMRVMgSU4gU0NIRU1BIHB1 Yl90ZXN0MTsKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiBcZFJwKyB0ZXN0cHViX2ZvcnNj aGVtYV9mb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKLSAgICAgICAgICBPd25lciAgICAgICAgICAgfCBBbGwg dGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgVmlhIHJv b3QgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IGYgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JzY2hlbWFfZm9ydGFibGUKKyAgICAgICAgICBPd25l ciAgICAgICAgICAgfCBBbGwgdGFibGVzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwg VHJ1bmNhdGVzIHwgVmlhIHJvb3QgfCBEYXRhYmFzZSBsZXZlbCBEREwgfCBUYWJsZSBsZXZlbCBE REwgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IGYgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBmICAgICAg ICB8IGYgICAgICAgICAgICAgICAgICB8IGYKIFRhYmxlczoKICAgICAicHViX3Rlc3QyLnRibDEi CiBUYWJsZXMgZnJvbSBzY2hlbWFzOgogICAgICJwdWJfdGVzdDEiCiAKIFxkUnArIHRlc3RwdWJf Zm9ydGFibGVfZm9yc2NoZW1hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQotICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBW aWEgcm9vdCAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc19w dWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAg ICB8IHQgICAgICAgICB8IGYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcnRhYmxlX2ZvcnNjaGVtYQorICAgICAgICAg IE93bmVyICAgICAgICAgICB8IEFsbCB0YWJsZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBWaWEgcm9vdCB8IERhdGFiYXNlIGxldmVsIERETCB8IFRhYmxlIGxl dmVsIERETCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwg ZiAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgICB8IGYg ICAgICAgIHwgZiAgICAgICAgICAgICAgICAgIHwgZgogVGFibGVzOgogICAgICJwdWJfdGVzdDIu dGJsMSIKIFRhYmxlcyBmcm9tIHNjaGVtYXM6CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzBfcmVwX2RkbHMucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzBfcmVw X2RkbHMucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOWE2M2U4ZTUz NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMF9yZXBfZGRs cy5wbApAQCAtMCwwICsxLDIzNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgUmVncmVzc2lvbiB0ZXN0cyBmb3IgbG9naWNh bCByZXBsaWNhdGlvbiBvZiBERExzCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1 c2UgVGVzdDo6TW9yZTsKKworbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nf c3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCAnYXV0b3ZhY3V1bSA9IG9mZicpOworJG5vZGVfcHVibGlzaGVyLT5z dGFydDsKKworbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgJ2F1dG92YWN1dW0gPSBvZmYnKTsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0 OworCitteSAkbm9kZV9zdWJzY3JpYmVyMiA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnc3Vic2NyaWJlcjInKTsKKyRub2RlX3N1YnNjcmliZXIyLT5pbml0KGFsbG93c19zdHJlYW1p bmcgPT4gJ2xvZ2ljYWwnKTsKKyRub2RlX3N1YnNjcmliZXIyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywgJ2F1dG92YWN1dW0gPSBvZmYnKTsKKyRub2RlX3N1YnNjcmliZXIyLT5zdGFy dDsKKworbXkgJGRkbCA9ICJDUkVBVEUgVEFCTEUgdGVzdF9yZXAoaWQgaW50IHByaW1hcnkga2V5 LCBuYW1lIHZhcmNoYXIpOyI7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAkZGRsKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDEsICdkYXRhMScpOyIpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICRkZGwpOworJG5vZGVfc3Vic2NyaWJlcjItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAkZGRsKTsKKworbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVi bGlzaGVyLT5jb25uc3RyIC4gJyBkYm5hbWU9cG9zdGdyZXMnOworCisjIG15cHViIGhhcyBwdWJk ZGxfZGF0YWJhc2Ugb24KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBQVUJMSUNBVElPTiBteXB1YiBGT1IgQUxMIFRBQkxFUzsiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgU1VCU0NSSVBUSU9OIG15c3Vi IENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0cicgUFVCTElDQVRJT04gbXlwdWI7IgorKTsK KyMgbXlwdWIyIGhhcyBwdWJkZGxfZGF0YWJhc2Ugb2ZmCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gbXlwdWIyIEZPUiBBTEwgVEFC TEVTIHdpdGggKGRkbCA9ICcnKTsiKTsKKyRub2RlX3N1YnNjcmliZXIyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFNVQlNDUklQVElPTiBteXN1YjIgQ09OTkVDVElPTiAnJHB1Ymxp c2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiBteXB1YjI7IgorKTsKKworJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworCisjIFRlc3Qgc2ltcGxlIENSRUFURSBUQUJM RSBjb21tYW5kIGlzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorIyBUZXN0IHNtYWUgc2ltcGxl IENSRUFURSBUQUJMRSBjb21tYW5kIGlzIG5vdCByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIyIChk ZGwgb2ZmKQorIyBUZXN0IEFMVEVSIFRBQkxFIGNvbW1hbmQgaXMgcmVwbGljYXRlZCBvbiB0YWJs ZSB0ZXN0X3JlcAorIyBUZXN0IENSRUFURSBJTkRFWCBpcyByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIKKyMgVGVzdCBDUkVBVEUgRlVOQ1RJT04gY29tbWFuZCBpcyByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFC TEUgdDEgKGEgaW50LCBiIHZhcmNoYXIpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIEFERCBjMyBpbnQ7Iik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF9yZXAgVkFM VUVTICgyLCAnZGF0YTInLCAyKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgSU5ERVggbmFtZWluZGV4IG9uIHRlc3RfcmVwIChuYW1lKSIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7Q1JFQVRFIE9SIFJFUExBQ0Ug RlVOQ1RJT04gdG90YWxSZWNvcmRzKCkKK1JFVFVSTlMgaW50ZWdlciBBUyBcJHRvdGFsXCQKK2Rl Y2xhcmUKKwl0b3RhbCBpbnRlZ2VyOworQkVHSU4KKyAgIFNFTEVDVCBjb3VudCgqKSBpbnRvIHRv dGFsIEZST00gdGVzdF9yZXA7CisgICBSRVRVUk4gdG90YWw7CitFTkQ7CitcJHRvdGFsXCQgTEFO R1VBR0UgcGxwZ3NxbDt9KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdt eXN1YicpOworCitteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgZnJvbSB0MSIpOworaXMoJHJlc3VsdCwgcXEoMCksICdD UkVBVEUgb2YgdDEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyJyk7CiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlcjItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20g cGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0MSc7Iik7CitpcygkcmVzdWx0LCBxcSgwKSwg J0NSRUFURSBvZiB0MSBpcyBub3QgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyMicpOworJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF9yZXAgV0hFUkUgYzMgPTI7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ0FM VEVSIHRlc3RfcmVwIEFERCByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19jbGFzcyB3 aGVyZSByZWxuYW1lID0gJ25hbWVpbmRleCciKTsKK2lzKCRyZXN1bHQsIHFxKDEpLCAnQ1JFQVRF IElOREVYIG5hbWVpbmRleCByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdG90YWxSZWNvcmRzKCk7Iik7Citpcygk cmVzdWx0LCBxcSgyKSwgJ0NSRUFURSBvZiBmdW5jdGlvbiB0b3RhbFJlY29yZHMgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlcjItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJvYyB3aGVyZSBwcm9uYW1l ID0gJ3RvdGFscmVjb3Jkcyc7Iik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ0NSRUFURSBGVU5DVElP TiB0b3RhbHJlY29yZHMgaXMgbm90IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcjInKTsKKworIyBU ZXN0IEFMVEVSIFRBQkxFIERST1AKKyMgVGVzdCBEUk9QIElOREVYCisjIFRlc3QgRFJPUCBGVU5D VElPTgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxF IHRlc3RfcmVwIERST1AgYzM7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiREVMRVRFIEZST00gdGVzdF9yZXAgd2hlcmUgaWQgPSAyOyIpOworJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggbmFtZWluZGV4OyIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgRlVOQ1RJT04gdG90YWxS ZWNvcmRzOyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7 CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBmcm9tIHRlc3RfcmVwOyIpOworaXMoJHJlc3VsdCwgcXEoMSksICdBTFRF UiB0ZXN0X3JlcCBEUk9QIHJlcGxpY2F0ZWQnKTsKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX2NsYXNzIHdo ZXJlIHJlbG5hbWUgPSAnbmFtZWluZGV4JyIpOworaXMoJHJlc3VsdCwgcXEoMCksICdEUk9QIElO REVYIG5hbWVpbmRleCByZXBsaWNhdGVkJyk7CiskcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcm9jIHdoZXJl IHByb25hbWUgPSAndG90YWxyZWNvcmRzJzsiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnRFJPUCBG VU5DVElPTiB0b3RhbHJlY29yZHMgcmVwbGljYXRlZCcpOworCisKKyMgVE9ETyBmaWd1cmUgb3V0 IGhvdyB0byBzZXQgT05fRVJST1JfU1RPUCA9IDAgaW4gdGhpcyB0ZXN0CisjIFRlc3QgZmFpbGVk IENSRUFURS9BTFRFUiBUQUJMRSBvbiBwdWJsaXNoZXIgZG9lc24ndCBicmVhayByZXBsaWNhdGlv bgorIyBUYWJsZSB0MSBhbHJlYWR5IGV4aXRzIHNvIGV4cGVjdCB0aGUgY29tbWFuZCB0byBmYWls CisjJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0 MSAoYSBpbnQsIGIgdmFyY2hhcik7Iik7CisjJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfcmVwIERST1AgYzM7Iik7CisjJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfcmVwIFZBTFVFUyAo MTAzLCAnZGF0YTEwMycsIDEwMTMpOyIpOworCisjJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCdteXN1YicpOworIyBWZXJpZnkgcmVwbGljYXRpb24gc3RpbGwgd29ya3MKKyMkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgZnJvbSB0ZXN0X3JlcDsiKTsKKyNpcygkcmVzdWx0LCBxcSgxKSwgJ0RFTEVURSBmcm9t IHRlc3RfcmVwIHJlcGxpY2F0ZWQnKTsKKworIyBUZXN0IERETHMgaW5zaWRlIHR4biBibG9jawor JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXsKK0JFR0lOOworQ1JF QVRFIFRBQkxFIHQyIChhIGludCwgYiB2YXJjaGFyKTsKK0FMVEVSIFRBQkxFIHRlc3RfcmVwIEFE RCBjMyBpbnQ7CitJTlNFUlQgSU5UTyB0ZXN0X3JlcCBWQUxVRVMgKDMsICdkYXRhMycsIDMpOwor Q09NTUlUO30pOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJ215c3ViJyk7 CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBmcm9tIHQyOyIpOworaXMoJHJlc3VsdCwgcXEoMCksICdDUkVBVEUgdDIg cmVwbGljYXRlZCcpOworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF9yZXA7Iik7CitpcygkcmVzdWx0LCBx cSgyKSwgJ0FMVEVSIHRlc3RfcmVwIEFERCByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCB0b2dnbGlu ZyBwdWJkZGxfZGF0YWJhc2Ugb3B0aW9uIG9mZgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIHNldCAoZGRsID0gJycpOyIpOwor JHJlc3VsdCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg cHViZGRsX2RhdGFiYXNlLCBwdWJkZGxfdGFibGUgZnJvbSBwZ19wdWJsaWNhdGlvbiB3aGVyZSBw dWJuYW1lID0gJ215cHViJzsiKTsKK2lzKCRyZXN1bHQsIHFxKGZ8ZiksICdwdWJkZGxfZGF0YWJh c2UgdHVybmVkIG9mZiBvbiBteXB1YicpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0MyAoYSBpbnQsIGIgdmFyY2hhcik7Iik7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20g cGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0Myc7Iik7CitpcygkcmVzdWx0LCBxcSgwKSwg J0NSRUFURSB0MyBpcyBub3QgcmVwbGljYXRlZCcpOworCisjIFRlc3QgdG9nZ2xpbmcgcHViZGRs X2RhdGFiYXNlIG9wdGlvbiBvbgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkFMVEVSIFBVQkxJQ0FUSU9OIG15cHViIHNldCAoZGRsID0gJ2RhdGFiYXNlJyk7Iik7Cisk cmVzdWx0ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBw dWJkZGxfZGF0YWJhc2UsIHB1YmRkbF90YWJsZSBmcm9tIHBnX3B1YmxpY2F0aW9uIHdoZXJlIHB1 Ym5hbWUgPSAnbXlwdWInOyIpOworaXMoJHJlc3VsdCwgcXEodHx0KSwgJ3B1YmRkbF9kYXRhYmFz ZSB0dXJuZWQgb24gb24gbXlwdWInKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkNSRUFURSBUQUJMRSB0NCAoYSBpbnQsIGIgdmFyY2hhcik7Iik7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIGZyb20g cGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0NCc7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwg J0NSRUFURSB0NCBpcyByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCBETUwgY2hhbmdlcyBvbiB0aGUg bmV3IHRhYmxlIHQ0IGFyZSByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdDQgdmFsdWVzICgxLCAnYScpIik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdDQgdmFsdWVzICgyLCAn YicpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKwor JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIGZyb20gdDQ7Iik7CitpcygkcmVzdWx0LCBxcSgyKSwgJ0RNTCBDaGFuZ2VzIHRv IHQ0IGFyZSByZXBsaWNhdGVkJyk7CisKKyMgQSBzb21ld2hhdCBjb21wbGljYXRlZCB0ZXN0IGlu IHBscGdzcWwgYmxvY2sgd2l0aCB0cmlnZ2VyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxeworQkVHSU47CitDUkVBVEUgVEFCTEUgZm9vIChhIGludCk7CitDUkVB VEUgSU5ERVggZm9vX2lkeCBPTiBmb28gKGEpOworQUxURVIgVEFCTEUgZm9vIEFERCBDT0xVTU4g YiB0aW1lc3RhbXB0ejsKK0NSRUFURSBGVU5DVElPTiBmb29fdHMoKQorUkVUVVJOUyB0cmlnZ2Vy IEFTICQkCitCRUdJTgorTkVXLmIgOj0gY3VycmVudF90aW1lc3RhbXA7CitSRVRVUk4gTkVXOwor RU5EOworJCQKK0xBTkdVQUdFIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBmb29fdHMgQkVGT1JF IElOU0VSVCBPUiBVUERBVEUgT04gZm9vCitGT1IgRUFDSCBST1cgRVhFQ1VURSBGVU5DVElPTiBm b29fdHMoKTsKK0lOU0VSVCBJTlRPIGZvbyBWQUxVRVMgKDEpOworQ09NTUlUO30pOworJHJlc3Vs dCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgYiBmcm9t IGZvbyB3aGVyZSBhID0gMTsiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCdteXN1YicpOworCitteSAkcmVzdWx0X3N1YiA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGIgZnJvbSBmb28gd2hlcmUgYSA9IDE7Iik7CitpcygkcmVz dWx0LCBxcSgkcmVzdWx0X3N1YiksICd0aW1lc3RhbXAgb2YgaW5zZXJ0IG1hdGNoZXMnKTsKKwor IyBUZXN0IENSRUFURSBTQ0hFTUEgc3RtdCBpcyByZXBsaWNhdGVkCiskbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFNDSEVNQSBzMSIpOworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworCiskcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19jYXRh bG9nLnBnX25hbWVzcGFjZSBXSEVSRSBuc3BuYW1lID0gJ3MxJzsiKTsKK2lzKCRyZXN1bHQsIHFx KDEpLCAnQ1JFQVRFIFNDSEVNQSBzMSBpcyByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCBDUkVBVEUg VEFCTEUgaW4gbmV3IHNjaGVtYSBzMSBmb2xsb3dlZCBieSBpbnNlcnQKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgczEudDEgKGEgaW50LCBiIHZh cmNoYXIpOyIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHMxLnQxIFZBTFVFUyAoMSwgJ2EnKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyBzMS50MSBWQUxVRVMgKDIsICdiJyk7Iik7CisK KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gczEudDE7Iik7CitpcygkcmVzdWx0LCBxcSgyKSwgJ0NSRUFURSBUQUJMRSBzMS50MSBp cyByZXBsaWNhdGVkJyk7CisKKyMgVGVzdCByZXBsaWNhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCB3 aXRoIG1pc21hdGNoZWQgc2VhcmNoX3BhdGggb24gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyCisk bm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAnc2VhcmNoX3Bh dGggPSBcJ3MxLCBwdWJsaWNcJycpOworJG5vZGVfcHVibGlzaGVyLT5yZXN0YXJ0OworIyBDUkVB VEUgdW5xdWFsaWZpZWQgdGFibGUgdDIsIGl0IGlzIHMxLnQyIHVuZGVyIHRoZSBtb2RpZmllZCBz ZWFyY2hfcGF0aAorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFU RSBUQUJMRSB0MiAoYSBpbnQsIGIgdmFyY2hhcik7Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdDIgVkFMVUVTICgxLCAnYScpOyIpOworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHQyIFZBTFVF UyAoMiwgJ2InKTsiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJ TlNFUlQgSU5UTyB0MiBWQUxVRVMgKDMsICdjJyk7Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgnbXlzdWInKTsKKworJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gczEudDI7Iik7Citpcygk cmVzdWx0LCBxcSgzKSwgJ0NSRUFURSBUQUJMRSBzMS50MiBpcyByZXBsaWNhdGVkJyk7CisKKyMg VGVzdCBvd25lciBvZiBuZXcgdGFibGUgb24gc3Vic2NyaWJlciBtYXRjaGVzIHRoZSBvd25lciBv biBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVB VEUgUk9MRSBkZGxfcmVwbGljYXRpb25fdXNlciBMT0dJTiBTVVBFUlVTRVI7Iik7CisKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFJPTEUgZGRsX3JlcGxp Y2F0aW9uX3VzZXIgTE9HSU4gU1VQRVJVU0VSOyIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiAnZGRsX3JlcGxpY2F0 aW9uX3VzZXInOyBDUkVBVEUgVEFCTEUgdDUgKGEgaW50LCBiIHZhcmNoYXIpOyIpOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCdteXN1YicpOworCiskcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgdGFibGVvd25lciBmcm9t IHBnX2NhdGFsb2cucGdfdGFibGVzIHdoZXJlIHRhYmxlbmFtZSA9ICd0NSc7Iik7CitpcygkcmVz dWx0LCBxcShkZGxfcmVwbGljYXRpb25fdXNlciksICdPd25lciBvZiB0NSBpcyBjb3JyZWN0Jyk7 CisKKyNUT0RPIFRFU1QgY2VydGFpbiBERExzIGFyZSBub3QgcmVwbGljYXRlZAorCitwYXNzICJE REwgcmVwbGljYXRpb24gdGVzdHMgcGFzc2VkISI7CisKKyRub2RlX3N1YnNjcmliZXItPnN0b3A7 Ciskbm9kZV9zdWJzY3JpYmVyMi0+c3RvcDsKKyRub2RlX3B1Ymxpc2hlci0+c3RvcDsKKworZG9u ZV90ZXN0aW5nKCk7Cg== --000000000000e61e1505da5c70ff--