<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>201966</bug_id>
          
          <creation_ts>2019-09-18 19:42:53 -0700</creation_ts>
          <short_desc>Replace JSValue #defines with static constexpr values.</short_desc>
          <delta_ts>2019-09-19 09:16:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572210</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-18 19:42:53 -0700</bug_when>
    <thetext>And also rename them to something more meaningful or more concise where possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572214</commentid>
    <comment_count>1</comment_count>
      <attachid>379098</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-18 20:02:54 -0700</bug_when>
    <thetext>Created attachment 379098
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572219</commentid>
    <comment_count>2</comment_count>
      <attachid>379098</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-09-18 20:18:03 -0700</bug_when>
    <thetext>Comment on attachment 379098
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=379098&amp;action=review

r=me

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:442
&gt; +    static constexpr int32_t OtherTag       = 0x2ll;
&gt; +    static constexpr int32_t BoolTag        = 0x4ll;
&gt; +    static constexpr int32_t UndefinedTag   = 0x8ll;
&gt;      // Combined integer value for non-numeric immediates.
&gt; -    #define ValueFalse     (TagBitTypeOther | TagBitBool | false)
&gt; -    #define ValueTrue      (TagBitTypeOther | TagBitBool | true)
&gt; -    #define ValueUndefined (TagBitTypeOther | TagBitUndefined)
&gt; -    #define ValueNull      (TagBitTypeOther)
&gt; -
&gt; -    // TagMask is used to check for all types of immediate values (either number or &apos;other&apos;).
&gt; -    #define TagMask (TagTypeNumber | TagBitTypeOther)
&gt; -
&gt; +    static constexpr int32_t ValueFalse     = OtherTag | BoolTag | false;
&gt; +    static constexpr int32_t ValueTrue      = OtherTag | BoolTag | true;
&gt; +    static constexpr int32_t ValueUndefined = OtherTag | UndefinedTag;
&gt; +    static constexpr int32_t ValueNull      = OtherTag;
&gt; +
&gt; +    static constexpr uint64_t MiscTag = OtherTag | BoolTag | UndefinedTag;

I would like to have some comments why this is defined as int32_t while the other ones are defined as uint64_t.

&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:453
&gt; +    static constexpr uint64_t ValueEmpty   = 0x0ll;
&gt; +    static constexpr uint64_t ValueDeleted = 0x4ll;

Can you remove ll here?

&gt; Source/JavaScriptCore/wasm/js/WasmToJS.cpp:428
&gt; +#endif

Can I have rationale comment here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572260</commentid>
    <comment_count>3</comment_count>
      <attachid>379098</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-18 22:14:49 -0700</bug_when>
    <thetext>Comment on attachment 379098
proposed patch.

View in context: https://bugs.webkit.org/attachment.cgi?id=379098&amp;action=review

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:442
&gt;&gt; +    static constexpr uint64_t MiscTag = OtherTag | BoolTag | UndefinedTag;
&gt; 
&gt; I would like to have some comments why this is defined as int32_t while the other ones are defined as uint64_t.

The use of int32_t is because those values are being used as TrustedImm32 which expect 32-bit values.  Since these values don&apos;t have any bits set above 32-bits, defining them as int32_t saves us from doing static_cast&lt;int32_t&gt; in many places.  I&apos;ll add a ChangeLog comment to comment this.

I&apos;ll also change all the uint64_ts to int64_ts since that&apos;s the type of their original #define values.

&gt;&gt; Source/JavaScriptCore/runtime/JSCJSValue.h:453
&gt;&gt; +    static constexpr uint64_t ValueDeleted = 0x4ll;
&gt; 
&gt; Can you remove ll here?

Will do.

&gt;&gt; Source/JavaScriptCore/wasm/js/WasmToJS.cpp:428
&gt;&gt; +#endif
&gt; 
&gt; Can I have rationale comment here?

The reason for this is because the ARM64 assembler is able to emit a more efficient instruction for loading the constant.  On x86_64, the 2 instructions to construct DoubleEncodeOffset using a shift is more efficient.  I&apos;ll also add a ChangeLog comment for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572269</commentid>
    <comment_count>4</comment_count>
      <attachid>379105</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-18 22:54:06 -0700</bug_when>
    <thetext>Created attachment 379105
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572277</commentid>
    <comment_count>5</comment_count>
      <attachid>379107</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-18 23:29:13 -0700</bug_when>
    <thetext>Created attachment 379107
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572376</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-09-19 09:15:32 -0700</bug_when>
    <thetext>Landed in r250094: &lt;http://trac.webkit.org/r250094&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572377</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-19 09:16:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55521813&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379098</attachid>
            <date>2019-09-18 20:02:54 -0700</date>
            <delta_ts>2019-09-18 23:12:00 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-201966.patch</filename>
            <type>text/plain</type>
            <size>159093</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMDc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNSBA
QAorMjAxOS0wOS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBKU1ZhbHVlICNkZWZpbmVzIHdpdGggc3RhdGljIGNvbnN0ZXhwciB2YWx1ZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBzdGF0aWMgY29u
c3RleHByIGlzIHRoZSBtb2Rlcm4gQysrIHdheSB0byBkZWZpbmUgdGhlc2UgY29uc3RhbnRzLgor
CisgICAgICAgIEluIHRoaXMgcGF0Y2gsIHdlIGFsc28gZGlkIHRoZSBmb2xsb3dpbmc6CisKKyAg
ICAgICAgMS4gUmVuYW1lZCBUYWdNYXNrIHRvIE5vdENlbGxNYXNrLCBiZWNhdXNlIGV2ZXJ5d2hl
cmUgaW4gdGhlIGNvZGUsIHdlJ3JlCisgICAgICAgICAgIGJhc2ljYWxseSB1c2luZyBpdCB0byBm
aWx0ZXIgb3V0IGNlbGxzIGxpa2UgdGhpczoKKworICAgICAgICAgICAgICBpZiAodmFsdWUgJiBO
b3RDZWxsTWFzaykgdGhlbiBnb3RvIGhhbmRsZU5vdENlbGxDYXNlOworCisgICAgICAgIDIuIFJl
bmFtZWQgVGFnVHlwZU51bWJlciB0byBOdW1iZXJUYWcgZm9yIGEgc2hvcnRlciBuYW1lLgorCisg
ICAgICAgICAgIERpdHRvIGZvciBUYWdCaXRUeXBlT3RoZXIsIFRhZ0JpdEJvb2wsIFRhZ0JpdFVu
ZGVmaW5lZCwgVGFnQml0c1dhc20sIGFuZCBUYWdXYXNtTWFzay4KKyAgICAgICAgICAgVGhleSBh
cmUgbm93IE90aGVyVGFnLCBCb29sVGFnLCBVbmRlZmluZWRUYWcsIFdhc21UYWcsIGFuZCBXYXNt
TWFzay4KKworICAgICAgICAzLiBJbnRyb2R1Y2VkIERvdWJsZUVuY29kZU9mZnNldEJpdCBzbyB0
aGF0IGNsaWVudCBjb2RlIGRvIG5vdCBlbWJlZCB0aGlzIHZhbHVlCisgICAgICAgICAgIGFzIGEg
bGl0ZXJhbCBjb25zdGFudC4gIFdlIG5vdyBkZWZpbmUgRG91YmxlRW5jb2RlT2Zmc2V0IGJhc2Vk
IG9uCisgICAgICAgICAgIERvdWJsZUVuY29kZU9mZnNldEJpdCBlbnN1cmluZyBjb25zaXN0ZW5j
eS4KKworICAgICAgICA0LiBJbnRyb2R1Y2VkIE1pc2NUYWcgc28gdGhhdCBjbGllbnRzIGRvbid0
IGhhdmUgdG8gcHV0IHRoaXMgc2V0IG9mIHRhZ3MgdG9nZXRoZXIKKyAgICAgICAgICAgdGhlbXNl
bHZlcy4KKworICAgICAgICA1LiBSZW1vdmVkIHN0YXRpYyBhc3NlcnRzIGZvciB0YWdzIGluIExM
SW50RGF0YS5jcHAgYmVjYXVzZSB0aGUgb2ZmbGluZWFzbSBub3cKKyAgICAgICAgICAgY2FwdHVy
ZXMgdGhlc2UgdmFsdWVzIGNvcnJlY3RseSB3aXRoIGNvbnN0ZXhwciBzdGF0ZW1lbnRzLiAgVGhl
c2Ugc3RhdGljCisgICAgICAgICAgIGFzc2VydHMgd2VyZSBob2xkb3ZlcnMgZnJvbSB0aGUgb2xk
IGRheXMgYmFjayB3aGVuIHdlIGhhZCB0byBkZWZpbmUgTExJbnQKKyAgICAgICAgICAgY29uc3Rh
bnQgdmFsdWVzIG1hbnVhbGx5LCBhbmQgd2UgbmVlZGVkIGEgbWVjaGFuaXNtIHRvIGRldGVjdCB3
aGVuIHRoZSB2YWx1ZXMKKyAgICAgICAgICAgaGF2ZSBjaGFuZ2VkIGluIHRoZSBzb3VyY2UuCisK
KyAgICAgICAgNi4gUmVwbGFjZWQgc29tZSBydW50aW1lIGFzc2VydHMgaW4gUmVnaXN0ZXJTZXQu
Y3BwIHdpdGggc3RhdGljX2Fzc2VydHMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFz
b24uaDoKKyAgICAgICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
QWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCk6CisgICAg
ICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNp
bGVudEZpbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3Vt
ZW50VHlwZXMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFs
dWVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURv
dWJsZVJlcCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmdldEludFR5cGVk
QXJyYXlTdG9yZU9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGVNaXNjKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BpbGwpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JV
bmRlZmluZWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmlj
dEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NTJDb21wYXJlKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJM
b2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxv
Z2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0
T3JPdGhlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRC
cmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6bW92ZVRydWVUbyk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om1vdmVGYWxzZVRvKToKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6Ymxlc3NCb29sZWFuKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIp
OgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRG91YmxlUmVw
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJvb2xlYW5U
b051bWJlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVV
bmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBp
bGVCaW5hcnlNYXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlUHV0QnlJZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNv
bXBpbGVBcnJheUluZGV4T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlR2V0QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlQ2FsbE9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxv
d2VyREZHVG9CMzo6Y29tcGlsZURpcmVjdENhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6
OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3By
ZWFkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxP
ckNvbnN0cnVjdFZhcmFyZ3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlQ2FsbEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlSW5CeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlR2V0RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUpOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlTbmlwcGV0
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeUJpdE9w
U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRSaWdo
dFNoaWZ0U25pcHBldCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVx
dWFsTnVsbE9yVW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6YnVpbGRUeXBlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpp
c0ludDMyKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RJbnQz
Mik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNDZWxsT3JNaXNjKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RDZWxsT3JNaXNjKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hEb3VibGUpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hEb3VibGUpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjppc0NlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjppc05vdE1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojppc05vdEJvb2xlYW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpi
b3hCb29sZWFuKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RP
dGhlcik6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzT3RoZXIpOgor
ICAgICAgICAqIGZ0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6
OnJlYm94QWNjb3JkaW5nVG9Gb3JtYXQpOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHVi
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsZWVCaXRzLmg6CisgICAgICAgIChKU0M6OkNh
bGxlZUJpdHM6OmJveFdhc20pOgorICAgICAgICAoSlNDOjpDYWxsZWVCaXRzOjppc1dhc20gY29u
c3QpOgorICAgICAgICAoSlNDOjpDYWxsZWVCaXRzOjphc1dhc21DYWxsZWUgY29uc3QpOgorICAg
ICAgICAqIGppdC9Bc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0SXNKU051bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6
aml0QXNzZXJ0SXNKU0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0
QXNzZXJ0SXNDZWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRU
YWdzSW5QbGFjZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRW
YWx1ZVRvQm9vbGVhbik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0
ZXJzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZVNhdmVkVGFn
UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0TWF0ZXJpYWxp
emVUYWdDaGVja1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJh
bmNoSWZOb3RDZWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkNl
bGwpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmT3RoZXIpOgorICAg
ICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90T3RoZXIpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmSW50MzIpOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmJyYW5jaElmTm90SW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZOb3REb3VibGVLbm93bk5vdEludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
OjpicmFuY2hJZkJvb2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTm90Qm9vbGVhbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94RG91Ymxl
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveERvdWJsZVdpdGhvdXRBc3Nl
cnRpb25zKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hJbnQ1Mik6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94Qm9vbGVhblBheWxvYWQpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OmJveEludDMyKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1l
U2h1ZmZsZURhdGEuaDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwOgorICAg
ICAgICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkNh
bGxGcmFtZVNodWZmbGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1
ZmZsZXIuaDoKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmdldEZyZWVSZWdpc3Rl
ciBjb25zdCk6CisgICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdEJveCk6CisgICAgICAgIChKU0M6OkNhbGxG
cmFtZVNodWZmbGVyOjp0cnlBY3F1aXJlTnVtYmVyVGFnUmVnaXN0ZXIpOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIpOiBEZWxldGVkLgor
ICAgICAgICAqIGppdC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkdQUkluZm86OnJlc2VydmVk
UmVnaXN0ZXJzKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAqIGppdC9KSVRCaXRB
bmRHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRCaXRBbmRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRCaXRPckdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkpJVEJpdE9yR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAg
KiBqaXQvSklUQml0WG9yR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQml0WG9yR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAgKiBqaXQvSklURGl2
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQpOgorICAgICAgICAqIGppdC9KSVRMZWZ0U2hpZnRH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRMZWZ0U2hpZnRHZW5lcmF0b3I6OmdlbmVy
YXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRNdWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19o
YXNfaW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKToKKyAgICAg
ICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfaXNfbnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0
aF90eXBlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVx
X251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAg
KEpTQzo6SklUOjplbWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9qbnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2VxX251bGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAg
ICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dEdlbmVyaWNDb250aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZh
c3RQYXRoKToKKyAgICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6cnVudGltZVRhZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpsbGludEJhc2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJl
Z2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0
ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXpl
ZFRodW5rSklULmg6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkRv
dWJsZSk6CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnRhZ1JldHVybkFzSW50
MzIpOgorICAgICAgICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2
aXJ0dWFsVGh1bmtGb3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAg
ICAgICAoSlNDOjphcml0eUZpeHVwR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpEYXRhOjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6CisgICAgICAgIChKU0M6OkNMb29wOjpleGVjdXRlKToKKyAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6Cisg
ICAgICAgICogb2ZmbGluZWFzbS9jbG9vcC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5y
YjoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzVW5kZWZpbmVkT3JO
dWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDZWxsIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNWYWx1ZTo6aXNJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OkpTVmFsdWUpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjphc0RvdWJsZSBjb25zdCk6CisgICAg
ICAgIChKU0M6OkpTVmFsdWU6OmlzTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dh
c21Ub0pTLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5
RnVuY3Rpb246OmpzQ2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOS0xOCAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBUT0NUT1UgYnVnIGluIGhhdmluZ0FC
YWRUaW1lIHJlbGF0ZWQgYXNzZXJ0aW9uIGluIERGR1NwZWN1bGF0aXZlSklUCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCShyZXZpc2lvbiAy
NTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDggQEAgZW51bSBBYm9ydFJlYXNvbiB7CiAgICAg
QUhJc05vdE51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA5MCwK
ICAgICBBSFN0YWNrUG9pbnRlck1pc2FsaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MTAwLAogICAgIEFIU3RydWN0dXJlSURJc1ZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSAxMTAsCi0gICAgQUhUYWdNYXNrTm90SW5QbGFjZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IDEyMCwKLSAgICBBSFRhZ1R5cGVOdW1iZXJOb3RJblBsYWNlICAgICAgICAgICAg
ICAgICAgICAgICAgID0gMTMwLAorICAgIEFITm90Q2VsbE1hc2tOb3RJblBsYWNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAxMjAsCisgICAgQUhOdW1iZXJUYWdOb3RJblBsYWNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IDEzMCwKICAgICBBSFR5cGVJbmZvSW5saW5lVHlwZUZs
YWdzQXJlVmFsaWQgICAgICAgICAgICAgICAgID0gMTQwLAogICAgIEFIVHlwZUluZm9Jc1ZhbGlk
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxNTAsCiAgICAgQjNPb3BzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE1NSwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI1
MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJh
dGVXaXRoR3VhcmQoCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgdGhlIHByb3BlcnR5
LgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZl
VG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhl
bHBlcnM6Ok5vdEVxdWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJ
bW02NChWYWx1ZU51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5h
cHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGJhc2VGb3JBY2Nlc3NH
UFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICNl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVBy
b3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2Fs
bEhlbHBlcnM6Ok5vblplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKQEAgLTQzMiw3ICs0MzIsNyBA
QCB2b2lkIEFjY2Vzc0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsgLy8gUHJpbWl0aXZl
cyBtdXN0IGhhdmUgYSBzdG9yZWQgcHJvdG90eXBlLiBXZSB1c2UgcHJvdG90eXBlRm9yTG9va3Vw
IGZvciB0aGVtLgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBq
aXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNl
dFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIp
OwotICAgICAgICAgICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2
NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRy
dXN0ZWRJbW02NChWYWx1ZU51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhy
b3VnaC5hcHBlbmQoaml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIGJhc2VGb3JBY2Nl
c3NHUFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsK
ICNlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9s
eVByb3RvT2Zmc2V0KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihD
Q2FsbEhlbHBlcnM6Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcx
LDcgKzQ3MSw3IEBAIHZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQoQ29udGV4dCYgY28KICAg
ICAgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50MzJf
dD4ocmVjb3ZlcnktPmRlc3QoKSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3JjKCkp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoY3B1Lmdwcihy
ZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOwotICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3Zl
cnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKKyAgICAgICAgICAgICAgICBjcHUuZ3ByKHJl
Y292ZXJ5LT5kZXN0KCkpIHw9IEpTVmFsdWU6Ok51bWJlclRhZzsKICNlbmRpZgogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBPU1JFeGl0OjpleGVjdXRl
T1NSRXhpdChDb250ZXh0JiBjbwogICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRl
c3QoKSkgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS0+
ZGVzdCgpKSA+PiAxKSBeIDB4ODAwMDAwMDBVOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOwotICAg
ICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsK
KyAgICAgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9IEpTVmFsdWU6Ok51
bWJlclRhZzsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC00ODcsMTMgKzQ4
NywxMyBAQCB2b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgICAg
ICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IChjcHUuZ3ByPHVpbnQzMl90Pihy
ZWNvdmVyeS0+ZGVzdCgpKSAtIHJlY292ZXJ5LT5pbW1lZGlhdGUoKSk7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkp
ID4+IDMyKSk7Ci0gICAgICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBU
YWdUeXBlTnVtYmVyOworICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkg
fD0gSlNWYWx1ZTo6TnVtYmVyVGFnOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICAgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdw
cihyZWNvdmVyeS0+ZGVzdCgpKSBeIFZhbHVlRmFsc2U7CisgICAgICAgICAgICAgICAgY3B1Lmdw
cihyZWNvdmVyeS0+ZGVzdCgpKSA9IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgXiBKU1ZhbHVl
OjpWYWx1ZUZhbHNlOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTU0Niw4
ICs1NDYsOCBAQCB2b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAg
QVNTRVJUKCEoY29udGV4dC5mcDx1aW50cHRyX3Q+KCkgJiAweDcpKTsKIAogI2lmIFVTRShKU1ZB
TFVFNjQpCi0gICAgQVNTRVJUKGNwdS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSA9PSBUYWdUeXBlTnVtYmVyKTsKLSAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpID09IFRhZ01hc2spOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSA9PSBKU1ZhbHVlOjpOdW1iZXJUYWcpOworICAgIEFTU0VSVChjcHUuZ3By
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpID09IEpTVmFsdWU6Ok5vdENlbGxNYXNrKTsK
ICNlbmRpZgogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9y
ZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY4Niw4ICs2ODYsOCBAQCB2b2lkIE9T
UkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgc2F2ZUNhbGxlZVNhdmVzRm9y
KGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
Y3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gc3RhdGljX2Nhc3Q8dWlu
dHB0cl90PihUYWdUeXBlTnVtYmVyKTsKLSAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBl
T3RoZXIpOworICAgIGNwdS5ncHIoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpID0gSlNWYWx1
ZTo6TnVtYmVyVGFnOworICAgIGNwdS5ncHIoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikg
PSBKU1ZhbHVlOjpOb3RDZWxsTWFzazsKICNlbmRpZgogCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRp
b25IYW5kbGVyKCkpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVF
eGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6CiAgICAgICAg
ICAgICBqaXQuc3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgogICAgICAg
ICAgICAgYnJlYWs7CiAKQEAgLTExMzAsMjAgKzExMzAsMjAgQEAgdm9pZCBPU1JFeGl0Ojpjb21w
aWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgaml0LnJzaGlmdDMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAgICAgICAg
IGppdC54b3IzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDgwMDAwMDAwKSwgcmVj
b3ZlcnktPmRlc3QoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAg
ICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgcmVjb3ZlcnktPmRl
c3QoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3BlY3Vs
YXRpdmVBZGRJbW1lZGlhdGU6CiAgICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1ibHlIZWxwZXJz
OjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LnhvcjY0KEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVjb3Zlcnkt
PmRlc3QoKSk7CisgICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlY292ZXJ5LT5kZXN0KCkpOwogI2VuZGlmCiAg
ICAgICAgICAgICBicmVhazsKIApAQCAtMTI0OCwxMSArMTI0OCwxMSBAQCB2b2lkIE9TUkV4aXQ6
OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3Mo
KSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEg
c3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAorICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0
ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2lu
Y2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0
KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3Mo
KSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJv
ZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6
OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpT
VmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAg
aml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFn
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0
Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCkBA
IC0xNTE5LDcgKzE1MTksNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVy
cyYgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCAr
IGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9Q
dHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAg
ICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBl
cnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogI2Vsc2UKICAgICAgICAgICAgIGppdC5sb2FkMzIo
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgICAgICBz
d2l0Y2ggKHNwaWxsRm9ybWF0KSB7CiAgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjog
ewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lm9y
NjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3Bp
bGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KQEAgLTEyMiwxMSArMTIyLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBp
biBwbGFjZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZv
cm1hdEludDMyLCBub3QgRGF0YUZvcm1hdEpTSW50MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNM
b2NrZWQoZ3ByKSkgewogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0g
ICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3By
LCByZXN1bHQpOworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgZ3ByLCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
fQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgbV9qaXQub3I2NChHUFJJbmZv
OjpudW1iZXJUYWdSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9z
dHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAg
IH0KQEAgLTI1NywxMyArMjU3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0
aXZlTm9uUGUKICAKICAgICBpZiAoIWlzS25vd25Ob3RPdGhlcihvcGVyYW5kLm5vZGUoKSkpIHsK
ICAgICAgICAgbV9qaXQubW92ZShhcmdHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIG1faml0LmFu
ZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlc3VsdEdQ
Uik7Ci0gICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQ
UiwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZU51bGwpLCByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5hbmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRl
ZmluZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGls
ZXI6OkVxdWFsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVOdWxsKSwgcmVzdWx0R1BSKTsKICAgICB9CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAKLSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsK
KyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0
R1BSKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgRGF0YUZv
cm1hdEpTQm9vbGVhbik7CiB9CiAKQEAgLTMxOSw4ICszMTksOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzdGQ6OnN3YXAodGFrZW4sIG5v
dFRha2VuKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5tb3ZlKGFyZ0dQUiwgcmVzdWx0R1BS
KTsKLSAgICAgICAgbV9qaXQuYW5kNjQoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0
VW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoNjQoY29uZGl0aW9uLCByZXN1
bHRHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSwgdGFrZW4pOworICAg
ICAgICBtX2ppdC5hbmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRl
ZmluZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBicmFuY2g2NChjb25kaXRpb24sIHJlc3Vs
dEdQUiwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51bGwpLCB0YWtl
bik7CiAgICAgICAgIGp1bXAobm90VGFrZW4pOwogICAgIH0KIH0KQEAgLTY3Miw3ICs2NzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBp
ZiAoIWlzRGlyZWN0KQogICAgICAgICAgICAgICAgIGNhbGxlZS51c2UoKTsKIAotICAgICAgICAg
ICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlcjsKKyAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bWJlclRhZ1JlZ2lzdGVyID0gR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMg
PSBtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgICAgICAgICAgc2h1ZmZs
ZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0
SlMpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5yZXNpemUobnVtQWxsb2NhdGVkQXJn
cyk7CkBAIC0xMjcyLDkgKzEyNzIsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sCiAKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0
YUZvcm1hdEpTKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Jvb2xlYW4pIHsKLSAgICAgICAg
ICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZh
bHNlKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6VmFsdWVGYWxzZSksIGdwcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEp
KSksIFNwZWN1bGF0aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ssIGdwciwgSW52
YWxpZEdQUlJlZykpOwotICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0Lnhv
cjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKICAgICAgICAgfQog
ICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCb29s
ZWFuKTsKICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTEyOTEsOSArMTI5MSw5IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICAgICAgR1BSUmVnIGdwciA9IGlu
Zm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAgIGlmICh0eXBlICYg
flNwZWNCb29sZWFuKSB7Ci0gICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCBncHIpOworICAgICAgICAgICAgbV9qaXQu
eG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBncHIpOwogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpLCBTcGVjdWxhdGlvblJlY292ZXJ5KEJvb2xlYW5T
cGVjdWxhdGlvbkNoZWNrLCBncHIsIEludmFsaWRHUFJSZWcpKTsKLSAgICAgICAgICAgIG1faml0
LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdw
cik7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVG
YWxzZSksIGdwcik7CiAgICAgICAgIH0KICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0x
MzMxLDcgKzEzMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0
CiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgd2UgY2FuIHBlcmZvcm0gYSBzdHJh
aWdodC1mb3J3YXJkIGVxdWFsaXR5IGNvbXBhcmlzb24gb24gcG9pbnRlcgogICAgIC8vIHZhbHVl
cyBiZWNhdXNlIHdlIGFyZSBkb2luZyBzdHJpY3QgZXF1YWxpdHkuCiAgICAgbV9qaXQuY29tcGFy
ZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxR1BSLCBvcDJHUFIsIHJlc3VsdEdQUik7Ci0g
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7
CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRK
U0Jvb2xlYW4pOwogfQogICAgIApAQCAtMTQxMywxOCArMTQxMywxOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgLy8gcHJvdmUgdGhhdCBpdCBpcyBlaXRo
ZXIgbnVsbCBvciB1bmRlZmluZWQuCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKHJpZ2h0Q2hpbGQs
IFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUob3AyR1BS
LCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hbmQ2
NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBy
ZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAgICAgSlNW
YWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgU3BlY0NlbGxDaGVjayB8IFNwZWNPdGhlciwK
ICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRH
UFIpOworICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBy
ZXN1bHRHUFIpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBE
YXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIApAQCAtMTQ4OSwxMiArMTQ4OSwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIAogICAgICAgICByaWdo
dE5vdENlbGwubGluaygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tb3ZlKG9wMkdQUiwgcmVzdWx0
R1BSKTsKLSAgICAgICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+
VGFnQml0VW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgCiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KG9wMkdQUiksIHJpZ2h0Q2hpbGQsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIsIG1faml0LmJy
YW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0
R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVO
dWxsKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICAKICAgICBqdW1wKG5vdFRha2VuKTsKQEAg
LTE1MjcsNyArMTUyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQ1MkNvbXBh
cmUKICAgICBtX2ppdC5jb21wYXJlNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwg
d2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVl
RmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIApAQCAtMTYx
MiwyMSArMTYxMiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhl
CiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAg
ICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7
CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3Vs
dEdQUik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAg
ICAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKIAogICAgIGlmIChuZWVkc1R5cGVDaGVjayhu
b2RlVXNlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY090aGVyKSkgewogICAgICAgICBtX2ppdC5tb3Zl
KHZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBt
X2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZXN1bHRHUFIpOwogICAgICAgICB0eXBlQ2hlY2soCiAgICAgICAgICAgICBKU1Zh
bHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIsIG1f
aml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
CiAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICAgICB9Ci0gICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKKyAgICBtX2pp
dC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHRHUFIpOwogICAg
IAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBTcGVjdWxhdGVJ
bnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAgICAgICAgIG1faml0LmNvbXBhcmUz
MihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3IzMihUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vblplcm8gPSBtX2ppdC5icmFu
Y2hEb3VibGVOb25aZXJvKHZhbHVlLmZwcigpLCBzY3JhdGNoLmZwcigpKTsKICAgICAgICAgbV9q
aXQueG9yMzIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBub25a
ZXJvLmxpbmsoJm1faml0KTsKQEAgLTE2NzksMTEgKzE2NzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOyAvLyBGSVhNRTogV2UgY291bGQgcmV1c2UsIGJ1dCBvbiBzcGVjdWxhdGlvbiBmYWlsIHdv
dWxkIG5lZWQgcmVjb3ZlcnkgdG8gcmVzdG9yZSB0YWcgKGFraW4gdG8gYWRkKS4KICAgICAgICAg
CiAgICAgICAgIG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAg
IG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNl
KSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgdHlwZUNoZWNrKAogICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Jv
b2xlYW4sIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm9uWmVybywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
fjEpKSkpOwotICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oVmFsdWVUcnVlKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnhvcjY0KFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAK
ICAgICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQg
aGVyZS4KICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFGb3Jt
YXRKU0Jvb2xlYW4pOwpAQCAtMTcxMCw3ICsxNzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICB9CiAgICAgICAgIGJvb2wgbmVnYXRlUmVzdWx0
ID0gdHJ1ZTsKICAgICAgICAgbV9qaXQuZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbih2bSgpLCBK
U1ZhbHVlUmVncyhhcmcxR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCB2YWx1ZUZQUi5mcHIo
KSwgdGVtcEZQUi5mcHIoKSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9i
YWxPYmplY3QsIG5lZ2F0ZVJlc3VsdCk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTc2OSwxMCArMTc2OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyCiAgICAgCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGVVc2UsIFNw
ZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUodmFsdWVHUFIs
IHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuYW5k
NjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwg
c2NyYXRjaEdQUik7CiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFsdWVSZWdz
KHZhbHVlR1BSKSwgbm9kZVVzZSwgU3BlY0NlbGxDaGVjayB8IFNwZWNPdGhlciwgbV9qaXQuYnJh
bmNoNjQoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzY3JhdGNo
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICBqdW1w
KG5vdFRha2VuKTsKICAgICAKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmVtaXRCcmFuY2goTm9kZSogbm8KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5v
ZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50MzJPbmx5KSB7CiAgICAgICAgICAg
ICAgICAgYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSwgbm90VGFr
ZW4pOwotICAgICAgICAgICAgICAgIGJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRha2VuKTsKKyAg
ICAgICAgICAgICAgICBicmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1
ZUdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHRha2VuKTsKICAgICAgICAgICAgIH0K
ICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3Bl
Y0Jvb2xlYW4pIHsKQEAgLTIzOTEsNyArMjM5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHVzZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5v
ZGUsIDApKTsKICAgICAgICAgICAgIGluZGV4LnVzZSgpOwogCi0gICAgICAgICAgICBtX2ppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCByZXN1bHRH
UFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMxMDEsMTIgKzMxMDEsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgb3BlcmFuZEdQUiA9IG9wZXJhbmQuZ3By
KCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CiAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICBkb25lLmFwcGVuZCht
X2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJbW0z
Mig0KSkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6
RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJbW0zMigxKSkpOwogICAgICAgICBkb25lLmFwcGVu
ZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJ
bW0zMigyKSkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFs
dWVGYWxzZSksIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAg
ICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMy
MSw3ICszMzIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsgLy8gRklYTUU6IFdlIGNvdWxk
IHJldXNlLCBidXQgb24gc3BlY3VsYXRpb24gZmFpbCB3b3VsZCBuZWVkIHJlY292ZXJ5IHRvIHJl
c3RvcmUgdGFnIChha2luIHRvIGFkZCkuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0
Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBtX2ppdC54b3I2
NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHQu
Z3ByKCkpOworICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZh
bHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAg
ICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwg
U3BlY0Jvb2xlYW4sIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklU
Q29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KH4xKSkpKTsKQEAgLTMzNDIsMTMgKzMzNDIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAg
ICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVl
RmFsc2UpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6WmVybywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4ofjEpKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdw
cigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIGlzQm9vbGVhbi5saW5rKCZtX2ppdCk7Ci0gICAg
ICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpA
QCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAK
ICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZXN1bHQuZ3ByKCkp
OwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0Lmdw
cigpKTsKKyAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxz
ZSksIHJlc3VsdC5ncHIoKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCks
IG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKQEAgLTM5MjcsNyAr
MzkyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpF
cXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVl
LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCByZXN1bHQuZ3By
KCkpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAg
ICAgICAKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKQEAgLTM5NTQsNyArMzk1NCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBub3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgZG9uZS5saW5rKCZt
X2ppdCk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1
bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1
ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3By
KCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0zOTY3LDggKzM5NjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAg
bV9qaXQubW92ZSh2YWx1ZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQuYW5kNjQoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlc3VsdEdQUik7Ci0g
ICAgICAgIG1faml0LmNvbXBhcmU2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHRHUFIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0LmFuZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoQ0NhbGxIZWxwZXJz
OjpFcXVhbCwgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpW
YWx1ZU51bGwpLCByZXN1bHRHUFIpOwogCiAgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTc5LDkgKzM5NzksOSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKICAgICAgICAgCiAgICAgICAgIG1faml0
Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LnhvcjY0KEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgIG1faml0LnhvcjY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVG
YWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0LnRlc3Q2NChKSVRDb21waWxlcjo6
WmVybywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KH4xKSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3Rl
ZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5vcjMyKFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwog
ICAgICAgICBicmVhazsKICAgICB9CkBAIC0zOTkwLDggKzM5OTAsOCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
LCBSZXVzZSwgdmFsdWUpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQudGVzdDY0KEpJVENvbXBp
bGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
LCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQudGVzdDY0KEpJVENvbXBpbGVyOjpO
b25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFs
c2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQw
MTksMjEgKzQwMTksMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICBtX2ppdC51cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDUyKSwgcmVzdWx0R1BSKTsK
ICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BSKTsKICAg
ICAgICAgYXV0byBub3ROYW5Ob3JJbmZpbml0eSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVy
OjpOb3RFcXVhbCwgVHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1f
aml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwog
ICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG5vdE5hbk5vcklu
ZmluaXR5LmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQucm91bmRUb3dhcmRaZXJvRG91Ymxl
KHRlbXBGUFIxLCB0ZW1wRlBSMik7CiAgICAgICAgIG1faml0LmNvbXBhcmVEb3VibGUoSklUQ29t
cGlsZXI6OkRvdWJsZUVxdWFsLCB0ZW1wRlBSMSwgdGVtcEZQUjIsIHJlc3VsdEdQUik7Ci0gICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0lu
dDMyLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVU
cnVlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6VmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVt
cCgpKTsKIAogICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5t
b3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CiAKICAg
ICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ1NjAsNyArNDU2MCw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuZXhjZXB0
aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQu
b3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0
Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwogICAg
ICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTUyMDEsMTcgKzUyMDEsMTcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpt
b3ZlVHJ1ZVRvKEdQUlJlZyBncHIpCiB7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFs
dWVUcnVlKSwgZ3ByKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1
ZVRydWUpLCBncHIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjptb3ZlRmFsc2VUbyhHUFJS
ZWcgZ3ByKQogewotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBncHIp
OworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBncHIp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnIGdwcikKIHsK
LSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgZ3ByKTsKKyAgICBtX2pp
dC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKIH0KIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJl
c3VsdEdQUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcwLDcgKzY3MCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBMb2FkMzJQYXlsb2FkQm94SW50OgogICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwg
cGxhbi5ncHIoKSk7Ci0gICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZDMy
UGF5bG9hZENvbnZlcnRUb0ludDUyOgogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7
CkBAIC0xOTMxLDE4ICsxOTMxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1l
bnRUeXBlcygKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewog
ICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgbV9qaXQu
eG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVt
cC5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVGYWxzZSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBG
bHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFs
dWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgZGVmYXVsdDoKQEAgLTI0MDksNyArMjQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwg
bm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbENoZWNrLCBtX2ppdC5icmFuY2hJZkNlbGwoSlNWYWx1
ZVJlZ3MoZ3ByKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEl0J3Mg
bm90IGEgY2VsbDogc28gdHJ1ZSB0dXJucyBpbnRvIDEgYW5kIGFsbCBlbHNlIHR1cm5zIGludG8g
MC4KLSAgICAgICAgICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBn
cHIsIFRydXN0ZWRJbW0zMihWYWx1ZVRydWUpLCByZXN1bHRHcHIpOworICAgICAgICAgICAgICAg
IG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdEdwcik7CiAgICAgICAgICAgICAgICAgY29udmVydGVk
LmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI2MzcsOSArMjYzNyw5IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlz
TnVsbCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKG9wMUdQUiks
IG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywKLSAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8sIG9wMUdQUiwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KFRhZ0JpdEJvb2wpKSkpOworICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgb3AxR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6Qm9vbFRhZykpKTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9
IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQo
VmFsdWVGYWxzZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1f
aml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6VmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUg
b25lID0gMTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25l
KSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CkBA
IC0zMDcyLDcgKzMwNzIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBlZEFycmF5
U3RvCiAgICAgICAgICAgICAgICAgICAgIGZwciwgZ3ByLCBNYWNyb0Fzc2VtYmxlcjo6QnJhbmNo
SWZUcnVuY2F0ZVN1Y2Nlc3NmdWwpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAg
ICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHByb3BlcnR5
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgYm94RG91YmxlKGZwciwgZ3ByKTsKICNlbHNl
CiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKQEAgLTEwNDg1LDcgKzEw
NDg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdlIAogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHJlZ3MsIGVkZ2UsIFNw
ZWNNaXNjLAotICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJl
Z3MuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnQml0VHlwZU90aGVyIHwg
VGFnQml0Qm9vbCB8IFRhZ0JpdFVuZGVmaW5lZCkpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoNjQo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZWdzLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6Ok1pc2NUYWcpKSk7CiAjZWxzZQogICAgIElHTk9SRV9XQVJOSU5HU19C
RUdJTigiZW51bS1jb21wYXJlIikKICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkludDMyVGFn
ID49IEpTVmFsdWU6OlVuZGVmaW5lZFRhZywgIkludDMyVGFnIGlzIGluY2x1ZGVkIGluID49IEpT
VmFsdWU6OlVuZGVmaW5lZFRhZyByYW5nZS4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTM4LDcgKzUzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYm94
IGludDMyIGFuZCBjZWxsIHZhbHVlcyAuLi4KICAgICAgICAgICAgIC8vIGJ1dCBvbiBKU1ZBTFVF
NjQgYm94aW5nIGEgY2VsbCBpcyBhIG5vLW9wIQogICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0
ID09IERhdGFGb3JtYXRJbnQzMikKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5vcjY0
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWcpOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAvLyBTcGlsbCB0aGUgdmFsdWUsIGFuZCByZWNvcmQgaXQgYXMgc3BpbGxlZCBpbiBpdHMg
Ym94ZWQgZm9ybS4KICAgICAgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBKSVRDb21waWxlcjo6
YWRkcmVzc0ZvcihzcGlsbE1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwx
MyArMjYwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBwcmVPcmRlciA9IG1fZ3JhcGguYmxv
Y2tzSW5QcmVPcmRlcigpOwogCiAgICAgICAgIG1fY2FsbEZyYW1lID0gbV9vdXQuZnJhbWVQb2lu
dGVyKCk7Ci0gICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0LmNvbnN0SW50NjQoVGFnVHlw
ZU51bWJlcik7Ci0gICAgICAgIG1fdGFnTWFzayA9IG1fb3V0LmNvbnN0SW50NjQoVGFnTWFzayk7
CisgICAgICAgIG1fbnVtYmVyVGFnID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpOdW1iZXJU
YWcpOworICAgICAgICBtX25vdENlbGxNYXNrID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpO
b3RDZWxsTWFzayk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgQjMga25vd3MgdGhhdCB3
ZSByZWFsbHkgY2FyZSBhYm91dCB0aGUgbWFzayByZWdpc3RlcnMuIFRoaXMgZm9yY2VzIHRoZQog
ICAgICAgICAvLyBjb25zdGFudHMgdG8gYmUgbWF0ZXJpYWxpemVkIGluIHJlZ2lzdGVycy4KLSAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ1R5cGVOdW1iZXItPmtleSgpKTsKLSAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ01hc2stPmtleSgpKTsKKyAgICAgICAg
bV9wcm9jLmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOworICAgICAgICBtX3By
b2MuYWRkRmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCiAgICAg
ICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVy
IHRvIGl0c2VsZiBiZWNhdXNlCiAgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3
YXlzIGdldCBjb2xsZWN0ZWQuCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnZlcnRCb29sZWFuRmFsc2VDYXNlID0gbV9vdXQubmV3
QmxvY2soKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vbkRvdWJsZUNhc2Us
IHVuZGVmaW5lZENhc2UpOwotICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZUlzVW5kZWZpbmVk
ID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVVbmRlZmluZWQpKTsK
KyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc1VuZGVmaW5lZCA9IG1fb3V0LmVxdWFsKHZh
bHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CiAgICAgICAg
ICAgICAgICAgbV9vdXQuYnJhbmNoKHZhbHVlSXNVbmRlZmluZWQsIHVuc3VyZSh1bmRlZmluZWRD
YXNlKSwgdW5zdXJlKHRlc3ROdWxsQ2FzZSkpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8odW5kZWZpbmVkQ2FzZSwgdGVzdE51bGxDYXNlKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAg
ICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8odGVzdE51bGxDYXNlLCBudWxsQ2FzZSk7Ci0g
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1f
b3V0LmNvbnN0SW50NjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVl
SXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFs
dWVOdWxsKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKHZhbHVlSXNOdWxsLCB1bnN1
cmUobnVsbENhc2UpLCB1bnN1cmUodGVzdEJvb2xlYW5UcnVlQ2FzZSkpOwogCiAgICAgICAgICAg
ICAgICAgbV9vdXQuYXBwZW5kVG8obnVsbENhc2UsIHRlc3RCb29sZWFuVHJ1ZUNhc2UpOwpAQCAt
MTc1NCw3ICsxNzU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh0ZXN0Qm9vbGVh
blRydWVDYXNlLCBjb252ZXJ0Qm9vbGVhblRydWVDYXNlKTsKLSAgICAgICAgICAgICAgICBMVmFs
dWUgdmFsdWVJc0Jvb2xlYW5UcnVlID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50
NjQoVmFsdWVUcnVlKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNCb29sZWFuVHJ1
ZSA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVHJ1
ZSkpOwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCh2YWx1ZUlzQm9vbGVhblRydWUsIHVu
c3VyZShjb252ZXJ0Qm9vbGVhblRydWVDYXNlKSwgdW5zdXJlKGNvbnZlcnRCb29sZWFuRmFsc2VD
YXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb252ZXJ0Qm9vbGVhblRy
dWVDYXNlLCBjb252ZXJ0Qm9vbGVhbkZhbHNlQ2FzZSk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBw
cml2YXRlOgogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udmVydEJvb2xlYW5G
YWxzZUNhc2UsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJ
c05vdEJvb2xlYW5GYWxzZSA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0
KFZhbHVlRmFsc2UpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc05vdEJvb2xlYW5G
YWxzZSA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZh
bHVlRmFsc2UpKTsKICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUo
dmFsdWUpLCBtX25vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywgdmFsdWVJc05vdEJvb2xl
YW5GYWxzZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29udmVydGVkRmFsc2Ug
PSBtX291dC5hbmNob3IobV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgICAgIG1f
b3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTE5MTMsNyArMTkxMyw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBw
ZW5kVG8oYm9vbGVhbkNhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21C
bG9jayBib29sZWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJpdE9yKAotICAgICAgICAg
ICAgICAgIG1fb3V0Lnplcm9FeHQodW5ib3hCb29sZWFuKHZhbHVlKSwgSW50NjQpLCBtX3RhZ1R5
cGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KHVuYm94Qm9vbGVhbih2
YWx1ZSksIEludDY0KSwgbV9udW1iZXJUYWcpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29u
dGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yMTUxLDggKzIxNTEsOCBAQCBwcml2YXRlOgogCiAg
ICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50
NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIob3BlcmFuZCk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90
YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBh
dGNocG9pbnQpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAx
OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hS
ZWdpc3RlcnMoKSk7CkBAIC0yMjQyLDggKzIyNDIsOCBAQCBwcml2YXRlOgogICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxlZnQpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocmlnaHQpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJl
clRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAg
ICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9
CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7
CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CkBAIC0zODIx
LDggKzM4MjEsOCBAQCBwcml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rl
cih2YWx1ZSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBW
YWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBp
cyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUg
cmVnaXN0ZXJzLgpAQCAtNDI1Niw3ICs0MjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExW
YWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAK
ICAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBtX25vZGUsIG1f
b3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlplcm8pKTsKLSAgICAgICAgICAgIHNldEpT
VmFsdWUobV9vdXQuY29uc3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgc2V0
SlNWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTI5Miw3ICs1Mjky
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZvdW5kUmVzdWx0ID0g
bV9vdXQuYW5jaG9yKGluZGV4KTsKICAgICAgICAgICAgIHN3aXRjaCAoc2VhcmNoRWxlbWVudEVk
Z2UudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAgICAgICAg
ICAgICAgLy8gRW1wdHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNlIG9mIFRhZ1R5cGVOdW1iZXIu
CisgICAgICAgICAgICAgICAgLy8gRW1wdHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNlIG9mIEpT
VmFsdWU6Ok51bWJlclRhZy4KICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5s
b2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllcywgc3Rv
cmFnZSwgaW5kZXgpKTsKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwo
dmFsdWUsIHNlYXJjaEVsZW1lbnQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxvb3BO
ZXh0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjgyLDcgKzc2ODIsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQu
YXBwZW5kVG8ob3V0T2ZCb3VuZHMsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJs
b2NrIG91dE9mQm91bmRzUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoVmFs
dWVVbmRlZmluZWQpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkp
OwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC04MTIzLDggKzgxMjMsOCBAQCBwcml2
YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ss
IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENl
bGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwog
ICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikgfTsKQEAgLTgyMzksOCArODIzOSw4IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgICAgICAvLyBUaGUgc2h1
ZmZsZXIgbmVlZHMgdGFncy4KLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKQEAgLTg0MjUsOCArODQyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihhcmd1bWVudHMpOwogCi0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVy
VGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAg
ICAgLy8gUHJldmVudCBhbnkgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHVzaW5nIHRoZSBzY3JhdGNo
IHJlZ2lzdGVyLgogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTg1NjAsOCArODU2MCw4IEBAIHByaXZhdGU6
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCh0aGlzQXJnLCBWYWx1ZVJlcDo6V2FybUFueSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywg
VmFsdWVSZXA6Oldhcm1BbnkpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3JXaXRo
UmVwKHBhdGNocG9pbnRBcmd1bWVudHMsIFZhbHVlUmVwOjpXYXJtQW55KTsKLSAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwg
VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1i
ZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKIAogICAg
ICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0g
cHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC04ODY0LDgg
Kzg4NjQsOCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9y
RXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7
Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3Rl
cnNGb3JKU0NhbGwoKSk7CkBAIC05MTIyLDggKzkxMjIsOCBAQCBwcml2YXRlOgogICAgICAgICAK
ICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRs
ZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAg
Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3Rh
Z1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVy
KSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6
cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2Ny
YXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0
ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgICAgICBwYXRjaHBvaW50
LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1
ZUdQUikgfTsKQEAgLTEwNjQ2LDggKzEwNjQ2LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwotICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpKTsKIAogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTEwODg3LDggKzEwODg3LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2
NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwotICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51
bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0g
MjsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpT
b21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVy
U2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0xMTIyOSw3ICsxMTIyOSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhvdXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9t
QmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChW
YWx1ZU51bGwpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBt
X291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTI1NSw3ICsxMTI1NSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291
dC5hcHBlbmRUbyhvdXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9t
QmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChW
YWx1ZU51bGwpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBt
X291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAg
ICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBw
ZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMjI4NSw4ICsxMjI4NSw4IEBAIHBy
aXZhdGU6CiAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0
Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihi
YXNlKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMg
aXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBw
ZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJz
IHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3Ru
ZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTIzNTgsOCArMTIzNTgsOCBAQCBwcml2YXRlOgog
ICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KElu
dDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKLSAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVO
dW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcikp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6
bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC0xMjc0MCw4ICsxMjc0MCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIFJlZlB0cjxTbmlwcGV0PiBkb21KSVQgPSBjbGFzc0luZm8tPmNoZWNrU3Vi
Q2xhc3NTbmlwcGV0KCk7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1f
b3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihjZWxsKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVS
ZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ss
IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKIAogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2lu
OwogICAgICAgICB1bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRPZmZzZXQgPSBwYXRjaHBvaW50LT5u
dW1DaGlsZHJlbigpOwpAQCAtMTI4NjUsOCArMTI4NjUsOCBAQCBwcml2YXRlOgogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIGlmIChkb21KSVQt
PnJlcXVpcmVHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21l
UmVnaXN0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFn
TWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWco
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRF
eGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhj
ZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsKQEAgLTEz
NDY4LDggKzEzNDY4LDggQEAgcHJpdmF0ZToKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRj
aHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZFNvbWVSZWdpc3RlcihsZWZ0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJl
Z2lzdGVyKHJpZ2h0KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
b3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjps
YXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJl
cGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAgICBwYXRjaHBv
aW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwpAQCAtMTM1MzQsOCArMTM1MzQsOCBAQCBw
cml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRj
aHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxl
ZnQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocmlnaHQpOwotICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFn
VHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4
Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IDE7CkBAIC0xMzU4OSw4ICsxMzU4OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFBh
dGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIobGVmdCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihyaWdodCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0
Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwog
ICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxl
ID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKQEAgLTE0
MzIyLDEwICsxNDMyMiwxMCBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHJpbWl0aXZlUmVz
dWx0OwogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZU1vZGUpIHsKICAgICAgICAgY2FzZSBFcXVh
bE51bGw6Ci0gICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwg
bV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51bGwpKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZVJlc3Vs
dCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVs
bCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXF1YWxVbmRlZmluZWQ6Ci0g
ICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29u
c3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0ID0g
bV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmlu
ZWQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVxdWFsTnVsbE9yVW5kZWZp
bmVkOgogICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0ID0gaXNPdGhlcih2YWx1ZSwgcHJvdmVu
VHlwZShlZGdlKSk7CkBAIC0xNDk0Nyw3ICsxNDk0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
b3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKICAgICAgICAgTFZhbHVl
IGlzTnVsbDsKICAgICAgICAgaWYgKHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY090aGVyKQotICAg
ICAgICAgICAgaXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFs
dWVOdWxsKSk7CisgICAgICAgICAgICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgaXNOdWxsID0gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgICAgICBtX291dC5icmFuY2goaXNO
dWxsLCB1bnN1cmUocmVhbGx5T2JqZWN0Q2FzZSksIHVuc3VyZShub3ROdWxsQ2FzZSkpOwpAQCAt
MTU4MDcsMTMgKzE1ODA3LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoTFZhbHVl
IHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0ludDMyT25seSkpCiAgICAgICAgICAg
ICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gbV9vdXQuYWJvdmVPckVxdWFsKGpzVmFs
dWUsIG1fdGFnVHlwZU51bWJlcik7CisgICAgICAgIHJldHVybiBtX291dC5hYm92ZU9yRXF1YWwo
anNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgaXNOb3RJbnQzMihMVmFs
dWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKICAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjSW50MzJP
bmx5KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC5i
ZWxvdyhqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuYmVs
b3coanNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgdW5ib3hJbnQzMihM
VmFsdWUganNWYWx1ZSkKICAgICB7CkBAIC0xNTgyMSwzMiArMTU4MjEsMzIgQEAgcHJpdmF0ZToK
ICAgICB9CiAgICAgTFZhbHVlIGJveEludDMyKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX3RhZ1R5cGVO
dW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIElu
dDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgaXNDZWxsT3JNaXNj
KExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAg
ewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0Nl
bGxDaGVjayB8IFNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAg
IHJldHVybiBtX291dC50ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKKyAg
ICAgICAgcmV0dXJuIG1fb3V0LnRlc3RJc1plcm82NChqc1ZhbHVlLCBtX251bWJlclRhZyk7CiAg
ICAgfQogICAgIExWYWx1ZSBpc05vdENlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0
ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJv
dmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+KFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlzYykpKQog
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25a
ZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnRl
c3ROb25aZXJvNjQoanNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KIAogICAgIExWYWx1ZSB1
bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSwgTFZhbHVlKiB1bmJveGVkQXNJbnQgPSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgTFZhbHVlIGFzSW50ID0gbV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFn
VHlwZU51bWJlcik7CisgICAgICAgIExWYWx1ZSBhc0ludCA9IG1fb3V0LmFkZChqc1ZhbHVlLCBt
X251bWJlclRhZyk7CiAgICAgICAgIGlmICh1bmJveGVkQXNJbnQpCiAgICAgICAgICAgICAqdW5i
b3hlZEFzSW50ID0gYXNJbnQ7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGFzSW50LCBE
b3VibGUpOwogICAgIH0KICAgICBMVmFsdWUgYm94RG91YmxlKExWYWx1ZSBkb3VibGVWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1
ZSwgSW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1f
b3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIEludDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAg
ICAKICAgICBMVmFsdWUganNWYWx1ZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgYm94
ZWRWYWx1ZSkKQEAgLTE1OTM4LDIxICsxNTkzOCwyMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQ2VsbENoZWNr
KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC50ZXN0
Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CisgICAgICAgIHJldHVybiBtX291dC50ZXN0
Tm9uWmVybzY0KGpzVmFsdWUsIG1fbm90Q2VsbE1hc2spOwogICAgIH0KICAgICAKICAgICBMVmFs
dWUgaXNDZWxsKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxU
b3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlw
ZSwgU3BlY0NlbGxDaGVjaykpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICBy
ZXR1cm4gbV9vdXQudGVzdElzWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CisgICAgICAgIHJl
dHVybiBtX291dC50ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV9ub3RDZWxsTWFzayk7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBpc05vdE1pc2MoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlz
UHJvdmVuVmFsdWUodHlwZSwgflNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47
Ci0gICAgICAgIHJldHVybiBtX291dC5hYm92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChUYWdC
aXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgVGFnQml0VW5kZWZpbmVkKSk7CisgICAgICAgIHJl
dHVybiBtX291dC5hYm92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpNaXNjVGFn
KSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc01pc2MoTFZhbHVlIHZhbHVlLCBTcGVjdWxh
dGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkBAIC0xNTk2Nyw3ICsxNTk2Nyw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3Bl
Y0Jvb2xlYW4pKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1f
b3V0LnRlc3ROb25aZXJvNjQoCi0gICAgICAgICAgICBtX291dC5iaXRYb3IoanNWYWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NChWYWx1ZUZhbHNlKSksCisgICAgICAgICAgICBtX291dC5iaXRYb3IoanNW
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZUZhbHNlKSksCiAgICAgICAgICAg
ICBtX291dC5jb25zdEludDY0KH4xKSk7CiAgICAgfQogICAgIExWYWx1ZSBpc0Jvb2xlYW4oTFZh
bHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTE1OTg1
LDcgKzE1OTg1LDcgQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgYm94Qm9vbGVhbihMVmFsdWUgdmFs
dWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc2VsZWN0KAotICAgICAgICAgICAgdmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVUcnVlKSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZUZh
bHNlKSk7CisgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1
ZVRydWUpLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlRmFsc2UpKTsKICAgICB9CiAg
ICAgCiAgICAgTFZhbHVlIGlzTm90T3RoZXIoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0
eXBlID0gU3BlY0Z1bGxUb3ApCkBAIC0xNTk5MywxNiArMTU5OTMsMTYgQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjT3RoZXIp
KQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVx
dWFsKAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKHZhbHVlLCBtX291dC5jb25zdEludDY0KH5U
YWdCaXRVbmRlZmluZWQpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVOdWxs
KSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQofkpT
VmFsdWU6OlVuZGVmaW5lZFRhZykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjpWYWx1ZU51bGwpKTsKICAgICB9CiAgICAgTFZhbHVlIGlzT3RoZXIoTFZhbHVlIHZhbHVl
LCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY090aGVyKSkKICAgICAgICAg
ICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAgICAgICAg
ICAgIG1fb3V0LmJpdEFuZCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCh+VGFnQml0VW5kZWZpbmVk
KSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludDY0KFZhbHVlTnVsbCkpOworICAgICAgICAg
ICAgbV9vdXQuYml0QW5kKHZhbHVlLCBtX291dC5jb25zdEludDY0KH5KU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVOdWxs
KSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc1Byb3ZlblZhbHVlKFNwZWN1bGF0ZWRUeXBl
IHByb3ZlblR5cGUsIFNwZWN1bGF0ZWRUeXBlIHdhbnRlZFR5cGUpCkBAIC0xNzcyMiw4ICsxNzcy
Miw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIG1fY2FsbEZyYW1lOwogICAgIExWYWx1
ZSBtX2NhcHR1cmVkOwotICAgIExWYWx1ZSBtX3RhZ1R5cGVOdW1iZXI7Ci0gICAgTFZhbHVlIG1f
dGFnTWFzazsKKyAgICBMVmFsdWUgbV9udW1iZXJUYWc7CisgICAgTFZhbHVlIG1fbm90Q2VsbE1h
c2s7CiAgICAgCiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9pbnQzMlZh
bHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX3N0cmljdEludDUy
VmFsdWVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIHN0YXRpYyB2b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgc3dpdGNoIChmb3Jt
YXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewogICAgICAgICBqaXQuemVyb0V4dGVu
ZDMyVG9QdHIodmFsdWUsIHZhbHVlKTsKLSAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCB2YWx1ZSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzMsNyAr
NzMsNyBAQCBzdGF0aWMgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogCiAgICAgY2FzZSBE
YXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIodmFsdWUs
IHZhbHVlKTsKLSAgICAgICAgaml0Lm9yMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihW
YWx1ZUZhbHNlKSwgdmFsdWUpOworICAgICAgICBqaXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIApAQCAtMjM3LDggKzIzNyw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAg
IAogICAgIC8vIEdldCB0aGUgY2FsbCBmcmFtZSBhbmQgdGFnIHRoaW5naWVzLgogICAgIC8vIFJl
c3RvcmUgdGhlIGV4aXRpbmcgZnVuY3Rpb24ncyBjYWxsRnJhbWUgdmFsdWUgaW50byBhIHJlZ1Q0
Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVy
KSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBqaXQubW92ZShNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ01hc2spLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVt
YmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIGppdC5tb3ZlKE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICAKICAgICAvLyBEbyBzb21lIHZhbHVlIHByb2ZpbGlu
Zy4KICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fcHJvZmlsZURhdGFGb3JtYXQgIT0gRGF0
YUZvcm1hdE5vbmUpIHsKQEAgLTQ1MSwxMSArNDUxLDExIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVT
dHViKAogICAgIH0KIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7Ci0gICAg
ICAgIFJlZ2lzdGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVlU2F2ZXMtPmZpbmQo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgaml0LnN0b3JlNjQoR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJ
bmZvOjpyZWdUMSwgdm1DYWxsZWVTYXZlLT5vZmZzZXQoKSkpOworICAgICAgICBSZWdpc3RlckF0
T2Zmc2V0KiB2bUNhbGxlZVNhdmUgPSB2bUNhbGxlZVNhdmVzLT5maW5kKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNhbGxlZVNh
dmUtPm9mZnNldCgpKSk7CiAKLSAgICAgICAgdm1DYWxsZWVTYXZlID0gdm1DYWxsZWVTYXZlcy0+
ZmluZChHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICBqaXQuc3RvcmU2NChHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJl
Z1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgpKSk7CisgICAgICAgIHZtQ2FsbGVlU2F2ZSA9IHZt
Q2FsbGVlU2F2ZXMtPmZpbmQoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgICAg
IGppdC5zdG9yZTY0KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgpKSk7CiAgICAg
fQogCiAgICAgc2l6ZV90IGJhc2VsaW5lVmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzID0g
YmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxlZUJpdHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbGVlQml0cy5o
CShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbGVlQml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RhdGljIHZvaWQqIGJveFdhc20oV2FzbTo6Q2Fs
bGVlKiBjYWxsZWUpCiAgICAgewotICAgICAgICBDYWxsZWVCaXRzIHJlc3VsdChyZWludGVycHJl
dF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FsbGVlKSB8IFRhZ0Jp
dHNXYXNtKSk7CisgICAgICAgIENhbGxlZUJpdHMgcmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpIHwgSlNWYWx1ZTo6V2FzbVRh
ZykpOwogICAgICAgICBBU1NFUlQocmVzdWx0LmlzV2FzbSgpKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdC5yYXdQdHIoKTsKICAgICB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzV2FzbSgpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAg
cmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9wdHIpICYgVGFnV2FzbU1hc2sp
ID09IFRhZ0JpdHNXYXNtOworICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihtX3B0cikgJiBKU1ZhbHVlOjpXYXNtTWFzaykgPT0gSlNWYWx1ZTo6V2FzbVRhZzsKICNl
bHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgV2FzbTo6Q2FsbGVlKiBhc1dhc21DYWxsZWUoKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKGlzV2FzbSgpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Fz
bTo6Q2FsbGVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fcHRyKSAmIH5UYWdCaXRz
V2FzbSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdhc206OkNhbGxlZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3B0cikgJiB+SlNWYWx1ZTo6V2FzbVRhZyk7CiAg
ICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlI
ZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDIyICsxMTUs
MjIgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogCiB2b2lkIEFz
c2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCiB7Ci0gICAgSnVt
cCBjaGVja0pTSW50MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFi
b3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgYWJvcnRX
aXRoUmVhc29uKEFISXNOb3RKU0ludDMyKTsKICAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsK
IH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIoR1BSUmVnIGdw
cikKIHsKLSAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBK
dW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIGFib3J0V2l0aFJlYXNvbihB
SElzTm90SlNOdW1iZXIpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKIH0KIAogdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdwcikKIHsKLSAg
ICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5j
aFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVx
dWFsLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNO
dW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOwogICAg
IGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNEb3VibGUpOwogICAgIGNoZWNrSlNOdW1iZXIubGlu
ayh0aGlzKTsKQEAgLTEzOCwyMCArMTM4LDIwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRB
c3NlcnRJc0pTRG91YmwKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChH
UFJSZWcgZ3ByKQogewotICAgIEp1bXAgY2hlY2tDZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgSnVtcCBj
aGVja0NlbGwgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RDZWxs
KTsKICAgICBjaGVja0NlbGwubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6
OmppdEFzc2VydFRhZ3NJblBsYWNlKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoNjQoRXF1YWws
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1i
ZXIpKTsKLSAgICBhYm9ydFdpdGhSZWFzb24oQUhUYWdUeXBlTnVtYmVyTm90SW5QbGFjZSk7Cisg
ICAgSnVtcCBvayA9IGJyYW5jaDY0KEVxdWFsLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOworICAgIGFib3J0V2l0aFJlYXNvbihB
SE51bWJlclRhZ05vdEluUGxhY2UpOwogICAgIGJyZWFrcG9pbnQoKTsKICAgICBvay5saW5rKHRo
aXMpOwogICAgIAotICAgIG9rID0gYnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlciwgVHJ1c3RlZEltbTY0KFRhZ01hc2spKTsKLSAgICBhYm9ydFdpdGhSZWFzb24oQUhUYWdN
YXNrTm90SW5QbGFjZSk7CisgICAgb2sgPSBicmFuY2g2NChFcXVhbCwgR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7CisgICAg
YWJvcnRXaXRoUmVhc29uKEFITm90Q2VsbE1hc2tOb3RJblBsYWNlKTsKICAgICBvay5saW5rKHRo
aXMpOwogfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSw4ICs3NTEsNyBAQCB2b2lk
IEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiAKICAgICBub3REb3VibGUubGlu
ayh0aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oVmFsdWVUcnVlKSA9PSBWYWx1ZVRydWUsICIiKTsKLSAgICBjb21wYXJlNjQo
aW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihWYWx1
ZVRydWUpLCByZXN1bHQpOworICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFs
LCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7
CiAjZWxzZQogICAgIG1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMy
KDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGJyYW5jaElmTm90Qm9vbGVhbih2YWx1ZSwg
SW52YWxpZEdQUlJlZykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJs
eUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2Vt
Ymx5SGVscGVycy5oCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTAgKzMzNCwxMCBA
QCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTTY0KQotICAg
ICAgICBwdXNoUGFpcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnRh
Z01hc2tSZWdpc3Rlcik7CisgICAgICAgIHB1c2hQYWlyKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlCi0gICAgICAgIHB1c2go
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcHVzaChHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpOworICAgICAgICBwdXNoKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KTsKKyAgICAgICAgcHVzaChHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbmRpZgog
ICAgICAgICBlbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogI2VuZGlmCkBAIC0z
NTIsMTAgKzM1MiwxMCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaWYg
Q1BVKEFSTTY0KQotICAgICAgICBwb3BQYWlyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcG9wUGFpcihHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZQot
ICAgICAgICBwb3AoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgcG9wKEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIHBvcChHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcG9wKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
ICNlbmRpZgogI2VuZGlmCiAgICAgfQpAQCAtNDUyLDggKzQ1Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ1R5
cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICBvclB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFRhZ0JpdFR5cGVPdGhlciksIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAg
ICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyks
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgb3JQdHIoTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpPdGhlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbmRpZgogICAgIH0KIApA
QCAtNzAxLDggKzcwMSw4IEBAIHB1YmxpYzoKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAg
ICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZywgVHJ1c3RlZEltbTY0KFRhZ01h
c2spKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChO
b25aZXJvLCByZWcsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzaykpOwogI2Vsc2UK
ICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSk7CkBAIC03MjIsOCArNzIyLDggQEAgcHVibGljOgogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0g
ICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBUcnVzdGVkSW1tNjQoVGFnTWFz
aykpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8s
IHJlZywgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7CiAjZWxzZQogICAgICAg
ICBVTlVTRURfUEFSQU0obW9kZSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKQEAgLTc0
Miw4ICs3NDIsOCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
IG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0gICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+
VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworICAgICAgICBhbmQ2NChUcnVz
dGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1
cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51
bGwpKTsKICNlbHNlCiAgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRhZ0dQUigp
LCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCB0ZW1wR1BSLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOwpAQCAtNzU0LDggKzc1NCw4IEBAIHB1YmxpYzoK
ICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1w
R1BSKTsKLSAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1w
R1BSKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6
VW5kZWZpbmVkVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwogI2Vsc2UKICAg
ICAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpOdWxsVGFnKSk7CkBAIC03NjYsOCArNzY2LDggQEAgcHVibGljOgogICAgIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFs
LCBncHIsIFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6TnVtYmVyVGFnKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0obW9kZSk7
CiAgICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKTsKQEAgLTc4Nyw4ICs3ODcsOCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCi0gICAg
ICAgICAgICByZXR1cm4gYnJhbmNoNjQoQmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEJlbG93LCBncHIsIFRydXN0ZWRJ
bW02NChUYWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoQmVsb3cs
IGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNo
NjQoQmVsb3csIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogI2Vsc2UK
ICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90
RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CkBAIC04MjIsOCAr
ODIyLDggQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoSWZOdW1iZXIoR1BSUmVnIGdwciwgVGFn
UmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKICAgICB7CiAgICAgICAgIGlm
IChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCi0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDY0KE5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBncHIsIFRydXN0ZWRJbW02NChUYWdUeXBl
TnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdwciwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KE5vblplcm8sIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogICAgIH0K
ICNlbmRpZgogICAgIApAQCAtODQ0LDggKzg0NCw4IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5j
aElmTm90TnVtYmVyKEdQUlJlZyBncHIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdS
ZWdpc3RlcnMpCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQot
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgZ3By
LCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1i
ZXJUYWcpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODUzLDggKzg1Myw4IEBAIHB1YmxpYzoKICAg
ICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lz
dGVycykKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVncy5ncHIoKSwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3Q2NChaZXJvLCByZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWdzLmdwcigpLCBHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVn
cy5ncHIoKSwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogI2Vsc2UKICAgICAg
ICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoQWJvdmVPckVx
dWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSk7CkBA
IC04NjcsNyArODY3LDcgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEFT
U0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBtb3ZlKGdwciwgdGVtcEdQ
Uik7Ci0gICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1
ZUZhbHNlKSksIHRlbXBHUFIpOworICAgICAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVGYWxzZSksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8s
IHRlbXBHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wR1BSKTsKQEAgLTg5MSw3ICs4OTEsNyBAQCBwdWJs
aWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxp
ZEdQUlJlZyk7CiAgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKLSAgICAgICAgeG9yNjQoVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcEdQUik7Cisg
ICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgdGVtcEdQUik7
CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgdGVtcEdQUiwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKHRlbXBHUFIpOwpAQCAtMTI2NCwxNiArMTI2NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBtb3ZlRG91YmxlVG82NChmcHIsIGdwcik7CiAgICAgICAgIGlmIChtb2RlID09IERvTm90
SGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChUYWdUeXBl
TnVtYmVyKSwgZ3ByKTsKKyAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpO
dW1iZXJUYWcpLCBncHIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN1YjY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgICAgIHN1YjY0KEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgaml0QXNzZXJ0SXNKU0Rv
dWJsZShncHIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogICAgIEZQ
UlJlZyB1bmJveERvdWJsZVdpdGhvdXRBc3NlcnRpb25zKEdQUlJlZyBncHIsIEdQUlJlZyByZXN1
bHRHUFIsIEZQUlJlZyBmcHIpCiAgICAgewotICAgICAgICBhZGQ2NChHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0R1BSKTsKKyAgICAgICAgYWRkNjQoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIsIGdwciwgcmVzdWx0R1BSKTsKICAgICAgICAgbW92ZTY0VG9Eb3Vi
bGUocmVzdWx0R1BSLCBmcHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KQEAgLTEzMTAs
NyArMTMxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGlzSW50MzIubGluayh0aGlz
KTsKICAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoc291cmNlLCB0YXJnZXQpOwotICAgICAgICBv
cjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0KTsKKyAgICAgICAgb3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgdGFyZ2V0KTsKICAgICAgICAgCiAgICAgICAg
IGRvbmUubGluayh0aGlzKTsKICAgICB9CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBib3hCb29sZWFuUGF5bG9hZChHUFJSZWcgYm9vbEdQUiwgR1BSUmVnIHBheWxvYWRH
UFIpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0z
MihWYWx1ZUZhbHNlKSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7CisgICAgICAgIGFkZDMyKFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7CiAjZWxz
ZQogICAgICAgICBtb3ZlKGJvb2xHUFIsIHBheWxvYWRHUFIpOwogI2VuZGlmCkBAIC0xMzUzLDcg
KzEzNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBib3hCb29sZWFuUGF5bG9hZChib29sIHZhbHVl
LCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAg
bW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSArIHZhbHVlKSwgcGF5bG9hZEdQUik7CisgICAg
ICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UgKyB2YWx1ZSksIHBheWxv
YWRHUFIpOwogI2Vsc2UKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIodmFsdWUpLCBwYXlsb2Fk
R1BSKTsKICNlbmRpZgpAQCAtMTM4MCw5ICsxMzgwLDkgQEAgcHVibGljOgogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgICAgIGlmIChtb2RlID09IERvTm90SGF2ZVRhZ1JlZ2lzdGVycykgewogICAg
ICAgICAgICAgbW92ZShpbnRHUFIsIGJveGVkUmVncy5ncHIoKSk7Ci0gICAgICAgICAgICBvcjY0
KFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgYm94ZWRSZWdzLmdwcigpKTsKKyAgICAgICAg
ICAgIG9yNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIGJveGVkUmVncy5ncHIo
KSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsIGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsKKyAgICAgICAgICAgIG9yNjQo
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsKICNl
bHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICAgICAgbW92ZShpbnRHUFIsIGJv
eGVkUmVncy5wYXlsb2FkR1BSKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7
IFVJTlRfTUFYIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJl
Y292ZXJ5PiByZWdpc3RlcnM7Ci0gICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BS
UmVnIH07CisgICAgR1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyIHsgSW52YWxpZEdQUlJlZyB9Owog
CiAgICAgdm9pZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
cjY0LmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCwxMSArODgsMTEgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAgICAgIGNh
Y2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksCiAgICAgICAgICAgICAgICAgY2FjaGVkUmVj
b3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CiAgICAgICAgICAgICBtX2xvY2tlZFJlZ2lzdGVycy5z
ZXQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7Ci0gICAgICAgICAgICBpZiAodHJ5
QWNxdWlyZVRhZ1R5cGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KG1fdGFn
VHlwZU51bWJlciwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CisgICAgICAgICAg
ICBpZiAodHJ5QWNxdWlyZU51bWJlclRhZ1JlZ2lzdGVyKCkpCisgICAgICAgICAgICAgICAgbV9q
aXQub3I2NChtX251bWJlclRhZ1JlZ2lzdGVyLCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmdw
cigpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8g
ZG8gdGhpcyB0aGUgaGFyZCB3YXkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksCisgICAgICAgICAgICAgICAgbV9q
aXQub3I2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyks
CiAgICAgICAgICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9sb2NrZWRSZWdpc3RlcnMuY2xlYXIoY2FjaGVk
UmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBDYWxs
RnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICBjYXNlIERhdGFGb3JtYXRC
b29sZWFuOgogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiICAgKiBCb3hpbmcgIiwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKSk7Ci0gICAgICAgICAg
ICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLAor
ICAgICAgICAgICAgbV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZUZhbHNlKSwKICAgICAgICAgICAgICAgICBjYWNoZWRSZWNvdmVyeS5yZWNvdmVy
eSgpLmdwcigpKTsKICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnNldFJlY292ZXJ5KAogICAg
ICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5
KCkuZ3ByKCksIERhdGFGb3JtYXRKUykpOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBDYWxs
RnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAgbV9qaXQucHVyaWZ5
TmFOKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZnByKCkpOwogICAgICAgICAgICAgbV9qaXQu
bW92ZURvdWJsZVRvNjQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5mcHIoKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgICAgIG1fbG9ja2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIpOwotICAgICAg
ICAgICAgaWYgKHRyeUFjcXVpcmVUYWdUeXBlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgbV9q
aXQuc3ViNjQobV90YWdUeXBlTnVtYmVyLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKHRy
eUFjcXVpcmVOdW1iZXJUYWdSZWdpc3RlcigpKQorICAgICAgICAgICAgICAgIG1faml0LnN1YjY0
KG1fbnVtYmVyVGFnUmVnaXN0ZXIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgbV9qaXQuc3ViNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdU
eXBlTnVtYmVyKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIHJlc3VsdEdQUik7
CiAgICAgICAgICAgICBtX2xvY2tlZFJlZ2lzdGVycy5jbGVhcihyZXN1bHRHUFIpOwogICAgICAg
ICAgICAgdXBkYXRlUmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnksIFZhbHVlUmVjb3Zlcnk6OmluR1BS
KHJlc3VsdEdQUiwgRGF0YUZvcm1hdEpTKSk7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKQEAg
LTM0OSwxOCArMzQ5LDE4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShD
YWMKICAgICBBU1NFUlQobV9yZWdpc3RlcnNbd2FudGVkUmVnXSA9PSAmY2FjaGVkUmVjb3Zlcnkp
OwogfQogICAgIAotYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5cGVOdW1i
ZXIoKQorYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZU51bWJlclRhZ1JlZ2lzdGVy
KCkKIHsKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCisgICAgaWYg
KG1fbnVtYmVyVGFnUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBtX3RhZ1R5cGVOdW1iZXIgPSBnZXRGcmVlR1BSKCk7CisgICAgbV9udW1iZXJU
YWdSZWdpc3RlciA9IGdldEZyZWVHUFIoKTsKIAotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgPT0g
SW52YWxpZEdQUlJlZykKKyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciA9PSBJbnZhbGlkR1BS
UmVnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xvY2tlZFJlZ2lzdGVycy5zZXQo
bV90YWdUeXBlTnVtYmVyKTsKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQoVGFnVHlwZU51bWJlciksIG1fdGFnVHlwZU51bWJlcik7CisgICAgbV9sb2NrZWRSZWdp
c3RlcnMuc2V0KG1fbnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIG1faml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBtX251bWJlclRhZ1JlZ2lz
dGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw5ICs3OSw5IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxl
cihDQ2EKICAgICAgICAgICAgIGFkZE5ldyhyZWcuZnByKCksIGRhdGEucmVnaXN0ZXJzW3JlZ10p
OwogICAgIH0KIAotICAgIG1fdGFnVHlwZU51bWJlciA9IGRhdGEudGFnVHlwZU51bWJlcjsKLSAg
ICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCi0gICAgICAgIGxvY2tHUFIo
bV90YWdUeXBlTnVtYmVyKTsKKyAgICBtX251bWJlclRhZ1JlZ2lzdGVyID0gZGF0YS5udW1iZXJU
YWdSZWdpc3RlcjsKKyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVn
KQorICAgICAgICBsb2NrR1BSKG1fbnVtYmVyVGFnUmVnaXN0ZXIpOwogI2VuZGlmCiB9CiAKQEAg
LTIxNiw4ICsyMTYsOCBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpkdW1wKFByaW50U3RyZWFt
CiAgICAgaWYgKG1fbmV3RnJhbWVPZmZzZXQpCiAgICAgICAgIG91dC5wcmludCgiICAgTmV3IGZy
YW1lIG9mZnNldCBpcyAiLCBtX25ld0ZyYW1lT2Zmc2V0LCAiXG4iKTsKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAg
b3V0LnByaW50KCIgICBUYWdUeXBlTnVtYmVyIGlzIGN1cnJlbnRseSBpbiAiLCBtX3RhZ1R5cGVO
dW1iZXIsICJcbiIpOworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFsaWRHUFJS
ZWcpCisgICAgICAgIG91dC5wcmludCgiICAgTnVtYmVyVGFnIGlzIGN1cnJlbnRseSBpbiAiLCBt
X251bWJlclRhZ1JlZ2lzdGVyLCAiXG4iKTsKICNlbmRpZgogfQogCkBAIC02OTgsOCArNjk4LDgg
QEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgfQogCiAjaWYgVVNF
KEpTVkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcgJiYg
bV9uZXdSZWdpc3RlcnNbbV90YWdUeXBlTnVtYmVyXSkKLSAgICAgICAgcmVsZWFzZUdQUihtX3Rh
Z1R5cGVOdW1iZXIpOworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFsaWRHUFJS
ZWcgJiYgbV9uZXdSZWdpc3RlcnNbbV9udW1iZXJUYWdSZWdpc3Rlcl0pCisgICAgICAgIHJlbGVh
c2VHUFIobV9udW1iZXJUYWdSZWdpc3Rlcik7CiAjZW5kaWYKIAogICAgIC8vIEhhbmRsZSAyKSBi
eSBsb2FkaW5nIGFsbCByZWdpc3RlcnMuIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55CkBAIC03MTcs
OCArNzE3LDggQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRH
UFJSZWcpCi0gICAgICAgIHJlbGVhc2VHUFIobV90YWdUeXBlTnVtYmVyKTsKKyAgICBpZiAobV9u
dW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICByZWxlYXNlR1BSKG1f
bnVtYmVyVGFnUmVnaXN0ZXIpOwogI2VuZGlmCiAKICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBo
YXZlIHJlYWQgZXZlcnl0aGluZyB3ZSBjYXJlZCBhYm91dCBmcm9tIHRoZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNpb24gMjUw
MDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MTIsOSArNDEyLDkgQEAgcHJpdmF0ZToKICAgICBSZWdpc3Rlck1h
cDxDYWNoZWRSZWNvdmVyeSo+IG1fcmVnaXN0ZXJzOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBtdXRhYmxlIEdQUlJlZyBtX3RhZ1R5cGVOdW1iZXI7CisgICAgbXV0YWJsZSBHUFJSZWcgbV9u
dW1iZXJUYWdSZWdpc3RlcjsKIAotICAgIGJvb2wgdHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIoKTsK
KyAgICBib29sIHRyeUFjcXVpcmVOdW1iZXJUYWdSZWdpc3RlcigpOwogI2VuZGlmCiAKICAgICAv
LyBUaGlzIHN0b3JlcywgZm9yIGVhY2ggcmVnaXN0ZXIsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBy
ZWNvdmVyeQpAQCAtNDQ4LDExICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYgKCFub25UZW1wICYmIG1fdGFnVHlwZU51bWJlciAh
PSBJbnZhbGlkR1BSUmVnICYmIGNoZWNrKFJlZyB7IG1fdGFnVHlwZU51bWJlciB9KSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1fbG9ja2VkUmVnaXN0ZXJzLmdldChtX3RhZ1R5cGVOdW1iZXIpKTsK
LSAgICAgICAgICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmNsZWFyKG1fdGFnVHlwZU51bWJlcik7Ci0g
ICAgICAgICAgICBub25UZW1wID0gUmVnIHsgbV90YWdUeXBlTnVtYmVyIH07Ci0gICAgICAgICAg
ICBtX3RhZ1R5cGVOdW1iZXIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoIW5vblRlbXAg
JiYgbV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnICYmIGNoZWNrKFJlZyB7IG1f
bnVtYmVyVGFnUmVnaXN0ZXIgfSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xvY2tlZFJlZ2lz
dGVycy5nZXQobV9udW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgbV9sb2NrZWRSZWdp
c3RlcnMuY2xlYXIobV9udW1iZXJUYWdSZWdpc3Rlcik7CisgICAgICAgICAgICBub25UZW1wID0g
UmVnIHsgbV9udW1iZXJUYWdSZWdpc3RlciB9OworICAgICAgICAgICAgbV9udW1iZXJUYWdSZWdp
c3RlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICByZXR1cm4g
bm9uVGVtcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAy
NTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQwOCw4ICs0MDgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSByZWdpc3Rl
cnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBj
YWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgIHN0YXRpYyBjb25zdGV4
cHIgR1BSUmVnIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6
cjE1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyID0gWDg2
UmVnaXN0ZXJzOjpyMTQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tS
ZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVy
cy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4
OwpAQCAtNTE1LDggKzUxNSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBzdGQ6OmFycmF5PEdQUlJlZywgMz4gcmVzZXJ2ZWRSZWdpc3RlcnMgeyB7CiAgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAgICAgICAg
ICBudW1iZXJUYWdSZWdpc3RlciwKKyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIsCiAg
ICAgICAgIH0gfTsKICAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAgIH0KQEAg
LTYwOCw4ICs2MDgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2gg
dGhlIGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVS
ZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJl
ZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3OwotICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBBUk02NFJl
Z2lzdGVyczo6eDI3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVn
aXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVn
IGRhdGFUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2Vt
Ymxlcjo6bWVtb3J5VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCkBA
IC02MzcsOCArNjM3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJl
Z0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OyAvLyBVc2Vk
IGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRS
ZWdpc3RlcnM6OngyNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02
NFJlZ2lzdGVyczo6eDI3OyAvLyB0YWdUeXBlTnVtYmVyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBH
UFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gdGFnTWFzaworICAgIHN0YXRp
YyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8vIG51bWJl
clRhZworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVnaXN0ZXJz
Ojp4Mjg7IC8vIG5vdENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhl
IG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJl
Z2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk02
NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJn
dW1lbnRHUFIxID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQpAQCAtNzAzLDggKzcwMyw4
IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8R1BSUmVnLCA0PiBy
ZXNlcnZlZFJlZ2lzdGVycyB7IHsKICAgICAgICAgICAgIGRhdGFUZW1wUmVnaXN0ZXIsCiAgICAg
ICAgICAgICBtZW1vcnlUZW1wUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIsCi0gICAgICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAgICAgICAgICBudW1iZXJU
YWdSZWdpc3RlciwKKyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIsCiAgICAgICAgIH0g
fTsKICAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMjUwMDcy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
U2xvdyhjb25zdCAKIAogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKICAg
ICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7Ci0gICAgICAg
ICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAgICAgIGFk
ZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBtb3ZlNjRUb0RvdWJs
ZShyZWdUMCwgZnBSZWdUMCk7CiAKICAgICAgICAgICAgIGludDMyX3Qgb3AyaW1tID0gZ2V0Q29u
c3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSklU
OjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKIAogICAgICAgICBpZiAoc3VwcG9ydHNG
bG9hdGluZ1BvaW50KCkpIHsKICAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51
bWJlcihyZWdUMSk7Ci0gICAgICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJl
Z1QxKTsKKyAgICAgICAgICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMSk7CiAgICAg
ICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CiAKICAgICAgICAgICAgIGlu
dDMyX3Qgb3AxaW1tID0gZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkuYXNJbnQzMigpOwpAQCAtMzQ0
LDggKzM0NCw4IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKICAg
ICAgICAgSnVtcCBmYWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QwKTsKICAgICAgICAgSnVt
cCBmYWlsMiA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgSnVtcCBmYWlsMyA9
IGJyYW5jaElmSW50MzIocmVnVDEpOwotICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHJlZ1QwKTsKLSAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7
CisgICAgICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CisgICAgICAgIGFkZDY0
KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJlZ1Qw
LCBmcFJlZ1QwKTsKICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVnVDEsIGZwUmVnVDEpOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdEFuZEdlbmVyYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRCaXRBbmRHZW5lcmF0b3Iu
Y3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJp
dEFuZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEpJVEJp
dEFuZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgIGppdC5hbmQ2NChDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQz
MigpKSwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICAgICAgICAgIGlmIChjb25zdE9wci5h
c0NvbnN0SW50MzIoKSA+PSAwKQotICAgICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAg
ICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgbV9yZXN1bHQucGF5bG9h
ZEdQUigpKTsKICNlbHNlCiAgICAgICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0z
Mihjb25zdE9wci5hc0NvbnN0SW50MzIoKSksIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JHZW5lcmF0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEJpdE9yR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSklU
Qml0T3JHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgKICAgICAgICAgaWYgKGNvbnN0T3ByLmFz
Q29uc3RJbnQzMigpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5vcjMy
KENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5w
YXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgaml0Lm9yNjQo
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZWxz
ZQogICAgICAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0Nv
bnN0SW50MzIoKSksIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0WG9yR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdFhvckdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0WG9yR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSklUQml0WG9yR2VuZXJh
dG9yOjpnZW5lcmF0ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3ModmFyLCBtX3Jl
c3VsdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjMyKENDYWxsSGVscGVy
czo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkp
OwotICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVz
dWx0LnBheWxvYWRHUFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogI2Vsc2UKICAgICAgICAgaml0LnhvcjMy
KENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5w
YXlsb2FkR1BSKCkpOwogI2VuZGlmCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSklUQml0WG9yR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3MobV9sZWZ0
LCBtX3Jlc3VsdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjY0KG1fcmln
aHQucGF5bG9hZEdQUigpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwotICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7
CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5w
YXlsb2FkR1BSKCkpOwogI2Vsc2UKICAgICAgICAgaml0LnhvcjMyKG1fcmlnaHQucGF5bG9hZEdQ
UigpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBA
QCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhCiB7CiAgICAgQ2FsbEZy
YW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7CiAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJn
cyA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyOworICAgIHNodWZmbGVEYXRhLm51bWJlclRhZ1Jl
Z2lzdGVyID0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgc2h1ZmZsZURhdGEubnVt
TG9jYWxzID0KICAgICAgICAgYnl0ZWNvZGUubV9hcmd2IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5k
UEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6ZShieXRl
Y29kZS5tX2FyZ2MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2
R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNCw3ICsxMjQsNyBAQCB2
b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAgaml0Lm1vdmVEb3Vi
bGVUbzY0KG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAg
bm90RG91YmxlWmVybyA9IGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBt
X3NjcmF0Y2hHUFIpOwogCi0gICAgaml0Lm1vdmUoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIGppdC5tb3ZlKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fZW5kSnVtcExpc3Qu
YXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDI1MDA3MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NzEsNyArNjcxLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZEludDMyVG9Eb3Vi
bGUoaQogCiBBTFdBWVNfSU5MSU5FIEpJVDo6UGF0Y2hhYmxlSnVtcCBKSVQ6OmVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgcmV0dXJuIHBhdGNoYWJsZUJy
YW5jaDY0KEJlbG93LCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgcmV0dXJuIHBh
dGNoYWJsZUJyYW5jaDY0KEJlbG93LCByZWcsIG51bWJlclRhZ1JlZ2lzdGVyKTsKIH0KIAogQUxX
QVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQgcmVn
MSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVExlZnRTaGlmdEdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVExlZnRTaGlm
dEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxv
YWRHUFIoKSk7CisgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIG1fcmVz
dWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQ
YXRoKEMKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9u
ZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOyAvLyBCb3ggdGhlIGRvdWJsZS4KKyAgICAg
ICAgaml0LnN1YjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2Fk
R1BSKCkpOyAvLyBCb3ggdGhlIGRvdWJsZS4KICNlbHNlCiAgICAgICAgIGppdC5ib3hEb3VibGUo
bV9sZWZ0RlBSLCBtX3Jlc3VsdCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgbm90
TmVnYXRpdmVaZXJvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAog
ICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihWYWx1ZVRydWUpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVUcnVlKSwgcmVnVDApOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIGVtaXRQdXRW
aXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9pc191bmRlZmluZWQoY29uc3QgSW5zCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1
ZSwgcmVnVDApOwogICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsKIAotICAg
IGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJl
Z1QwKTsKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVVbmRlZmluZWQpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAog
ICAgIGlzQ2VsbC5saW5rKHRoaXMpOwpAQCAtMjUxLDggKzI1MSw4IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGMKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHJlZ1QwKTsKIAotICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVk
KSwgcmVnVDApOwotICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1
ZU51bGwpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZWdUMCk7CisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OlZhbHVlTnVsbCksIHJlZ1QwKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpT
VmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpA
QCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5z
dHIKICAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQub2Zmc2V0KCk7CiAgICAgCiAg
ICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIHhvcjY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlZ1QwKTsKKyAgICB4
b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsKICAgICB0ZXN0
NjQoWmVybywgcmVnVDAsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpLCBy
ZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydQogICAgIGludCB2YWx1ZSA9IGJ5dGVj
b2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHZhbHVlLCByZWdUMCk7Ci0gICAgdGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIG51bWJlclRhZ1Jl
Z2lzdGVyLCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdU
MCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CkBAIC0yOTgsNyArMjk4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29ucwogICAgIEp1bXAg
ZG9uZSA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1
c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsK
IAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKFZhbHVl
RmFsc2UpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxz
ZSksIHJlZ1QwKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCk7CkBAIC0zNzMsOSArMzczLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNv
bnN0IEluc3RydWN0aW9uKgogICAgIC8vIEludmVydCBhZ2FpbnN0IEpTVmFsdWUoZmFsc2UpOyBp
ZiB0aGUgdmFsdWUgd2FzIHRhZ2dlZCBhcyBhIGJvb2xlYW4sIHRoZW4gYWxsIGJpdHMgd2lsbCBi
ZQogICAgIC8vIGNsZWFyIG90aGVyIHRoYW4gdGhlIGxvdyBiaXQgKHdoaWNoIHdpbGwgYmUgMCBv
ciAxIGZvciBmYWxzZSBvciB0cnVlIGlucHV0cyByZXNwZWN0aXZlbHkpLgogICAgIC8vIFRoZW4g
aW52ZXJ0IGFnYWluc3QgSlNWYWx1ZSh0cnVlKSwgd2hpY2ggd2lsbCBhZGQgdGhlIHRhZyBiYWNr
IGluLCBhbmQgZmxpcCB0aGUgbG93IGJpdC4KLSAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CisgICAgeG9yNjQoVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
VGVzdFB0cihOb25aZXJvLCByZWdUMCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KH4xKSkpKTsKLSAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFs
dWVUcnVlKSksIHJlZ1QwKTsKKyAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVU
cnVlKSwgcmVnVDApOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2Rz
dC5vZmZzZXQoKSk7CiB9CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVx
X251bGwoY29uc3QgSW5zdHJ1YwogCiAgICAgLy8gTm93IGhhbmRsZSB0aGUgaW1tZWRpYXRlIGNh
c2VzIC0gdW5kZWZpbmVkICYgbnVsbAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7Ci0gICAg
YW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7CisgICAgYW5kNjQo
VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZWdUMCk7CiAgICAgYWRkSnVt
cChicmFuY2g2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNO
dWxsKCkpKSksIHRhcmdldCk7ICAgICAgICAgICAgCiAKICAgICBpc05vdE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQubGluayh0aGlzKTsKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbmVxX251bGwoY29uc3QgSW5zdHJ1CiAKICAgICAvLyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlh
dGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsK
LSAgICBhbmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsKKyAgICBh
bmQ2NChUcnVzdGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsKICAgICBh
ZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVu
Y29kZShqc051bGwoKSkpKSwgdGFyZ2V0KTsgICAgICAgICAgICAKIAogICAgIHdhc05vdEltbWVk
aWF0ZS5saW5rKHRoaXMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p1
bmRlZmluZWRfb3JfbnVsbChjb24KIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUs
IHJlZ1QwKTsKIAotICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgcmVn
VDApOworICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVn
VDApOwogICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpLCB0YXJnZXQpOwogfQogCkBAIC00NjIsNyArNDYyLDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjbwogCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogCi0gICAgYW5kNjQoVHJ1c3RlZEltbTMy
KH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1Zh
bHVlOjpVbmRlZmluZWRUYWcpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2g2NChOb3RFcXVh
bCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSksIHRhcmdl
dCk7CiB9CiAKQEAgLTgzMiw4ICs4MzIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNv
bnN0IEluc3RydWN0CiAKICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAgYW5kNjQo
VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7Ci0gICAgY29tcGFyZTY0KEVx
dWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlZ1QwKTsKKyAgICBhbmQ2NChU
cnVzdGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsKKyAgICBjb21wYXJl
NjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVOdWxsKSwgcmVnVDAp
OwogCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAgICAgd2FzTm90TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwpAQCAtODY1LDggKzg2NSw4IEBAIHZvaWQgSklUOjpl
bWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWMKIAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhp
cyk7CiAKLSAgICBhbmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsK
LSAgICBjb21wYXJlNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwg
cmVnVDApOworICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwg
cmVnVDApOworICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZU51bGwpLCByZWdUMCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlz
KTsKICAgICB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2
aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBKSVQ6Okp1bXBMaXN0
IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzCiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KHJlZ1QzLCBmcFJlZ1QwKTsKICAgICAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKICAgICAgICAg
bm90SW50LmxpbmsodGhpcyk7Ci0gICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
cmVnVDMpOworICAgICAgICBhZGQ2NChudW1iZXJUYWdSZWdpc3RlciwgcmVnVDMpOwogICAgICAg
ICBtb3ZlNjRUb0RvdWJsZShyZWdUMywgZnBSZWdUMCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQoYnJhbmNoSWZOYU4oZnBSZWdUMCkpOwogICAgICAgICByZWFkeS5saW5rKHRoaXMpOwpAQCAt
MTkwMiw3ICsxOTAyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQ
dQogICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRoaXMpOwog
ICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3ROdW1iZXIoZWFybHlTY3JhdGNoKSk7Ci0g
ICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOworICAgIGFkZDY0
KG51bWJlclRhZ1JlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOwogICAgIG1vdmU2NFRvRG91YmxlKGVh
cmx5U2NyYXRjaCwgZnBSZWdUMCk7CiAgICAgcmVhZHkubGluayh0aGlzKTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsNyArNTcsNyBAQCB2
b2lkIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgaml0LnVyc2hpZnQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKHNoaWZ0
QW1vdW50KSwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBtX3Jlc3Vs
dC5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICAgICAgfQogCkBA
IC0xMTYsNyArMTE2LDcgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZh
cwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBqaXQudXJzaGlmdDMyKHJpZ2h0T3BlcmFuZEdQ
UiwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBq
aXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRH
UFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChtX2xlZnRPcGVyYW5kLmlz
Q29uc3RJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEs
NyArNjEsNyBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyCiBSZWdp
c3RlclNldCBSZWdpc3RlclNldDo6cnVudGltZVRhZ1JlZ2lzdGVycygpCiB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICByZXR1cm4gUmVnaXN0ZXJTZXQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJldHVybiBSZWdpc3RlclNl
dChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
cik7CiAjZWxzZQogICAgIHJldHVybiB7IH07CiAjZW5kaWYKQEAgLTE3OCwxNSArMTc4LDE1IEBA
IFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2EKICNpZiAhT1MoV0lORE9X
UykKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMg
PT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQ
UkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M0KTsKICNlbHNlCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NT
NiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5m
bzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlciwg
IiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTE5NSw4ICsxOTUsOCBAQCBSZWdpc3RlclNldCBS
ZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhCiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgcmVzdWx0
LnNldChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsK
LSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkg
PT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BS
SW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxpZiBD
UFUoTUlQUykKQEAgLTIxNiwyMiArMjE2LDIyIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0Ojpk
ZmdDYWxsZWVTYXZlUmUKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIEFTU0VSVChH
UFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCiAgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0g
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKICNl
bGlmIENQVShBUk1fVEhVTUIyKQogI2VsaWYgQ1BVKEFSTTY0KQotICAgIEFTU0VSVChHUFJJbmZv
OjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGlj
X2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIi
KTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbGlmIENQVShNSVBTKQpAQCAtMjQ5LDgg
KzI0OSw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmUKICAgICBy
ZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzEpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5m
bzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJU
KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0YXRp
Y19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAi
Iik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2Vs
bE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAg
ICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxpZiBDUFUoQVJNNjQpCkBAIC0yNjMs
OCArMjYzLDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZQogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJl
Z0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIEFTU0VSVChHUFJJ
bmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NF
UlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
ICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwog
ICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQUkluZm86
OmZwUmVnQ1MwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRU
aHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEwICsx
MTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAg
IG1vdmVEb3VibGVUbzY0KHNyYywgcmVnVDApOwogICAgICAgICAgICAgSnVtcCB6ZXJvID0gYnJh
bmNoVGVzdDY0KFplcm8sIHJlZ1QwKTsKLSAgICAgICAgICAgIHN1YjY0KHRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgcmVnVDApOworICAgICAgICAgICAgc3ViNjQobnVtYmVyVGFnUmVnaXN0ZXIsIHJl
Z1QwKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAgICAgICAgIHplcm8u
bGluayh0aGlzKTsKLSAgICAgICAgICAgIG1vdmUodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdU
MCk7CisgICAgICAgICAgICBtb3ZlKG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAg
ICAgICBkb25lLmxpbmsodGhpcyk7CiAjZWxzZQogICAgICAgICAgICAgbW92ZURvdWJsZVRvSW50
cyhzcmMsIHJlZ1QwLCByZWdUMSk7CkBAIC0xODIsNyArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgdGFnUmV0dXJuQXNJbnQzMigpCiAgICAgICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQotICAgICAgICAgICAgb3I2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsK
KyAgICAgICAgICAgIG9yNjQobnVtYmVyVGFnUmVnaXN0ZXIsIHJlZ1QwKTsKICNlbHNlCiAgICAg
ICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHJlZ1QxKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3Jz
LmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVu
a0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDkgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVAogICAgIAogI2lmIFVTRShKU1ZBTFVF
NjQpCiAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAgLy8gVGFp
bCBjYWxscyBjb3VsZCBoYXZlIGNsb2JiZXJlZCB0aGUgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVy
IGJlY2F1c2UgdGhleQorICAgICAgICAvLyBUYWlsIGNhbGxzIGNvdWxkIGhhdmUgY2xvYmJlcmVk
IHRoZSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyIGJlY2F1c2UgdGhleQogICAgICAgICAv
LyByZXN0b3JlIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMgYmVmb3JlIGdldHRoaW5nIGhlcmUuIFNv
LCBsZXQncyBtYXRlcmlhbGl6ZQotICAgICAgICAvLyB0aGUgVGFnTWFzayBpbiBhIHRlbXAgcmVn
aXN0ZXIgYW5kIHVzZSB0aGUgdGVtcCBpbnN0ZWFkLgorICAgICAgICAvLyB0aGUgTm90Q2VsbE1h
c2sgaW4gYSB0ZW1wIHJlZ2lzdGVyIGFuZCB1c2UgdGhlIHRlbXAgaW5zdGVhZC4KICAgICAgICAg
c2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoR1BSSW5mbzo6cmVnVDAsIERvTm90
SGF2ZVRhZ1JlZ2lzdGVycykpOwogICAgIH0gZWxzZQogICAgICAgICBzbG93Q2FzZS5hcHBlbmQo
aml0LmJyYW5jaElmTm90Q2VsbChHUFJJbmZvOjpyZWdUMCkpOwpAQCAtMjU3LDcgKzI1Nyw3IEBA
IHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgICAgICAvLyBXZSdyZSBjb21pbmcgZnJvbSBhIHNwZWNpYWxpemVkIHRodW5rIHRo
YXQgaGFzIHNhdmVkIHRoZSBwcmlvciB0YWcgcmVnaXN0ZXJzJyBjb250ZW50cy4KICAgICAgICAg
Ly8gUmVzdG9yZSB0aGVtIG5vdy4KLSAgICAgICAgaml0LnBvcFBhaXIoSlNJbnRlcmZhY2VKSVQ6
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnRhZ01hc2tSZWdpc3Rlcik7
CisgICAgICAgIGppdC5wb3BQYWlyKEpTSW50ZXJmYWNlSklUOjpudW1iZXJUYWdSZWdpc3Rlciwg
SlNJbnRlcmZhY2VKSVQ6Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2VuZGlmCiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFnczoKQEAgLTQ0NSw3ICs0
NDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyCiAgICAgaml0
Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3Vt
ZW50R1BSMSk7CiAgICAgaml0LmFuZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoc3Rh
Y2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIx
KTsKICAgICBKU0ludGVyZmFjZUpJVDo6SnVtcCBub0V4dHJhU2xvdCA9IGppdC5icmFuY2hUZXN0
MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwot
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQp
LCBleHRyYVRlbXApOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQo
SlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCBleHRyYVRlbXApOwogICAgIEpTSW50ZXJmYWNlSklU
OjpMYWJlbCBmaWxsRXh0cmFTbG90cyhqaXQubGFiZWwoKSk7CiAgICAgaml0LnN0b3JlNjQoZXh0
cmFUZW1wLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpjYWxsRnJh
bWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMiwgSlNJbnRlcmZhY2VKSVQ6
OlRpbWVzRWlnaHQpKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0z
MigxKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CkBAIC00NzYsNyArNDc2LDcgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcgogCiAgICAgLy8gRmlsbCBp
biBhcmd1bWVudEdQUjAgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmluZWQKICAgICBqaXQu
bW92ZShKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIyKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFZhbHVl
VW5kZWZpbmVkKSwgZXh0cmFUZW1wKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgZXh0cmFUZW1wKTsKICAgICBKU0lu
dGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVuZGVmaW5lZExvb3Aoaml0LmxhYmVsKCkpOwogICAgIGpp
dC5zdG9yZTY0KGV4dHJhVGVtcCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFj
ZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpTSW50ZXJmYWNlSklU
OjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZElt
bTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYgogICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGludGVnZXJJc0ludE1pbiA9IGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6
OlNpZ25lZCwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAgLy8gQm94IGFuZCBmaW5pc2guCi0gICAg
aml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7
CisgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1Qw
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lV2l0aEludGVnZXJzID0gaml0Lmp1bXAo
KTsKIAogICAgIC8vIEhhbmRsZSBEb3VibGVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjUgKzEx
Myw2IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIFNUQVRJQ19B
U1NFUlQoVGFnT2Zmc2V0ID09IDQpOwogICAgIFNUQVRJQ19BU1NFUlQoUGF5bG9hZE9mZnNldCA9
PSAwKTsKICNlbmRpZgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgU1RBVElDX0FTU0VSVChK
U1ZhbHVlOjpJbnQzMlRhZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpKTsKLSAgICBTVEFU
SUNfQVNTRVJUKEpTVmFsdWU6OkJvb2xlYW5UYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0y
KSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpOdWxsVGFnID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPigtMykpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPigtNCkpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNWYWx1ZTo6
Q2VsbFRhZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTUpKTsKLSAgICBTVEFUSUNfQVNTRVJU
KEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC02KSk7Ci0g
ICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpEZWxldGVkVmFsdWVUYWcgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KC03KSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpMb3dlc3RUYWcgPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC03KSk7Ci0jZWxzZQotICAgIFNUQVRJQ19BU1NFUlQoVGFn
Qml0VHlwZU90aGVyID09IDB4Mik7Ci0gICAgU1RBVElDX0FTU0VSVChUYWdCaXRCb29sID09IDB4
NCk7Ci0gICAgU1RBVElDX0FTU0VSVChUYWdCaXRVbmRlZmluZWQgPT0gMHg4KTsKLSAgICBTVEFU
SUNfQVNTRVJUKFZhbHVlRW1wdHkgPT0gMHgwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlRmFs
c2UgPT0gKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wpKTsKLSAgICBTVEFUSUNfQVNTRVJU
KFZhbHVlVHJ1ZSA9PSAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IDEpKTsKLSAgICBT
VEFUSUNfQVNTRVJUKFZhbHVlVW5kZWZpbmVkID09IChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRV
bmRlZmluZWQpKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlTnVsbCA9PSBUYWdCaXRUeXBlT3Ro
ZXIpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQ19MT09QKQogICAgIEFTU0VSVChDb2RlQmxvY2s6
OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSA9PSAxKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTA0
LDEyICs1MDQsMTIgQEAgZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihz
aXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCBpbmRleCwgdmFsdWUpCi0gICAgYnFiIHZhbHVlLCB0YWdUeXBlTnVtYmVyLCBzbG93CisgICAg
YnFiIHZhbHVlLCBudW1iZXJUYWcsIHNsb3cKIGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCBpbmRleCwgdmFsdWUpCi0gICAgYnRxbnogdmFsdWUsIHRhZ01hc2ssIHNs
b3cKKyAgICBidHFueiB2YWx1ZSwgbm90Q2VsbE1hc2ssIHNsb3cKIGVuZAogCiBtYWNybyB3cml0
ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCkBAIC01
MjYsNyArNTI2LDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLAog
ZW5kCiAKIG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbEFuZFZhbHVlV2l0aFJlbG9hZChjZWxsLCB2
YWx1ZSwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKLSAgICBidHFueiB2YWx1ZSwgdGFnTWFzaywgLndy
aXRlQmFycmllckRvbmUKKyAgICBidHFueiB2YWx1ZSwgbm90Q2VsbE1hc2ssIC53cml0ZUJhcnJp
ZXJEb25lCiAgICAgYnRxeiB2YWx1ZSwgLndyaXRlQmFycmllckRvbmUKICAgICB3cml0ZUJhcnJp
ZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCiAud3JpdGVCYXJy
aWVyRG9uZToKQEAgLTcyNCw3ICs3MjQsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihvcF9h
cmd1bWVudF9jb3VudCwgT3BBcmd1bWVudENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0s
IHQwCiAgICAgc3ViaSAxLCB0MAotICAgIG9ycSBUYWdUeXBlTnVtYmVyLCB0MAorICAgIG9ycSBU
YWdOdW1iZXIsIHQwCiAgICAgcmV0dXJuKHQwKQogZW5kKQogCkBAIC03MzksNyArNzM5LDcgQEAg
ZW5kKQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fc3JjRHN0LCB0
MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5v
cFRvVGhpc1Nsb3cKKyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc1Nsb3cKICAg
ICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xv
dwogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgbWV0YWRhdGEo
dDIsIHQzKQpAQCAtODA2LDcgKzgwNiw3IEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb25PcChv
cGNvZGVOYW1lLCAKICAgICBsbGludE9wV2l0aFJldHVybihvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1
Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX29w
ZXJhbmQsIHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0cW56
IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCisgICAgICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywg
LmltbWVkaWF0ZQogICAgICAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgICAgICBtb3ZlIDAsIHQw
CiAgICAgICAgIGptcCAuZG9uZQpAQCAtODE3LDcgKzgxNyw3IEBAIG1hY3JvIGVxdWFsTnVsbENv
bXBhcmlzb25PcChvcGNvZGVOYW1lLCAKICAgICAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFs
T2JqZWN0W3QyXSwgdDAsIHQwCiAgICAgICAgIGptcCAuZG9uZQogICAgIC5pbW1lZGlhdGU6Ci0g
ICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+VGFnVW5kZWZp
bmVkLCB0MAogICAgICAgICBjcWVxIHQwLCBWYWx1ZU51bGwsIHQwCiAgICAgLmRvbmU6CiAgICAg
ICAgIGZuKHQwKQpAQCAtODM2LDcgKzgzNiw3IEBAIGVxdWFsTnVsbENvbXBhcmlzb25PcChvcF9u
ZXFfbnVsbCwgT3BOZXEKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxs
LCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6
ZSwgdDEsIHQwKQotICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICBhbmRxIH5UYWdV
bmRlZmluZWQsIHQwCiAgICAgY3FlcSB0MCwgVmFsdWVOdWxsLCB0MAogICAgIG9ycSBWYWx1ZUZh
bHNlLCB0MAogICAgIHJldHVybih0MCkKQEAgLTg1MSwxMiArODUxLDEyIEBAIG1hY3JvIHN0cmlj
dEVxT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAgIG9ycSB0MSwg
dDIKLSAgICAgICAgYnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIHRh
Z1R5cGVOdW1iZXIsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVOdW1iZXIsIC5z
bG93CisgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAgICBicWFlcSB0
MCwgbnVtYmVyVGFnLCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93
CiAgICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5yaWdodE9L
Ci0gICAgICAgIGJ0cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBicWFlcSB0
MSwgbnVtYmVyVGFnLCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAuc2xv
dwogICAgIC5yaWdodE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQog
ICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKQEAgLTg4NSwxMiArODg1LDEyIEBAIG1hY3JvIHN0
cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG8KICAgICAgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZShzaXplLCB0MywgdDEpCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAgIG9ycSB0
MSwgdDIKLSAgICAgICAgYnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAs
IHRhZ1R5cGVOdW1iZXIsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVOdW1iZXIs
IC5zbG93CisgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAgICBicWFl
cSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5z
bG93CiAgICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5yaWdo
dE9LCi0gICAgICAgIGJ0cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBicWFl
cSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAu
c2xvdwogICAgIC5yaWdodE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIC5q
dW1wVGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC05MTcsOSArOTE3LDkgQEAgbWFjcm8g
cHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBhcgogICAgIGxsaW50T3Aob3BfJW9wY29k
ZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQogICAgICAg
ICBnZXQobV9zcmNEc3QsIHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQxCi0gICAg
ICAgIGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICAgICAgYnFiIHQxLCBudW1iZXJU
YWcsIC5zbG93CiAgICAgICAgIGFyaXRobWV0aWNPcGVyYXRpb24odDEsIC5zbG93KQotICAgICAg
ICBvcnEgdGFnVHlwZU51bWJlciwgdDEKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDEKICAgICAg
ICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIC5zbG93
OgpAQCAtOTMxLDggKzkzMSw4IEBAIGVuZAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJl
ciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBn
ZXQobV9vcGVyYW5kLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0
MikKLSAgICBicWFlcSB0MiwgdGFnVHlwZU51bWJlciwgLm9wVG9OdW1iZXJJc0ltbWVkaWF0ZQot
ICAgIGJ0cXogdDIsIHRhZ1R5cGVOdW1iZXIsIC5vcFRvTnVtYmVyU2xvdworICAgIGJxYWVxIHQy
LCBudW1iZXJUYWcsIC5vcFRvTnVtYmVySXNJbW1lZGlhdGUKKyAgICBidHF6IHQyLCBudW1iZXJU
YWcsIC5vcFRvTnVtYmVyU2xvdwogLm9wVG9OdW1iZXJJc0ltbWVkaWF0ZToKICAgICByZXR1cm4o
dDIpCiAKQEAgLTk0NSw3ICs5NDUsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihvcF90b19z
dHJpbmcsIE9wVG9TdHJpbmcsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAg
ICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MSwgdDApCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvU3RyaW5nU2xvdworICAgIGJ0cW56
IHQwLCBub3RDZWxsTWFzaywgLm9wVG9TdHJpbmdTbG93CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5
cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1N0cmluZ1Nsb3cKIC5vcFRvU3RyaW5nSXNTdHJpbmc6
CiAgICAgcmV0dXJuKHQwKQpAQCAtOTU5LDcgKzk1OSw3IEBAIGVuZCkKIGxsaW50T3BXaXRoUHJv
ZmlsZShvcF90b19vYmplY3QsIE9wVG9PYmplY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNo
LCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MCwgdDIpCi0gICAgYnRxbnogdDIsIHRhZ01hc2ssIC5vcFRvT2JqZWN0U2xv
dworICAgIGJ0cW56IHQyLCBub3RDZWxsTWFzaywgLm9wVG9PYmplY3RTbG93CiAgICAgYmJiIEpT
Q2VsbDo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wVG9PYmplY3RTbG93CiAgICAgcmV0dXJu
KHQyKQogCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0
ZSwgT3BOZWdhdGUsCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAg
ICAgbWV0YWRhdGEodDEsIHQyKQogICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0
aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCi0gICAgYnFiIHQzLCB0YWdU
eXBlTnVtYmVyLCAub3BOZWdhdGVOb3RJbnQKKyAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVn
YXRlTm90SW50CiAgICAgYnRpeiB0MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5l
Z2kgdDMKLSAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBvcnEgbnVtYmVyVGFnLCB0Mwog
ICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCiAgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0
YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0
dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgotICAgIGJ0cXogdDMsIHRhZ1R5cGVOdW1iZXIsIC5v
cE5lZ2F0ZVNsb3cKKyAgICBidHF6IHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4
b3JxIDB4ODAwMDAwMDAwMDAwMDAwMCwgdDMKICAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0
MgogICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFy
aXRoUHJvZmlsZTo6bV9iaXRzW3QxXQpAQCAtMTAwNiw4ICsxMDA2LDggQEAgbWFjcm8gYmluYXJ5
T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcAogICAgICAgICBnZXQobV9saHMsIHQyKQogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgICAgIGJxYiB0MCwgdGFnVHlwZU51
bWJlciwgLm9wMU5vdEludAotICAgICAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDJOb3RJ
bnQKKyAgICAgICAgYnFiIHQwLCBudW1iZXJUYWcsIC5vcDFOb3RJbnQKKyAgICAgICAgYnFiIHQx
LCBudW1iZXJUYWcsIC5vcDJOb3RJbnQKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAg
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQxLCB0MCwgLnNsb3csIHQyKQogCkBAIC0xMDE2LDEw
ICsxMDE2LDEwIEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3AKIAog
ICAgIC5vcDFOb3RJbnQ6CiAgICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KLSAgICAgICAg
YnRxeiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVO
dW1iZXIsIC5vcDFOb3RJbnRPcDJJbnQKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwg
LnNsb3cKLSAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6IHQwLCBu
dW1iZXJUYWcsIC5zbG93CisgICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5vcDFOb3RJbnRP
cDJJbnQKKyAgICAgICAgYnRxeiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBhZGRxIG51
bWJlclRhZywgdDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIHByb2ZpbGUoQXJpdGhQ
cm9maWxlTnVtYmVyTnVtYmVyKQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CkBAIC0xMDI4
LDI1ICsxMDI4LDI1IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3AK
ICAgICAgICAgY2kyZCB0MSwgZnQxCiAgICAgLm9wMU5vdEludFJlYWR5OgogICAgICAgICBnZXQo
bV9kc3QsIHQyKQotICAgICAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgICAgIGFkZHEg
bnVtYmVyVGFnLCB0MAogICAgICAgICBmcTJkIHQwLCBmdDAKICAgICAgICAgZG91YmxlT3BlcmF0
aW9uKGZ0MSwgZnQwKQogICAgICAgICBmZDJxIGZ0MCwgdDAKLSAgICAgICAgc3VicSB0YWdUeXBl
TnVtYmVyLCB0MAorICAgICAgICBzdWJxIG51bWJlclRhZywgdDAKICAgICAgICAgc3RvcmVxIHQw
LCBbY2ZyLCB0MiwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wMk5vdEludDoKICAg
ICAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIGlz
IGRlZmluaXRlbHkgbm90LgogICAgICAgICBnZXQobV9kc3QsIHQyKQotICAgICAgICBidHF6IHQx
LCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBidHF6IHQxLCBudW1iZXJUYWcsIC5zbG93
CiAgICAgICAgIHByb2ZpbGUoQXJpdGhQcm9maWxlSW50TnVtYmVyKQogICAgICAgICBjaTJkIHQw
LCBmdDAKLSAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBhZGRxIG51bWJl
clRhZywgdDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZU9wZXJhdGlvbihm
dDEsIGZ0MCkKICAgICAgICAgZmQycSBmdDAsIHQwCi0gICAgICAgIHN1YnEgdGFnVHlwZU51bWJl
ciwgdDAKKyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQwCiAgICAgICAgIHN0b3JlcSB0MCwgW2Nm
ciwgdDIsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKIApAQCAtMTA3Miw3ICsxMDcyLDcgQEAgaWYg
WDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICAgICAgICAgIGNkcWkKICAgICAgICAgICAgIGlkaXZp
IHQzCiAgICAgICAgICAgICBidGlueiB0MSwgc2xvdwotICAgICAgICAgICAgb3JxIHRhZ1R5cGVO
dW1iZXIsIHQwCisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAogICAgICAgICAgICAgc3Rv
cmVxIHQwLCBbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kKQpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgYmlu
YXJ5T3BDdXN0b21TdG9yZShtdWwsIE9wTXVsLAogICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cK
ICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwogICAgIC5kb25lOgotICAgICAgICBvcnEgdGFn
VHlwZU51bWJlciwgdDMKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDMKICAgICAgICAgc3RvcmVx
IHQzLCBbY2ZyLCBpbmRleCwgOF0KICAgICBlbmQsCiAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBt
dWxkIGxlZnQsIHJpZ2h0IGVuZCkKQEAgLTExMDAsNyArMTEwMCw3IEBAIG1hY3JvIGJpbmFyeU9w
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29k
ZU5hbWUsIG9wY29kZVN0cnVjdCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKICAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0g
ICAgICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgcmlnaHQKKyAgICAgICAgICAgIG9ycSBudW1i
ZXJUYWcsIHJpZ2h0CiAgICAgICAgICAgICBzdG9yZXEgcmlnaHQsIFtjZnIsIGluZGV4LCA4XQog
ICAgICAgICBlbmQsCiAgICAgICAgIGRvdWJsZU9wZXJhdGlvbikKQEAgLTExMzMsMTAgKzExMzMs
MTAgQEAgbWFjcm8gY29tbW9uQml0T3Aob3BLaW5kLCBvcGNvZGVOYW1lLCBvcAogICAgICAgICBn
ZXQobV9saHMsIHQyKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0
MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgICAg
IGJxYiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFiIHQxLCB0YWdUeXBlTnVt
YmVyLCAuc2xvdworICAgICAgICBicWIgdDAsIG51bWJlclRhZywgLnNsb3cKKyAgICAgICAgYnFi
IHQxLCBudW1iZXJUYWcsIC5zbG93CiAgICAgICAgIG9wZXJhdGlvbih0MSwgdDApCi0gICAgICAg
IG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAogICAgICAg
ICByZXR1cm4odDApCiAKICAgICAuc2xvdzoKQEAgLTExNzcsNyArMTE3Nyw3IEBAIGxsaW50T3BX
aXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAgICBnZXQobV9vcGVyYW5kLCB0MCkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BCaXROb3RT
bG93KQogICAgIG5vdGkgdDMKLSAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBvcnEgbnVt
YmVyVGFnLCB0MwogICAgIHJldHVybih0MykKIC5vcEJpdE5vdFNsb3c6CiAgICAgY2FsbFNsb3dQ
YXRoKF9zbG93X3BhdGhfYml0bm90KQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgZW5kKQogbGxpbnRP
cFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkLCBPcElzVW5kZWZpbmVkLCBtYWNybyAoc2l6ZSwg
Z2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQotICAgIGJ0cXogdDAsIHRhZ01hc2ssIC5v
cElzVW5kZWZpbmVkQ2VsbAorICAgIGJ0cXogdDAsIG5vdENlbGxNYXNrLCAub3BJc1VuZGVmaW5l
ZENlbGwKICAgICBjcWVxIHQwLCBWYWx1ZVVuZGVmaW5lZCwgdDMKICAgICBvcnEgVmFsdWVGYWxz
ZSwgdDMKICAgICByZXR1cm4odDMpCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBlbmQpCiBsbGludE9w
V2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgdHFueiB0MCwgdGFnVHlwZU51bWJlciwgdDEK
KyAgICB0cW56IHQwLCBudW1iZXJUYWcsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAg
cmV0dXJuKHQxKQogZW5kKQpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4o
b3BfaXNfY2VsbF93aXRoX3R5cGUsIAogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwg
bV90eXBlLCB0MCkKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHNpemUsIHQxLCB0MykKLSAgICBidHFueiB0MywgdGFnTWFzaywgLm5vdENlbGxDYXNl
CisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKICAgICBjYmVxIEpTQ2Vs
bDo6bV90eXBlW3QzXSwgdDAsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgcmV0dXJu
KHQxKQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNf
b2JqZWN0LCBPcElzT2JqZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwg
dDEsIHQwKQotICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc09iamVjdE5vdENlbGwKKyAgICBi
dHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcElzT2JqZWN0Tm90Q2VsbAogICAgIGNiYWVxIEpTQ2Vs
bDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgdDEKICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKICAg
ICByZXR1cm4odDEpCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0
ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIElu
ZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQw
LCAwLCAub3BHZXRCeUlkU2xvdwotICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgIG9ycSBu
dW1iZXJUYWcsIHQwCiAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQogICAgIHJl
dHVybih0MCkKIApAQCAtMTQ2MCwxMyArMTQ2MCwxMyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0CiAgICAgZW5kCiAKICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZh
bChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCByZXN1bHQKKyAg
ICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0CiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3Vs
dCwgc2NyYXRjaCkKICAgICBlbmQKIAogICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJl
c3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEK
LSAgICAgICAgc3VicSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoMQorICAgICAgICBzdWJxIG51bWJl
clRhZywgc2NyYXRjaDEKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gy
KQogICAgIGVuZAogCkBAIC0xNDgyLDggKzE0ODIsOCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X2dldF9ieV92YWwsIE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUs
IHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQogICAgIHN4aTJxIHQxLCB0MQogCi0gICAgbG9hZENh
Z2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgdGFnVHlwZU51bWJlcikK
LSAgICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICBsb2FkQ2FnZWRKU1Zh
bHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgbW92ZSBU
YWdOdW1iZXIsIG51bWJlclRhZwogCiAgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKICAg
ICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwpAQCAtMTUwMyw3
ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAg
IGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZh
bFNsb3cKICAgICBmZDJxIGZ0MCwgdDIKLSAgICBzdWJxIHRhZ1R5cGVOdW1iZXIsIHQyCisgICAg
c3VicSBudW1iZXJUYWcsIHQyCiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQogICAgIAogLm9wR2V0
QnlWYWxOb3REb3VibGU6CkBAIC0xNjQ3LDE1ICsxNjQ3LDE1IEBAIG1hY3JvIHB1dEJ5VmFsT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZh
bFNsb3cpCiAgICAgICAgIHN4aTJxIHQzLCB0MwotICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpT
T2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQotICAgICAgICBtb3Zl
IFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICAgICAgbG9hZENhZ2VkSlNWYWx1ZShK
U09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgbnVtYmVyVGFnKQorICAgICAgICBtb3ZlIFRh
Z051bWJlciwgbnVtYmVyVGFnCiAgICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0
QnlWYWxTbG93CiAgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCiAgICAgICAgIGJp
bmVxIHQyLCBJbnQzMlNoYXBlLCAub3BQdXRCeVZhbE5vdEludDMyCiAgICAgICAgIGNvbnRpZ3Vv
dXNQdXRCeVZhbCgKICAgICAgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNz
KQogICAgICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3BlcmFuZCwg
c2NyYXRjaCkKLSAgICAgICAgICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJlciwgLm9w
UHV0QnlWYWxTbG93CisgICAgICAgICAgICAgICAgYnFiIHNjcmF0Y2gsIG51bWJlclRhZywgLm9w
UHV0QnlWYWxTbG93CiAgICAgICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIGFkZHJlc3MKICAg
ICAgICAgICAgICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBt
X3ZhbHVlKQogICAgICAgICAgICAgZW5kKQpAQCAtMTY2NSwxMSArMTY2NSwxMSBAQCBtYWNybyBw
dXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGNvbnRpZ3VvdXNQdXRC
eVZhbCgKICAgICAgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNzKQogICAg
ICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3BlcmFuZCwgc2NyYXRj
aCkKLSAgICAgICAgICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJlciwgLm5vdEludAor
ICAgICAgICAgICAgICAgIGJxYiBzY3JhdGNoLCBudW1iZXJUYWcsIC5ub3RJbnQKICAgICAgICAg
ICAgICAgICBjaTJkIHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGptcCAucmVhZHkKICAg
ICAgICAgICAgIC5ub3RJbnQ6Ci0gICAgICAgICAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCBz
Y3JhdGNoCisgICAgICAgICAgICAgICAgYWRkcSBudW1iZXJUYWcsIHNjcmF0Y2gKICAgICAgICAg
ICAgICAgICBmcTJkIHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGJkbmVxdW4gZnQwLCBm
dDAsIC5vcFB1dEJ5VmFsU2xvdwogICAgICAgICAgICAgLnJlYWR5OgpAQCAtMTc0MSw3ICsxNzQx
LDcgQEAgbWFjcm8gZXF1YWxOdWxsSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZQogICAgICAgICBn
ZXQobV92YWx1ZSwgdDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUsIHQwKQogICAg
ICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAu
aW1tZWRpYXRlCisgICAgICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLmltbWVkaWF0ZQogICAg
ICAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgICAgIGNl
bGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgICAgICBkaXNw
YXRjaCgpCkBAIC0xNzUwLDcgKzE3NTAsNyBAQCBtYWNybyBlcXVhbE51bGxKdW1wT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlCiAgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5pbW1lZGlh
dGU6Ci0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+VGFn
VW5kZWZpbmVkLCB0MAogICAgICAgICBpbW1lZGlhdGVIYW5kbGVyKHQwLCAudGFyZ2V0KQogICAg
ICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQpAQCAtMTc4MCw3ICsxNzgwLDcgQEAgbWFjcm8gdW5k
ZWZpbmVkT3JOdWxsSnVtcE9wKG9wY29kZU5hbWUsIAogICAgIGxsaW50T3BXaXRoSnVtcChvcF8l
b3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0
Y2gpCiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MSwgdDApCi0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAg
ICAgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0MAogICAgICAgICBmbih0MCwgLnRhcmdldCkKICAg
ICAgICAgZGlzcGF0Y2goKQogCkBAIC0xODE4LDMwICsxODE4LDMwIEBAIG1hY3JvIGNvbXBhcmVK
dW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3QKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoc2l6ZSwgdDMsIHQxKQotICAgICAgICBicWIgdDAsIHRhZ1R5cGVOdW1i
ZXIsIC5vcDFOb3RJbnQKLSAgICAgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AyTm90SW50
CisgICAgICAgIGJxYiB0MCwgbnVtYmVyVGFnLCAub3AxTm90SW50CisgICAgICAgIGJxYiB0MSwg
bnVtYmVyVGFnLCAub3AyTm90SW50CiAgICAgICAgIGludGVnZXJDb21wYXJlKHQwLCB0MSwgLmp1
bXBUYXJnZXQpCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcDFOb3RJbnQ6Ci0gICAgICAg
IGJ0cXogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGJxYiB0MSwgdGFnVHlwZU51
bWJlciwgLm9wMU5vdEludE9wMk5vdEludAorICAgICAgICBidHF6IHQwLCBudW1iZXJUYWcsIC5z
bG93CisgICAgICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3AxTm90SW50T3AyTm90SW50CiAgICAg
ICAgIGNpMmQgdDEsIGZ0MQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAgICAgLm9wMU5v
dEludE9wMk5vdEludDoKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAg
ICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6IHQxLCBudW1iZXJUYWcs
IC5zbG93CisgICAgICAgIGFkZHEgbnVtYmVyVGFnLCB0MQogICAgICAgICBmcTJkIHQxLCBmdDEK
ICAgICAub3AxTm90SW50UmVhZHk6Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwgdDAKKyAg
ICAgICAgYWRkcSBudW1iZXJUYWcsIHQwCiAgICAgICAgIGZxMmQgdDAsIGZ0MAogICAgICAgICBk
b3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICAgICAgZGlzcGF0Y2goKQog
CiAgICAgLm9wMk5vdEludDoKICAgICAgICAgY2kyZCB0MCwgZnQwCi0gICAgICAgIGJ0cXogdDEs
IHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwgdDEKKyAg
ICAgICAgYnRxeiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBhZGRxIG51bWJlclRhZywg
dDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEs
IC5qdW1wVGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBs
bGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJCiAgICAgbXVsaSBzaXplb2Yg
U2ltcGxlSnVtcFRhYmxlLCB0MwogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dp
dGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0Mywg
dDIKLSAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaEltbU5vdEludAorICAgIGJx
YiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFNpbXBsZUp1bXBU
YWJsZTo6bWluW3QyXSwgdDEKICAgICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAg
ICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyXSwgdDMKQEAgLTE5MjEsNyArMTkyMSw3IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0
Y2hfaW1tLCBPcFN3aXRjaEkKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCiAub3BTd2l0Y2hJ
bW1Ob3RJbnQ6Ci0gICAgYnRxbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaEltbVNsb3cg
ICAjIEdvIHNsb3cgaWYgaXQncyBhIGRvdWJsZS4KKyAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAu
b3BTd2l0Y2hJbW1TbG93ICAgIyBHbyBzbG93IGlmIGl0J3MgYSBkb3VibGUuCiAub3BTd2l0Y2hJ
bW1GYWxsVGhyb3VnaDoKICAgICBqdW1wKG1fZGVmYXVsdE9mZnNldCkKIApAQCAtMTk0MCw3ICsx
OTQwLDcgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaAogICAgIG11
bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVE
YXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAg
IGFkZHAgdDMsIHQyCi0gICAgYnRxbnogdDEsIHRhZ01hc2ssIC5vcFN3aXRjaENoYXJGYWxsVGhy
b3VnaAorICAgIGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV9maWJlclt0MV0sIHQwCiAgICAgYnRw
bnogdDAsIGlzUm9wZUluUG9pbnRlciwgLm9wU3dpdGNoT25Sb3BlCkBAIC0xOTc2LDcgKzE5NzYs
NyBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgCiAgICAgZ2V0dSht
X2FyZ3YsIHQzKQogICAgIG5lZ3AgdDMKICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2Zy
LCB0MywgOF0sIHQwCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25lCisgICAgYnRxbnogdDAs
IG5vdENlbGxNYXNrLCAuZG9uZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQzCiAgICAgc3RvcmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgpAQCAt
MjAyMiw3ICsyMDIyLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fcHJpbWl0aXZl
LCBPcFRvUHJpbWl0aXZlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAg
IGdldChtX3NyYywgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDAp
Ci0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBidHFueiB0
MCwgbm90Q2VsbE1hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KICAgICBiYmFlcSBKU0NlbGw6Om1f
dHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0
aXZlSXNJbW06CiAgICAgcmV0dXJuKHQwKQpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgbGxpbnRPcFdp
dGhNZXRhZGF0YShvcF9wcm9maWxlX3R5cGUsIE9wUAogICAgIGxvYWRwIE9wUHJvZmlsZVR5cGU6
Ok1ldGFkYXRhOjptX3R5cGVMb2NhdGlvblt0NV0sIHQzCiAgICAgc3RvcmVwIHQzLCBUeXBlUHJv
ZmlsZXJMb2c6OkxvZ0VudHJ5Ojpsb2NhdGlvblt0Ml0KIAotICAgIGJ0cXogdDAsIHRhZ01hc2ss
IC5vcFByb2ZpbGVUeXBlSXNDZWxsCisgICAgYnRxeiB0MCwgbm90Q2VsbE1hc2ssIC5vcFByb2Zp
bGVUeXBlSXNDZWxsCiAgICAgc3RvcmVpIDAsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0
cnVjdHVyZUlEW3QyXQogICAgIGptcCAub3BQcm9maWxlVHlwZVNraXBJc0NlbGwKIC5vcFByb2Zp
bGVUeXBlSXNDZWxsOgpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3Bf
Z2V0X3Jlc3RfbGVuZ3RoLCBPcAogLnN0b3JlWmVybzoKICAgICBtb3ZlIDAsIHQwCiAuYm94VXA6
Ci0gICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgb3JxIG51bWJlclRhZywgdDAKICAgICBy
ZXR1cm4odDApCiBlbmQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI1MDA3MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBj
b3B5KQpAQCAtMTg3LDE2ICsxODcsMTYgQEAgY29uc3QgTWV0YWRhdGFPZmZzZXRUYWJsZTMyT2Zm
c2V0ID0gY29ucwogCiAjIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgogaWYg
SlNWQUxVRTY0Ci0gICAgY29uc3QgVGFnQml0VHlwZU90aGVyID0gY29uc3RleHByIFRhZ0JpdFR5
cGVPdGhlcgotICAgIGNvbnN0IFRhZ0JpdEJvb2wgICAgICA9IGNvbnN0ZXhwciBUYWdCaXRCb29s
Ci0gICAgY29uc3QgVGFnQml0VW5kZWZpbmVkID0gY29uc3RleHByIFRhZ0JpdFVuZGVmaW5lZAot
ICAgIGNvbnN0IFZhbHVlRW1wdHkgICAgICA9IGNvbnN0ZXhwciBWYWx1ZUVtcHR5Ci0gICAgY29u
c3QgVmFsdWVGYWxzZSAgICAgID0gY29uc3RleHByIFZhbHVlRmFsc2UKLSAgICBjb25zdCBWYWx1
ZVRydWUgICAgICAgPSBjb25zdGV4cHIgVmFsdWVUcnVlCi0gICAgY29uc3QgVmFsdWVVbmRlZmlu
ZWQgID0gY29uc3RleHByIFZhbHVlVW5kZWZpbmVkCi0gICAgY29uc3QgVmFsdWVOdWxsICAgICAg
ID0gY29uc3RleHByIFZhbHVlTnVsbAotICAgIGNvbnN0IFRhZ1R5cGVOdW1iZXIgICA9IGNvbnN0
ZXhwciBUYWdUeXBlTnVtYmVyCi0gICAgY29uc3QgVGFnTWFzayAgICAgICAgID0gY29uc3RleHBy
IFRhZ01hc2sKKyAgICBjb25zdCBUYWdPdGhlciAgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6
T3RoZXJUYWcKKyAgICBjb25zdCBUYWdCb29sICAgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6
Qm9vbFRhZworICAgIGNvbnN0IFRhZ1VuZGVmaW5lZCAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpV
bmRlZmluZWRUYWcKKyAgICBjb25zdCBWYWx1ZUVtcHR5ICAgICAgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6VmFsdWVFbXB0eQorICAgIGNvbnN0IFZhbHVlRmFsc2UgICAgICA9IGNvbnN0ZXhwciBKU1Zh
bHVlOjpWYWx1ZUZhbHNlCisgICAgY29uc3QgVmFsdWVUcnVlICAgICAgID0gY29uc3RleHByIEpT
VmFsdWU6OlZhbHVlVHJ1ZQorICAgIGNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IGNvbnN0ZXhwciBK
U1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZAorICAgIGNvbnN0IFZhbHVlTnVsbCAgICAgICA9IGNvbnN0
ZXhwciBKU1ZhbHVlOjpWYWx1ZU51bGwKKyAgICBjb25zdCBUYWdOdW1iZXIgICAgICAgPSBjb25z
dGV4cHIgSlNWYWx1ZTo6TnVtYmVyVGFnCisgICAgY29uc3QgTm90Q2VsbE1hc2sgICAgID0gY29u
c3RleHByIEpTVmFsdWU6Ok5vdENlbGxNYXNrCiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBj
b25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3Rl
eHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAgLTI2NiwyMiArMjY2LDIyIEBAIGlmIEpTVkFMVUU2
NAogICAgIGlmIEFSTTY0IG9yIEFSTTY0RQogICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0g
Y3NyNgogICAgICAgICBjb25zdCBQQiA9IGNzcjcKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJl
ciA9IGNzcjgKLSAgICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjkKKyAgICAgICAgY29uc3QgbnVt
YmVyVGFnID0gY3NyOAorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9IGNzcjkKICAgICBlbHNp
ZiBYODZfNjQKICAgICAgICAgY29uc3QgbWV0YWRhdGFUYWJsZSA9IGNzcjEKICAgICAgICAgY29u
c3QgUEIgPSBjc3IyCi0gICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3IzCi0gICAgICAg
IGNvbnN0IHRhZ01hc2sgPSBjc3I0CisgICAgICAgIGNvbnN0IG51bWJlclRhZyA9IGNzcjMKKyAg
ICAgICAgY29uc3Qgbm90Q2VsbE1hc2sgPSBjc3I0CiAgICAgZWxzaWYgWDg2XzY0X1dJTgogICAg
ICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0gY3NyMwogICAgICAgICBjb25zdCBQQiA9IGNzcjQK
LSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjUKLSAgICAgICAgY29uc3QgdGFnTWFz
ayA9IGNzcjYKKyAgICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3NyNQorICAgICAgICBjb25zdCBu
b3RDZWxsTWFzayA9IGNzcjYKICAgICBlbHNpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAg
ICBjb25zdCBQQiA9IGNzcjAKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjEKLSAg
ICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjIKKyAgICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3Ny
MQorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9IGNzcjIKICAgICAgICAgY29uc3QgbWV0YWRh
dGFUYWJsZSA9IGNzcjMKICAgICBlbmQKIApAQCAtMTIwMCw4ICsxMjAwLDggQEAgbWFjcm8gcHJv
bG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAgIGxvYWRwIENvZGVCbG9jazo6bV9t
ZXRhZGF0YVt0MV0sIG1ldGFkYXRhVGFibGUKIAogICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBt
b3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKLSAgICAgICAgYWRkcSBUYWdCaXRUeXBl
T3RoZXIsIHRhZ1R5cGVOdW1iZXIsIHRhZ01hc2sKKyAgICAgICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZworICAgICAgICBhZGRxIFRhZ090aGVyLCBudW1iZXJUYWcsIG5vdENlbGxNYXNrCiAg
ICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTYsNyArMzE2LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRy
eU9wYwogCiAgICAgQ0xvb3BSZWdpc3RlciB0MCwgdDEsIHQyLCB0MywgdDUsIHNwLCBjZnIsIGxy
LCBwYzsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCB0YWdU
eXBlTnVtYmVyLCB0YWdNYXNrOworICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCBudW1iZXJUYWcs
IG5vdENlbGxNYXNrOwogI2VuZGlmCiAgICAgQ0xvb3BSZWdpc3RlciBtZXRhZGF0YVRhYmxlOwog
ICAgIENMb29wRG91YmxlUmVnaXN0ZXIgZDAsIGQxOwpAQCAtMzU2LDggKzM1Niw4IEBAIEpTVmFs
dWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGMKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIC8vIEZvciB0aGUgQVNNIGxsaW50LCBKSVRTdHVicyB0YWtlcyBjYXJlIG9mIHRoaXMgaW5p
dGlhbGl6YXRpb24uIFdlIGRvCiAgICAgLy8gaXQgZXhwbGljaXRseSBoZXJlIGZvciB0aGUgQyBs
b29wOgotICAgIHRhZ1R5cGVOdW1iZXIgPSAweEZGRkYwMDAwMDAwMDAwMDA7Ci0gICAgdGFnTWFz
ayA9IDB4RkZGRjAwMDAwMDAwMDAwMjsKKyAgICBudW1iZXJUYWcgPSBKU1ZhbHVlOjpOdW1iZXJU
YWc7CisgICAgbm90Q2VsbE1hc2sgPSBKU1ZhbHVlOjpOb3RDZWxsTWFzazsKICNlbmRpZiAvLyBV
U0UoSlNWQUxVRTY0KQogCiAgICAgLy8gSW50ZXJwcmV0ZXIgdmFyaWFibGVzIGZvciB2YWx1ZSBw
YXNzaW5nIGJldHdlZW4gb3Bjb2RlcyBhbmQvb3IgaGVscGVyczoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgkod29ya2luZyBjb3B5KQpAQCAt
NDcsOCArNDcsOCBAQCByZXF1aXJlICJyaXNjIgogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAg
KHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDI2ICA9
PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3IxICh0YWdU
eXBlTnVtYmVyKQotIyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKHRhZ01hc2spCisjIHgyNyAg
PT4gICAgICAgICAgICAgY3NyMSAobnVtYmVyVGFnKQorIyB4MjggID0+ICAgICAgICAgICAgIGNz
cjIgKG5vdENlbGxNYXNrKQogIyB4MjkgID0+IGNmcgogIyAgc3AgID0+IHNwCiAjICBsciAgPT4g
bHIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCShyZXZp
c2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5y
Ygkod29ya2luZyBjb3B5KQpAQCAtODgsOSArODgsOSBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAg
ICAgIHdoZW4gImNzcjAiCiAgICAgICAgICAgICAicGNCYXNlIgogICAgICAgICB3aGVuICJjc3Ix
IgotICAgICAgICAgICAgInRhZ1R5cGVOdW1iZXIiCisgICAgICAgICAgICAibnVtYmVyVGFnIgog
ICAgICAgICB3aGVuICJjc3IyIgotICAgICAgICAgICAgInRhZ01hc2siCisgICAgICAgICAgICAi
bm90Q2VsbE1hc2siCiAgICAgICAgIHdoZW4gImNzcjMiCiAgICAgICAgICAgICAibWV0YWRhdGFU
YWJsZSIKICAgICAgICAgd2hlbiAiY2ZyIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHJlcXVp
cmUgImNvbmZpZyIKICMgcmJ4ID0+ICAgICAgICAgICAgIGNzcjAgKGNhbGxlZS1zYXZlLCBQQiwg
dW51c2VkIGluIGJhc2VsaW5lKQogIyByMTIgPT4gICAgICAgICAgICAgY3NyMSAoY2FsbGVlLXNh
dmUpCiAjIHIxMyA9PiAgICAgICAgICAgICBjc3IyIChjYWxsZWUtc2F2ZSkKLSMgcjE0ID0+ICAg
ICAgICAgICAgIGNzcjMgKGNhbGxlZS1zYXZlLCB0YWdUeXBlTnVtYmVyKQotIyByMTUgPT4gICAg
ICAgICAgICAgY3NyNCAoY2FsbGVlLXNhdmUsIHRhZ01hc2spCisjIHIxNCA9PiAgICAgICAgICAg
ICBjc3IzIChjYWxsZWUtc2F2ZSwgbnVtYmVyVGFnKQorIyByMTUgPT4gICAgICAgICAgICAgY3Ny
NCAoY2FsbGVlLXNhdmUsIG5vdENlbGxNYXNrKQogIyByc3AgPT4gc3AKICMgcmJwID0+IGNmcgog
IyByMTEgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKQEAgLTc1LDggKzc1LDggQEAgcmVx
dWlyZSAiY29uZmlnIgogIyByZGkgPT4gICAgICAgICAgICAgY3NyMiAoY2FsbGVlLXNhdmUpCiAj
IHIxMiA9PiAgICAgICAgICAgICBjc3IzIChjYWxsZWUtc2F2ZSkKICMgcjEzID0+ICAgICAgICAg
ICAgIGNzcjQgKGNhbGxlZS1zYXZlKQotIyByMTQgPT4gICAgICAgICAgICAgY3NyNSAoY2FsbGVl
LXNhdmUsIHRhZ1R5cGVOdW1iZXIpCi0jIHIxNSA9PiAgICAgICAgICAgICBjc3I2IChjYWxsZWUt
c2F2ZSwgdGFnTWFzaykKKyMgcjE0ID0+ICAgICAgICAgICAgIGNzcjUgKGNhbGxlZS1zYXZlLCBu
dW1iZXJUYWcpCisjIHIxNSA9PiAgICAgICAgICAgICBjc3I2IChjYWxsZWUtc2F2ZSwgbm90Q2Vs
bE1hc2spCiAjIHJzcCA9PiBzcAogIyByYnAgPT4gY2ZyCiAjIHIxMSA9PiAgICAgICAgICAgICAg
ICAgIChzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuaAkocmV2aXNpb24gMjUwMDcyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDkgQEAgcHVibGlj
OgogICAgICAqICAgICBOdWxsOiAgICAgIDB4MDIKICAgICAgKgogICAgICAqIFRoZXNlIHZhbHVl
cyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAgKiAtIEJpdCAxIChUYWdCaXRU
eXBlT3RoZXIpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50
ZXJzIHRvIGJlCisgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIg
dmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRp
c3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGlu
dmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFRhZ0Jp
dFVuZGVmaW5lZCkgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBi
aXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFy
ZSB0aGUKICAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8g
YmUgcXVpY2tseSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2ls
bCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJy
YXkKQEAgLTQyMywzNyArNDIzLDQwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgdmFsdWUgaXMg
Ml40OCwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUg
d2lsbCBiZWdpbgogICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVybiB3aXRoaW4gdGhlIHJhbmdl
IDB4MDAwMS4uMHhGRkZFLgotICAgICNkZWZpbmUgRG91YmxlRW5jb2RlT2Zmc2V0IDB4MTAwMDAw
MDAwMDAwMGxsCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgRG91YmxlRW5jb2RlT2Zmc2V0
Qml0ID0gNDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBEb3VibGVFbmNvZGVPZmZz
ZXQgPSAxdWxsIDw8IERvdWJsZUVuY29kZU9mZnNldEJpdDsKICAgICAvLyBJZiBhbGwgYml0cyBp
biB0aGUgbWFzayBhcmUgc2V0LCB0aGlzIGluZGljYXRlcyBhbiBpbnRlZ2VyIG51bWJlciwKICAg
ICAvLyBpZiBhbnkgYnV0IG5vdCBhbGwgYXJlIHNldCB0aGlzIHZhbHVlIGlzIGEgZG91YmxlIHBy
ZWNpc2lvbiBudW1iZXIuCi0gICAgI2RlZmluZSBUYWdUeXBlTnVtYmVyIDB4ZmZmZjAwMDAwMDAw
MDAwMGxsCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBOdW1iZXJUYWcgPSAweGZmZmYw
MDAwMDAwMDAwMDBsbDsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5k
ZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgotICAgICNkZWZpbmUgVGFnQml0VHlw
ZU90aGVyIDB4MmxsCi0gICAgI2RlZmluZSBUYWdCaXRCb29sICAgICAgMHg0bGwKLSAgICAjZGVm
aW5lIFRhZ0JpdFVuZGVmaW5lZCAweDhsbAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBP
dGhlclRhZyAgICAgICA9IDB4MmxsOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBCb29s
VGFnICAgICAgICA9IDB4NGxsOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBVbmRlZmlu
ZWRUYWcgICA9IDB4OGxsOwogICAgIC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1u
dW1lcmljIGltbWVkaWF0ZXMuCi0gICAgI2RlZmluZSBWYWx1ZUZhbHNlICAgICAoVGFnQml0VHlw
ZU90aGVyIHwgVGFnQml0Qm9vbCB8IGZhbHNlKQotICAgICNkZWZpbmUgVmFsdWVUcnVlICAgICAg
KFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wgfCB0cnVlKQotICAgICNkZWZpbmUgVmFsdWVV
bmRlZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkKLSAgICAjZGVmaW5l
IFZhbHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3RoZXIpCi0KLSAgICAvLyBUYWdNYXNrIGlzIHVz
ZWQgdG8gY2hlY2sgZm9yIGFsbCB0eXBlcyBvZiBpbW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVt
YmVyIG9yICdvdGhlcicpLgotICAgICNkZWZpbmUgVGFnTWFzayAoVGFnVHlwZU51bWJlciB8IFRh
Z0JpdFR5cGVPdGhlcikKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNl
ICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CisgICAg
c3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlVW5kZWZpbmVkID0gT3RoZXJUYWcgfCBVbmRl
ZmluZWRUYWc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlTnVsbCAgICAgID0g
T3RoZXJUYWc7CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IE1pc2NUYWcgPSBPdGhl
clRhZyB8IEJvb2xUYWcgfCBVbmRlZmluZWRUYWc7CisKKyAgICAvLyBOb3RDZWxsTWFzayBpcyB1
c2VkIHRvIGNoZWNrIGZvciBhbGwgdHlwZXMgb2YgaW1tZWRpYXRlIHZhbHVlcyAoZWl0aGVyIG51
bWJlciBvciAnb3RoZXInKS4KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IE5vdENlbGxN
YXNrID0gTnVtYmVyVGFnIHwgT3RoZXJUYWc7CisgICAgCiAgICAgLy8gVGhlc2Ugc3BlY2lhbCB2
YWx1ZXMgYXJlIG5ldmVyIHZpc2libGUgdG8gSmF2YVNjcmlwdCBjb2RlOyBFbXB0eSBpcyB1c2Vk
IHRvIHJlcHJlc2VudAogICAgIC8vIEFycmF5IGhvbGVzLCBhbmQgZm9yIHVuaW5pdGlhbGl6ZWQg
SlNWYWx1ZXMuIERlbGV0ZWQgaXMgdXNlZCBpbiBoYXNoIHRhYmxlIGNvZGUuCiAgICAgLy8gVGhl
c2UgdmFsdWVzIHdvdWxkIG1hcCB0byBjZWxsIHR5cGVzIGluIHRoZSBKU1ZhbHVlIGVuY29kaW5n
LCBidXQgbm90IHZhbGlkIEdDIGNlbGwKICAgICAvLyBwb2ludGVyIHNob3VsZCBoYXZlIGVpdGhl
ciBvZiB0aGVzZSB2YWx1ZXMgKEVtcHR5IGlzIG51bGwsIGRlbGV0ZWQgaXMgYXQgYW4gaW52YWxp
ZAogICAgIC8vIGFsaWdubWVudCBmb3IgYSBHQyBjZWxsLCBhbmQgaW4gdGhlIHplcm8gcGFnZSku
Ci0gICAgI2RlZmluZSBWYWx1ZUVtcHR5ICAgMHgwbGwKLSAgICAjZGVmaW5lIFZhbHVlRGVsZXRl
ZCAweDRsbAorICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgVmFsdWVFbXB0eSAgID0gMHgw
bGw7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBWYWx1ZURlbGV0ZWQgPSAweDRsbDsK
IAotICAgICNkZWZpbmUgVGFnQml0c1dhc20gKFRhZ0JpdFR5cGVPdGhlciB8IDB4MSkKLSAgICAj
ZGVmaW5lIFRhZ1dhc21NYXNrIChUYWdUeXBlTnVtYmVyIHwgMHg3KQorICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDY0X3QgV2FzbVRhZyA9IE90aGVyVGFnIHwgMHgxOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdWludDY0X3QgV2FzbU1hc2sgPSBOdW1iZXJUYWcgfCAweDc7CiAgICAgLy8gV2UgdGFn
IFdhc20gbm9uLUpTQ2VsbCBwb2ludGVycyB3aXRoIGEgMyBhdCB0aGUgYm90dG9tLiBXZSBjYW4g
dGVzdCBpZiBhIDY0LWJpdCBKU1ZhbHVlIHBhdHRlcm4KICAgICAvLyBpcyBhIFdhc20gY2FsbGVl
IGJ5IG1hc2tpbmcgdGhlIHVwcGVyIDE2IGJpdHMgYW5kIHRoZSBsb3dlciAzIGJpdHMsIGFuZCBz
ZWVpbmcgaWYKLSAgICAvLyB0aGUgcmVzdWx0aW5nIHZhbHVlIGlzIDMuIFRoZSBmdWxsIHRlc3Qg
aXM6IHggJiBUYWdXYXNtTWFzayA9PSBUYWdCaXRzV2FzbQorICAgIC8vIHRoZSByZXN1bHRpbmcg
dmFsdWUgaXMgMy4gVGhlIGZ1bGwgdGVzdCBpczogeCAmIFdhc21NYXNrID09IFdhc21UYWcKICAg
ICAvLyBUaGlzIHdvcmtzIGJlY2F1c2UgdGhlIGxvd2VyIDMgYml0cyBvZiB0aGUgbm9uLW51bWJl
ciBpbW1lZGlhdGUgdmFsdWVzIGFyZSBhcyBmb2xsb3dzOgogICAgIC8vIHVuZGVmaW5lZDogMGIw
MTAKICAgICAvLyBudWxsOiAgICAgIDBiMDEwCkBAIC00NjUsOSArNDY4LDkgQEAgcHVibGljOgog
ICAgIC8vIHRoZWlyIGxvd2VyIDMgYml0cy4gTm90ZSwgdGhpcyBiaXQgcGF0dGVybiBhbHNvIGFs
bG93cyB0aGUgbm9ybWFsIEpTVmFsdWUgaXNDZWxsKCksIGV0YywKICAgICAvLyBwcmVkaWNhdGVz
IHRvIHdvcmsgb24gYSBXYXNtOjpDYWxsZWUgYmVjYXVzZSB0aGUgdmFyaW91cyB0ZXN0cyB3aWxs
IGZhaWwgaWYgeW91CiAgICAgLy8gYml0IGNhc3RlZCBhIGJveGVkIFdhc206OkNhbGxlZSogdG8g
YSBKU1ZhbHVlLiBpc0NlbGwoKSB3b3VsZCBmYWlsIHNpbmNlIGl0IHNlZXMKLSAgICAvLyBUYWdC
aXRUeXBlT3RoZXIuIFRoZSBvdGhlciB0ZXN0cyBhbHNvIHRyaXZpYWxseSBmYWlsLCBzaW5jZSBp
dCB3b24ndCBiZSBhIG51bWJlciwKKyAgICAvLyBPdGhlclRhZy4gVGhlIG90aGVyIHRlc3RzIGFs
c28gdHJpdmlhbGx5IGZhaWwsIHNpbmNlIGl0IHdvbid0IGJlIGEgbnVtYmVyLAogICAgIC8vIGFu
ZCBpdCB3b24ndCBiZSBlcXVhbCB0byBudWxsLCB1bmRlZmluZWQsIHRydWUsIG9yIGZhbHNlLiBU
aGUgaXNCb29sZWFuKCkgcHJlZGljYXRlCi0gICAgLy8gd2lsbCBmYWlsIGJlY2F1c2Ugd2Ugd29u
J3QgaGF2ZSBUYWdCaXRCb29sIHNldC4KKyAgICAvLyB3aWxsIGZhaWwgYmVjYXVzZSB3ZSB3b24n
dCBoYXZlIEJvb2xUYWcgc2V0LgogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9u
IDI1MDA3MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShKU0ZhbHNlVGFnKQogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNVbmRlZmluZWRPck51
bGwoKSBjb25zdAogewogICAgIC8vIFVuZGVmaW5lZCBhbmQgbnVsbCBzaGFyZSB0aGUgc2FtZSB2
YWx1ZSwgYmFyIHRoZSAndW5kZWZpbmVkJyBiaXQgaW4gdGhlIGV4dGVuZGVkIHRhZy4KLSAgICBy
ZXR1cm4gKHUuYXNJbnQ2NCAmIH5UYWdCaXRVbmRlZmluZWQpID09IFZhbHVlTnVsbDsKKyAgICBy
ZXR1cm4gKHUuYXNJbnQ2NCAmIH5VbmRlZmluZWRUYWcpID09IFZhbHVlTnVsbDsKIH0KIAogaW5s
aW5lIGJvb2wgSlNWYWx1ZTo6aXNCb29sZWFuKCkgY29uc3QKQEAgLTQ3NywxMiArNDc3LDEyIEBA
IGlubGluZSBib29sIEpTVmFsdWU6OmlzQm9vbGVhbigpIGNvbnN0CiAKIGlubGluZSBib29sIEpT
VmFsdWU6OmlzQ2VsbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICEodS5hc0ludDY0ICYgVGFnTWFz
ayk7CisgICAgcmV0dXJuICEodS5hc0ludDY0ICYgTm90Q2VsbE1hc2spOwogfQogCiBpbmxpbmUg
Ym9vbCBKU1ZhbHVlOjppc0ludDMyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKHUuYXNJbnQ2NCAm
IFRhZ1R5cGVOdW1iZXIpID09IFRhZ1R5cGVOdW1iZXI7CisgICAgcmV0dXJuICh1LmFzSW50NjQg
JiBOdW1iZXJUYWcpID09IE51bWJlclRhZzsKIH0KIAogaW5saW5lIGludDY0X3QgcmVpbnRlcnBy
ZXREb3VibGVUb0ludDY0KGRvdWJsZSB2YWx1ZSkKQEAgLTQ5NywyMyArNDk3LDIzIEBAIGlubGlu
ZSBkb3VibGUgcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKGkKIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZTo6SlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgZG91YmxlIGQpCiB7CiAgICAgQVNTRVJUKCFp
c0ltcHVyZU5hTihkKSk7Ci0gICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0
KGQpICsgRG91YmxlRW5jb2RlT2Zmc2V0OworICAgIHUuYXNJbnQ2NCA9IHJlaW50ZXJwcmV0RG91
YmxlVG9JbnQ2NChkKSArIEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldDsKIH0KIAogaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCiB7Ci0gICAgdS5hc0ludDY0ID0gVGFnVHlwZU51bWJl
ciB8IHN0YXRpY19jYXN0PHVpbnQzMl90PihpKTsKKyAgICB1LmFzSW50NjQgPSBKU1ZhbHVlOjpO
dW1iZXJUYWcgfCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSk7CiB9CiAKIGlubGluZSBkb3VibGUg
SlNWYWx1ZTo6YXNEb3VibGUoKSBjb25zdAogewogICAgIEFTU0VSVChpc0RvdWJsZSgpKTsKLSAg
ICByZXR1cm4gcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKHUuYXNJbnQ2NCAtIERvdWJsZUVuY29k
ZU9mZnNldCk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0SW50NjRUb0RvdWJsZSh1LmFzSW50NjQg
LSBKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQpOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVl
Ojppc051bWJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHUuYXNJbnQ2NCAmIFRhZ1R5cGVOdW1i
ZXI7CisgICAgcmV0dXJuIHUuYXNJbnQ2NCAmIEpTVmFsdWU6Ok51bWJlclRhZzsKIH0KIAogQUxX
QVlTX0lOTElORSBKU0NlbGwqIEpTVmFsdWU6OmFzQ2VsbCgpIGNvbnN0CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2FzbVRvSlMuY3BwCShyZXZpc2lvbiAyNTAwNzIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyMCw5ICs0MjAsMTIgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdh
c21FbnRyeQogICAgICAgICBib29sIGhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNldCA9
IGZhbHNlOwogICAgICAgICBhdXRvIG1hdGVyaWFsaXplRG91YmxlRW5jb2RlT2Zmc2V0ID0gWyZo
YXNNYXRlcmlhbGl6ZWREb3VibGVFbmNvZGVPZmZzZXQsICZqaXRdIChHUFJSZWcgZGVzdCkgewog
ICAgICAgICAgICAgaWYgKCFoYXNNYXRlcmlhbGl6ZWREb3VibGVFbmNvZGVPZmZzZXQpIHsKLSAg
ICAgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KERvdWJsZUVuY29kZU9mZnNldCA9PSAxbGwgPDwg
NDgsICJjb2RlZ2VuIGFzc3VtZXMgdGhpcyBiZWxvdyIpOworI2lmIENQVShBUk02NCkKKyAgICAg
ICAgICAgICAgICBqaXQubW92ZShKSVQ6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpEb3VibGVFbmNv
ZGVPZmZzZXQpLCBkZXN0KTsKKyNlbHNlCiAgICAgICAgICAgICAgICAgaml0Lm1vdmUoSklUOjpU
cnVzdGVkSW1tMzIoMSksIGRlc3QpOwotICAgICAgICAgICAgICAgIGppdC5sc2hpZnQ2NChKSVQ6
OlRydXN0ZWRJbW0zMig0OCksIGRlc3QpOworICAgICAgICAgICAgICAgIGppdC5sc2hpZnQ2NChK
SVQ6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXRCaXQpLCBkZXN0KTsK
KyNlbmRpZgogICAgICAgICAgICAgICAgIGhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNl
dCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH07CkBAIC01MDEsNyArNTA0LDcgQEAg
RXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdhc21FbnRyeQogCiAgICAgaml0LnN0b3Jl
NjQoaW1wb3J0SlNDZWxsR1BSUmVnLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNs
b3Q6OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKICAgICBq
aXQuc3RvcmUzMihKSVQ6OlRydXN0ZWRJbW0zMihudW1iZXJPZlBhcmFtZXRlcnMpLCBjYWxsZWVG
cmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2Fz
dDxpbnQ+KHNpemVvZihSZWdpc3RlcikpICsgUGF5bG9hZE9mZnNldCkpOwotICAgIGppdC5zdG9y
ZTY0KEpJVDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwgY2FsbGVlRnJhbWUud2l0aE9m
ZnNldChDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVv
ZihSZWdpc3RlcikpKSk7CisgICAgaml0LnN0b3JlNjQoSklUOjpUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6VmFsdWVVbmRlZmluZWQpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6
OnRoaXNBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKIAog
ICAgIC8vIEZJWE1FIFRhaWwgY2FsbCBpZiB0aGUgd2FzbSByZXR1cm4gdHlwZSBpcyB2b2lkIGFu
ZCBubyByZWdpc3RlcnMgd2VyZSBzcGlsbGVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NDg4CiAKQEAgLTU3OCw3ICs1ODEsNyBAQCBFeHBlY3RlZDxNYWNyb0Fz
c2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkp
OwogCiAgICAgICAgIGlzRG91YmxlLmxpbmsoJmppdCk7Ci0gICAgICAgIGppdC5tb3ZlKEpJVDo6
VHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwor
ICAgICAgICBqaXQubW92ZShKSVQ6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBH
UFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICBqaXQuYWRkNjQoR1BSSW5mbzo6cmV0
dXJuVmFsdWVHUFIyLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAgICAgIGppdC5tb3Zl
NjRUb0RvdWJsZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVG
UFIpOwogICAgICAgICBqaXQuY29udmVydERvdWJsZVRvRmxvYXQoRlBSSW5mbzo6cmV0dXJuVmFs
dWVGUFIsIEZQUkluZm86OnJldHVyblZhbHVlRlBSKTsKQEAgLTYxMyw3ICs2MTYsNyBAQCBFeHBl
Y3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAgICAgIGRvbmUuYXBwZW5k
KGppdC5qdW1wKCkpOwogCiAgICAgICAgIGlzRG91YmxlLmxpbmsoJmppdCk7Ci0gICAgICAgIGpp
dC5tb3ZlKEpJVDo6VHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUjIpOworICAgICAgICBqaXQubW92ZShKSVQ6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpO
dW1iZXJUYWcpLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIpOwogICAgICAgICBqaXQuYWRkNjQo
R1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIyLCBHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUik7CiAgICAg
ICAgIGppdC5tb3ZlNjRUb0RvdWJsZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgRlBSSW5mbzo6
cmV0dXJuVmFsdWVGUFIpOwogICAgICAgICBkb25lLmFwcGVuZChqaXQuanVtcCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCShyZXZpc2lvbiAyNTAwNzIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1
Myw3IEBAIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWIKICAgICAgICAg
ICAgICAgICAgICAgICAgIGppdC5jb252ZXJ0RG91YmxlVG9GbG9hdChzY3JhdGNoRlBSLCBzY3Jh
dGNoRlBSKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGppdC5zdG9yZUZsb2F0KHNjcmF0Y2hG
UFIsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQod2FzbU9mZnNldCkpOwogICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgaml0LmFkZDY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuYWRkNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHNj
cmF0Y2hHUFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3Jl
NjQoc2NyYXRjaEdQUiwgY2FsbGVlRnJhbWUud2l0aE9mZnNldCh3YXNtT2Zmc2V0KSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYXV0byBkb25lID0gaml0Lmp1
bXAoKTsK
</data>
<flag name="review"
          id="394790"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379105</attachid>
            <date>2019-09-18 22:54:06 -0700</date>
            <delta_ts>2019-09-18 23:29:13 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201966.patch</filename>
            <type>text/plain</type>
            <size>160088</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MCBA
QAorMjAxOS0wOS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBKU1ZhbHVlICNkZWZpbmVzIHdpdGggc3RhdGljIGNvbnN0ZXhwciB2YWx1ZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaXMgdGhlIG1vZGVybiBDKysgd2F5IHRvIGRlZmluZSB0aGVzZSBjb25zdGFudHMuCisK
KyAgICAgICAgU29tZSBvZiB0aGUgdmFsdWVzIGFyZSB0eXBlZCBpbnQ2NF90IGFuZCBzb21lIGFy
ZSBpbnQzMl90LiAgVGhlIG9yaWdpbmFsICNkZWZpbmUKKyAgICAgICAgdmFsdWVzIGFyZSBpbnQ2
NF90LiAgSGVuY2UsIHdlIGFkb3B0IGludDY0X3QgYXMgdGhlIGRlZmF1bHQgdHlwZSB0byB1c2Ug
aGVyZS4KKworICAgICAgICBIb3dldmVyLCBzb21lIG9mIHRoZXNlIGNvbnN0YW50cyBhcmUgYmVp
bmcgdXNlZCBhcyAzMi1iaXQgdmFsdWVzLCBhbmQgdGhlIGNvZGUKKyAgICAgICAgd2FzIHN0YXRp
Y19jYXN0J2luZyB0aGVtIGludG8gaW50MzJfdC4gIFRoaXMgc2V0IG9mIGNvbnN0YW50cyBhcmUg
YWxsIHRoZSBzbWFsbAorICAgICAgICB2YWx1ZXMgdGhhdCBmaXQgaW4gYW4gaW50MzJfdCBhbnl3
YXkuICBTbywgd2UncmUgcHV0dGluZyB0aGVzZSBpbiBpbnQzMl90IGluc3RlYWQKKyAgICAgICAg
c28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGtlZXAgY2FzdGluZyB0aGVtLiAgSW4gdGhlIGZldyBw
bGFjZXMgd2hlcmUgdGhleSBhcmUKKyAgICAgICAgdXNlZCBhcyBpbnQ2NF90LCB0aGV5IHdpbGwg
YXV0b21hdGljYWxseSBnZXQgdXAtY2FzdGVkIGFueXdheS4KKworICAgICAgICBJbiB0aGlzIHBh
dGNoLCB3ZSBhbHNvIGRpZCB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFtZWQgVGFn
TWFzayB0byBOb3RDZWxsTWFzaywgYmVjYXVzZSBldmVyeXdoZXJlIGluIHRoZSBjb2RlLCB3ZSdy
ZQorICAgICAgICAgICBiYXNpY2FsbHkgdXNpbmcgaXQgdG8gZmlsdGVyIG91dCBjZWxscyBsaWtl
IHRoaXM6CisKKyAgICAgICAgICAgICAgaWYgKHZhbHVlICYgTm90Q2VsbE1hc2spIHRoZW4gZ290
byBoYW5kbGVOb3RDZWxsQ2FzZTsKKworICAgICAgICAyLiBSZW5hbWVkIFRhZ1R5cGVOdW1iZXIg
dG8gTnVtYmVyVGFnIGZvciBhIHNob3J0ZXIgbmFtZS4KKworICAgICAgICAgICBEaXR0byBmb3Ig
VGFnQml0VHlwZU90aGVyLCBUYWdCaXRCb29sLCBUYWdCaXRVbmRlZmluZWQsIFRhZ0JpdHNXYXNt
LCBhbmQgVGFnV2FzbU1hc2suCisgICAgICAgICAgIFRoZXkgYXJlIG5vdyBPdGhlclRhZywgQm9v
bFRhZywgVW5kZWZpbmVkVGFnLCBXYXNtVGFnLCBhbmQgV2FzbU1hc2suCisKKyAgICAgICAgMy4g
SW50cm9kdWNlZCBEb3VibGVFbmNvZGVPZmZzZXRCaXQgc28gdGhhdCBjbGllbnQgY29kZSBkbyBu
b3QgZW1iZWQgdGhpcyB2YWx1ZQorICAgICAgICAgICBhcyBhIGxpdGVyYWwgY29uc3RhbnQuICBX
ZSBub3cgZGVmaW5lIERvdWJsZUVuY29kZU9mZnNldCBiYXNlZCBvbgorICAgICAgICAgICBEb3Vi
bGVFbmNvZGVPZmZzZXRCaXQgZW5zdXJpbmcgY29uc2lzdGVuY3kuCisKKyAgICAgICAgNC4gSW50
cm9kdWNlZCBNaXNjVGFnIHNvIHRoYXQgY2xpZW50cyBkb24ndCBoYXZlIHRvIHB1dCB0aGlzIHNl
dCBvZiB0YWdzIHRvZ2V0aGVyCisgICAgICAgICAgIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgNS4g
UmVtb3ZlZCBzdGF0aWMgYXNzZXJ0cyBmb3IgdGFncyBpbiBMTEludERhdGEuY3BwIGJlY2F1c2Ug
dGhlIG9mZmxpbmVhc20gbm93CisgICAgICAgICAgIGNhcHR1cmVzIHRoZXNlIHZhbHVlcyBjb3Jy
ZWN0bHkgd2l0aCBjb25zdGV4cHIgc3RhdGVtZW50cy4gIFRoZXNlIHN0YXRpYworICAgICAgICAg
ICBhc3NlcnRzIHdlcmUgaG9sZG92ZXJzIGZyb20gdGhlIG9sZCBkYXlzIGJhY2sgd2hlbiB3ZSBo
YWQgdG8gZGVmaW5lIExMSW50CisgICAgICAgICAgIGNvbnN0YW50IHZhbHVlcyBtYW51YWxseSwg
YW5kIHdlIG5lZWRlZCBhIG1lY2hhbmlzbSB0byBkZXRlY3Qgd2hlbiB0aGUgdmFsdWVzCisgICAg
ICAgICAgIGhhdmUgY2hhbmdlZCBpbiB0aGUgc291cmNlLgorCisgICAgICAgIDYuIFJlcGxhY2Vk
IHNvbWUgcnVudGltZSBhc3NlcnRzIGluIFJlZ2lzdGVyU2V0LmNwcCB3aXRoIHN0YXRpY19hc3Nl
cnRzLgorCisgICAgICAgIDcuIEluIFdhc206Ondhc21Ub0pTKCksIHdlIHdlcmUgY29uc3RydWN0
aW5nIHRoZSB2YWx1ZSBvZiBKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQKKyAgICAgICAgICAg
Y29uc3RhbnQgYnkgbGVmdCBzaGlmdGluZyAxIGJ5IEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNl
dEJpdC4gIFRoZXJlJ3Mgbm8gbmVlZAorICAgICAgICAgICB0byBkbyB0aGlzIGZvciBBUk02NCBi
ZWNhdXNlIHRoZSBjb25zdGFudCBjYW4gYmUgbG9hZGVkIGVmZmljaWVudGx5IHdpdGggYSBzaW5n
bGUKKyAgICAgICAgICAgTU9WWiBpbnN0cnVjdGlvbi4gIFNvLCB3ZSBhZGQgYSBDUFUoQVJNNjQp
IGNhc2UgdG8ganVzdCBtb3ZlIHRoZSBjb25zdGFudCBpbnRvCisgICAgICAgICAgIHRoZSB0YXJn
ZXQgcmVnaXN0ZXIuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFzb24uaDoKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmdldEludFR5cGVkQXJyYXlTdG9yZU9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNaXNj
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BpbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmljdEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0
T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NTJDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bW92ZVRydWVUbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6Om1vdmVGYWxzZVRvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Ymxlc3NCb29sZWFuKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJvb2xlYW5Ub051bWJlcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcnJheUlu
ZGV4T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q2FsbE9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZURpcmVjdENhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2Fs
bEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5C
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlTbmlwcGV0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeUJpdE9wU25pcHBldCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRSaWdodFNoaWZ0U25pcHBl
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVxdWFsTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBl
T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RJbnQzMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpib3hEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjppc05vdENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjppc0NlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05v
dE1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJvb2xl
YW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RPdGhlcik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzT3RoZXIpOgorICAgICAgICAqIGZ0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnJlYm94QWNjb3Jk
aW5nVG9Gb3JtYXQpOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsZWVCaXRzLmg6CisgICAgICAgIChKU0M6OkNhbGxlZUJpdHM6OmJv
eFdhc20pOgorICAgICAgICAoSlNDOjpDYWxsZWVCaXRzOjppc1dhc20gY29uc3QpOgorICAgICAg
ICAoSlNDOjpDYWxsZWVCaXRzOjphc1dhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0
SXNKU051bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNK
U0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVh
bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZVNhdmVkVGFnUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkNlbGwpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmT3RoZXIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90T3RoZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmJyYW5jaElmTm90SW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdE51
bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3REb3VibGVL
bm93bk5vdEludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkJv
b2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90Qm9vbGVh
bik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94RG91YmxlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveERvdWJsZVdpdGhvdXRBc3NlcnRpb25zKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hJbnQ1Mik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6Ym94Qm9vbGVhblBheWxvYWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJveEludDMyKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWVTaHVmZmxlcjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmdldEZyZWVSZWdpc3RlciBjb25zdCk6Cisg
ICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWVTaHVmZmxlcjo6ZW1pdEJveCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVy
Ojp0cnlBY3F1aXJlTnVtYmVyVGFnUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVT
aHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkdQUkluZm86OnJlc2VydmVkUmVnaXN0ZXJzKToK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAqIGppdC9KSVRCaXRBbmRHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRCaXRBbmRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAqIGppdC9KSVRCaXRPckdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJ
VEJpdE9yR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQml0
WG9yR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQml0WG9yR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQpOgorICAgICAgICAqIGppdC9KSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKSVRMZWZ0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRN
dWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2Up
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cnVudGltZVRhZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpk
ZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENh
bGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6
CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkRvdWJsZSk6CisgICAg
ICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnRhZ1JldHVybkFzSW50MzIpOgorICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtG
b3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjph
cml0eUZpeHVwR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkNMb29wOjpleGVjdXRlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6CisgICAgICAgICogb2Zm
bGluZWFzbS9jbG9vcC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6aXNJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjphc0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmlzTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOS0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBUT0NUT1UgYnVnIGluIGhhdmluZ0FCYWRUaW1lIHJlbGF0
ZWQgYXNzZXJ0aW9uIGluIERGR1NwZWN1bGF0aXZlSklUCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDggKzQzLDggQEAgZW51bSBBYm9ydFJlYXNvbiB7CiAgICAgQUhJc05vdE51bGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA5MCwKICAgICBBSFN0YWNr
UG9pbnRlck1pc2FsaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTAwLAogICAgIEFI
U3RydWN0dXJlSURJc1ZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTAsCi0g
ICAgQUhUYWdNYXNrTm90SW5QbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEy
MCwKLSAgICBBSFRhZ1R5cGVOdW1iZXJOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMTMwLAorICAgIEFITm90Q2VsbE1hc2tOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxMjAsCisgICAgQUhOdW1iZXJUYWdOb3RJblBsYWNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEzMCwKICAgICBBSFR5cGVJbmZvSW5saW5lVHlwZUZsYWdzQXJlVmFsaWQg
ICAgICAgICAgICAgICAgID0gMTQwLAogICAgIEFIVHlwZUluZm9Jc1ZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxNTAsCiAgICAgQjNPb3BzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE1NSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgdGhlIHByb3BlcnR5LgogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3du
UG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChWYWx1ZU51
bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJy
YW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICNlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VG
b3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSAr
IFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5v
blplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsgLy8gUHJpbWl0aXZlcyBtdXN0IGhhdmUg
YSBzdG9yZWQgcHJvdG90eXBlLiBXZSB1c2UgcHJvdG90eXBlRm9yTG9va3VwIGZvciB0aGVtLgog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBl
cnM6OkVxdWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChW
YWx1ZU51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICNlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6
Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDcgKzQ3MSw3IEBA
IHZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQoQ29udGV4dCYgY28KICAgICAgICAgICAgICAg
ICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3Zlcnkt
PmRlc3QoKSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3JjKCkpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVz
dCgpKSA+PiAzMikpOwotICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkg
fD0gVGFnVHlwZU51bWJlcjsKKyAgICAgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpIHw9IEpTVmFsdWU6Ok51bWJlclRhZzsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFr
OwogCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250
ZXh0JiBjbwogICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAx
KSBeIDB4ODAwMDAwMDBVOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOwotICAgICAgICAgICAgICAg
IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKKyAgICAgICAgICAg
ICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9IEpTVmFsdWU6Ok51bWJlclRhZzsKICNl
bmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC00ODcsMTMgKzQ4NywxMyBAQCB2b2lk
IE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgICAgICAgICAgICAgY3B1
LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IChjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVz
dCgpKSAtIHJlY292ZXJ5LT5pbW1lZGlhdGUoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID4+IDMyKSk7Ci0g
ICAgICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVy
OworICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gSlNWYWx1ZTo6
TnVtYmVyVGFnOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
IGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1LmdwcihyZWNvdmVyeS0+
ZGVzdCgpKSBeIFZhbHVlRmFsc2U7CisgICAgICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+
ZGVzdCgpKSA9IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgXiBKU1ZhbHVlOjpWYWx1ZUZhbHNl
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTU0Niw4ICs1NDYsOCBAQCB2
b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgQVNTRVJUKCEoY29u
dGV4dC5mcDx1aW50cHRyX3Q+KCkgJiAweDcpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
QVNTRVJUKGNwdS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9PSBUYWdUeXBl
TnVtYmVyKTsKLSAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID09
IFRhZ01hc2spOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSA9PSBKU1ZhbHVlOjpOdW1iZXJUYWcpOworICAgIEFTU0VSVChjcHUuZ3ByKEdQUkluZm86Om5v
dENlbGxNYXNrUmVnaXN0ZXIpID09IEpTVmFsdWU6Ok5vdENlbGxNYXNrKTsKICNlbmRpZgogCiAg
ICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0
cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY4Niw4ICs2ODYsOCBAQCB2b2lkIE9TUkV4aXQ6OmV4ZWN1
dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgc2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnRleHQsIGJh
c2VsaW5lQ29kZUJsb2NrKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgY3B1LmdwcihHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihUYWdU
eXBlTnVtYmVyKTsKLSAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikgPSBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KFRhZ1R5cGVOdW1iZXIgfCBUYWdCaXRUeXBlT3RoZXIpOworICAg
IGNwdS5ncHIoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpID0gSlNWYWx1ZTo6TnVtYmVyVGFn
OworICAgIGNwdS5ncHIoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikgPSBKU1ZhbHVlOjpO
b3RDZWxsTWFzazsKICNlbmRpZgogCiAgICAgaWYgKGV4aXQuaXNFeGNlcHRpb25IYW5kbGVyKCkp
CkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVs
cGVycyYgCiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6CiAgICAgICAgICAgICBqaXQuc3Vi
MzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBy
ZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTExMzAsMjAgKzExMzAsMjAgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2Fs
bEhlbHBlcnMmIAogICAgICAgICAgICAgaml0LnJzaGlmdDMyKEFzc2VtYmx5SGVscGVyczo6VHJ1
c3RlZEltbTMyKDEpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAgICAgICAgIGppdC54b3IzMihB
c3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDgwMDAwMDAwKSwgcmVjb3ZlcnktPmRlc3Qo
KSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQu
b3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CiAjZW5k
aWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGRJbW1l
ZGlhdGU6CiAgICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1ibHlIZWxwZXJzOjpJbW0zMihyZWNv
dmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBy
ZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKICNpZiBVU0UoSlNWQUxV
RTY0KQotICAgICAgICAgICAgaml0LnhvcjY0KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVjb3ZlcnktPmRlc3QoKSk7Cisg
ICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6VmFsdWVGYWxzZSksIHJlY292ZXJ5LT5kZXN0KCkpOwogI2VuZGlmCiAgICAgICAgICAgICBi
cmVhazsKIApAQCAtMTI0OCwxMSArMTI0OCwxMSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0
KENDYWxsSGVscGVycyYgCiAgICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxl
IHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAg
ICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAg
ICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0
ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAorICAgICAgICAgICAgICAgIC8v
IFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0
aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2Uga25vdyBo
b3cgdG8gcmVzdG9yZSBpdC4KLSAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVs
cGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVw
b3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02
NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNW
YWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIEpTVmFsdWVSZWdzKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAg
cHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhleGl0Lm1fanNWYWx1ZVNv
dXJjZS5ncHIoKSkpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVFNjQpCkBAIC0xNTE5LDcgKzE1
MTksNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJ
bmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6
cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0Lm9y
NjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
ICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3Iob3BlcmFuZCkpOwogI2Vsc2UKICAgICAgICAgICAgIGppdC5sb2FkMzIoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJl
dmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBHUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAgICAgICBzd2l0Y2ggKHNwaWxs
Rm9ybWF0KSB7CiAgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewogICAgICAgICAg
ICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBncHIpOworICAgICAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAgICAgc3BpbGxGb3JtYXQgPSBE
YXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTEyMiwxMSArMTIyLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUo
RWRnZSAKICAgICAgICAgLy8gSWYgbm90LCB3ZSdsbCB6ZXJvIGV4dGVuZCBpbiBwbGFjZSwgc28g
bWFyayBvbiB0aGUgaW5mbyB0aGF0IHRoaXMgaXMgbm93IHR5cGUgRGF0YUZvcm1hdEludDMyLCBu
b3QgRGF0YUZvcm1hdEpTSW50MzIuCiAgICAgICAgIGlmIChtX2dwcnMuaXNMb2NrZWQoZ3ByKSkg
ewogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRlKCk7Ci0gICAgICAgICAgICBt
X2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByLCByZXN1bHQpOwor
ICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgZ3ByLCBy
ZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICBt
X2dwcnMubG9jayhncHIpOwotICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdS
ZWdpc3RlciwgZ3ByKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwg
RGF0YUZvcm1hdEpTSW50MzIpOwogICAgICAgICByZXR1cm4gZ3ByOwogICAgIH0KQEAgLTI1Nywx
MyArMjU3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAK
ICAgICBpZiAoIWlzS25vd25Ob3RPdGhlcihvcGVyYW5kLm5vZGUoKSkpIHsKICAgICAgICAgbV9q
aXQubW92ZShhcmdHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIG1faml0LmFuZDY0KEpJVENvbXBp
bGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlc3VsdEdQUik7Ci0gICAgICAg
IG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW0zMihWYWx1ZU51bGwpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5h
bmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBy
ZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBy
ZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVOdWxsKSwg
cmVzdWx0R1BSKTsKICAgICB9CiAKICAgICBkb25lLmxpbmsoJm1faml0KTsKICAKLSAgICBtX2pp
dC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVh
bik7CiB9CiAKQEAgLTMxOSw4ICszMTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzdGQ6OnN3YXAodGFrZW4sIG5vdFRha2VuKTsKICAg
ICAgICAgfQogICAgICAgICBtX2ppdC5tb3ZlKGFyZ0dQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAg
bV9qaXQuYW5kNjQoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwg
cmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoNjQoY29uZGl0aW9uLCByZXN1bHRHUFIsIEpJVENv
bXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSwgdGFrZW4pOworICAgICAgICBtX2ppdC5h
bmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCBy
ZXN1bHRHUFIpOworICAgICAgICBicmFuY2g2NChjb25kaXRpb24sIHJlc3VsdEdQUiwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51bGwpLCB0YWtlbik7CiAgICAgICAg
IGp1bXAobm90VGFrZW4pOwogICAgIH0KIH0KQEAgLTY3Miw3ICs2NzIsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAgICAgICBpZiAoIWlzRGlyZWN0
KQogICAgICAgICAgICAgICAgIGNhbGxlZS51c2UoKTsKIAotICAgICAgICAgICAgc2h1ZmZsZURh
dGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcjsKKyAgICAg
ICAgICAgIHNodWZmbGVEYXRhLm51bWJlclRhZ1JlZ2lzdGVyID0gR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1Mb2NhbHMgPSBtX2ppdC5ncmFw
aCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuY2FsbGVl
ID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRhRm9ybWF0SlMpOwogICAgICAg
ICAgICAgc2h1ZmZsZURhdGEuYXJncy5yZXNpemUobnVtQWxsb2NhdGVkQXJncyk7CkBAIC0xMjcy
LDkgKzEyNzIsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAK
ICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTKTsK
ICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Jvb2xlYW4pIHsKLSAgICAgICAgICAgIG1faml0Lnhv
cjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7
CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxz
ZSksIGdwcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSksIFNwZWN1bGF0
aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ssIGdwciwgSW52YWxpZEdQUlJlZykp
OwotICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKKyAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKICAgICAgICAgfQogICAgICAgICBpbmZv
LmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKICAgICAg
ICAgcmV0dXJuIGdwcjsKQEAgLTEyOTEsOSArMTI5MSw5IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAg
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAgIGlmICh0eXBlICYgflNwZWNCb29sZWFu
KSB7Ci0gICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oVmFsdWVGYWxzZSkpLCBncHIpOworICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBncHIpOwogICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hUZXN0
NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KH4xKSkpLCBTcGVjdWxhdGlvblJlY292ZXJ5KEJvb2xlYW5TcGVjdWxhdGlvbkNo
ZWNrLCBncHIsIEludmFsaWRHUFJSZWcpKTsKLSAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7CisgICAgICAg
ICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIGdwcik7
CiAgICAgICAgIH0KICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0
YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIHJldHVybiBncHI7CkBAIC0xMzMxLDcgKzEzMzEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0U3RyaWN0CiAgICAgLy8gQXQg
dGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgd2UgY2FuIHBlcmZvcm0gYSBzdHJhaWdodC1mb3J3YXJk
IGVxdWFsaXR5IGNvbXBhcmlzb24gb24gcG9pbnRlcgogICAgIC8vIHZhbHVlcyBiZWNhdXNlIHdl
IGFyZSBkb2luZyBzdHJpY3QgZXF1YWxpdHkuCiAgICAgbV9qaXQuY29tcGFyZTY0KE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgb3AxR1BSLCBvcDJHUFIsIHJlc3VsdEdQUik7Ci0gICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQub3IzMihU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CiAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwog
fQogICAgIApAQCAtMTQxMywxOCArMTQxMywxOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0VG9PYmplCiAgICAgLy8gcHJvdmUgdGhhdCBpdCBpcyBlaXRoZXIgbnVsbCBvciB1
bmRlZmluZWQuCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKHJpZ2h0Q2hpbGQsIFNwZWNDZWxsQ2hl
Y2sgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUob3AyR1BSLCByZXN1bHRHUFIp
OwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdC
aXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHRHUFIpOwog
ICAgICAgICAKICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSwgcmlnaHRDaGlsZCwgU3BlY0NlbGxDaGVjayB8IFNwZWNPdGhlciwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQoVmFsdWVOdWxsKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKIAogICAgIGRvbmUubGluaygmbV9qaXQpOwotICAg
IG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAgIG1f
aml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwog
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNC
b29sZWFuKTsKIH0KIApAQCAtMTQ4OSwxMiArMTQ4OSwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIAogICAgICAgICByaWdodE5vdENlbGwubGlu
aygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tb3ZlKG9wMkdQUiwgcmVzdWx0R1BSKTsKLSAgICAg
ICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZp
bmVkKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0R1BSKTsKICAgICAgICAg
CiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJp
Z2h0Q2hpbGQsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIsIG1faml0LmJyYW5jaDY0KAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLAotICAgICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOworICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVO
dWxsKSkpOwogICAgIH0KICAgICAKICAgICBqdW1wKG5vdFRha2VuKTsKQEAgLTE1MjcsNyArMTUy
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQ1MkNvbXBhcmUKICAgICBtX2pp
dC5jb21wYXJlNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKICAgICAKICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVz
ZSBpdCBoZXJlLgotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1
bHQuZ3ByKCkpOworICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFs
c2UpLCByZXN1bHQuZ3ByKCkpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2N1
cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIApAQCAtMTYxMiwyMSArMTYxMiwy
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAKICAgICAgICAg
aXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICB9Ci0gICAgbV9q
aXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgbV9qaXQu
bW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAKICAgICBub3RD
ZWxsLmxpbmsoJm1faml0KTsKIAogICAgIGlmIChuZWVkc1R5cGVDaGVjayhub2RlVXNlLCBTcGVj
Q2VsbENoZWNrIHwgU3BlY090aGVyKSkgewogICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BSLCBy
ZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hbmQ2NChN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1
bHRHUFIpOwogICAgICAgICB0eXBlQ2hlY2soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIG5vZGVVc2UsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIsIG1faml0LmJyYW5jaDY0
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgCiAgICAgICAgICAg
ICAgICAgcmVzdWx0R1BSLCAKLSAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICAgICB9Ci0gICAgbV9qaXQubW92ZShU
cnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHRHUFIpOwogICAgIAogICAgIGRvbmUu
bGluaygmbV9qaXQpOwogICAgIApAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBTcGVjdWxhdGVJbnQzMk9wZXJhbmQg
dmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAgICAgICAgIG1faml0LmNvbXBhcmUzMihNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDAp
LCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVMb2dpY2FsTm90KE4KICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQubW92
ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vblplcm8gPSBtX2ppdC5icmFuY2hEb3VibGVOb25a
ZXJvKHZhbHVlLmZwcigpLCBzY3JhdGNoLmZwcigpKTsKICAgICAgICAgbV9qaXQueG9yMzIoVHJ1
c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBub25aZXJvLmxpbmsoJm1f
aml0KTsKQEAgLTE2NzksMTEgKzE2NzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUxvZ2ljYWxOb3QoTgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOyAvLyBGSVhN
RTogV2UgY291bGQgcmV1c2UsIGJ1dCBvbiBzcGVjdWxhdGlvbiBmYWlsIHdvdWxkIG5lZWQgcmVj
b3ZlcnkgdG8gcmVzdG9yZSB0YWcgKGFraW4gdG8gYWRkKS4KICAgICAgICAgCiAgICAgICAgIG1f
aml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LnhvcjY0
KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlc3VsdC5n
cHIoKSk7CisgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZh
bHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Jvb2xlYW4sIG1faml0
LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywgcmVz
dWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwotICAg
ICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVU
cnVlKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAKICAgICAgICAgLy8g
SWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4p
OwpAQCAtMTcxMCw3ICsxNzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2lj
YWxOb3QoTgogICAgICAgICB9CiAgICAgICAgIGJvb2wgbmVnYXRlUmVzdWx0ID0gdHJ1ZTsKICAg
ICAgICAgbV9qaXQuZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbih2bSgpLCBKU1ZhbHVlUmVncyhh
cmcxR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCB2YWx1ZUZQUi5mcHIoKSwgdGVtcEZQUi5m
cHIoKSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCBnbG9iYWxPYmplY3QsIG5l
Z2F0ZVJlc3VsdCk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2Up
LCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpW
YWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIs
IG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTc2OSwxMCArMTc2OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyCiAgICAgCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGVVc2UsIFNwZWNDZWxsQ2hlY2sg
fCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUodmFsdWVHUFIsIHNjcmF0Y2hHUFIp
OwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdC
aXRVbmRlZmluZWQpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgc2NyYXRjaEdQUik7
CiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZVVzZSwgU3BlY0NlbGxDaGVjayB8IFNwZWNPdGhlciwgbV9qaXQuYnJhbmNoNjQoCi0gICAg
ICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICBqdW1wKG5vdFRha2VuKTsK
ICAgICAKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFu
Y2goTm9kZSogbm8KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgp
LT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50MzJPbmx5KSB7CiAgICAgICAgICAgICAgICAgYnJhbmNo
NjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSwgbm90VGFrZW4pOwotICAgICAg
ICAgICAgICAgIGJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHZhbHVlR1BS
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRha2VuKTsKKyAgICAgICAgICAgICAg
ICBicmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB2YWx1ZUdQUiwgR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHRha2VuKTsKICAgICAgICAgICAgIH0KICAgICAKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY0Jvb2xlYW4pIHsK
QEAgLTIzOTEsNyArMjM5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIHVzZShtX2dyYXBoLnZhckFyZ0NoaWxkKG5vZGUsIDApKTsKICAg
ICAgICAgICAgIGluZGV4LnVzZSgpOwogCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZh
bHVlVW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTMxMDEsMTIgKzMxMDEsMTIgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMpOwogICAgICAgICBHUFJSZWcgb3BlcmFuZEdQUiA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gz
MihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJbW0zMig0KSkpOwogICAg
ICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJh
bmRHUFIsIFRydXN0ZWRJbW0zMigxKSkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJbW0zMigyKSkpOwot
ICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJl
c3VsdEdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICBqc1ZhbHVlUmVz
dWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzMyMSw3ICszMzIxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsgLy8gRklYTUU6IFdlIGNvdWxkIHJldXNlLCBidXQg
b24gc3BlY3VsYXRpb24gZmFpbCB3b3VsZCBuZWVkIHJlY292ZXJ5IHRvIHJlc3RvcmUgdGFnIChh
a2luIHRvIGFkZCkuCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWUu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHQuZ3ByKCkpOworICAg
ICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBy
ZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0Jvb2xlYW4s
IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
blplcm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4x
KSkpKTsKQEAgLTMzNDIsMTMgKzMzNDIsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICBt
X2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgbV9qaXQu
eG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6WmVybywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4ofjEpKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQu
Z3ByKCkpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKICAgICAgICAgICAgIGlzQm9vbGVhbi5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICBtX2pp
dC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVzdWx0LmdwcigpKTsKKyAg
ICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwpAQCAtMzkxMiw3ICsz
OTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAKICAgICAgICAgbV9q
aXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBt
X2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5n
cHIoKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKQEAgLTM5MjcsNyArMzkyNyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUu
Z3ByKCksIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCByZXN1bHQuZ3ByKCkpOwogICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAKICAgICAg
ICAgaXNDZWxsLmxpbmsoJm1faml0KTsKQEAgLTM5NTQsNyArMzk1NCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAgICBub3RNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7Ci0gICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwor
ICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVz
dWx0LmdwcigpKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zOTY3LDggKzM5
NjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAgICAgICAgbV9qaXQubW92ZSh2
YWx1ZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQuYW5kNjQoQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlc3VsdEdQUik7Ci0gICAgICAgIG1faml0
LmNvbXBhcmU2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHRHUFIsIENDYWxsSGVscGVyczo6
VHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmFuZDY0
KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1
bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgcmVz
dWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZU51bGwpLCBy
ZXN1bHRHUFIpOwogCiAgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5SZXN1bHQocmVzdWx0R1BSLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTc5LDkgKzM5NzksOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgUmV1c2UsIHZhbHVlKTsKICAgICAgICAgCiAgICAgICAgIG1faml0Lm1vdmUodmFsdWUu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0LnhvcjY0KEpJVENvbXBpbGVyOjpU
cnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lnhv
cjY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgIG1faml0LnRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgcmVzdWx0
LmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4x
KSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVl
RmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVh
azsKICAgICB9CkBAIC0zOTkwLDggKzM5OTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUt
PmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFs
dWUpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQudGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJv
LCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZXN1bHQuZ3By
KCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgbV9qaXQudGVzdDY0KEpJVENvbXBpbGVyOjpOb25aZXJvLCB2YWx1
ZS5ncHIoKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHJlc3VsdC5ncHIoKSk7CisgICAg
ICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQu
Z3ByKCkpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSwgRGF0YUZv
cm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTQwMTksMjEgKzQwMTks
MjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBt
X2ppdC51cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDUyKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9q
aXQuYW5kMzIoVHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BSKTsKICAgICAgICAgYXV0byBu
b3ROYW5Ob3JJbmZpbml0eSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
VHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVz
dGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwogICAgICAgICBkb25l
LmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG5vdE5hbk5vckluZmluaXR5Lmxpbmso
Jm1faml0KTsKICAgICAgICAgbV9qaXQucm91bmRUb3dhcmRaZXJvRG91YmxlKHRlbXBGUFIxLCB0
ZW1wRlBSMik7CiAgICAgICAgIG1faml0LmNvbXBhcmVEb3VibGUoSklUQ29tcGlsZXI6OkRvdWJs
ZUVxdWFsLCB0ZW1wRlBSMSwgdGVtcEZQUjIsIHJlc3VsdEdQUik7Ci0gICAgICAgIG1faml0Lm9y
MzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAg
ICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAgICBpc0ludDMyLmxpbmsoJm1f
aml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0
R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVl
KSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAg
ICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CiAKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRh
Rm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ1NjAsNyArNDU2MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsK
IAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOwogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTUyMDEsMTcgKzUyMDEsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjptb3ZlVHJ1ZVRvKEdQ
UlJlZyBncHIpCiB7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgZ3By
KTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCBncHIp
OwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjptb3ZlRmFsc2VUbyhHUFJSZWcgZ3ByKQogewot
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBncHIpOworICAgIG1faml0
Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBncHIpOwogfQogCiB2b2lk
IFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnIGdwcikKIHsKLSAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgZ3ByKTsKKyAgICBtX2ppdC5vcjMyKFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BSUmVnIHJlc3VsdEdQUikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBMb2FkMzJQYXlsb2FkQm94SW50OgogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7
Ci0gICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBwbGFu
LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwg
cGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTG9hZDMyUGF5bG9hZENvbnZl
cnRUb0ludDUyOgogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Io
cGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5ncHIoKSk7CkBAIC0xOTMxLDE4
ICsxOTMxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICNp
ZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgewogICAgICAgICBjYXNl
IEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywg
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMp
OwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcC5ncHIoKSk7Cisg
ICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDog
ewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoK
QEAgLTI0MDksNyArMjQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRv
SW50MzIKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQx
KCksIH5TcGVjQ2VsbENoZWNrLCBtX2ppdC5icmFuY2hJZkNlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8vIEl0J3Mgbm90IGEgY2VsbDog
c28gdHJ1ZSB0dXJucyBpbnRvIDEgYW5kIGFsbCBlbHNlIHR1cm5zIGludG8gMC4KLSAgICAgICAg
ICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCBncHIsIFRydXN0ZWRJ
bW0zMihWYWx1ZVRydWUpLCByZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIG1faml0LmNvbXBh
cmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVl
VHJ1ZSksIHJlc3VsdEdwcik7CiAgICAgICAgICAgICAgICAgY29udmVydGVkLmFwcGVuZChtX2pp
dC5qdW1wKCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlzTnVtYmVyLmxp
bmsoJm1faml0KTsKQEAgLTI2MzcsOSArMjYzNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIGRvbmUuYXBwZW5kKGlzTnVsbCk7CiAKICAg
ICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKG9wMUdQUiksIG5vZGUtPmNoaWxk
MSgpLCB+U3BlY0NlbGxDaGVjaywKLSAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQo
SklUQ29tcGlsZXI6Olplcm8sIG9wMUdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFRhZ0JpdEJvb2wpKSkpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NChK
SVRDb21waWxlcjo6WmVybywgb3AxR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbFRhZykp
KTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5j
aDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxzZSA9IG1faml0LmJyYW5jaDY0
KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVG
YWxzZSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBkb3VibGUgb25lID0gMTsKICAg
ICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0cigmb25lKSwgcmVzdWx0RlBS
KTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAoKSk7CkBAIC0zMDcyLDcgKzMw
NzIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBlZEFycmF5U3RvCiAgICAgICAg
ICAgICAgICAgICAgIGZwciwgZ3ByLCBNYWNyb0Fzc2VtYmxlcjo6QnJhbmNoSWZUcnVuY2F0ZVN1
Y2Nlc3NmdWwpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgICAgICAgICAgbV9qaXQu
b3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHByb3BlcnR5KTsKKyAgICAgICAg
ICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBwcm9wZXJ0eSk7
CiAgICAgICAgICAgICAgICAgYm94RG91YmxlKGZwciwgZ3ByKTsKICNlbHNlCiAgICAgICAgICAg
ICAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKQEAgLTEwNDg1LDcgKzEwNDg1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdlIAogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHJlZ3MsIGVkZ2UsIFNwZWNNaXNjLAotICAg
ICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHJlZ3MuZ3ByKCksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8
IFRhZ0JpdFVuZGVmaW5lZCkpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoNjQoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlLCByZWdzLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFs
dWU6Ok1pc2NUYWcpKSk7CiAjZWxzZQogICAgIElHTk9SRV9XQVJOSU5HU19CRUdJTigiZW51bS1j
b21wYXJlIikKICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6OkludDMyVGFnID49IEpTVmFsdWU6
OlVuZGVmaW5lZFRhZywgIkludDMyVGFnIGlzIGluY2x1ZGVkIGluID49IEpTVmFsdWU6OlVuZGVm
aW5lZFRhZyByYW5nZS4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtNTM4LDcgKzUz
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gYm94IGludDMyIGFuZCBj
ZWxsIHZhbHVlcyAuLi4KICAgICAgICAgICAgIC8vIGJ1dCBvbiBKU1ZBTFVFNjQgYm94aW5nIGEg
Y2VsbCBpcyBhIG5vLW9wIQogICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ID09IERhdGFGb3Jt
YXRJbnQzMikKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgcmVnKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyLCByZWcpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBTcGls
bCB0aGUgdmFsdWUsIGFuZCByZWNvcmQgaXQgYXMgc3BpbGxlZCBpbiBpdHMgYm94ZWQgZm9ybS4K
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihz
cGlsbE1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMyArMjYwLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgYXV0byBwcmVPcmRlciA9IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRl
cigpOwogCiAgICAgICAgIG1fY2FsbEZyYW1lID0gbV9vdXQuZnJhbWVQb2ludGVyKCk7Ci0gICAg
ICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0LmNvbnN0SW50NjQoVGFnVHlwZU51bWJlcik7Ci0g
ICAgICAgIG1fdGFnTWFzayA9IG1fb3V0LmNvbnN0SW50NjQoVGFnTWFzayk7CisgICAgICAgIG1f
bnVtYmVyVGFnID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpOdW1iZXJUYWcpOworICAgICAg
ICBtX25vdENlbGxNYXNrID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpOb3RDZWxsTWFzayk7
CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgQjMga25vd3MgdGhhdCB3ZSByZWFsbHkgY2Fy
ZSBhYm91dCB0aGUgbWFzayByZWdpc3RlcnMuIFRoaXMgZm9yY2VzIHRoZQogICAgICAgICAvLyBj
b25zdGFudHMgdG8gYmUgbWF0ZXJpYWxpemVkIGluIHJlZ2lzdGVycy4KLSAgICAgICAgbV9wcm9j
LmFkZEZhc3RDb25zdGFudChtX3RhZ1R5cGVOdW1iZXItPmtleSgpKTsKLSAgICAgICAgbV9wcm9j
LmFkZEZhc3RDb25zdGFudChtX3RhZ01hc2stPmtleSgpKTsKKyAgICAgICAgbV9wcm9jLmFkZEZh
c3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOworICAgICAgICBtX3Byb2MuYWRkRmFzdENv
bnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAgCiAgICAgICAgIC8vIFdlIGRv
bid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBwb2ludGVyIHRvIGl0c2VsZiBi
ZWNhdXNlCiAgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYWx3YXlzIGdldCBjb2xs
ZWN0ZWQuCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIExC
YXNpY0Jsb2NrIGNvbnZlcnRCb29sZWFuRmFsc2VDYXNlID0gbV9vdXQubmV3QmxvY2soKTsKIAog
ICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vbkRvdWJsZUNhc2UsIHVuZGVmaW5lZENh
c2UpOwotICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZUlzVW5kZWZpbmVkID0gbV9vdXQuZXF1
YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVVbmRlZmluZWQpKTsKKyAgICAgICAgICAg
ICAgICBMVmFsdWUgdmFsdWVJc1VuZGVmaW5lZCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5j
b25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICAgICAgbV9v
dXQuYnJhbmNoKHZhbHVlSXNVbmRlZmluZWQsIHVuc3VyZSh1bmRlZmluZWRDYXNlKSwgdW5zdXJl
KHRlc3ROdWxsQ2FzZSkpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8odW5kZWZp
bmVkQ2FzZSwgdGVzdE51bGxDYXNlKTsKQEAgLTE3NDYsNyArMTc0Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogCiAgICAgICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8odGVzdE51bGxDYXNlLCBudWxsQ2FzZSk7Ci0gICAgICAgICAgICAg
ICAgTFZhbHVlIHZhbHVlSXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50
NjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNOdWxsID0gbV9v
dXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSk7CiAg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKHZhbHVlSXNOdWxsLCB1bnN1cmUobnVsbENhc2Up
LCB1bnN1cmUodGVzdEJvb2xlYW5UcnVlQ2FzZSkpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQu
YXBwZW5kVG8obnVsbENhc2UsIHRlc3RCb29sZWFuVHJ1ZUNhc2UpOwpAQCAtMTc1NCw3ICsxNzU0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7
CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh0ZXN0Qm9vbGVhblRydWVDYXNlLCBj
b252ZXJ0Qm9vbGVhblRydWVDYXNlKTsKLSAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc0Jv
b2xlYW5UcnVlID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVUcnVl
KSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNCb29sZWFuVHJ1ZSA9IG1fb3V0LmVx
dWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVHJ1ZSkpOwogICAgICAg
ICAgICAgICAgIG1fb3V0LmJyYW5jaCh2YWx1ZUlzQm9vbGVhblRydWUsIHVuc3VyZShjb252ZXJ0
Qm9vbGVhblRydWVDYXNlKSwgdW5zdXJlKGNvbnZlcnRCb29sZWFuRmFsc2VDYXNlKSk7CiAKICAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb252ZXJ0Qm9vbGVhblRydWVDYXNlLCBjb252
ZXJ0Qm9vbGVhbkZhbHNlQ2FzZSk7CkBAIC0xNzYzLDcgKzE3NjMsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udmVydEJvb2xlYW5GYWxzZUNhc2UsIGNv
bnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc05vdEJvb2xlYW5G
YWxzZSA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KFZhbHVlRmFsc2Up
KTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc05vdEJvb2xlYW5GYWxzZSA9IG1fb3V0
Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlRmFsc2UpKTsK
ICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVlVmFsdWUodmFsdWUpLCBtX25v
ZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywgdmFsdWVJc05vdEJvb2xlYW5GYWxzZSk7CiAg
ICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29udmVydGVkRmFsc2UgPSBtX291dC5hbmNo
b3IobV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29u
dGludWF0aW9uKTsKQEAgLTE5MTMsNyArMTkxMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oYm9vbGVh
bkNhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBib29sZWFu
UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJpdE9yKAotICAgICAgICAgICAgICAgIG1fb3V0
Lnplcm9FeHQodW5ib3hCb29sZWFuKHZhbHVlKSwgSW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpKTsK
KyAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KHVuYm94Qm9vbGVhbih2YWx1ZSksIEludDY0
KSwgbV9udW1iZXJUYWcpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBs
YXN0TmV4dCk7CkBAIC0yMTUxLDggKzIxNTEsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFBhdGNo
cG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIob3BlcmFuZCk7Ci0gICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVy
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlcikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwog
ICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwogICAgICAgICBw
YXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7
CkBAIC0yMjQyLDggKzIyNDIsOCBAQCBwcml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxlZnQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRT
b21lUmVnaXN0ZXIocmlnaHQpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNr
LCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAg
cGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRy
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAg
ICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAgICAgICAgIHBh
dGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CkBAIC0zODIxLDggKzM4MjEsOCBA
QCBwcml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5w
YXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIo
YmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5
cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBpcyBhIFB1dEJ5SWRG
bHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9sYXRpbGUgcmVnaXN0ZXJzLgpA
QCAtNDI1Niw3ICs0MjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9
IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSk7CiAKICAgICAgICAgICAg
IHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBtX25vZGUsIG1fb3V0Lmxlc3NUaGFu
KGluZGV4LCBtX291dC5pbnQzMlplcm8pKTsKLSAgICAgICAgICAgIHNldEpTVmFsdWUobV9vdXQu
Y29uc3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgc2V0SlNWYWx1ZShtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTI5Miw3ICs1MjkyLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZvdW5kUmVzdWx0ID0gbV9vdXQuYW5jaG9y
KGluZGV4KTsKICAgICAgICAgICAgIHN3aXRjaCAoc2VhcmNoRWxlbWVudEVkZ2UudXNlS2luZCgp
KSB7CiAgICAgICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAgICAgICAgICAgICAgLy8gRW1w
dHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNlIG9mIFRhZ1R5cGVOdW1iZXIuCisgICAgICAgICAg
ICAgICAgLy8gRW1wdHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNlIG9mIEpTVmFsdWU6Ok51bWJl
clRhZy4KICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBtX291dC5sb2FkNjQobV9vdXQu
YmFzZUluZGV4KG1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllcywgc3RvcmFnZSwgaW5kZXgp
KTsKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQuZXF1YWwodmFsdWUsIHNlYXJj
aEVsZW1lbnQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJlKGxvb3BOZXh0KSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC03NjgyLDcgKzc2ODIsNyBAQCBwcml2YXRlOgogICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8ob3V0
T2ZCb3VuZHMsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVlRnJvbUJsb2NrIG91dE9mQm91
bmRzUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50NjQoVmFsdWVVbmRlZmluZWQp
KTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNo
b3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCkpOwogICAgICAgICBt
X291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC04MTIzLDggKzgxMjMsOCBAQCBwcml2YXRlOgogICAgICAg
ICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAg
ICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAg
ICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgICAgICBwYXRj
aHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUikgfTsKQEAgLTgyMzksOCArODIzOSw4IEBAIHByaXZhdGU6CiAgICAgICAgIAog
ICAgICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgICAgICAvLyBUaGUgc2h1ZmZsZXIgbmVlZHMg
dGFncy4KLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAg
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKQEAgLTg0MjUsOCArODQyNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFZlY3Rvcihhcmd1bWVudHMpOwogCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0g
ICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWco
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFw
cGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVn
aXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJl
cDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gUHJldmVu
dCBhbnkgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHVzaW5nIHRoZSBzY3JhdGNoIHJlZ2lzdGVyLgog
ICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRj
aFJlZ2lzdGVycygpKTsKQEAgLTg1NjAsOCArODU2MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZCh0aGlzQXJnLCBWYWx1ZVJlcDo6V2FybUFueSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgVmFsdWVSZXA6Oldh
cm1BbnkpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3JXaXRoUmVwKHBhdGNocG9p
bnRBcmd1bWVudHMsIFZhbHVlUmVwOjpXYXJtQW55KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJl
ZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKIAogICAgICAgICBSZWZQdHI8
UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNo
cG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC04ODY0LDggKzg4NjQsOCBAQCBw
cml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0
aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhw
YXRjaHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25v
dENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJl
cihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVSZWdpc3RlcnNGb3JKU0NhbGwo
KSk7CkBAIC05MTIyLDggKzkxMjIsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgUmVm
UHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQ
YXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFz
a1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIs
IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVt
YmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAg
ICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVy
cygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0
aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25z
dHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikgfTsKQEAg
LTEwNjQ2LDggKzEwNjQ2LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6Omxh
dGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RD
ZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRh
ZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKIAogICAg
ICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3Rl
cnMoKSk7CiAKQEAgLTEwODg3LDggKzEwODg3LDggQEAgcHJpdmF0ZToKICAgICAgICAgUGF0Y2hw
b2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwotICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBh
dGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX251
bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAg
cGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVlUmVwOjpTb21lRWFybHlSZWdp
c3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0xMTIyOSw3ICsxMTIyOSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhv
dXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZC
b3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51bGwpKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3Io
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTI1NSw3ICsxMTI1NSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICBtX291dC5hcHBlbmRUbyhv
dXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZC
b3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51bGwpKTsK
KyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3Io
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAgICAgbV9vdXQuanVt
cChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGlu
dWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMjI4NSw4ICsxMjI4NSw4IEBAIHByaXZhdGU6CiAKICAg
ICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2
NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihiYXNlKTsKLSAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5
cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6
OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgaXMgYSBHZXRCeUlk
Rmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQgc29tZSBwZXJmb3JtYW5jZSBi
b29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNsb2JiZXJzIHZvbGF0aWxlIHJl
Z2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNvcnJlY3RuZXNzLCB0aG91Z2gs
IHNpbmNlIHRoZQpAQCAtMTIzNTgsOCArMTIzNTgsOCBAQCBwcml2YXRlOgogICAgICAgICBQYXRj
aHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9u
dW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7
CiAKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNo
UmVnaXN0ZXJzKCkpOwogCkBAIC0xMjc0MCw4ICsxMjc0MCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IFJlZlB0cjxTbmlwcGV0PiBkb21KSVQgPSBjbGFzc0luZm8tPmNoZWNrU3ViQ2xhc3NTbmlwcGV0
KCk7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoVm9pZCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihjZWxsKTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFn
VHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpKTsKIAogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2luOwogICAgICAgICB1
bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRPZmZzZXQgPSBwYXRjaHBvaW50LT5udW1DaGlsZHJlbigp
OwpAQCAtMTI4NjUsOCArMTI4NjUsOCBAQCBwcml2YXRlOgogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIGlmIChkb21KSVQtPnJlcXVpcmVHbG9i
YWxPYmplY3QpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoZ2xv
YmFsT2JqZWN0KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVS
ZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+
YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ss
IFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5k
bGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9T
Y3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdp
c3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsKQEAgLTEzNDY4LDggKzEzNDY4
LDggQEAgcHJpdmF0ZToKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9v
dXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihsZWZ0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKHJpZ2h0
KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVS
ZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0cjxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAgICAgcHJlcGFyZVBhdGNocG9p
bnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNj
cmF0Y2hSZWdpc3RlcnMgPSAxOwpAQCAtMTM1MzQsOCArMTM1MzQsOCBAQCBwcml2YXRlOgogICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxlZnQpOwogICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocmlnaHQpOwotICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwg
VmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0
Y2hwb2ludCk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7
CkBAIC0xMzU4OSw4ICsxMzU4OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQpOwogICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmRTb21lUmVnaXN0ZXIobGVmdCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFNvbWVSZWdpc3RlcihyaWdodCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01h
c2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAg
ICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1
ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBSZWZQ
dHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAg
ICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAg
cGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsKQEAgLTE0MzIyLDEwICsxNDMy
MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHJpbWl0aXZlUmVzdWx0OwogICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZU1vZGUpIHsKICAgICAgICAgY2FzZSBFcXVhbE51bGw6Ci0gICAg
ICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJ
bnQ2NChWYWx1ZU51bGwpKTsKKyAgICAgICAgICAgIHByaW1pdGl2ZVJlc3VsdCA9IG1fb3V0LmVx
dWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXF1YWxVbmRlZmluZWQ6Ci0gICAgICAgICAgICBw
cmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1
ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0ID0gbV9vdXQuZXF1YWwo
dmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVxdWFsTnVsbE9yVW5kZWZpbmVkOgogICAgICAg
ICAgICAgcHJpbWl0aXZlUmVzdWx0ID0gaXNPdGhlcih2YWx1ZSwgcHJvdmVuVHlwZShlZGdlKSk7
CkBAIC0xNDk0Nyw3ICsxNDk0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KG5vdE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKICAgICAgICAgTFZhbHVlIGlzTnVsbDsKICAg
ICAgICAgaWYgKHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY090aGVyKQotICAgICAgICAgICAgaXNO
dWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVOdWxsKSk7Cisg
ICAgICAgICAgICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChK
U1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgaXNOdWxsID0g
bV9vdXQuYm9vbGVhbkZhbHNlOwogICAgICAgICBtX291dC5icmFuY2goaXNOdWxsLCB1bnN1cmUo
cmVhbGx5T2JqZWN0Q2FzZSksIHVuc3VyZShub3ROdWxsQ2FzZSkpOwpAQCAtMTU4MDcsMTMgKzE1
ODA3LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlz
UHJvdmVuVmFsdWUodHlwZSwgU3BlY0ludDMyT25seSkpCiAgICAgICAgICAgICByZXR1cm4gcHJv
dmVuOwotICAgICAgICByZXR1cm4gbV9vdXQuYWJvdmVPckVxdWFsKGpzVmFsdWUsIG1fdGFnVHlw
ZU51bWJlcik7CisgICAgICAgIHJldHVybiBtX291dC5hYm92ZU9yRXF1YWwoanNWYWx1ZSwgbV9u
dW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgaXNOb3RJbnQzMihMVmFsdWUganNWYWx1ZSwg
U3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAgIHsKICAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjSW50MzJPbmx5KSkKICAgICAg
ICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC5iZWxvdyhqc1ZhbHVl
LCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuYmVsb3coanNWYWx1ZSwg
bV9udW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgdW5ib3hJbnQzMihMVmFsdWUganNWYWx1
ZSkKICAgICB7CkBAIC0xNTgyMSwzMiArMTU4MjEsMzIgQEAgcHJpdmF0ZToKICAgICB9CiAgICAg
TFZhbHVlIGJveEludDMyKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX291
dC5hZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOworICAg
ICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFsdWUsIEludDY0KSwgbV9udW1i
ZXJUYWcpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgaXNDZWxsT3JNaXNjKExWYWx1ZSBqc1Zh
bHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBp
ZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0NlbGxDaGVjayB8IFNw
ZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291
dC50ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJu
IG1fb3V0LnRlc3RJc1plcm82NChqc1ZhbHVlLCBtX251bWJlclRhZyk7CiAgICAgfQogICAgIExW
YWx1ZSBpc05vdENlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92
ZW5WYWx1ZSh0eXBlLCB+KFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlzYykpKQogICAgICAgICAgICAg
cmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoanNWYWx1
ZSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQo
anNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KIAogICAgIExWYWx1ZSB1bmJveERvdWJsZShM
VmFsdWUganNWYWx1ZSwgTFZhbHVlKiB1bmJveGVkQXNJbnQgPSBudWxscHRyKQogICAgIHsKLSAg
ICAgICAgTFZhbHVlIGFzSW50ID0gbV9vdXQuYWRkKGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7
CisgICAgICAgIExWYWx1ZSBhc0ludCA9IG1fb3V0LmFkZChqc1ZhbHVlLCBtX251bWJlclRhZyk7
CiAgICAgICAgIGlmICh1bmJveGVkQXNJbnQpCiAgICAgICAgICAgICAqdW5ib3hlZEFzSW50ID0g
YXNJbnQ7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGFzSW50LCBEb3VibGUpOwogICAg
IH0KICAgICBMVmFsdWUgYm94RG91YmxlKExWYWx1ZSBkb3VibGVWYWx1ZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3VibGVWYWx1ZSwgSW50NjQpLCBt
X3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuc3ViKG1fb3V0LmJpdENhc3Qo
ZG91YmxlVmFsdWUsIEludDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICAKICAgICBMVmFs
dWUganNWYWx1ZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFsdWUgYm94ZWRWYWx1ZSkKQEAg
LTE1OTM4LDIxICsxNTkzOCwyMSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgaWYgKExWYWx1
ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQ2VsbENoZWNrKSkKICAgICAgICAg
ICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpz
VmFsdWUsIG1fdGFnTWFzayk7CisgICAgICAgIHJldHVybiBtX291dC50ZXN0Tm9uWmVybzY0KGpz
VmFsdWUsIG1fbm90Q2VsbE1hc2spOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgaXNDZWxsKExW
YWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewog
ICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0NlbGxD
aGVjaykpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gbV9vdXQu
dGVzdElzWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CisgICAgICAgIHJldHVybiBtX291dC50
ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV9ub3RDZWxsTWFzayk7CiAgICAgfQogICAgIAogICAgIExW
YWx1ZSBpc05vdE1pc2MoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1
bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUo
dHlwZSwgflNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJl
dHVybiBtX291dC5hYm92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChUYWdCaXRUeXBlT3RoZXIg
fCBUYWdCaXRCb29sIHwgVGFnQml0VW5kZWZpbmVkKSk7CisgICAgICAgIHJldHVybiBtX291dC5h
Ym92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpNaXNjVGFnKSk7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBpc01pc2MoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBl
ID0gU3BlY0Z1bGxUb3ApCkBAIC0xNTk2Nyw3ICsxNTk2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+U3BlY0Jvb2xlYW4pKQog
ICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3ROb25a
ZXJvNjQoCi0gICAgICAgICAgICBtX291dC5iaXRYb3IoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2
NChWYWx1ZUZhbHNlKSksCisgICAgICAgICAgICBtX291dC5iaXRYb3IoanNWYWx1ZSwgbV9vdXQu
Y29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZUZhbHNlKSksCiAgICAgICAgICAgICBtX291dC5jb25z
dEludDY0KH4xKSk7CiAgICAgfQogICAgIExWYWx1ZSBpc0Jvb2xlYW4oTFZhbHVlIGpzVmFsdWUs
IFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKQEAgLTE1OTg1LDcgKzE1OTg1LDcg
QEAgcHJpdmF0ZToKICAgICBMVmFsdWUgYm94Qm9vbGVhbihMVmFsdWUgdmFsdWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gbV9vdXQuc2VsZWN0KAotICAgICAgICAgICAgdmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoVmFsdWVUcnVlKSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZUZhbHNlKSk7CisgICAg
ICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVRydWUpLCBtX291
dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlRmFsc2UpKTsKICAgICB9CiAgICAgCiAgICAgTFZh
bHVlIGlzTm90T3RoZXIoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1
bGxUb3ApCkBAIC0xNTk5MywxNiArMTU5OTMsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKExW
YWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjT3RoZXIpKQogICAgICAgICAg
ICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0Lm5vdEVxdWFsKAotICAgICAg
ICAgICAgbV9vdXQuYml0QW5kKHZhbHVlLCBtX291dC5jb25zdEludDY0KH5UYWdCaXRVbmRlZmlu
ZWQpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVOdWxsKSk7CisgICAgICAg
ICAgICBtX291dC5iaXRBbmQodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQofkpTVmFsdWU6OlVuZGVm
aW5lZFRhZykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51
bGwpKTsKICAgICB9CiAgICAgTFZhbHVlIGlzT3RoZXIoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY090aGVyKSkKICAgICAgICAgICAgIHJldHVybiBw
cm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAgICAgICAgICAgIG1fb3V0LmJp
dEFuZCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCh+VGFnQml0VW5kZWZpbmVkKSksCi0gICAgICAg
ICAgICBtX291dC5jb25zdEludDY0KFZhbHVlTnVsbCkpOworICAgICAgICAgICAgbV9vdXQuYml0
QW5kKHZhbHVlLCBtX291dC5jb25zdEludDY0KH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSwKKyAg
ICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSk7CiAgICAgfQog
ICAgIAogICAgIExWYWx1ZSBpc1Byb3ZlblZhbHVlKFNwZWN1bGF0ZWRUeXBlIHByb3ZlblR5cGUs
IFNwZWN1bGF0ZWRUeXBlIHdhbnRlZFR5cGUpCkBAIC0xNzcyMiw4ICsxNzcyMiw4IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgTFZhbHVlIG1fY2FsbEZyYW1lOwogICAgIExWYWx1ZSBtX2NhcHR1cmVk
OwotICAgIExWYWx1ZSBtX3RhZ1R5cGVOdW1iZXI7Ci0gICAgTFZhbHVlIG1fdGFnTWFzazsKKyAg
ICBMVmFsdWUgbV9udW1iZXJUYWc7CisgICAgTFZhbHVlIG1fbm90Q2VsbE1hc2s7CiAgICAgCiAg
ICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9pbnQzMlZhbHVlczsKICAgICBI
YXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX3N0cmljdEludDUyVmFsdWVzOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNw
cAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JF
eGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2
b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBj
YXNlIERhdGFGb3JtYXRJbnQzMjogewogICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIodmFs
dWUsIHZhbHVlKTsKLSAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyLCB2YWx1ZSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtNzMsNyArNzMsNyBAQCBzdGF0
aWMgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogCiAgICAgY2FzZSBEYXRhRm9ybWF0Qm9v
bGVhbjogewogICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIodmFsdWUsIHZhbHVlKTsKLSAg
ICAgICAgaml0Lm9yMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwg
dmFsdWUpOworICAgICAgICBqaXQub3IzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OlZhbHVlRmFsc2UpLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
MjM3LDggKzIzNyw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgIAogICAgIC8vIEdl
dCB0aGUgY2FsbCBmcmFtZSBhbmQgdGFnIHRoaW5naWVzLgogICAgIC8vIFJlc3RvcmUgdGhlIGV4
aXRpbmcgZnVuY3Rpb24ncyBjYWxsRnJhbWUgdmFsdWUgaW50byBhIHJlZ1Q0Ci0gICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBqaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTY0KFRhZ01hc2spLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIGppdC5t
b3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSwgR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyKTsKICAgICAKICAgICAvLyBEbyBzb21lIHZhbHVlIHByb2ZpbGluZy4KICAgICBpZiAo
ZXhpdC5tX2Rlc2NyaXB0b3ItPm1fcHJvZmlsZURhdGFGb3JtYXQgIT0gRGF0YUZvcm1hdE5vbmUp
IHsKQEAgLTQ1MSwxMSArNDUxLDExIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHViKAogICAgIH0K
IAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7Ci0gICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVlU2F2ZXMtPmZpbmQoR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMSwg
dm1DYWxsZWVTYXZlLT5vZmZzZXQoKSkpOworICAgICAgICBSZWdpc3RlckF0T2Zmc2V0KiB2bUNh
bGxlZVNhdmUgPSB2bUNhbGxlZVNhdmVzLT5maW5kKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
KTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgp
KSk7CiAKLSAgICAgICAgdm1DYWxsZWVTYXZlID0gdm1DYWxsZWVTYXZlcy0+ZmluZChHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNhbGxl
ZVNhdmUtPm9mZnNldCgpKSk7CisgICAgICAgIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVlU2F2ZXMt
PmZpbmQoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CisgICAgICAgIGppdC5zdG9yZTY0
KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQ
UkluZm86OnJlZ1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgpKSk7CiAgICAgfQogCiAgICAgc2l6
ZV90IGJhc2VsaW5lVmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNhdmVzID0gYmFzZWxpbmVDb2Rl
QmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVycygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxlZUJpdHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbGVlQml0cy5oCShyZXZpc2lvbiAy
NTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbGVlQml0cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VC
QVNTRU1CTFkpCiAgICAgc3RhdGljIHZvaWQqIGJveFdhc20oV2FzbTo6Q2FsbGVlKiBjYWxsZWUp
CiAgICAgewotICAgICAgICBDYWxsZWVCaXRzIHJlc3VsdChyZWludGVycHJldF9jYXN0PHZvaWQq
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FsbGVlKSB8IFRhZ0JpdHNXYXNtKSk7Cisg
ICAgICAgIENhbGxlZUJpdHMgcmVzdWx0KHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpIHwgSlNWYWx1ZTo6V2FzbVRhZykpOwogICAgICAg
ICBBU1NFUlQocmVzdWx0LmlzV2FzbSgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yYXdQdHIo
KTsKICAgICB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzV2FzbSgpIGNv
bnN0CiAgICAgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgcmV0dXJuIChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9wdHIpICYgVGFnV2FzbU1hc2spID09IFRhZ0JpdHNX
YXNtOworICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3B0cikg
JiBKU1ZhbHVlOjpXYXNtTWFzaykgPT0gSlNWYWx1ZTo6V2FzbVRhZzsKICNlbHNlCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgV2Fz
bTo6Q2FsbGVlKiBhc1dhc21DYWxsZWUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGlz
V2FzbSgpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2FzbTo6Q2FsbGVlKj4o
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fcHRyKSAmIH5UYWdCaXRzV2FzbSk7CisgICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdhc206OkNhbGxlZSo+KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludHB0cl90PihtX3B0cikgJiB+SlNWYWx1ZTo6V2FzbVRhZyk7CiAgICAgfQogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5j
cHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1i
bHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDIyICsxMTUsMjIgQEAgdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogCiB2b2lkIEFzc2VtYmx5SGVscGVy
czo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCiB7Ci0gICAgSnVtcCBjaGVja0pTSW50
MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwg
Z3ByLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFI
SXNOb3RKU0ludDMyKTsKICAgICBjaGVja0pTSW50MzIubGluayh0aGlzKTsKIH0KIAogdm9pZCBB
c3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIoR1BSUmVnIGdwcikKIHsKLSAgICBK
dW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNO
dW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNOdW1i
ZXIpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdwcikKIHsKLSAgICBKdW1wIGNoZWNr
SlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpOwotICAgIEp1bXAgY2hlY2tKU051bWJlciA9IGJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
OworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQ
UkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFu
Y2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpOwogICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMpOwogICAgIGFib3J0V2l0aFJl
YXNvbihBSElzTm90SlNEb3VibGUpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKQEAg
LTEzOCwyMCArMTM4LDIwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRJc0pTRG91
YmwKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzQ2VsbChHUFJSZWcgZ3ByKQog
ewotICAgIEp1bXAgY2hlY2tDZWxsID0gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgSnVtcCBjaGVja0NlbGwgPSBi
cmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3Rlcik7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFISXNOb3RDZWxsKTsKICAgICBjaGVj
a0NlbGwubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydFRh
Z3NJblBsYWNlKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgVHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpKTsKLSAgICBh
Ym9ydFdpdGhSZWFzb24oQUhUYWdUeXBlTnVtYmVyTm90SW5QbGFjZSk7CisgICAgSnVtcCBvayA9
IGJyYW5jaDY0KEVxdWFsLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgVHJ1c3RlZEltbTY0
KEpTVmFsdWU6Ok51bWJlclRhZykpOworICAgIGFib3J0V2l0aFJlYXNvbihBSE51bWJlclRhZ05v
dEluUGxhY2UpOwogICAgIGJyZWFrcG9pbnQoKTsKICAgICBvay5saW5rKHRoaXMpOwogICAgIAot
ICAgIG9rID0gYnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlciwgVHJ1c3Rl
ZEltbTY0KFRhZ01hc2spKTsKLSAgICBhYm9ydFdpdGhSZWFzb24oQUhUYWdNYXNrTm90SW5QbGFj
ZSk7CisgICAgb2sgPSBicmFuY2g2NChFcXVhbCwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7CisgICAgYWJvcnRXaXRoUmVh
c29uKEFITm90Q2VsbE1hc2tOb3RJblBsYWNlKTsKICAgICBvay5saW5rKHRoaXMpOwogfQogI2Vs
aWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSw4ICs3NTEsNyBAQCB2b2lkIEFzc2VtYmx5SGVs
cGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiAKICAgICBub3REb3VibGUubGluayh0aGlzKTsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
VmFsdWVUcnVlKSA9PSBWYWx1ZVRydWUsICIiKTsKLSAgICBjb21wYXJlNjQoaW52ZXJ0ID8gTm90
RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihWYWx1ZVRydWUpLCByZXN1
bHQpOworICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6IEVxdWFsLCB2YWx1ZS5ncHIo
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdCk7CiAjZWxzZQogICAg
IG1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHQp
OwogICAgIGRvbmUuYXBwZW5kKGJyYW5jaElmTm90Qm9vbGVhbih2YWx1ZSwgSW52YWxpZEdQUlJl
ZykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTAgKzMzNCwxMCBAQCBwdWJsaWM6CiAg
ICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTTY0KQotICAgICAgICBwdXNoUGFp
cihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cik7CisgICAgICAgIHB1c2hQYWlyKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlCi0gICAgICAgIHB1c2goR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcHVzaChHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpOworICAgICAgICBwdXNoKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAg
cHVzaChHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbmRpZgogICAgICAgICBlbWl0
TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogI2VuZGlmCkBAIC0zNTIsMTAgKzM1Miwx
MCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTTY0KQot
ICAgICAgICBwb3BQYWlyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcG9wUGFpcihHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZQotICAgICAgICBwb3Ao
R1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgcG9wKEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CisgICAgICAgIHBvcChHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
KTsKKyAgICAgICAgcG9wKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKICNlbmRpZgogI2Vu
ZGlmCiAgICAgfQpAQCAtNDUyLDggKzQ1Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVtaXRNYXRl
cmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ1R5cGVOdW1iZXIpLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICBvclB0cihNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKFRhZ0JpdFR5cGVPdGhlciksIEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgbW92ZShNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgb3JQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpPdGhlclRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbmRpZgogICAgIH0KIApAQCAtNzAxLDggKzcw
MSw4IEBAIHB1YmxpYzoKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG1v
ZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQo
Tm9uWmVybywgcmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZywgVHJ1c3RlZEltbTY0KFRhZ01hc2spKTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjpub3RDZWxs
TWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCByZWcs
IFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzaykpOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CkBAIC03MjIs
OCArNzIyLDggQEAgcHVibGljOgogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBp
ZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3Q2NChaZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBUcnVzdGVkSW1tNjQoVGFnTWFzaykpOworICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQUkluZm86Om5vdENlbGxNYXNr
UmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHJlZywgVHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFS
QU0obW9kZSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWws
IHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKQEAgLTc0Miw4ICs3NDIsOCBA
QCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIG1vdmUocmVncy5n
cHIoKSwgdGVtcEdQUik7Ci0gICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZp
bmVkKSwgdGVtcEdQUik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2NChFcXVhbCwgdGVtcEdQUiwg
VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofkpT
VmFsdWU6OlVuZGVmaW5lZFRhZyksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQo
RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICNlbHNl
CiAgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TnVsbFRhZykpOwpAQCAtNzU0LDggKzc1NCw4IEBAIHB1YmxpYzoKICAgICB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1wR1BSKTsKLSAgICAg
ICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVO
dWxsKSk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFn
KSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwg
VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwogI2Vsc2UKICAgICAgICAgb3IzMihU
cnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4g
YnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFn
KSk7CkBAIC03NjYsOCArNzY2LDggQEAgcHVibGljOgogICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIFRydXN0
ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJv
dmVPckVxdWFsLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVt
YmVyVGFnKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcp
KTsKQEAgLTc4Nyw4ICs3ODcsOCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQp
CiAgICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCi0gICAgICAgICAgICByZXR1
cm4gYnJhbmNoNjQoQmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEJlbG93LCBncHIsIFRydXN0ZWRJbW02NChUYWdUeXBl
TnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoQmVsb3csIGdwciwgR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoNjQoQmVsb3csIGdw
ciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIGdwciwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CkBAIC04MjIsOCArODIyLDggQEAgcHVi
bGljOgogICAgIEp1bXAgYnJhbmNoSWZOdW1iZXIoR1BSUmVnIGdwciwgVGFnUmVnaXN0ZXJzTW9k
ZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKICAgICB7CiAgICAgICAgIGlmIChtb2RlID09IEhh
dmVUYWdSZWdpc3RlcnMpCi0gICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8s
IGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3Q2NChOb25aZXJvLCBncHIsIFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdwciwgR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIGdw
ciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogICAgIH0KICNlbmRpZgogICAg
IApAQCAtODQ0LDggKzg0NCw4IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaElmTm90TnVtYmVy
KEdQUlJlZyBncHIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhhdmVUYWdSZWdpc3RlcnMpCiAg
ICAgewogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgZ3ByLCBUcnVzdGVkSW1t
NjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJv
LCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3Q2NChaZXJvLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpKTsKICAg
ICB9CiAjZW5kaWYKIApAQCAtODUzLDggKzg1Myw4IEBAIHB1YmxpYzoKICAgICB7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFn
VHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBy
ZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWdzLmdwcigpLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVncy5ncHIoKSwgVHJ1
c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BB
UkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoQWJvdmVPckVxdWFsLCByZWdzLnRh
Z0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSk7CkBAIC04NjcsNyArODY3
LDcgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEFTU0VSVCh0ZW1wR1BS
ICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBtb3ZlKGdwciwgdGVtcEdQUik7Ci0gICAgICAg
IHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRl
bXBHUFIpOworICAgICAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSks
IHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHRlbXBHUFIsIFRy
dXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh0ZW1wR1BSKTsKQEAgLTg5MSw3ICs4OTEsNyBAQCBwdWJsaWM6CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKLSAgICAgICAgeG9yNjQoVHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcEdQUik7CisgICAgICAgIHhvcjY0
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgdGVtcEdQUik7CiAgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKHN0YXRpY19j
YXN0PGludDMyX3Q+KH4xKSkpOwogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHRlbXBHUFIp
OwpAQCAtMTI2NCwxNiArMTI2NCwxNiBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBtb3ZlRG91
YmxlVG82NChmcHIsIGdwcik7CiAgICAgICAgIGlmIChtb2RlID09IERvTm90SGF2ZVRhZ1JlZ2lz
dGVycykKLSAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgZ3By
KTsKKyAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBn
cHIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN1YjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgICAgIHN1YjY0KEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgaml0QXNzZXJ0SXNKU0RvdWJsZShncHIpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQogICAgIEZQUlJlZyB1bmJveERv
dWJsZVdpdGhvdXRBc3NlcnRpb25zKEdQUlJlZyBncHIsIEdQUlJlZyByZXN1bHRHUFIsIEZQUlJl
ZyBmcHIpCiAgICAgewotICAgICAgICBhZGQ2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIGdwciwgcmVzdWx0R1BSKTsKKyAgICAgICAgYWRkNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIsIGdwciwgcmVzdWx0R1BSKTsKICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVzdWx0R1BS
LCBmcHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KQEAgLTEzMTAsNyArMTMxMCw3IEBA
IHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGlzSW50MzIubGluayh0aGlzKTsKICAgICAgICAg
emVyb0V4dGVuZDMyVG9QdHIoc291cmNlLCB0YXJnZXQpOwotICAgICAgICBvcjY0KEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0KTsKKyAgICAgICAgb3I2NChHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgdGFyZ2V0KTsKICAgICAgICAgCiAgICAgICAgIGRvbmUubGluayh0
aGlzKTsKICAgICB9CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBib3hC
b29sZWFuUGF5bG9hZChHUFJSZWcgYm9vbEdQUiwgR1BSUmVnIHBheWxvYWRHUFIpCiAgICAgewog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNl
KSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7CisgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZUZhbHNlKSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7CiAjZWxzZQogICAgICAgICBt
b3ZlKGJvb2xHUFIsIHBheWxvYWRHUFIpOwogI2VuZGlmCkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBib3hCb29sZWFuUGF5bG9hZChib29sIHZhbHVlLCBHUFJSZWcgcGF5
bG9hZEdQUikKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbW92ZShUcnVzdGVk
SW1tMzIoVmFsdWVGYWxzZSArIHZhbHVlKSwgcGF5bG9hZEdQUik7CisgICAgICAgIG1vdmUoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UgKyB2YWx1ZSksIHBheWxvYWRHUFIpOwogI2Vs
c2UKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIodmFsdWUpLCBwYXlsb2FkR1BSKTsKICNlbmRp
ZgpAQCAtMTM4MCw5ICsxMzgwLDkgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIGlmIChtb2RlID09IERvTm90SGF2ZVRhZ1JlZ2lzdGVycykgewogICAgICAgICAgICAgbW92
ZShpbnRHUFIsIGJveGVkUmVncy5ncHIoKSk7Ci0gICAgICAgICAgICBvcjY0KFRydXN0ZWRJbW02
NChUYWdUeXBlTnVtYmVyKSwgYm94ZWRSZWdzLmdwcigpKTsKKyAgICAgICAgICAgIG9yNjQoVHJ1
c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIGJveGVkUmVncy5ncHIoKSk7CiAgICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsKKyAgICAgICAgICAgIG9yNjQoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsIGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsKICNlbHNlCiAgICAgICAg
IFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICAgICAgbW92ZShpbnRHUFIsIGJveGVkUmVncy5wYXls
b2FkR1BSKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
ZmxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZy
YW1lU2h1ZmZsZURhdGEuaAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyAr
NDAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtUGFzc2VkQXJncyB7IFVJTlRfTUFYIH07
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3Rlck1hcDxWYWx1ZVJlY292ZXJ5PiByZWdp
c3RlcnM7Ci0gICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZhbGlkR1BSUmVnIH07CisgICAg
R1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyIHsgSW52YWxpZEdQUlJlZyB9OwogCiAgICAgdm9pZCBz
ZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2NC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkocmV2
aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVm
ZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCwxMSArODgsMTEgQEAgdm9pZCBDYWxsRnJhbWVT
aHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5
LnJlY292ZXJ5KCkuZ3ByKCksCiAgICAgICAgICAgICAgICAgY2FjaGVkUmVjb3ZlcnkucmVjb3Zl
cnkoKS5ncHIoKSk7CiAgICAgICAgICAgICBtX2xvY2tlZFJlZ2lzdGVycy5zZXQoY2FjaGVkUmVj
b3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7Ci0gICAgICAgICAgICBpZiAodHJ5QWNxdWlyZVRhZ1R5
cGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KG1fdGFnVHlwZU51bWJlciwg
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CisgICAgICAgICAgICBpZiAodHJ5QWNx
dWlyZU51bWJlclRhZ1JlZ2lzdGVyKCkpCisgICAgICAgICAgICAgICAgbV9qaXQub3I2NChtX251
bWJlclRhZ1JlZ2lzdGVyLCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmdwcigpKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdG8gZG8gdGhpcyB0aGUg
aGFyZCB3YXkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tNjQoVGFnVHlwZU51bWJlciksCisgICAgICAgICAgICAgICAgbV9qaXQub3I2NChNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksCiAgICAgICAgICAg
ICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgbV9sb2NrZWRSZWdpc3RlcnMuY2xlYXIoY2FjaGVkUmVjb3ZlcnkucmVj
b3ZlcnkoKS5ncHIoKSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxl
cjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICBjYXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAgZGF0YUxvZygiICAgKiBCb3hp
bmcgIiwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKSk7Ci0gICAgICAgICAgICBtX2ppdC5hZGQz
MihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLAorICAgICAgICAgICAg
bV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZh
bHNlKSwKICAgICAgICAgICAgICAgICBjYWNoZWRSZWNvdmVyeS5yZWNvdmVyeSgpLmdwcigpKTsK
ICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnNldFJlY292ZXJ5KAogICAgICAgICAgICAgICAg
IFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksIERh
dGFGb3JtYXRKUykpOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxl
cjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAgbV9qaXQucHVyaWZ5TmFOKGNhY2hlZFJl
Y292ZXJ5LnJlY292ZXJ5KCkuZnByKCkpOwogICAgICAgICAgICAgbV9qaXQubW92ZURvdWJsZVRv
NjQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5mcHIoKSwgcmVzdWx0R1BSKTsKICAgICAgICAg
ICAgIG1fbG9ja2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIpOwotICAgICAgICAgICAgaWYgKHRy
eUFjcXVpcmVUYWdUeXBlTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgbV9qaXQuc3ViNjQobV90
YWdUeXBlTnVtYmVyLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaWYgKHRyeUFjcXVpcmVOdW1i
ZXJUYWdSZWdpc3RlcigpKQorICAgICAgICAgICAgICAgIG1faml0LnN1YjY0KG1fbnVtYmVyVGFn
UmVnaXN0ZXIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV9qaXQuc3ViNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwg
cmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdWI2NChNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIHJlc3VsdEdQUik7CiAgICAgICAgICAg
ICBtX2xvY2tlZFJlZ2lzdGVycy5jbGVhcihyZXN1bHRHUFIpOwogICAgICAgICAgICAgdXBkYXRl
UmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnksIFZhbHVlUmVjb3Zlcnk6OmluR1BSKHJlc3VsdEdQUiwg
RGF0YUZvcm1hdEpTKSk7CiAgICAgICAgICAgICBpZiAodmVyYm9zZSkKQEAgLTM0OSwxOCArMzQ5
LDE4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNwbGFjZShDYWMKICAgICBBU1NF
UlQobV9yZWdpc3RlcnNbd2FudGVkUmVnXSA9PSAmY2FjaGVkUmVjb3ZlcnkpOwogfQogICAgIAot
Ym9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIoKQorYm9vbCBD
YWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZU51bWJlclRhZ1JlZ2lzdGVyKCkKIHsKLSAgICBp
ZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCisgICAgaWYgKG1fbnVtYmVyVGFn
UmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBt
X3RhZ1R5cGVOdW1iZXIgPSBnZXRGcmVlR1BSKCk7CisgICAgbV9udW1iZXJUYWdSZWdpc3RlciA9
IGdldEZyZWVHUFIoKTsKIAotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgPT0gSW52YWxpZEdQUlJl
ZykKKyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciA9PSBJbnZhbGlkR1BSUmVnKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xvY2tlZFJlZ2lzdGVycy5zZXQobV90YWdUeXBlTnVt
YmVyKTsKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnVHlw
ZU51bWJlciksIG1fdGFnVHlwZU51bWJlcik7CisgICAgbV9sb2NrZWRSZWdpc3RlcnMuc2V0KG1f
bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBtX251bWJlclRhZ1JlZ2lzdGVyKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJh
bWVTaHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9D
YWxsRnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw5
ICs3OSw5IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVTaHVmZmxlcihDQ2EKICAgICAg
ICAgICAgIGFkZE5ldyhyZWcuZnByKCksIGRhdGEucmVnaXN0ZXJzW3JlZ10pOwogICAgIH0KIAot
ICAgIG1fdGFnVHlwZU51bWJlciA9IGRhdGEudGFnVHlwZU51bWJlcjsKLSAgICBpZiAobV90YWdU
eXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCi0gICAgICAgIGxvY2tHUFIobV90YWdUeXBlTnVt
YmVyKTsKKyAgICBtX251bWJlclRhZ1JlZ2lzdGVyID0gZGF0YS5udW1iZXJUYWdSZWdpc3RlcjsK
KyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBs
b2NrR1BSKG1fbnVtYmVyVGFnUmVnaXN0ZXIpOwogI2VuZGlmCiB9CiAKQEAgLTIxNiw4ICsyMTYs
OCBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpkdW1wKFByaW50U3RyZWFtCiAgICAgaWYgKG1f
bmV3RnJhbWVPZmZzZXQpCiAgICAgICAgIG91dC5wcmludCgiICAgTmV3IGZyYW1lIG9mZnNldCBp
cyAiLCBtX25ld0ZyYW1lT2Zmc2V0LCAiXG4iKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGlm
IChtX3RhZ1R5cGVOdW1iZXIgIT0gSW52YWxpZEdQUlJlZykKLSAgICAgICAgb3V0LnByaW50KCIg
ICBUYWdUeXBlTnVtYmVyIGlzIGN1cnJlbnRseSBpbiAiLCBtX3RhZ1R5cGVOdW1iZXIsICJcbiIp
OworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcpCisgICAgICAg
IG91dC5wcmludCgiICAgTnVtYmVyVGFnIGlzIGN1cnJlbnRseSBpbiAiLCBtX251bWJlclRhZ1Jl
Z2lzdGVyLCAiXG4iKTsKICNlbmRpZgogfQogCkBAIC02OTgsOCArNjk4LDggQEAgdm9pZCBDYWxs
RnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcgJiYgbV9uZXdSZWdpc3Rl
cnNbbV90YWdUeXBlTnVtYmVyXSkKLSAgICAgICAgcmVsZWFzZUdQUihtX3RhZ1R5cGVOdW1iZXIp
OworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFsaWRHUFJSZWcgJiYgbV9uZXdS
ZWdpc3RlcnNbbV9udW1iZXJUYWdSZWdpc3Rlcl0pCisgICAgICAgIHJlbGVhc2VHUFIobV9udW1i
ZXJUYWdSZWdpc3Rlcik7CiAjZW5kaWYKIAogICAgIC8vIEhhbmRsZSAyKSBieSBsb2FkaW5nIGFs
bCByZWdpc3RlcnMuIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55CkBAIC03MTcsOCArNzE3LDggQEAg
dm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgfQogCiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCi0gICAg
ICAgIHJlbGVhc2VHUFIobV90YWdUeXBlTnVtYmVyKTsKKyAgICBpZiAobV9udW1iZXJUYWdSZWdp
c3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICByZWxlYXNlR1BSKG1fbnVtYmVyVGFnUmVn
aXN0ZXIpOwogI2VuZGlmCiAKICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIHJlYWQgZXZl
cnl0aGluZyB3ZSBjYXJlZCBhYm91dCBmcm9tIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNpb24gMjUwMDg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MTIsOSArNDEyLDkgQEAgcHJpdmF0ZToKICAgICBSZWdpc3Rlck1hcDxDYWNoZWRSZWNv
dmVyeSo+IG1fcmVnaXN0ZXJzOwogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBtdXRhYmxlIEdQ
UlJlZyBtX3RhZ1R5cGVOdW1iZXI7CisgICAgbXV0YWJsZSBHUFJSZWcgbV9udW1iZXJUYWdSZWdp
c3RlcjsKIAotICAgIGJvb2wgdHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIoKTsKKyAgICBib29sIHRy
eUFjcXVpcmVOdW1iZXJUYWdSZWdpc3RlcigpOwogI2VuZGlmCiAKICAgICAvLyBUaGlzIHN0b3Jl
cywgZm9yIGVhY2ggcmVnaXN0ZXIsIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZWNvdmVyeQpAQCAt
NDQ4LDExICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICAgICAgaWYgKCFub25UZW1wICYmIG1fdGFnVHlwZU51bWJlciAhPSBJbnZhbGlkR1BS
UmVnICYmIGNoZWNrKFJlZyB7IG1fdGFnVHlwZU51bWJlciB9KSkgewotICAgICAgICAgICAgQVNT
RVJUKG1fbG9ja2VkUmVnaXN0ZXJzLmdldChtX3RhZ1R5cGVOdW1iZXIpKTsKLSAgICAgICAgICAg
IG1fbG9ja2VkUmVnaXN0ZXJzLmNsZWFyKG1fdGFnVHlwZU51bWJlcik7Ci0gICAgICAgICAgICBu
b25UZW1wID0gUmVnIHsgbV90YWdUeXBlTnVtYmVyIH07Ci0gICAgICAgICAgICBtX3RhZ1R5cGVO
dW1iZXIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoIW5vblRlbXAgJiYgbV9udW1iZXJU
YWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnICYmIGNoZWNrKFJlZyB7IG1fbnVtYmVyVGFnUmVn
aXN0ZXIgfSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xvY2tlZFJlZ2lzdGVycy5nZXQobV9u
dW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgbV9sb2NrZWRSZWdpc3RlcnMuY2xlYXIo
bV9udW1iZXJUYWdSZWdpc3Rlcik7CisgICAgICAgICAgICBub25UZW1wID0gUmVnIHsgbV9udW1i
ZXJUYWdSZWdpc3RlciB9OworICAgICAgICAgICAgbV9udW1iZXJUYWdSZWdpc3RlciA9IEludmFs
aWRHUFJSZWc7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICByZXR1cm4gbm9uVGVtcDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQw
OCw4ICs0MDgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhl
IGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdp
c3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHRh
Z1R5cGVOdW1iZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0OwotICAgIHN0YXRpYyBjb25z
dGV4cHIgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OworICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyID0gWDg2UmVnaXN0ZXJzOjpy
MTQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2VsbE1hc2tSZWdpc3RlciA9IFg4
NlJlZ2lzdGVyczo6cjE1OwogCiAgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KICAgICBzdGF0
aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVyczo6ZWF4OwpAQCAtNTE1LDgg
KzUxNSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzdGQ6OmFycmF5
PEdQUlJlZywgMz4gcmVzZXJ2ZWRSZWdpc3RlcnMgeyB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6c19zY3JhdGNoUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsCi0gICAgICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAgICAgICAgICBudW1iZXJUYWdS
ZWdpc3RlciwKKyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIsCiAgICAgICAgIH0gfTsK
ICAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAgIH0KQEAgLTYwOCw4ICs2MDgs
OCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5l
IEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IEFS
TTY0UmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyB0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3OwotICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3
OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxNYXNrUmVnaXN0ZXIgPSBBUk02
NFJlZ2lzdGVyczo6eDI4OwogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIGRhdGFUZW1wUmVn
aXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3RlcjsKICAgICBzdGF0aWMgY29u
c3RleHByIEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6bWVtb3J5
VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCkBAIC02MzcsOCArNjM3
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTNSA9IEFSTTY0
UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OyAvLyBVc2VkIGJ5IEZUTCBvbmx5
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0gQVJNNjRSZWdpc3RlcnM6Ongy
NjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzggPSBBUk02NFJlZ2lzdGVyczo6
eDI3OyAvLyB0YWdUeXBlTnVtYmVyCi0gICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M5
ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gdGFnTWFzaworICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8vIG51bWJlclRhZworICAgIHN0
YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjg7IC8vIG5v
dENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0
aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjAgPSBBUk02NFJlZ2lzdGVyczo6
eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgYXJndW1lbnRHUFIxID0g
QVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQpAQCAtNzAzLDggKzcwMyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8R1BSUmVnLCA0PiByZXNlcnZlZFJlZ2lz
dGVycyB7IHsKICAgICAgICAgICAgIGRhdGFUZW1wUmVnaXN0ZXIsCiAgICAgICAgICAgICBtZW1v
cnlUZW1wUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCi0gICAg
ICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAgICAgICAgICBudW1iZXJUYWdSZWdpc3RlciwK
KyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIsCiAgICAgICAgIH0gfTsKICAgICAgICAg
cmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjkxLDcgKzI5MSw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAK
IAogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKICAgICAgICAgICAgIEp1
bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7Ci0gICAgICAgICAgICBhZGQ2NCh0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAgICAgIGFkZDY0KG51bWJlclRh
Z1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBS
ZWdUMCk7CiAKICAgICAgICAgICAgIGludDMyX3Qgb3AyaW1tID0gZ2V0Q29uc3RhbnRPcGVyYW5k
KG9wMikuYXNJbnQzMigpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBh
cmVBbmRKdW1wU2xvdyhjb25zdCAKIAogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50
KCkpIHsKICAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMSk7
Ci0gICAgICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKKyAgICAg
ICAgICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgICAgICBtb3Zl
NjRUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CiAKICAgICAgICAgICAgIGludDMyX3Qgb3AxaW1t
ID0gZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkuYXNJbnQzMigpOwpAQCAtMzQ0LDggKzM0NCw4IEBA
IHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKICAgICAgICAgSnVtcCBm
YWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QwKTsKICAgICAgICAgSnVtcCBmYWlsMiA9IGJy
YW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgSnVtcCBmYWlsMyA9IGJyYW5jaElmSW50
MzIocmVnVDEpOwotICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsK
LSAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CisgICAgICAgIGFk
ZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CisgICAgICAgIGFkZDY0KG51bWJlclRhZ1Jl
Z2lzdGVyLCByZWdUMSk7CiAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsK
ICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVnVDEsIGZwUmVnVDEpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdEFuZEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRCaXRBbmRHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdEFuZEdlbmVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIEpJVEJpdEFuZEdlbmVyYXRv
cjo6Z2VuZXJhdGVGYXN0UGF0CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5h
bmQ2NChDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigpKSwgbV9yZXN1
bHQucGF5bG9hZEdQUigpKTsKICAgICAgICAgICAgIGlmIChjb25zdE9wci5hc0NvbnN0SW50MzIo
KSA+PSAwKQotICAgICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBqaXQub3I2
NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICNl
bHNlCiAgICAgICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5h
c0NvbnN0SW50MzIoKSksIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JHZW5lcmF0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JHZW5lcmF0b3IuY3BwCShyZXZp
c2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdE9yR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgSklUQml0T3JHZW5lcmF0
b3I6OmdlbmVyYXRlRmFzdFBhdGgKICAgICAgICAgaWYgKGNvbnN0T3ByLmFzQ29uc3RJbnQzMigp
KSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5vcjMyKENDYWxsSGVscGVy
czo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkp
OwotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBt
X3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZWxzZQogICAgICAgICAg
ICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9wci5hc0NvbnN0SW50MzIoKSks
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQml0WG9yR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEJpdFhvckdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1MDA4NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0WG9yR2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSklUQml0WG9yR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3ModmFyLCBtX3Jlc3VsdCk7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjMyKENDYWxsSGVscGVyczo6SW1tMzIoY29u
c3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwotICAgICAgICBq
aXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRH
UFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOwogI2Vsc2UKICAgICAgICAgaml0LnhvcjMyKENDYWxsSGVscGVy
czo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkp
OwogI2VuZGlmCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSklUQml0WG9yR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3MobV9sZWZ0LCBtX3Jlc3VsdCk7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjY0KG1fcmlnaHQucGF5bG9hZEdQ
UigpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwotICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgICAgIGpp
dC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkp
OwogI2Vsc2UKICAgICAgICAgaml0LnhvcjMyKG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX3Jlc3Vs
dC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbC5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsxODIsNyBAQCBib29sIEpJVDo6
Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhCiB7CiAgICAgQ2FsbEZyYW1lU2h1ZmZsZURh
dGEgc2h1ZmZsZURhdGE7CiAgICAgc2h1ZmZsZURhdGEubnVtUGFzc2VkQXJncyA9IGJ5dGVjb2Rl
Lm1fYXJnYzsKLSAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVyID0gR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyOworICAgIHNodWZmbGVEYXRhLm51bWJlclRhZ1JlZ2lzdGVyID0gR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgc2h1ZmZsZURhdGEubnVtTG9jYWxzID0KICAg
ICAgICAgYnl0ZWNvZGUubV9hcmd2IC0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpIC8gc2l6ZW9m
KFJlZ2lzdGVyKTsKICAgICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6ZShieXRlY29kZS5tX2FyZ2Mp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGl2R2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXZH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEpJVERpdkdl
bmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAgaml0Lm1vdmVEb3VibGVUbzY0KG1fbGVm
dEZQUiwgbV9zY3JhdGNoR1BSKTsKICAgICBDQ2FsbEhlbHBlcnM6Okp1bXAgbm90RG91YmxlWmVy
byA9IGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25aZXJvLCBtX3NjcmF0Y2hHUFIp
OwogCi0gICAgaml0Lm1vdmUoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBtX3Jlc3Vs
dC5wYXlsb2FkR1BSKCkpOworICAgIGppdC5tb3ZlKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fZW5kSnVtcExpc3QuYXBwZW5kKGppdC5q
dW1wKCkpOwogCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NzEsNyAr
NjcxLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUoaQogCiBBTFdB
WVNfSU5MSU5FIEpJVDo6UGF0Y2hhYmxlSnVtcCBKSVQ6OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJ
bnQoUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgcmV0dXJuIHBhdGNoYWJsZUJyYW5jaDY0KEJlbG93
LCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgcmV0dXJuIHBhdGNoYWJsZUJyYW5j
aDY0KEJlbG93LCByZWcsIG51bWJlclRhZ1JlZ2lzdGVyKTsKIH0KIAogQUxXQVlTX0lOTElORSBK
SVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJ
RCByZWcyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNTAwODUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVExlZnRTaGlmdEdlbmVyYXRvcjo6
Z2VuZXJhdGVGYXN0CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBqaXQub3I2NChH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7Cisg
ICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRH
UFIoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRN
dWxHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUTXVsR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIwLDcg
KzIyMCw3IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKEMKICAgICAg
ICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAgICAgZG9uZS5saW5rKCZqaXQp
OwotICAgICAgICBqaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOyAvLyBCb3ggdGhlIGRvdWJsZS4KKyAgICAgICAgaml0LnN1YjY0
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOyAvLyBC
b3ggdGhlIGRvdWJsZS4KICNlbHNlCiAgICAgICAgIGppdC5ib3hEb3VibGUobV9sZWZ0RlBSLCBt
X3Jlc3VsdCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgbm90TmVnYXRpdmVaZXJv
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lv
biAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfb3ZlcnJp
ZGVzX2hhc19pbnN0YW5jZQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGN1c3RvbWhh
c0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRy
dWUpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwg
cmVnVDApOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0
ZXIoZHN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc191bmRlZmlu
ZWQoY29uc3QgSW5zCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwog
ICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsKIAotICAgIGNvbXBhcmU2NChF
cXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJlZ1QwKTsKKyAgICBj
b21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVVbmRlZmlu
ZWQpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzQ2VsbC5s
aW5rKHRoaXMpOwpAQCAtMjUxLDggKzI1MSw4IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX3VuZGVm
aW5lZF9vcl9udWxsKGMKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1Qw
KTsKIAotICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgcmVnVDApOwot
ICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZU51bGwpLCByZWdU
MCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZWdU
MCk7CisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZh
bHVlTnVsbCksIHJlZ1QwKTsKIAogICAgIGJveEJvb2xlYW4ocmVnVDAsIEpTVmFsdWVSZWdzIHsg
cmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihkc3QpOwpAQCAtMjY1LDcgKzI2
NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29uc3QgSW5zdHIKICAgICBpbnQg
dmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQub2Zmc2V0KCk7CiAgICAgCiAgICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlZ1QwKTsKKyAgICB4b3I2NChUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsKICAgICB0ZXN0NjQoWmVybywgcmVn
VDAsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpLCByZWdUMCk7CiAgICAg
Ym94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
aXNfbnVtYmVyKGNvbnN0IEluc3RydQogICAgIGludCB2YWx1ZSA9IGJ5dGVjb2RlLm1fb3BlcmFu
ZC5vZmZzZXQoKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZhbHVlLCByZWdU
MCk7Ci0gICAgdGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJl
Z1QwKTsKKyAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIG51bWJlclRhZ1JlZ2lzdGVyLCByZWdU
MCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9KTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29ucwogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKFZh
bHVlRmFsc2UpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVG
YWxzZSksIHJlZ1QwKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKICAgICBlbWl0UHV0VmlydHVh
bFJlZ2lzdGVyKGRzdCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNf
b2JqZWN0KGNvbnN0IEluc3RydQogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGlzTm90
Q2VsbC5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZWdU
MCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsK
IAogICAgIGRvbmUubGluayh0aGlzKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7
CkBAIC0zNzMsOSArMzczLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfbm90KGNvbnN0IEluc3RydWN0
aW9uKgogICAgIC8vIEludmVydCBhZ2FpbnN0IEpTVmFsdWUoZmFsc2UpOyBpZiB0aGUgdmFsdWUg
d2FzIHRhZ2dlZCBhcyBhIGJvb2xlYW4sIHRoZW4gYWxsIGJpdHMgd2lsbCBiZQogICAgIC8vIGNs
ZWFyIG90aGVyIHRoYW4gdGhlIGxvdyBiaXQgKHdoaWNoIHdpbGwgYmUgMCBvciAxIGZvciBmYWxz
ZSBvciB0cnVlIGlucHV0cyByZXNwZWN0aXZlbHkpLgogICAgIC8vIFRoZW4gaW52ZXJ0IGFnYWlu
c3QgSlNWYWx1ZSh0cnVlKSwgd2hpY2ggd2lsbCBhZGQgdGhlIHRhZyBiYWNrIGluLCBhbmQgZmxp
cCB0aGUgbG93IGJpdC4KLSAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CisgICAgeG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OlZhbHVlRmFsc2UpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihOb25a
ZXJvLCByZWdUMCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpKTsKLSAg
ICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVUcnVlKSksIHJl
Z1QwKTsKKyAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDAp
OwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX2RzdC5vZmZzZXQoKSk7
CiB9CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamVxX251bGwoY29uc3Qg
SW5zdHJ1YwogCiAgICAgLy8gTm93IGhhbmRsZSB0aGUgaW1tZWRpYXRlIGNhc2VzIC0gdW5kZWZp
bmVkICYgbnVsbAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7Ci0gICAgYW5kNjQoVHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMy
KH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2g2NChF
cXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSksIHRh
cmdldCk7ICAgICAgICAgICAgCiAKICAgICBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGlu
ayh0aGlzKTsKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9qbmVxX251bGwo
Y29uc3QgSW5zdHJ1CiAKICAgICAvLyBOb3cgaGFuZGxlIHRoZSBpbW1lZGlhdGUgY2FzZXMgLSB1
bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1lZGlhdGUubGluayh0aGlzKTsKLSAgICBhbmQ2NChU
cnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsKKyAgICBhbmQ2NChUcnVzdGVk
SW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsKICAgICBhZGRKdW1wKGJyYW5j
aDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc051bGwo
KSkpKSwgdGFyZ2V0KTsgICAgICAgICAgICAKIAogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRo
aXMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p1bmRlZmluZWRfb3Jf
bnVsbChjb24KIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJlZ1QwKTsKIAot
ICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgcmVnVDApOworICAgIGFu
ZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDApOwogICAgIGFk
ZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVsbCgpKSkpLCB0YXJnZXQpOwogfQogCkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjbwogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcih2YWx1ZSwgcmVnVDApOwogCi0gICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRl
ZmluZWQpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmlu
ZWRUYWcpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIFRy
dXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSksIHRhcmdldCk7CiB9CiAKQEAg
LTgzMiw4ICs4MzIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9udWxsKGNvbnN0IEluc3RydWN0
CiAKICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAgYW5kNjQoVHJ1c3RlZEltbTMy
KH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7Ci0gICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwg
VHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlZ1QwKTsKKyAgICBhbmQ2NChUcnVzdGVkSW1tMzIo
fkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVOdWxsKSwgcmVnVDApOwogCiAgICAgd2Fz
Tm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAgICAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5saW5rKHRoaXMpOwpAQCAtODY1LDggKzg2NSw4IEBAIHZvaWQgSklUOjplbWl0X29wX25lcV9u
dWxsKGNvbnN0IEluc3RydWMKIAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7CiAKLSAgICBh
bmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsKLSAgICBjb21wYXJl
NjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVOdWxsKSwgcmVnVDApOworICAg
IGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVnVDApOworICAg
IGNvbXBhcmU2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZU51
bGwpLCByZWdUMCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsKICAgICB3YXNO
b3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjUwMDg1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzCiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QzLCBmcFJl
Z1QwKTsKICAgICAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKICAgICAgICAgbm90SW50Lmxpbmso
dGhpcyk7Ci0gICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDMpOworICAg
ICAgICBhZGQ2NChudW1iZXJUYWdSZWdpc3RlciwgcmVnVDMpOwogICAgICAgICBtb3ZlNjRUb0Rv
dWJsZShyZWdUMywgZnBSZWdUMCk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZO
YU4oZnBSZWdUMCkpOwogICAgICAgICByZWFkeS5saW5rKHRoaXMpOwpAQCAtMTkwMiw3ICsxOTAy
LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIEp1bXAg
cmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRoaXMpOwogICAgIHNsb3dDYXNl
cy5hcHBlbmQoYnJhbmNoSWZOb3ROdW1iZXIoZWFybHlTY3JhdGNoKSk7Ci0gICAgYWRkNjQodGFn
VHlwZU51bWJlclJlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOworICAgIGFkZDY0KG51bWJlclRhZ1Jl
Z2lzdGVyLCBlYXJseVNjcmF0Y2gpOwogICAgIG1vdmU2NFRvRG91YmxlKGVhcmx5U2NyYXRjaCwg
ZnBSZWdUMCk7CiAgICAgcmVhZHkubGluayh0aGlzKTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAJKHJl
dmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlm
dEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEpJVFJpZ2h0
U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgaml0LnVyc2hpZnQzMihDQ2FsbEhlbHBlcnM6OkltbTMyKHNoaWZ0QW1vdW50KSwgbV9y
ZXN1bHQucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0
Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BS
KCkpOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIG1f
cmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICAgICAgfQogCkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhcwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBqaXQudXJzaGlmdDMyKHJpZ2h0T3BlcmFuZEdQUiwgbV9yZXN1bHQu
cGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBqaXQub3I2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAg
ICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2Fk
R1BSKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChtX2xlZnRPcGVyYW5kLmlzQ29uc3RJbnQzMigp
KQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNyArNjEsNyBAQCBS
ZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2FyCiBSZWdpc3RlclNldCBSZWdp
c3RlclNldDo6cnVudGltZVRhZ1JlZ2lzdGVycygpCiB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICByZXR1cm4gUmVnaXN0ZXJTZXQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJldHVybiBSZWdpc3RlclNldChHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAjZWxzZQog
ICAgIHJldHVybiB7IH07CiAjZW5kaWYKQEAgLTE3OCwxNSArMTc4LDE1IEBAIFJlZ2lzdGVyU2V0
IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2EKICNpZiAhT1MoV0lORE9XUykKICAgICByZXN1
bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIp
OwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tS
ZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6
bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NT
NCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChH
UFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNl
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M0KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86OnRhZ1R5
cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09
IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NT
Nik7CiAjZW5kaWYKQEAgLTE5NSw4ICsxOTUsOCBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6
bGxpbnRCYXNlbGluZUNhCiAjZWxpZiBDUFUoQVJNNjQpCiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M3KTsKLSAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAg
QVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzkgPT0gR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M4
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAjZWxpZiBDUFUoTUlQUykKQEAg
LTIxNiwyMiArMjE2LDIyIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpkZmdDYWxsZWVTYXZl
UmUKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAgICAgcmVzdWx0LnNldChHUFJJ
bmZvOjpyZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdD
UzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5m
bzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2Vy
dChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1Jl
Z2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3Vs
dC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBBU1NFUlQoR1BS
SW5mbzo6cmVnQ1M1ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNT
RVJUKEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0
YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90
Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKICNlbGlmIENQVShBUk1f
VEhVTUIyKQogI2VsaWYgQ1BVKEFSTTY0KQotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzggPT0g
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVn
Q1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJ
bmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0
aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVy
LCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M5KTsKICNlbGlmIENQVShNSVBTKQpAQCAtMjQ5LDggKzI0OSw4IEBAIFJl
Z2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmUKICAgICByZXN1bHQuc2V0KEdQ
UkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzEpOwogICAgIHJl
c3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1MzID09
IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJl
Z0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BS
SW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3Rh
dGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rl
ciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MzKTsKICAgICByZXN1bHQuc2V0
KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxpZiBDUFUoQVJNNjQpCkBAIC0yNjMsOCArMjYzLDggQEAg
UmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVSZQogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzgg
PT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6
cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChH
UFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lz
dGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQUkluZm86OmZwUmVnQ1MwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJ
VC5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEwICsxMTQsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIG1vdmVEb3VibGVU
bzY0KHNyYywgcmVnVDApOwogICAgICAgICAgICAgSnVtcCB6ZXJvID0gYnJhbmNoVGVzdDY0KFpl
cm8sIHJlZ1QwKTsKLSAgICAgICAgICAgIHN1YjY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVn
VDApOworICAgICAgICAgICAgc3ViNjQobnVtYmVyVGFnUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAg
ICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAgICAgICAgIHplcm8ubGluayh0aGlzKTsK
LSAgICAgICAgICAgIG1vdmUodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CisgICAgICAg
ICAgICBtb3ZlKG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBkb25lLmxp
bmsodGhpcyk7CiAjZWxzZQogICAgICAgICAgICAgbW92ZURvdWJsZVRvSW50cyhzcmMsIHJlZ1Qw
LCByZWdUMSk7CkBAIC0xODIsNyArMTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgdGFnUmV0dXJuQXNJbnQzMigpCiAgICAgICAgIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICAgICAgb3I2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAgICAg
IG9yNjQobnVtYmVyVGFnUmVnaXN0ZXIsIHJlZ1QwKTsKICNlbHNlCiAgICAgICAgICAgICBtb3Zl
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHJlZ1QxKTsKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkocmV2aXNp
b24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDkgQEAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmPEpJVFN0dWJSb3V0aW5lUHRyVAogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgaWYg
KGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAgLy8gVGFpbCBjYWxscyBjb3Vs
ZCBoYXZlIGNsb2JiZXJlZCB0aGUgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyIGJlY2F1c2UgdGhl
eQorICAgICAgICAvLyBUYWlsIGNhbGxzIGNvdWxkIGhhdmUgY2xvYmJlcmVkIHRoZSBHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyIGJlY2F1c2UgdGhleQogICAgICAgICAvLyByZXN0b3JlIGNh
bGxlZSBzYXZlZCByZWdpc3RlcnMgYmVmb3JlIGdldHRoaW5nIGhlcmUuIFNvLCBsZXQncyBtYXRl
cmlhbGl6ZQotICAgICAgICAvLyB0aGUgVGFnTWFzayBpbiBhIHRlbXAgcmVnaXN0ZXIgYW5kIHVz
ZSB0aGUgdGVtcCBpbnN0ZWFkLgorICAgICAgICAvLyB0aGUgTm90Q2VsbE1hc2sgaW4gYSB0ZW1w
IHJlZ2lzdGVyIGFuZCB1c2UgdGhlIHRlbXAgaW5zdGVhZC4KICAgICAgICAgc2xvd0Nhc2UuYXBw
ZW5kKGppdC5icmFuY2hJZk5vdENlbGwoR1BSSW5mbzo6cmVnVDAsIERvTm90SGF2ZVRhZ1JlZ2lz
dGVycykpOwogICAgIH0gZWxzZQogICAgICAgICBzbG93Q2FzZS5hcHBlbmQoaml0LmJyYW5jaElm
Tm90Q2VsbChHUFJJbmZvOjpyZWdUMCkpOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAg
ICAvLyBXZSdyZSBjb21pbmcgZnJvbSBhIHNwZWNpYWxpemVkIHRodW5rIHRoYXQgaGFzIHNhdmVk
IHRoZSBwcmlvciB0YWcgcmVnaXN0ZXJzJyBjb250ZW50cy4KICAgICAgICAgLy8gUmVzdG9yZSB0
aGVtIG5vdy4KLSAgICAgICAgaml0LnBvcFBhaXIoSlNJbnRlcmZhY2VKSVQ6OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIGpp
dC5wb3BQYWlyKEpTSW50ZXJmYWNlSklUOjpudW1iZXJUYWdSZWdpc3RlciwgSlNJbnRlcmZhY2VK
SVQ6Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFnczoKQEAgLTQ0NSw3ICs0NDUsNyBAQCBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyCiAgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMSk7CiAg
ICAgaml0LmFuZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tMzIoc3RhY2tBbGlnbm1lbnRS
ZWdpc3RlcnMoKSAtIDEpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIxKTsKICAgICBKU0lu
dGVyZmFjZUpJVDo6SnVtcCBub0V4dHJhU2xvdCA9IGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjEpOwotICAgIGppdC5tb3Zl
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCBleHRyYVRlbXAp
OworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFs
dWVVbmRlZmluZWQpLCBleHRyYVRlbXApOwogICAgIEpTSW50ZXJmYWNlSklUOjpMYWJlbCBmaWxs
RXh0cmFTbG90cyhqaXQubGFiZWwoKSk7CiAgICAgaml0LnN0b3JlNjQoZXh0cmFUZW1wLCBNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpjYWxsRnJhbWVSZWdpc3Rlciwg
SlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMiwgSlNJbnRlcmZhY2VKSVQ6OlRpbWVzRWlnaHQp
KTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW0zMigxKSwgSlNJbnRl
cmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CkBAIC00NzYsNyArNDc2LDcgQEAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcgogCiAgICAgLy8gRmlsbCBpbiBhcmd1bWVudEdQ
UjAgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmluZWQKICAgICBqaXQubW92ZShKU0ludGVy
ZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIyKTsKLSAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KFZhbHVlVW5kZWZpbmVkKSwg
ZXh0cmFUZW1wKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0KEpT
VmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgZXh0cmFUZW1wKTsKICAgICBKU0ludGVyZmFjZUpJVDo6
TGFiZWwgZmlsbFVuZGVmaW5lZExvb3Aoaml0LmxhYmVsKCkpOwogICAgIGppdC5zdG9yZTY0KGV4
dHJhVGVtcCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0ludGVyZmFjZUpJVDo6cmVnVDMs
IEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpTSW50ZXJmYWNlSklUOjpUaW1lc0VpZ2h0
KSk7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTMyKDgpLCBKU0lu
dGVyZmFjZUpJVDo6cmVnVDMpOwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYgogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGludGVn
ZXJJc0ludE1pbiA9IGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgR1BS
SW5mbzo6cmVnVDApOwogCiAgICAgLy8gQm94IGFuZCBmaW5pc2guCi0gICAgaml0Lm9yNjQoR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgaml0Lm9y
NjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lV2l0aEludGVnZXJzID0gaml0Lmp1bXAoKTsKIAogICAgIC8v
IEhhbmRsZSBEb3VibGVzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMjUgKzExMyw2IEBAIHZvaWQg
RGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIFNUQVRJQ19BU1NFUlQoVGFnT2Zm
c2V0ID09IDQpOwogICAgIFNUQVRJQ19BU1NFUlQoUGF5bG9hZE9mZnNldCA9PSAwKTsKICNlbmRp
ZgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpJbnQz
MlRhZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpT
VmFsdWU6OkJvb2xlYW5UYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC0yKSk7Ci0gICAgU1RB
VElDX0FTU0VSVChKU1ZhbHVlOjpOdWxsVGFnID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPigtMykp
OwotICAgIFNUQVRJQ19BU1NFUlQoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPigtNCkpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNWYWx1ZTo6Q2VsbFRhZyA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oLTUpKTsKLSAgICBTVEFUSUNfQVNTRVJUKEpTVmFsdWU6OkVt
cHR5VmFsdWVUYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC02KSk7Ci0gICAgU1RBVElDX0FT
U0VSVChKU1ZhbHVlOjpEZWxldGVkVmFsdWVUYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC03
KSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpMb3dlc3RUYWcgPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KC03KSk7Ci0jZWxzZQotICAgIFNUQVRJQ19BU1NFUlQoVGFnQml0VHlwZU90aGVy
ID09IDB4Mik7Ci0gICAgU1RBVElDX0FTU0VSVChUYWdCaXRCb29sID09IDB4NCk7Ci0gICAgU1RB
VElDX0FTU0VSVChUYWdCaXRVbmRlZmluZWQgPT0gMHg4KTsKLSAgICBTVEFUSUNfQVNTRVJUKFZh
bHVlRW1wdHkgPT0gMHgwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlRmFsc2UgPT0gKFRhZ0Jp
dFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wpKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlVHJ1ZSA9
PSAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IDEpKTsKLSAgICBTVEFUSUNfQVNTRVJU
KFZhbHVlVW5kZWZpbmVkID09IChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRVbmRlZmluZWQpKTsK
LSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlTnVsbCA9PSBUYWdCaXRUeXBlT3RoZXIpOwotI2VuZGlm
CiAKICNpZiBFTkFCTEUoQ19MT09QKQogICAgIEFTU0VSVChDb2RlQmxvY2s6OmxsaW50QmFzZWxp
bmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSA9PSAxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtNTA0LDEyICs1MDQsMTIg
QEAgZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVJbnQzMihzaXplLCBpbmRleCwg
dmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCBpbmRleCwgdmFs
dWUpCi0gICAgYnFiIHZhbHVlLCB0YWdUeXBlTnVtYmVyLCBzbG93CisgICAgYnFiIHZhbHVlLCBu
dW1iZXJUYWcsIHNsb3cKIGVuZAogCiBtYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChz
aXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCBpbmRleCwgdmFsdWUpCi0gICAgYnRxbnogdmFsdWUsIHRhZ01hc2ssIHNsb3cKKyAgICBidHFu
eiB2YWx1ZSwgbm90Q2VsbE1hc2ssIHNsb3cKIGVuZAogCiBtYWNybyB3cml0ZUJhcnJpZXJPbkNl
bGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCkBAIC01MjYsNyArNTI2LDcg
QEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChjZWxsLAogZW5kCiAKIG1hY3Jv
IHdyaXRlQmFycmllck9uQ2VsbEFuZFZhbHVlV2l0aFJlbG9hZChjZWxsLCB2YWx1ZSwgcmVsb2Fk
QWZ0ZXJTbG93UGF0aCkKLSAgICBidHFueiB2YWx1ZSwgdGFnTWFzaywgLndyaXRlQmFycmllckRv
bmUKKyAgICBidHFueiB2YWx1ZSwgbm90Q2VsbE1hc2ssIC53cml0ZUJhcnJpZXJEb25lCiAgICAg
YnRxeiB2YWx1ZSwgLndyaXRlQmFycmllckRvbmUKICAgICB3cml0ZUJhcnJpZXJPbkNlbGxXaXRo
UmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCiAud3JpdGVCYXJyaWVyRG9uZToKQEAg
LTcyNCw3ICs3MjQsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihvcF9hcmd1bWVudF9jb3Vu
dCwgT3BBcmd1bWVudENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQog
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCiAgICAgc3Vi
aSAxLCB0MAotICAgIG9ycSBUYWdUeXBlTnVtYmVyLCB0MAorICAgIG9ycSBUYWdOdW1iZXIsIHQw
CiAgICAgcmV0dXJuKHQwKQogZW5kKQogCkBAIC03MzksNyArNzM5LDcgQEAgZW5kKQogbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fc3JjRHN0LCB0MCkKICAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cK
KyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc1Nsb3cKICAgICBiYm5lcSBKU0Nl
bGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgbWV0YWRhdGEodDIsIHQzKQpAQCAt
ODA2LDcgKzgwNiw3IEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb25PcChvcGNvZGVOYW1lLCAK
ICAgICBsbGludE9wV2l0aFJldHVybihvcGNvZGVOYW1lLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdldChtX29wZXJhbmQsIHQwKQog
ICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0cW56IHQwLCB0YWdNYXNr
LCAuaW1tZWRpYXRlCisgICAgICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLmltbWVkaWF0ZQog
ICAgICAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgICAgICBtb3ZlIDAsIHQwCiAgICAgICAgIGpt
cCAuZG9uZQpAQCAtODE3LDcgKzgxNyw3IEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlzb25PcChv
cGNvZGVOYW1lLCAKICAgICAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1fZ2xvYmFsT2JqZWN0W3QyXSwg
dDAsIHQwCiAgICAgICAgIGptcCAuZG9uZQogICAgIC5pbW1lZGlhdGU6Ci0gICAgICAgIGFuZHEg
flRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0MAogICAg
ICAgICBjcWVxIHQwLCBWYWx1ZU51bGwsIHQwCiAgICAgLmRvbmU6CiAgICAgICAgIGZuKHQwKQpA
QCAtODM2LDcgKzgzNiw3IEBAIGVxdWFsTnVsbENvbXBhcmlzb25PcChvcF9uZXFfbnVsbCwgT3BO
ZXEKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9vcl9udWxsLCBPcElzVW5kZWZp
bmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldCht
X29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQot
ICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICBhbmRxIH5UYWdVbmRlZmluZWQsIHQw
CiAgICAgY3FlcSB0MCwgVmFsdWVOdWxsLCB0MAogICAgIG9ycSBWYWx1ZUZhbHNlLCB0MAogICAg
IHJldHVybih0MCkKQEAgLTg1MSwxMiArODUxLDEyIEBAIG1hY3JvIHN0cmljdEVxT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDApCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAgIG9ycSB0MSwgdDIKLSAgICAgICAg
YnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIHRhZ1R5cGVOdW1iZXIs
IC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CisgICAgICAg
IGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAgICBicWFlcSB0MCwgbnVtYmVyVGFn
LCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93CiAgICAgLmxlZnRP
SzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5yaWdodE9LCi0gICAgICAgIGJ0
cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBicWFlcSB0MSwgbnVtYmVyVGFn
LCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAuc2xvdwogICAgIC5yaWdo
dE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQogICAgICAgICBvcnEg
VmFsdWVGYWxzZSwgdDAKQEAgLTg4NSwxMiArODg1LDEyIEBAIG1hY3JvIHN0cmljdEVxdWFsaXR5
SnVtcE9wKG9wY29kZU5hbWUsIG8KICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXpl
LCB0MywgdDEpCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAgIG9ycSB0MSwgdDIKLSAgICAg
ICAgYnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEgdDAsIHRhZ1R5cGVOdW1i
ZXIsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93CisgICAg
ICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAgICBicWFlcSB0MCwgbnVtYmVy
VGFnLCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcsIC5zbG93CiAgICAgLmxl
ZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5yaWdodE9LCi0gICAgICAg
IGJ0cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBicWFlcSB0MSwgbnVtYmVy
VGFnLCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAuc2xvdwogICAgIC5y
aWdodE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIC5qdW1wVGFyZ2V0KQog
ICAgICAgICBkaXNwYXRjaCgpCkBAIC05MTcsOSArOTE3LDkgQEAgbWFjcm8gcHJlT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3RydWN0LCBhcgogICAgIGxsaW50T3Aob3BfJW9wY29kZU5hbWUlLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQogICAgICAgICBnZXQobV9zcmNE
c3QsIHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQxCi0gICAgICAgIGJxYiB0MSwg
dGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICAgICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93CiAg
ICAgICAgIGFyaXRobWV0aWNPcGVyYXRpb24odDEsIC5zbG93KQotICAgICAgICBvcnEgdGFnVHlw
ZU51bWJlciwgdDEKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDEKICAgICAgICAgc3RvcmVxIHQx
LCBbY2ZyLCB0MCwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAgIC5zbG93OgpAQCAtOTMxLDgg
KzkzMSw4IEBAIGVuZAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3RvX251bWJlciwgT3BUb051bWJl
ciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikKICAgICBnZXQobV9vcGVyYW5k
LCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MikKLSAgICBicWFl
cSB0MiwgdGFnVHlwZU51bWJlciwgLm9wVG9OdW1iZXJJc0ltbWVkaWF0ZQotICAgIGJ0cXogdDIs
IHRhZ1R5cGVOdW1iZXIsIC5vcFRvTnVtYmVyU2xvdworICAgIGJxYWVxIHQyLCBudW1iZXJUYWcs
IC5vcFRvTnVtYmVySXNJbW1lZGlhdGUKKyAgICBidHF6IHQyLCBudW1iZXJUYWcsIC5vcFRvTnVt
YmVyU2xvdwogLm9wVG9OdW1iZXJJc0ltbWVkaWF0ZToKICAgICByZXR1cm4odDIpCiAKQEAgLTk0
NSw3ICs5NDUsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihvcF90b19zdHJpbmcsIE9wVG9T
dHJpbmcsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fb3Bl
cmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAg
YnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvU3RyaW5nU2xvdworICAgIGJ0cW56IHQwLCBub3RDZWxs
TWFzaywgLm9wVG9TdHJpbmdTbG93CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBTdHJp
bmdUeXBlLCAub3BUb1N0cmluZ1Nsb3cKIC5vcFRvU3RyaW5nSXNTdHJpbmc6CiAgICAgcmV0dXJu
KHQwKQpAQCAtOTU5LDcgKzk1OSw3IEBAIGVuZCkKIGxsaW50T3BXaXRoUHJvZmlsZShvcF90b19v
YmplY3QsIE9wVG9PYmplY3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAg
ICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MCwgdDIpCi0gICAgYnRxbnogdDIsIHRhZ01hc2ssIC5vcFRvT2JqZWN0U2xvdworICAgIGJ0cW56
IHQyLCBub3RDZWxsTWFzaywgLm9wVG9PYmplY3RTbG93CiAgICAgYmJiIEpTQ2VsbDo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wVG9PYmplY3RTbG93CiAgICAgcmV0dXJuKHQyKQogCkBAIC05
NzQsMTUgKzk3NCwxNSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX25lZ2F0ZSwgT3BOZWdhdGUs
CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgbWV0YWRhdGEo
dDEsIHQyKQogICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6bV9hcml0aFByb2ZpbGUgKyBB
cml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCi0gICAgYnFiIHQzLCB0YWdUeXBlTnVtYmVyLCAu
b3BOZWdhdGVOb3RJbnQKKyAgICBicWIgdDMsIG51bWJlclRhZywgLm9wTmVnYXRlTm90SW50CiAg
ICAgYnRpeiB0MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwogICAgIG5lZ2kgdDMKLSAgICBv
cnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBvcnEgbnVtYmVyVGFnLCB0MwogICAgIG9yaSBBcml0
aFByb2ZpbGVJbnQsIHQyCiAgICAgc3RvcmVpIHQyLCBPcE5lZ2F0ZTo6TWV0YWRhdGE6Om1fYXJp
dGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAgICAgcmV0dXJuKHQzKQogLm9w
TmVnYXRlTm90SW50OgotICAgIGJ0cXogdDMsIHRhZ1R5cGVOdW1iZXIsIC5vcE5lZ2F0ZVNsb3cK
KyAgICBidHF6IHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cKICAgICB4b3JxIDB4ODAwMDAw
MDAwMDAwMDAwMCwgdDMKICAgICBvcmkgQXJpdGhQcm9maWxlTnVtYmVyLCB0MgogICAgIHN0b3Jl
aSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmlsZSArIEFyaXRoUHJvZmlsZTo6
bV9iaXRzW3QxXQpAQCAtMTAwNiw4ICsxMDA2LDggQEAgbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9y
ZShvcGNvZGVOYW1lLCBvcAogICAgICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MiwgdDApCi0gICAgICAgIGJxYiB0MCwgdGFnVHlwZU51bWJlciwgLm9wMU5v
dEludAotICAgICAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDJOb3RJbnQKKyAgICAgICAg
YnFiIHQwLCBudW1iZXJUYWcsIC5vcDFOb3RJbnQKKyAgICAgICAgYnFiIHQxLCBudW1iZXJUYWcs
IC5vcDJOb3RJbnQKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAgICAgICAgaW50ZWdlck9wZXJh
dGlvbkFuZFN0b3JlKHQxLCB0MCwgLnNsb3csIHQyKQogCkBAIC0xMDE2LDEwICsxMDE2LDEwIEBA
IG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3AKIAogICAgIC5vcDFOb3RJ
bnQ6CiAgICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRo
ZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KLSAgICAgICAgYnRxeiB0MCwgdGFn
VHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcDFO
b3RJbnRPcDJJbnQKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAg
ICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6IHQwLCBudW1iZXJUYWcsIC5z
bG93CisgICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5vcDFOb3RJbnRPcDJJbnQKKyAgICAg
ICAgYnRxeiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBhZGRxIG51bWJlclRhZywgdDEK
ICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIHByb2ZpbGUoQXJpdGhQcm9maWxlTnVtYmVy
TnVtYmVyKQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CkBAIC0xMDI4LDI1ICsxMDI4LDI1
IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwgb3AKICAgICAgICAgY2ky
ZCB0MSwgZnQxCiAgICAgLm9wMU5vdEludFJlYWR5OgogICAgICAgICBnZXQobV9kc3QsIHQyKQot
ICAgICAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgICAgIGFkZHEgbnVtYmVyVGFnLCB0
MAogICAgICAgICBmcTJkIHQwLCBmdDAKICAgICAgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQw
KQogICAgICAgICBmZDJxIGZ0MCwgdDAKLSAgICAgICAgc3VicSB0YWdUeXBlTnVtYmVyLCB0MAor
ICAgICAgICBzdWJxIG51bWJlclRhZywgdDAKICAgICAgICAgc3RvcmVxIHQwLCBbY2ZyLCB0Miwg
OF0KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wMk5vdEludDoKICAgICAgICAgIyBGaXJz
dCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIGlzIGRlZmluaXRlbHkg
bm90LgogICAgICAgICBnZXQobV9kc3QsIHQyKQotICAgICAgICBidHF6IHQxLCB0YWdUeXBlTnVt
YmVyLCAuc2xvdworICAgICAgICBidHF6IHQxLCBudW1iZXJUYWcsIC5zbG93CiAgICAgICAgIHBy
b2ZpbGUoQXJpdGhQcm9maWxlSW50TnVtYmVyKQogICAgICAgICBjaTJkIHQwLCBmdDAKLSAgICAg
ICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBhZGRxIG51bWJlclRhZywgdDEKICAg
ICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKICAg
ICAgICAgZmQycSBmdDAsIHQwCi0gICAgICAgIHN1YnEgdGFnVHlwZU51bWJlciwgdDAKKyAgICAg
ICAgc3VicSBudW1iZXJUYWcsIHQwCiAgICAgICAgIHN0b3JlcSB0MCwgW2NmciwgdDIsIDhdCiAg
ICAgICAgIGRpc3BhdGNoKCkKIApAQCAtMTA3Miw3ICsxMDcyLDcgQEAgaWYgWDg2XzY0IG9yIFg4
Nl82NF9XSU4KICAgICAgICAgICAgIGNkcWkKICAgICAgICAgICAgIGlkaXZpIHQzCiAgICAgICAg
ICAgICBidGlueiB0MSwgc2xvdwotICAgICAgICAgICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCisg
ICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAogICAgICAgICAgICAgc3RvcmVxIHQwLCBbY2Zy
LCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRp
dmQgbGVmdCwgcmlnaHQgZW5kKQpAQCAtMTA5MCw3ICsxMDkwLDcgQEAgYmluYXJ5T3BDdXN0b21T
dG9yZShtdWwsIE9wTXVsLAogICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKICAgICAgICAgYmls
dCByaWdodCwgMCwgc2xvdwogICAgIC5kb25lOgotICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwg
dDMKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDMKICAgICAgICAgc3RvcmVxIHQzLCBbY2ZyLCBp
bmRleCwgOF0KICAgICBlbmQsCiAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJp
Z2h0IGVuZCkKQEAgLTExMDAsNyArMTEwMCw3IEBAIG1hY3JvIGJpbmFyeU9wKG9wY29kZU5hbWUs
IG9wY29kZVN0cnVjdCwKICAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKG9wY29kZU5hbWUsIG9wY29k
ZVN0cnVjdCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKICAgICAg
ICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCi0gICAgICAgICAgICBv
cnEgdGFnVHlwZU51bWJlciwgcmlnaHQKKyAgICAgICAgICAgIG9ycSBudW1iZXJUYWcsIHJpZ2h0
CiAgICAgICAgICAgICBzdG9yZXEgcmlnaHQsIFtjZnIsIGluZGV4LCA4XQogICAgICAgICBlbmQs
CiAgICAgICAgIGRvdWJsZU9wZXJhdGlvbikKQEAgLTExMzMsMTAgKzExMzMsMTAgQEAgbWFjcm8g
Y29tbW9uQml0T3Aob3BLaW5kLCBvcGNvZGVOYW1lLCBvcAogICAgICAgICBnZXQobV9saHMsIHQy
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgICAgIGJxYiB0MCwgdGFn
VHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdwor
ICAgICAgICBicWIgdDAsIG51bWJlclRhZywgLnNsb3cKKyAgICAgICAgYnFiIHQxLCBudW1iZXJU
YWcsIC5zbG93CiAgICAgICAgIG9wZXJhdGlvbih0MSwgdDApCi0gICAgICAgIG9ycSB0YWdUeXBl
TnVtYmVyLCB0MAorICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAogICAgICAgICByZXR1cm4odDAp
CiAKICAgICAuc2xvdzoKQEAgLTExNzcsNyArMTE3Nyw3IEBAIGxsaW50T3BXaXRoUHJvZmlsZShv
cF9iaXRub3QsIE9wQml0bm90LCAKICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BCaXROb3RTbG93KQogICAgIG5v
dGkgdDMKLSAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBvcnEgbnVtYmVyVGFnLCB0Mwog
ICAgIHJldHVybih0MykKIC5vcEJpdE5vdFNsb3c6CiAgICAgY2FsbFNsb3dQYXRoKF9zbG93X3Bh
dGhfYml0bm90KQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4o
b3BfaXNfdW5kZWZpbmVkLCBPcElzVW5kZWZpbmVkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoc2l6ZSwgdDEsIHQwKQotICAgIGJ0cXogdDAsIHRhZ01hc2ssIC5vcElzVW5kZWZpbmVk
Q2VsbAorICAgIGJ0cXogdDAsIG5vdENlbGxNYXNrLCAub3BJc1VuZGVmaW5lZENlbGwKICAgICBj
cWVxIHQwLCBWYWx1ZVVuZGVmaW5lZCwgdDMKICAgICBvcnEgVmFsdWVGYWxzZSwgdDMKICAgICBy
ZXR1cm4odDMpCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihv
cF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MSwgdDApCi0gICAgdHFueiB0MCwgdGFnVHlwZU51bWJlciwgdDEKKyAgICB0cW56IHQw
LCBudW1iZXJUYWcsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgcmV0dXJuKHQxKQog
ZW5kKQpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfY2VsbF93
aXRoX3R5cGUsIAogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRoVHlwZSwgbV90eXBlLCB0MCkK
ICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQxLCB0MykKLSAgICBidHFueiB0MywgdGFnTWFzaywgLm5vdENlbGxDYXNlCisgICAgYnRxbnog
dDMsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKICAgICBjYmVxIEpTQ2VsbDo6bV90eXBlW3Qz
XSwgdDAsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAgcmV0dXJuKHQxKQpAQCAtMTI3
Myw3ICsxMjczLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfb2JqZWN0LCBPcElz
T2JqZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29w
ZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQotICAg
IGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc09iamVjdE5vdENlbGwKKyAgICBidHFueiB0MCwgbm90
Q2VsbE1hc2ssIC5vcElzT2JqZWN0Tm90Q2VsbAogICAgIGNiYWVxIEpTQ2VsbDo6bV90eXBlW3Qw
XSwgT2JqZWN0VHlwZSwgdDEKICAgICBvcnEgVmFsdWVGYWxzZSwgdDEKICAgICByZXR1cm4odDEp
CkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwg
T3BHZXRCCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDNdLCB0
MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRlciArIEluZGV4aW5nSGVhZGVy
Ojp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBiaWx0IHQwLCAwLCAub3BHZXRC
eUlkU2xvdwotICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgIG9ycSBudW1iZXJUYWcsIHQw
CiAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQogICAgIHJldHVybih0MCkKIApA
QCAtMTQ2MCwxMyArMTQ2MCwxMyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAgICAgZW5kCiAKICAgICBtYWNybyBmaW5pc2hJbnRHZXRCeVZhbChyZXN1bHQsIHNj
cmF0Y2gpCi0gICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCByZXN1bHQKKyAgICAgICAgb3JxIG51
bWJlclRhZywgcmVzdWx0CiAgICAgICAgIGZpbmlzaEdldEJ5VmFsKHJlc3VsdCwgc2NyYXRjaCkK
ICAgICBlbmQKIAogICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5VmFsKHJlc3VsdCwgc2NyYXRj
aDEsIHNjcmF0Y2gyKQogICAgICAgICBmZDJxIHJlc3VsdCwgc2NyYXRjaDEKLSAgICAgICAgc3Vi
cSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoMQorICAgICAgICBzdWJxIG51bWJlclRhZywgc2NyYXRj
aDEKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgIGVuZAog
CkBAIC0xNDgyLDggKzE0ODIsOCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV92YWws
IE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMyKHNpemUsIHQzLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQogICAgIHN4aTJxIHQxLCB0MQogCi0gICAgbG9hZENhZ2VkSlNWYWx1ZShK
U09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgdGFnVHlwZU51bWJlcikKLSAgICBtb3ZlIFRh
Z1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0
OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAgbW92ZSBUYWdOdW1iZXIsIG51
bWJlclRhZwogCiAgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywgdDIKICAgICBiaWVxIHQyLCBJ
bnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwpAQCAtMTUwMyw3ICsxNTAzLDcgQEAg
bGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdldAogICAgIGxvYWRkIFt0Mywg
dDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BHZXRCeVZhbFNsb3cKICAgICBm
ZDJxIGZ0MCwgdDIKLSAgICBzdWJxIHRhZ1R5cGVOdW1iZXIsIHQyCisgICAgc3VicSBudW1iZXJU
YWcsIHQyCiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQogICAgIAogLm9wR2V0QnlWYWxOb3REb3Vi
bGU6CkBAIC0xNjQ3LDE1ICsxNjQ3LDE1IEBAIG1hY3JvIHB1dEJ5VmFsT3Aob3Bjb2RlTmFtZSwg
b3Bjb2RlU3RydWMKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQwKQogICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQdXRCeVZhbFNsb3cpCiAgICAg
ICAgIHN4aTJxIHQzLCB0MwotICAgICAgICBsb2FkQ2FnZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1
dHRlcmZseVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQotICAgICAgICBtb3ZlIFRhZ1R5cGVOdW1i
ZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9i
dXR0ZXJmbHlbdDFdLCB0MCwgbnVtYmVyVGFnKQorICAgICAgICBtb3ZlIFRhZ051bWJlciwgbnVt
YmVyVGFnCiAgICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwgLm9wUHV0QnlWYWxTbG93CiAg
ICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCiAgICAgICAgIGJpbmVxIHQyLCBJbnQz
MlNoYXBlLCAub3BQdXRCeVZhbE5vdEludDMyCiAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbCgK
ICAgICAgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNzKQogICAgICAgICAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3BlcmFuZCwgc2NyYXRjaCkKLSAg
ICAgICAgICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJlciwgLm9wUHV0QnlWYWxTbG93
CisgICAgICAgICAgICAgICAgYnFiIHNjcmF0Y2gsIG51bWJlclRhZywgLm9wUHV0QnlWYWxTbG93
CiAgICAgICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIGFkZHJlc3MKICAgICAgICAgICAgICAg
ICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9iYXNlLCBtX3ZhbHVlKQogICAg
ICAgICAgICAgZW5kKQpAQCAtMTY2NSwxMSArMTY2NSwxMSBAQCBtYWNybyBwdXRCeVZhbE9wKG9w
Y29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGNvbnRpZ3VvdXNQdXRCeVZhbCgKICAgICAg
ICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNzKQogICAgICAgICAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3BlcmFuZCwgc2NyYXRjaCkKLSAgICAgICAg
ICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJlciwgLm5vdEludAorICAgICAgICAgICAg
ICAgIGJxYiBzY3JhdGNoLCBudW1iZXJUYWcsIC5ub3RJbnQKICAgICAgICAgICAgICAgICBjaTJk
IHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGptcCAucmVhZHkKICAgICAgICAgICAgIC5u
b3RJbnQ6Ci0gICAgICAgICAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoCisgICAg
ICAgICAgICAgICAgYWRkcSBudW1iZXJUYWcsIHNjcmF0Y2gKICAgICAgICAgICAgICAgICBmcTJk
IHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGJkbmVxdW4gZnQwLCBmdDAsIC5vcFB1dEJ5
VmFsU2xvdwogICAgICAgICAgICAgLnJlYWR5OgpAQCAtMTc0MSw3ICsxNzQxLDcgQEAgbWFjcm8g
ZXF1YWxOdWxsSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZQogICAgICAgICBnZXQobV92YWx1ZSwg
dDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUsIHQwKQogICAgICAgICBsb2FkcSBb
Y2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCisg
ICAgICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLmltbWVkaWF0ZQogICAgICAgICBsb2FkU3Ry
dWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCiAgICAgICAgIGNlbGxIYW5kbGVyKHQy
LCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0x
NzUwLDcgKzE3NTAsNyBAQCBtYWNybyBlcXVhbE51bGxKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2Rl
CiAgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5pbW1lZGlhdGU6Ci0gICAgICAg
IGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0
MAogICAgICAgICBpbW1lZGlhdGVIYW5kbGVyKHQwLCAudGFyZ2V0KQogICAgICAgICBkaXNwYXRj
aCgpCiAgICAgZW5kKQpAQCAtMTc4MCw3ICsxNzgwLDcgQEAgbWFjcm8gdW5kZWZpbmVkT3JOdWxs
SnVtcE9wKG9wY29kZU5hbWUsIAogICAgIGxsaW50T3BXaXRoSnVtcChvcF8lb3Bjb2RlTmFtZSUs
IG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwgZGlzcGF0Y2gpCiAgICAgICAg
IGdldChtX3ZhbHVlLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MSwgdDApCi0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+
VGFnVW5kZWZpbmVkLCB0MAogICAgICAgICBmbih0MCwgLnRhcmdldCkKICAgICAgICAgZGlzcGF0
Y2goKQogCkBAIC0xODE4LDMwICsxODE4LDMwIEBAIG1hY3JvIGNvbXBhcmVKdW1wT3Aob3Bjb2Rl
TmFtZSwgb3Bjb2RlU3QKICAgICAgICAgZ2V0KG1fcmhzLCB0MykKICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDMsIHQxKQotICAgICAgICBicWIgdDAsIHRhZ1R5cGVOdW1iZXIsIC5vcDFOb3RJ
bnQKLSAgICAgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3AyTm90SW50CisgICAgICAgIGJx
YiB0MCwgbnVtYmVyVGFnLCAub3AxTm90SW50CisgICAgICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAu
b3AyTm90SW50CiAgICAgICAgIGludGVnZXJDb21wYXJlKHQwLCB0MSwgLmp1bXBUYXJnZXQpCiAg
ICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcDFOb3RJbnQ6Ci0gICAgICAgIGJ0cXogdDAsIHRh
Z1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLm9wMU5v
dEludE9wMk5vdEludAorICAgICAgICBidHF6IHQwLCBudW1iZXJUYWcsIC5zbG93CisgICAgICAg
IGJxYiB0MSwgbnVtYmVyVGFnLCAub3AxTm90SW50T3AyTm90SW50CiAgICAgICAgIGNpMmQgdDEs
IGZ0MQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAgICAgLm9wMU5vdEludE9wMk5vdElu
dDoKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYWRkcSB0
YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6IHQxLCBudW1iZXJUYWcsIC5zbG93CisgICAg
ICAgIGFkZHEgbnVtYmVyVGFnLCB0MQogICAgICAgICBmcTJkIHQxLCBmdDEKICAgICAub3AxTm90
SW50UmVhZHk6Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwgdDAKKyAgICAgICAgYWRkcSBu
dW1iZXJUYWcsIHQwCiAgICAgICAgIGZxMmQgdDAsIGZ0MAogICAgICAgICBkb3VibGVDb21wYXJl
KGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wMk5v
dEludDoKICAgICAgICAgY2kyZCB0MCwgZnQwCi0gICAgICAgIGJ0cXogdDEsIHRhZ1R5cGVOdW1i
ZXIsIC5zbG93Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwgdDEKKyAgICAgICAgYnRxeiB0
MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBhZGRxIG51bWJlclRhZywgdDEKICAgICAgICAg
ZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBsbGludE9wV2l0aEp1
bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJCiAgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRh
YmxlLCB0MwogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fc3dpdGNoSnVtcFRhYmxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRkcCB0MywgdDIKLSAgICBicWIg
dDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaEltbU5vdEludAorICAgIGJxYiB0MSwgbnVtYmVy
VGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3Qy
XSwgdDEKICAgICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVj
dG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCiAgICAgbG9hZHAgU2lt
cGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMK
QEAgLTE5MjEsNyArMTkyMSw3IEBAIGxsaW50T3BXaXRoSnVtcChvcF9zd2l0Y2hfaW1tLCBPcFN3
aXRjaEkKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCiAub3BTd2l0Y2hJbW1Ob3RJbnQ6Ci0g
ICAgYnRxbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaEltbVNsb3cgICAjIEdvIHNsb3cg
aWYgaXQncyBhIGRvdWJsZS4KKyAgICBidHFueiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1T
bG93ICAgIyBHbyBzbG93IGlmIGl0J3MgYSBkb3VibGUuCiAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aDoKICAgICBqdW1wKG1fZGVmYXVsdE9mZnNldCkKIApAQCAtMTk0MCw3ICsxOTQwLDcgQEAgbGxp
bnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaAogICAgIG11bGkgc2l6ZW9mIFNp
bXBsZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRj
aEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQy
Ci0gICAgYnRxbnogdDEsIHRhZ01hc2ssIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGJ0
cW56IHQxLCBub3RDZWxsTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCiAgICAgYmJuZXEg
SlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
ICAgICBsb2FkcCBKU1N0cmluZzo6bV9maWJlclt0MV0sIHQwCiAgICAgYnRwbnogdDAsIGlzUm9w
ZUluUG9pbnRlciwgLm9wU3dpdGNoT25Sb3BlCkBAIC0xOTc2LDcgKzE5NzYsNyBAQCBtYWNybyBh
cnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgCiAgICAgZ2V0dShtX2FyZ3YsIHQzKQog
ICAgIG5lZ3AgdDMKICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQw
Ci0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25lCisgICAgYnRxbnogdDAsIG5vdENlbGxNYXNr
LCAuZG9uZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQzCiAgICAgc3Rv
cmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fYXJyYXlQ
cm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgpAQCAtMjAyMiw3ICsyMDIy
LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fcHJpbWl0aXZlLCBPcFRvUHJpbWl0
aXZlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX3NyYywg
dDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgYnRxbnog
dDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBidHFueiB0MCwgbm90Q2VsbE1h
c2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KICAgICBiYmFlcSBKU0NlbGw6Om1fdHlwZVt0MF0sIE9i
amVjdFR5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRvUHJpbWl0aXZlSXNJbW06CiAg
ICAgcmV0dXJuKHQwKQpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShv
cF9wcm9maWxlX3R5cGUsIE9wUAogICAgIGxvYWRwIE9wUHJvZmlsZVR5cGU6Ok1ldGFkYXRhOjpt
X3R5cGVMb2NhdGlvblt0NV0sIHQzCiAgICAgc3RvcmVwIHQzLCBUeXBlUHJvZmlsZXJMb2c6Okxv
Z0VudHJ5Ojpsb2NhdGlvblt0Ml0KIAotICAgIGJ0cXogdDAsIHRhZ01hc2ssIC5vcFByb2ZpbGVU
eXBlSXNDZWxsCisgICAgYnRxeiB0MCwgbm90Q2VsbE1hc2ssIC5vcFByb2ZpbGVUeXBlSXNDZWxs
CiAgICAgc3RvcmVpIDAsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0cnVjdHVyZUlEW3Qy
XQogICAgIGptcCAub3BQcm9maWxlVHlwZVNraXBJc0NlbGwKIC5vcFByb2ZpbGVUeXBlSXNDZWxs
OgpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgbGxpbnRPcFdpdGhSZXR1cm4ob3BfZ2V0X3Jlc3RfbGVu
Z3RoLCBPcAogLnN0b3JlWmVybzoKICAgICBtb3ZlIDAsIHQwCiAuYm94VXA6Ci0gICAgb3JxIHRh
Z1R5cGVOdW1iZXIsIHQwCisgICAgb3JxIG51bWJlclRhZywgdDAKICAgICByZXR1cm4odDApCiBl
bmQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTg3
LDE2ICsxODcsMTYgQEAgY29uc3QgTWV0YWRhdGFPZmZzZXRUYWJsZTMyT2Zmc2V0ID0gY29ucwog
CiAjIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgogaWYgSlNWQUxVRTY0Ci0g
ICAgY29uc3QgVGFnQml0VHlwZU90aGVyID0gY29uc3RleHByIFRhZ0JpdFR5cGVPdGhlcgotICAg
IGNvbnN0IFRhZ0JpdEJvb2wgICAgICA9IGNvbnN0ZXhwciBUYWdCaXRCb29sCi0gICAgY29uc3Qg
VGFnQml0VW5kZWZpbmVkID0gY29uc3RleHByIFRhZ0JpdFVuZGVmaW5lZAotICAgIGNvbnN0IFZh
bHVlRW1wdHkgICAgICA9IGNvbnN0ZXhwciBWYWx1ZUVtcHR5Ci0gICAgY29uc3QgVmFsdWVGYWxz
ZSAgICAgID0gY29uc3RleHByIFZhbHVlRmFsc2UKLSAgICBjb25zdCBWYWx1ZVRydWUgICAgICAg
PSBjb25zdGV4cHIgVmFsdWVUcnVlCi0gICAgY29uc3QgVmFsdWVVbmRlZmluZWQgID0gY29uc3Rl
eHByIFZhbHVlVW5kZWZpbmVkCi0gICAgY29uc3QgVmFsdWVOdWxsICAgICAgID0gY29uc3RleHBy
IFZhbHVlTnVsbAotICAgIGNvbnN0IFRhZ1R5cGVOdW1iZXIgICA9IGNvbnN0ZXhwciBUYWdUeXBl
TnVtYmVyCi0gICAgY29uc3QgVGFnTWFzayAgICAgICAgID0gY29uc3RleHByIFRhZ01hc2sKKyAg
ICBjb25zdCBUYWdPdGhlciAgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6T3RoZXJUYWcKKyAg
ICBjb25zdCBUYWdCb29sICAgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6Qm9vbFRhZworICAg
IGNvbnN0IFRhZ1VuZGVmaW5lZCAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpVbmRlZmluZWRUYWcK
KyAgICBjb25zdCBWYWx1ZUVtcHR5ICAgICAgPSBjb25zdGV4cHIgSlNWYWx1ZTo6VmFsdWVFbXB0
eQorICAgIGNvbnN0IFZhbHVlRmFsc2UgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1ZUZh
bHNlCisgICAgY29uc3QgVmFsdWVUcnVlICAgICAgID0gY29uc3RleHByIEpTVmFsdWU6OlZhbHVl
VHJ1ZQorICAgIGNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1
ZVVuZGVmaW5lZAorICAgIGNvbnN0IFZhbHVlTnVsbCAgICAgICA9IGNvbnN0ZXhwciBKU1ZhbHVl
OjpWYWx1ZU51bGwKKyAgICBjb25zdCBUYWdOdW1iZXIgICAgICAgPSBjb25zdGV4cHIgSlNWYWx1
ZTo6TnVtYmVyVGFnCisgICAgY29uc3QgTm90Q2VsbE1hc2sgICAgID0gY29uc3RleHByIEpTVmFs
dWU6Ok5vdENlbGxNYXNrCiBlbHNlCiAgICAgY29uc3QgSW50MzJUYWcgPSBjb25zdGV4cHIgSlNW
YWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFuVGFnID0gY29uc3RleHByIEpTVmFsdWU6
OkJvb2xlYW5UYWcKQEAgLTI2NiwyMiArMjY2LDIyIEBAIGlmIEpTVkFMVUU2NAogICAgIGlmIEFS
TTY0IG9yIEFSTTY0RQogICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0gY3NyNgogICAgICAg
ICBjb25zdCBQQiA9IGNzcjcKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjgKLSAg
ICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjkKKyAgICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3Ny
OAorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9IGNzcjkKICAgICBlbHNpZiBYODZfNjQKICAg
ICAgICAgY29uc3QgbWV0YWRhdGFUYWJsZSA9IGNzcjEKICAgICAgICAgY29uc3QgUEIgPSBjc3Iy
Ci0gICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3IzCi0gICAgICAgIGNvbnN0IHRhZ01h
c2sgPSBjc3I0CisgICAgICAgIGNvbnN0IG51bWJlclRhZyA9IGNzcjMKKyAgICAgICAgY29uc3Qg
bm90Q2VsbE1hc2sgPSBjc3I0CiAgICAgZWxzaWYgWDg2XzY0X1dJTgogICAgICAgICBjb25zdCBt
ZXRhZGF0YVRhYmxlID0gY3NyMwogICAgICAgICBjb25zdCBQQiA9IGNzcjQKLSAgICAgICAgY29u
c3QgdGFnVHlwZU51bWJlciA9IGNzcjUKLSAgICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjYKKyAg
ICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3NyNQorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9
IGNzcjYKICAgICBlbHNpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgogICAgICAgICBjb25zdCBQQiA9
IGNzcjAKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjEKLSAgICAgICAgY29uc3Qg
dGFnTWFzayA9IGNzcjIKKyAgICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3NyMQorICAgICAgICBj
b25zdCBub3RDZWxsTWFzayA9IGNzcjIKICAgICAgICAgY29uc3QgbWV0YWRhdGFUYWJsZSA9IGNz
cjMKICAgICBlbmQKIApAQCAtMTIwMCw4ICsxMjAwLDggQEAgbWFjcm8gcHJvbG9ndWUoY29kZUJs
b2NrR2V0dGVyLCBjb2RlQmxvYwogICAgIGxvYWRwIENvZGVCbG9jazo6bV9tZXRhZGF0YVt0MV0s
IG1ldGFkYXRhVGFibGUKIAogICAgIGlmIEpTVkFMVUU2NAotICAgICAgICBtb3ZlIFRhZ1R5cGVO
dW1iZXIsIHRhZ1R5cGVOdW1iZXIKLSAgICAgICAgYWRkcSBUYWdCaXRUeXBlT3RoZXIsIHRhZ1R5
cGVOdW1iZXIsIHRhZ01hc2sKKyAgICAgICAgbW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZworICAg
ICAgICBhZGRxIFRhZ090aGVyLCBudW1iZXJUYWcsIG5vdENlbGxNYXNrCiAgICAgZW5kCiBlbmQK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTYsNyAr
MzE2LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJRCBlbnRyeU9wYwogCiAgICAg
Q0xvb3BSZWdpc3RlciB0MCwgdDEsIHQyLCB0MywgdDUsIHNwLCBjZnIsIGxyLCBwYzsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCB0YWdUeXBlTnVtYmVyLCB0
YWdNYXNrOworICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCBudW1iZXJUYWcsIG5vdENlbGxNYXNr
OwogI2VuZGlmCiAgICAgQ0xvb3BSZWdpc3RlciBtZXRhZGF0YVRhYmxlOwogICAgIENMb29wRG91
YmxlUmVnaXN0ZXIgZDAsIGQxOwpAQCAtMzU2LDggKzM1Niw4IEBAIEpTVmFsdWUgQ0xvb3A6OmV4
ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGMKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgIC8vIEZvciB0
aGUgQVNNIGxsaW50LCBKSVRTdHVicyB0YWtlcyBjYXJlIG9mIHRoaXMgaW5pdGlhbGl6YXRpb24u
IFdlIGRvCiAgICAgLy8gaXQgZXhwbGljaXRseSBoZXJlIGZvciB0aGUgQyBsb29wOgotICAgIHRh
Z1R5cGVOdW1iZXIgPSAweEZGRkYwMDAwMDAwMDAwMDA7Ci0gICAgdGFnTWFzayA9IDB4RkZGRjAw
MDAwMDAwMDAwMjsKKyAgICBudW1iZXJUYWcgPSBKU1ZhbHVlOjpOdW1iZXJUYWc7CisgICAgbm90
Q2VsbE1hc2sgPSBKU1ZhbHVlOjpOb3RDZWxsTWFzazsKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0
KQogCiAgICAgLy8gSW50ZXJwcmV0ZXIgdmFyaWFibGVzIGZvciB2YWx1ZSBwYXNzaW5nIGJldHdl
ZW4gb3Bjb2RlcyBhbmQvb3IgaGVscGVyczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FybTY0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FybTY0LnJiCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBA
QCByZXF1aXJlICJyaXNjIgogIyB4MTYgID0+ICAgICAgICAgICAgICAgICAgKHNjcmF0Y2gpCiAj
IHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMgeDI2ICA9PiAgICAgICAgICAg
ICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3IxICh0YWdUeXBlTnVtYmVyKQot
IyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKHRhZ01hc2spCisjIHgyNyAgPT4gICAgICAgICAg
ICAgY3NyMSAobnVtYmVyVGFnKQorIyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKG5vdENlbGxN
YXNrKQogIyB4MjkgID0+IGNmcgogIyAgc3AgID0+IHNwCiAjICBsciAgPT4gbHIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJiCShyZXZpc2lvbiAyNTAwODUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9jbG9vcC5yYgkod29ya2luZyBj
b3B5KQpAQCAtODgsOSArODgsOSBAQCBjbGFzcyBSZWdpc3RlcklECiAgICAgICAgIHdoZW4gImNz
cjAiCiAgICAgICAgICAgICAicGNCYXNlIgogICAgICAgICB3aGVuICJjc3IxIgotICAgICAgICAg
ICAgInRhZ1R5cGVOdW1iZXIiCisgICAgICAgICAgICAibnVtYmVyVGFnIgogICAgICAgICB3aGVu
ICJjc3IyIgotICAgICAgICAgICAgInRhZ01hc2siCisgICAgICAgICAgICAibm90Q2VsbE1hc2si
CiAgICAgICAgIHdoZW4gImNzcjMiCiAgICAgICAgICAgICAibWV0YWRhdGFUYWJsZSIKICAgICAg
ICAgd2hlbiAiY2ZyIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIHJlcXVpcmUgImNvbmZpZyIK
ICMgcmJ4ID0+ICAgICAgICAgICAgIGNzcjAgKGNhbGxlZS1zYXZlLCBQQiwgdW51c2VkIGluIGJh
c2VsaW5lKQogIyByMTIgPT4gICAgICAgICAgICAgY3NyMSAoY2FsbGVlLXNhdmUpCiAjIHIxMyA9
PiAgICAgICAgICAgICBjc3IyIChjYWxsZWUtc2F2ZSkKLSMgcjE0ID0+ICAgICAgICAgICAgIGNz
cjMgKGNhbGxlZS1zYXZlLCB0YWdUeXBlTnVtYmVyKQotIyByMTUgPT4gICAgICAgICAgICAgY3Ny
NCAoY2FsbGVlLXNhdmUsIHRhZ01hc2spCisjIHIxNCA9PiAgICAgICAgICAgICBjc3IzIChjYWxs
ZWUtc2F2ZSwgbnVtYmVyVGFnKQorIyByMTUgPT4gICAgICAgICAgICAgY3NyNCAoY2FsbGVlLXNh
dmUsIG5vdENlbGxNYXNrKQogIyByc3AgPT4gc3AKICMgcmJwID0+IGNmcgogIyByMTEgPT4gICAg
ICAgICAgICAgICAgICAoc2NyYXRjaCkKQEAgLTc1LDggKzc1LDggQEAgcmVxdWlyZSAiY29uZmln
IgogIyByZGkgPT4gICAgICAgICAgICAgY3NyMiAoY2FsbGVlLXNhdmUpCiAjIHIxMiA9PiAgICAg
ICAgICAgICBjc3IzIChjYWxsZWUtc2F2ZSkKICMgcjEzID0+ICAgICAgICAgICAgIGNzcjQgKGNh
bGxlZS1zYXZlKQotIyByMTQgPT4gICAgICAgICAgICAgY3NyNSAoY2FsbGVlLXNhdmUsIHRhZ1R5
cGVOdW1iZXIpCi0jIHIxNSA9PiAgICAgICAgICAgICBjc3I2IChjYWxsZWUtc2F2ZSwgdGFnTWFz
aykKKyMgcjE0ID0+ICAgICAgICAgICAgIGNzcjUgKGNhbGxlZS1zYXZlLCBudW1iZXJUYWcpCisj
IHIxNSA9PiAgICAgICAgICAgICBjc3I2IChjYWxsZWUtc2F2ZSwgbm90Q2VsbE1hc2spCiAjIHJz
cCA9PiBzcAogIyByYnAgPT4gY2ZyCiAjIHIxMSA9PiAgICAgICAgICAgICAgICAgIChzY3JhdGNo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAkocmV2
aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDkgQEAgcHVibGljOgogICAgICAqICAg
ICBOdWxsOiAgICAgIDB4MDIKICAgICAgKgogICAgICAqIFRoZXNlIHZhbHVlcyBoYXZlIHRoZSBm
b2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAgKiAtIEJpdCAxIChUYWdCaXRUeXBlT3RoZXIpIGlz
IHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCisg
ICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxv
d2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlja2x5IGRpc3Rpbmd1aXNoZWQg
ZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRoZXNlIGludmFsaWQgcG9pbnRl
cnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQgKFRhZ0JpdFVuZGVmaW5lZCkg
VW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0gV2l0aCBiaXQgMyBpcyBtYXNr
ZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVsbCBzaGFyZSB0aGUKICAgICAg
KiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmluZWQgdG8gYmUgcXVpY2tseSBk
ZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFsdWUgd2lsbCBoYXZlIHRoZSBi
aXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNlbnQgYXJyYXkKQEAgLTQyMywz
NyArNDIzLDQwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgdmFsdWUgaXMgMl40OCwgdXNlZCB0
byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQgdmFsdWUgd2lsbCBiZWdpbgog
ICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVybiB3aXRoaW4gdGhlIHJhbmdlIDB4MDAwMS4uMHhG
RkZFLgotICAgICNkZWZpbmUgRG91YmxlRW5jb2RlT2Zmc2V0IDB4MTAwMDAwMDAwMDAwMGxsCisg
ICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgRG91YmxlRW5jb2RlT2Zmc2V0Qml0ID0gNDg7Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERvdWJsZUVuY29kZU9mZnNldCA9IDFsbCA8PCBE
b3VibGVFbmNvZGVPZmZzZXRCaXQ7CiAgICAgLy8gSWYgYWxsIGJpdHMgaW4gdGhlIG1hc2sgYXJl
IHNldCwgdGhpcyBpbmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIsCiAgICAgLy8gaWYgYW55IGJ1
dCBub3QgYWxsIGFyZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVy
LgotICAgICNkZWZpbmUgVGFnVHlwZU51bWJlciAweGZmZmYwMDAwMDAwMDAwMDBsbAorICAgIHN0
YXRpYyBjb25zdGV4cHIgaW50NjRfdCBOdW1iZXJUYWcgPSAweGZmZmYwMDAwMDAwMDAwMDBsbDsK
IAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwgdW5kZWZpbmVkKSBpbW1lZGlh
dGVzIGhhdmUgYml0IDIgc2V0LgotICAgICNkZWZpbmUgVGFnQml0VHlwZU90aGVyIDB4MmxsCi0g
ICAgI2RlZmluZSBUYWdCaXRCb29sICAgICAgMHg0bGwKLSAgICAjZGVmaW5lIFRhZ0JpdFVuZGVm
aW5lZCAweDhsbAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBPdGhlclRhZyAgICAgICA9
IDB4MjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9vbFRhZyAgICAgICAgPSAweDQ7
CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5lZFRhZyAgID0gMHg4OwogICAg
IC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1udW1lcmljIGltbWVkaWF0ZXMuCi0g
ICAgI2RlZmluZSBWYWx1ZUZhbHNlICAgICAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8
IGZhbHNlKQotICAgICNkZWZpbmUgVmFsdWVUcnVlICAgICAgKFRhZ0JpdFR5cGVPdGhlciB8IFRh
Z0JpdEJvb2wgfCB0cnVlKQotICAgICNkZWZpbmUgVmFsdWVVbmRlZmluZWQgKFRhZ0JpdFR5cGVP
dGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkKLSAgICAjZGVmaW5lIFZhbHVlTnVsbCAgICAgIChUYWdC
aXRUeXBlT3RoZXIpCi0KLSAgICAvLyBUYWdNYXNrIGlzIHVzZWQgdG8gY2hlY2sgZm9yIGFsbCB0
eXBlcyBvZiBpbW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVtYmVyIG9yICdvdGhlcicpLgotICAg
ICNkZWZpbmUgVGFnTWFzayAoVGFnVHlwZU51bWJlciB8IFRhZ0JpdFR5cGVPdGhlcikKLQorICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAgICA9IE90aGVyVGFnIHwgQm9v
bFRhZyB8IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZVRydWUgICAg
ICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQz
Ml90IFZhbHVlVW5kZWZpbmVkID0gT3RoZXJUYWcgfCBVbmRlZmluZWRUYWc7CisgICAgc3RhdGlj
IGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlTnVsbCAgICAgID0gT3RoZXJUYWc7CisKKyAgICBzdGF0
aWMgY29uc3RleHByIGludDY0X3QgTWlzY1RhZyA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IFVuZGVm
aW5lZFRhZzsKKworICAgIC8vIE5vdENlbGxNYXNrIGlzIHVzZWQgdG8gY2hlY2sgZm9yIGFsbCB0
eXBlcyBvZiBpbW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVtYmVyIG9yICdvdGhlcicpLgorICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBOb3RDZWxsTWFzayA9IE51bWJlclRhZyB8IE90aGVy
VGFnOworICAgIAogICAgIC8vIFRoZXNlIHNwZWNpYWwgdmFsdWVzIGFyZSBuZXZlciB2aXNpYmxl
IHRvIEphdmFTY3JpcHQgY29kZTsgRW1wdHkgaXMgdXNlZCB0byByZXByZXNlbnQKICAgICAvLyBB
cnJheSBob2xlcywgYW5kIGZvciB1bmluaXRpYWxpemVkIEpTVmFsdWVzLiBEZWxldGVkIGlzIHVz
ZWQgaW4gaGFzaCB0YWJsZSBjb2RlLgogICAgIC8vIFRoZXNlIHZhbHVlcyB3b3VsZCBtYXAgdG8g
Y2VsbCB0eXBlcyBpbiB0aGUgSlNWYWx1ZSBlbmNvZGluZywgYnV0IG5vdCB2YWxpZCBHQyBjZWxs
CiAgICAgLy8gcG9pbnRlciBzaG91bGQgaGF2ZSBlaXRoZXIgb2YgdGhlc2UgdmFsdWVzIChFbXB0
eSBpcyBudWxsLCBkZWxldGVkIGlzIGF0IGFuIGludmFsaWQKICAgICAvLyBhbGlnbm1lbnQgZm9y
IGEgR0MgY2VsbCwgYW5kIGluIHRoZSB6ZXJvIHBhZ2UpLgotICAgICNkZWZpbmUgVmFsdWVFbXB0
eSAgIDB4MGxsCi0gICAgI2RlZmluZSBWYWx1ZURlbGV0ZWQgMHg0bGwKKyAgICBzdGF0aWMgY29u
c3RleHByIGludDMyX3QgVmFsdWVFbXB0eSAgID0gMHgwOworICAgIHN0YXRpYyBjb25zdGV4cHIg
aW50MzJfdCBWYWx1ZURlbGV0ZWQgPSAweDQ7CiAKLSAgICAjZGVmaW5lIFRhZ0JpdHNXYXNtIChU
YWdCaXRUeXBlT3RoZXIgfCAweDEpCi0gICAgI2RlZmluZSBUYWdXYXNtTWFzayAoVGFnVHlwZU51
bWJlciB8IDB4NykKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgV2FzbVRhZyA9IE90aGVy
VGFnIHwgMHgxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBXYXNtTWFzayA9IE51bWJl
clRhZyB8IDB4NzsKICAgICAvLyBXZSB0YWcgV2FzbSBub24tSlNDZWxsIHBvaW50ZXJzIHdpdGgg
YSAzIGF0IHRoZSBib3R0b20uIFdlIGNhbiB0ZXN0IGlmIGEgNjQtYml0IEpTVmFsdWUgcGF0dGVy
bgogICAgIC8vIGlzIGEgV2FzbSBjYWxsZWUgYnkgbWFza2luZyB0aGUgdXBwZXIgMTYgYml0cyBh
bmQgdGhlIGxvd2VyIDMgYml0cywgYW5kIHNlZWluZyBpZgotICAgIC8vIHRoZSByZXN1bHRpbmcg
dmFsdWUgaXMgMy4gVGhlIGZ1bGwgdGVzdCBpczogeCAmIFRhZ1dhc21NYXNrID09IFRhZ0JpdHNX
YXNtCisgICAgLy8gdGhlIHJlc3VsdGluZyB2YWx1ZSBpcyAzLiBUaGUgZnVsbCB0ZXN0IGlzOiB4
ICYgV2FzbU1hc2sgPT0gV2FzbVRhZwogICAgIC8vIFRoaXMgd29ya3MgYmVjYXVzZSB0aGUgbG93
ZXIgMyBiaXRzIG9mIHRoZSBub24tbnVtYmVyIGltbWVkaWF0ZSB2YWx1ZXMgYXJlIGFzIGZvbGxv
d3M6CiAgICAgLy8gdW5kZWZpbmVkOiAwYjAxMAogICAgIC8vIG51bGw6ICAgICAgMGIwMTAKQEAg
LTQ2NSw5ICs0NjgsOSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlaXIgbG93ZXIgMyBiaXRzLiBOb3Rl
LCB0aGlzIGJpdCBwYXR0ZXJuIGFsc28gYWxsb3dzIHRoZSBub3JtYWwgSlNWYWx1ZSBpc0NlbGwo
KSwgZXRjLAogICAgIC8vIHByZWRpY2F0ZXMgdG8gd29yayBvbiBhIFdhc206OkNhbGxlZSBiZWNh
dXNlIHRoZSB2YXJpb3VzIHRlc3RzIHdpbGwgZmFpbCBpZiB5b3UKICAgICAvLyBiaXQgY2FzdGVk
IGEgYm94ZWQgV2FzbTo6Q2FsbGVlKiB0byBhIEpTVmFsdWUuIGlzQ2VsbCgpIHdvdWxkIGZhaWwg
c2luY2UgaXQgc2VlcwotICAgIC8vIFRhZ0JpdFR5cGVPdGhlci4gVGhlIG90aGVyIHRlc3RzIGFs
c28gdHJpdmlhbGx5IGZhaWwsIHNpbmNlIGl0IHdvbid0IGJlIGEgbnVtYmVyLAorICAgIC8vIE90
aGVyVGFnLiBUaGUgb3RoZXIgdGVzdHMgYWxzbyB0cml2aWFsbHkgZmFpbCwgc2luY2UgaXQgd29u
J3QgYmUgYSBudW1iZXIsCiAgICAgLy8gYW5kIGl0IHdvbid0IGJlIGVxdWFsIHRvIG51bGwsIHVu
ZGVmaW5lZCwgdHJ1ZSwgb3IgZmFsc2UuIFRoZSBpc0Jvb2xlYW4oKSBwcmVkaWNhdGUKLSAgICAv
LyB3aWxsIGZhaWwgYmVjYXVzZSB3ZSB3b24ndCBoYXZlIFRhZ0JpdEJvb2wgc2V0LgorICAgIC8v
IHdpbGwgZmFpbCBiZWNhdXNlIHdlIHdvbid0IGhhdmUgQm9vbFRhZyBzZXQuCiAjZW5kaWYKIAog
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDY3LDcg
KzQ2Nyw3IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFsc2VUYWcpCiBpbmxpbmUgYm9v
bCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0CiB7CiAgICAgLy8gVW5kZWZpbmVk
IGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhlICd1bmRlZmluZWQnIGJpdCBp
biB0aGUgZXh0ZW5kZWQgdGFnLgotICAgIHJldHVybiAodS5hc0ludDY0ICYgflRhZ0JpdFVuZGVm
aW5lZCkgPT0gVmFsdWVOdWxsOworICAgIHJldHVybiAodS5hc0ludDY0ICYgflVuZGVmaW5lZFRh
ZykgPT0gVmFsdWVOdWxsOwogfQogCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc0Jvb2xlYW4oKSBj
b25zdApAQCAtNDc3LDEyICs0NzcsMTIgQEAgaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNCb29sZWFu
KCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxsKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gISh1LmFzSW50NjQgJiBUYWdNYXNrKTsKKyAgICByZXR1cm4gISh1LmFzSW50NjQgJiBO
b3RDZWxsTWFzayk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzSW50MzIoKSBjb25zdAog
ewotICAgIHJldHVybiAodS5hc0ludDY0ICYgVGFnVHlwZU51bWJlcikgPT0gVGFnVHlwZU51bWJl
cjsKKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIE51bWJlclRhZykgPT0gTnVtYmVyVGFnOwogfQog
CiBpbmxpbmUgaW50NjRfdCByZWludGVycHJldERvdWJsZVRvSW50NjQoZG91YmxlIHZhbHVlKQpA
QCAtNDk3LDIzICs0OTcsMjMgQEAgaW5saW5lIGRvdWJsZSByZWludGVycHJldEludDY0VG9Eb3Vi
bGUoaQogQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29kZUFzRG91YmxlVGFnLCBk
b3VibGUgZCkKIHsKICAgICBBU1NFUlQoIWlzSW1wdXJlTmFOKGQpKTsKLSAgICB1LmFzSW50NjQg
PSByZWludGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBEb3VibGVFbmNvZGVPZmZzZXQ7CisgICAg
dS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGQpICsgSlNWYWx1ZTo6RG91Ymxl
RW5jb2RlT2Zmc2V0OwogfQogCiBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShpbnQgaSkKIHsKLSAg
ICB1LmFzSW50NjQgPSBUYWdUeXBlTnVtYmVyIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpOwor
ICAgIHUuYXNJbnQ2NCA9IEpTVmFsdWU6Ok51bWJlclRhZyB8IHN0YXRpY19jYXN0PHVpbnQzMl90
PihpKTsKIH0KIAogaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0RvdWJsZSgpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzRG91YmxlKCkpOwotICAgIHJldHVybiByZWludGVycHJldEludDY0VG9Eb3Vi
bGUodS5hc0ludDY0IC0gRG91YmxlRW5jb2RlT2Zmc2V0KTsKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRJbnQ2NFRvRG91YmxlKHUuYXNJbnQ2NCAtIEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldCk7
CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gdS5hc0ludDY0ICYgVGFnVHlwZU51bWJlcjsKKyAgICByZXR1cm4gdS5hc0ludDY0ICYgSlNW
YWx1ZTo6TnVtYmVyVGFnOwogfQogCiBBTFdBWVNfSU5MSU5FIEpTQ2VsbCogSlNWYWx1ZTo6YXND
ZWxsKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pT
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XYXNtVG9K
Uy5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dhc21Ub0pTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDkgKzQyMCwxMiBAQCBFeHBlY3Rl
ZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAgICAgIGJvb2wgaGFzTWF0ZXJp
YWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0ID0gZmFsc2U7CiAgICAgICAgIGF1dG8gbWF0ZXJpYWxp
emVEb3VibGVFbmNvZGVPZmZzZXQgPSBbJmhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNl
dCwgJmppdF0gKEdQUlJlZyBkZXN0KSB7CiAgICAgICAgICAgICBpZiAoIWhhc01hdGVyaWFsaXpl
ZERvdWJsZUVuY29kZU9mZnNldCkgewotICAgICAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRG91
YmxlRW5jb2RlT2Zmc2V0ID09IDFsbCA8PCA0OCwgImNvZGVnZW4gYXNzdW1lcyB0aGlzIGJlbG93
Iik7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgICAgIGppdC5tb3ZlKEpJVDo6VHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldCksIGRlc3QpOworI2Vsc2UKICAgICAg
ICAgICAgICAgICBqaXQubW92ZShKSVQ6OlRydXN0ZWRJbW0zMigxKSwgZGVzdCk7Ci0gICAgICAg
ICAgICAgICAgaml0LmxzaGlmdDY0KEpJVDo6VHJ1c3RlZEltbTMyKDQ4KSwgZGVzdCk7CisgICAg
ICAgICAgICAgICAgaml0LmxzaGlmdDY0KEpJVDo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkRvdWJs
ZUVuY29kZU9mZnNldEJpdCksIGRlc3QpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgaGFzTWF0
ZXJpYWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfTsKQEAgLTUwMSw3ICs1MDQsNyBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8
V2FzbUVudHJ5CiAKICAgICBqaXQuc3RvcmU2NChpbXBvcnRKU0NlbGxHUFJSZWcsIGNhbGxlZUZy
YW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIGppdC5zdG9yZTMyKEpJVDo6VHJ1c3RlZEltbTMyKG51
bWJlck9mUGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6
YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkgKyBQYXls
b2FkT2Zmc2V0KSk7Ci0gICAgaml0LnN0b3JlNjQoSklUOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRl
ZmluZWQpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVu
dCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpKTsKKyAgICBqaXQuc3RvcmU2
NChKSVQ6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZCksIGNhbGxlZUZyYW1l
LndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICogc3RhdGljX2Nhc3Q8aW50
PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgLy8gRklYTUUgVGFpbCBjYWxsIGlmIHRoZSB3
YXNtIHJldHVybiB0eXBlIGlzIHZvaWQgYW5kIG5vIHJlZ2lzdGVycyB3ZXJlIHNwaWxsZWQuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU0ODgKIApAQCAtNTc4LDcg
KzU4MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNtRW50cnkKICAgICAg
ICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKICAgICAgICAgaXNEb3VibGUubGluaygmaml0
KTsKLSAgICAgICAgaml0Lm1vdmUoSklUOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMik7CisgICAgICAgIGppdC5tb3ZlKEpJVDo6VHJ1c3RlZElt
bTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAg
ICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJldHVyblZh
bHVlR1BSKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKEdQUkluZm86OnJldHVyblZhbHVl
R1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAgICAgICAgIGppdC5jb252ZXJ0RG91Ymxl
VG9GbG9hdChGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUiwgRlBSSW5mbzo6cmV0dXJuVmFsdWVGUFIp
OwpAQCAtNjEzLDcgKzYxNiw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJlZjxXYXNt
RW50cnkKICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKICAgICAgICAgaXNEb3Vi
bGUubGluaygmaml0KTsKLSAgICAgICAgaml0Lm1vdmUoSklUOjpUcnVzdGVkSW1tNjQoVGFnVHlw
ZU51bWJlciksIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CisgICAgICAgIGppdC5tb3ZlKEpJ
VDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86OnJldHVyblZhbHVl
R1BSMik7CiAgICAgICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIsIEdQUklu
Zm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKEdQUkluZm86
OnJldHVyblZhbHVlR1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAgICAgICAgIGRvbmUu
YXBwZW5kKGppdC5qdW1wKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpT
RW50cnlQdHJUYWc+IFdlYgogICAgICAgICAgICAgICAgICAgICAgICAgaml0LmNvbnZlcnREb3Vi
bGVUb0Zsb2F0KHNjcmF0Y2hGUFIsIHNjcmF0Y2hGUFIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LnN0b3JlRmxvYXQoc2NyYXRjaEZQUiwgY2FsbGVlRnJhbWUud2l0aE9mZnNldCh3YXNt
T2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBqaXQuYWRkNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBzY3JhdGNo
R1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGppdC5hZGQ2NChHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlciwgc2NyYXRjaEdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BSLCBjYWxsZWVGcmFtZS53aXRo
T2Zmc2V0KHdhc21PZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379107</attachid>
            <date>2019-09-18 23:29:13 -0700</date>
            <delta_ts>2019-09-18 23:29:13 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-201966.patch</filename>
            <type>text/plain</type>
            <size>160106</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1MCBA
QAorMjAxOS0wOS0xOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBKU1ZhbHVlICNkZWZpbmVzIHdpdGggc3RhdGljIGNvbnN0ZXhwciB2YWx1ZXMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE5NjYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgaXMgdGhlIG1vZGVybiBDKysgd2F5IHRvIGRlZmluZSB0aGVzZSBjb25zdGFudHMuCisK
KyAgICAgICAgU29tZSBvZiB0aGUgdmFsdWVzIGFyZSB0eXBlZCBpbnQ2NF90IGFuZCBzb21lIGFy
ZSBpbnQzMl90LiAgVGhlIG9yaWdpbmFsICNkZWZpbmUKKyAgICAgICAgdmFsdWVzIGFyZSBpbnQ2
NF90LiAgSGVuY2UsIHdlIGFkb3B0IGludDY0X3QgYXMgdGhlIGRlZmF1bHQgdHlwZSB0byB1c2Ug
aGVyZS4KKworICAgICAgICBIb3dldmVyLCBzb21lIG9mIHRoZXNlIGNvbnN0YW50cyBhcmUgYmVp
bmcgdXNlZCBhcyAzMi1iaXQgdmFsdWVzLCBhbmQgdGhlIGNvZGUKKyAgICAgICAgd2FzIHN0YXRp
Y19jYXN0J2luZyB0aGVtIGludG8gaW50MzJfdC4gIFRoaXMgc2V0IG9mIGNvbnN0YW50cyBhcmUg
YWxsIHRoZSBzbWFsbAorICAgICAgICB2YWx1ZXMgdGhhdCBmaXQgaW4gYW4gaW50MzJfdCBhbnl3
YXkuICBTbywgd2UncmUgcHV0dGluZyB0aGVzZSBpbiBpbnQzMl90IGluc3RlYWQKKyAgICAgICAg
c28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGtlZXAgY2FzdGluZyB0aGVtLiAgSW4gdGhlIGZldyBw
bGFjZXMgd2hlcmUgdGhleSBhcmUKKyAgICAgICAgdXNlZCBhcyBpbnQ2NF90LCB0aGV5IHdpbGwg
YXV0b21hdGljYWxseSBnZXQgdXAtY2FzdGVkIGFueXdheS4KKworICAgICAgICBJbiB0aGlzIHBh
dGNoLCB3ZSBhbHNvIGRpZCB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIDEuIFJlbmFtZWQgVGFn
TWFzayB0byBOb3RDZWxsTWFzaywgYmVjYXVzZSBldmVyeXdoZXJlIGluIHRoZSBjb2RlLCB3ZSdy
ZQorICAgICAgICAgICBiYXNpY2FsbHkgdXNpbmcgaXQgdG8gZmlsdGVyIG91dCBjZWxscyBsaWtl
IHRoaXM6CisKKyAgICAgICAgICAgICAgaWYgKHZhbHVlICYgTm90Q2VsbE1hc2spIHRoZW4gZ290
byBoYW5kbGVOb3RDZWxsQ2FzZTsKKworICAgICAgICAyLiBSZW5hbWVkIFRhZ1R5cGVOdW1iZXIg
dG8gTnVtYmVyVGFnIGZvciBhIHNob3J0ZXIgbmFtZS4KKworICAgICAgICAgICBEaXR0byBmb3Ig
VGFnQml0VHlwZU90aGVyLCBUYWdCaXRCb29sLCBUYWdCaXRVbmRlZmluZWQsIFRhZ0JpdHNXYXNt
LCBhbmQgVGFnV2FzbU1hc2suCisgICAgICAgICAgIFRoZXkgYXJlIG5vdyBPdGhlclRhZywgQm9v
bFRhZywgVW5kZWZpbmVkVGFnLCBXYXNtVGFnLCBhbmQgV2FzbU1hc2suCisKKyAgICAgICAgMy4g
SW50cm9kdWNlZCBEb3VibGVFbmNvZGVPZmZzZXRCaXQgc28gdGhhdCBjbGllbnQgY29kZSBkbyBu
b3QgZW1iZWQgdGhpcyB2YWx1ZQorICAgICAgICAgICBhcyBhIGxpdGVyYWwgY29uc3RhbnQuICBX
ZSBub3cgZGVmaW5lIERvdWJsZUVuY29kZU9mZnNldCBiYXNlZCBvbgorICAgICAgICAgICBEb3Vi
bGVFbmNvZGVPZmZzZXRCaXQgZW5zdXJpbmcgY29uc2lzdGVuY3kuCisKKyAgICAgICAgNC4gSW50
cm9kdWNlZCBNaXNjVGFnIHNvIHRoYXQgY2xpZW50cyBkb24ndCBoYXZlIHRvIHB1dCB0aGlzIHNl
dCBvZiB0YWdzIHRvZ2V0aGVyCisgICAgICAgICAgIHRoZW1zZWx2ZXMuCisKKyAgICAgICAgNS4g
UmVtb3ZlZCBzdGF0aWMgYXNzZXJ0cyBmb3IgdGFncyBpbiBMTEludERhdGEuY3BwIGJlY2F1c2Ug
dGhlIG9mZmxpbmVhc20gbm93CisgICAgICAgICAgIGNhcHR1cmVzIHRoZXNlIHZhbHVlcyBjb3Jy
ZWN0bHkgd2l0aCBjb25zdGV4cHIgc3RhdGVtZW50cy4gIFRoZXNlIHN0YXRpYworICAgICAgICAg
ICBhc3NlcnRzIHdlcmUgaG9sZG92ZXJzIGZyb20gdGhlIG9sZCBkYXlzIGJhY2sgd2hlbiB3ZSBo
YWQgdG8gZGVmaW5lIExMSW50CisgICAgICAgICAgIGNvbnN0YW50IHZhbHVlcyBtYW51YWxseSwg
YW5kIHdlIG5lZWRlZCBhIG1lY2hhbmlzbSB0byBkZXRlY3Qgd2hlbiB0aGUgdmFsdWVzCisgICAg
ICAgICAgIGhhdmUgY2hhbmdlZCBpbiB0aGUgc291cmNlLgorCisgICAgICAgIDYuIFJlcGxhY2Vk
IHNvbWUgcnVudGltZSBhc3NlcnRzIGluIFJlZ2lzdGVyU2V0LmNwcCB3aXRoIHN0YXRpY19hc3Nl
cnRzLgorCisgICAgICAgIDcuIEluIFdhc206Ondhc21Ub0pTKCksIHdlIHdlcmUgY29uc3RydWN0
aW5nIHRoZSB2YWx1ZSBvZiBKU1ZhbHVlOjpEb3VibGVFbmNvZGVPZmZzZXQKKyAgICAgICAgICAg
Y29uc3RhbnQgYnkgbGVmdCBzaGlmdGluZyAxIGJ5IEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNl
dEJpdC4gIFRoZXJlJ3Mgbm8gbmVlZAorICAgICAgICAgICB0byBkbyB0aGlzIGZvciBBUk02NCBi
ZWNhdXNlIHRoZSBjb25zdGFudCBjYW4gYmUgbG9hZGVkIGVmZmljaWVudGx5IHdpdGggYSBzaW5n
bGUKKyAgICAgICAgICAgTU9WWiBpbnN0cnVjdGlvbi4gIFNvLCB3ZSBhZGQgYSBDUFUoQVJNNjQp
IGNhc2UgdG8ganVzdCBtb3ZlIHRoZSBjb25zdGFudCBpbnRvCisgICAgICAgICAgIHRoZSB0YXJn
ZXQgcmVnaXN0ZXIuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJvcnRSZWFzb24uaDoKKyAgICAg
ICAgKiBieXRlY29kZS9BY2Nlc3NDYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6QWNjZXNzQ2FzZTo6
Z2VuZXJhdGVXaXRoR3VhcmQpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpPU1JFeGl0OjpleGVjdXRlT1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRG
Rzo6T1NSRXhpdDo6Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVJlcCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmdldEludFR5cGVkQXJyYXlTdG9yZU9w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVNaXNj
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZH
OjpTcGVjdWxhdGl2ZUpJVDo6c3BpbGwpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbEpTVmFsdWUp
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBl
ZXBob2xlQ29tcGFyZU51bGxPclVuZGVmaW5lZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsT3JVbmRlZmluZWQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFN0cmljdEVxdWFsaXR5KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZWN0
T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW50NTJDb21wYXJlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5j
aCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6bW92ZVRydWVUbyk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6Om1vdmVGYWxzZVRvKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2
ZUpJVDo6Ymxlc3NCb29sZWFuKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93ZXIpOgorICAgICAgICAo
SlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlRG91YmxlUmVwKToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUJvb2xlYW5Ub051bWJlcik6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVVbmFyeU1hdGhJQyk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVCaW5hcnlNYXRo
SUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeVZh
bCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVBcnJheUlu
ZGV4T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
QXJndW1lbnQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Q2FsbE9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6
Y29tcGlsZURpcmVjdENhbGxPckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVUYWlsQ2FsbCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVDYWxsT3JDb25zdHJ1Y3RWYXJhcmdzU3ByZWFkKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNhbGxPckNvbnN0cnVjdFZh
cmFyZ3MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2Fs
bEV2YWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlSW5C
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUluc3Rh
bmNlT2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0
RW51bWVyYXRvclN0cnVjdHVyZVBuYW1lKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUdldEVudW1lcmF0b3JHZW5lcmljUG5hbWUpOgorICAgICAgICAoSlND
OjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpnZXRCeUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZFdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUNoZWNrU3ViQ2xhc3MpOgorICAgICAgICAoSlNDOjpG
VEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQ2FsbERPTUdldHRlcik6CisgICAgICAgIChK
U0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRCaW5hcnlTbmlwcGV0KToKKyAgICAgICAg
KEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6ZW1pdEJpbmFyeUJpdE9wU25pcHBldCk6Cisg
ICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVtaXRSaWdodFNoaWZ0U25pcHBl
dCk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmVxdWFsTnVsbE9yVW5k
ZWZpbmVkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6YnVpbGRUeXBl
T2YpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc0ludDMyKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RJbnQzMik6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmJveEludDMyKToKKyAgICAgICAgKEpTQzo6
RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RDZWxsT3JNaXNjKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6dW5ib3hEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRG
Rzo6TG93ZXJERkdUb0IzOjpib3hEb3VibGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjppc05vdENlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjppc0NlbGwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05v
dE1pc2MpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjppc05vdEJvb2xl
YW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpib3hCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6aXNOb3RPdGhlcik6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmlzT3RoZXIpOgorICAgICAgICAqIGZ0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OnJlYm94QWNjb3Jk
aW5nVG9Gb3JtYXQpOgorICAgICAgICAoSlNDOjpGVEw6OmNvbXBpbGVTdHViKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsZWVCaXRzLmg6CisgICAgICAgIChKU0M6OkNhbGxlZUJpdHM6OmJv
eFdhc20pOgorICAgICAgICAoSlNDOjpDYWxsZWVCaXRzOjppc1dhc20gY29uc3QpOgorICAgICAg
ICAoSlNDOjpDYWxsZWVCaXRzOjphc1dhc21DYWxsZWUgY29uc3QpOgorICAgICAgICAqIGppdC9B
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmppdEFz
c2VydElzSlNJbnQzMik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0
SXNKU051bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNK
U0RvdWJsZSk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpqaXRBc3NlcnRUYWdzSW5QbGFjZSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVh
bik6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoSlNDOjpBc3Nl
bWJseUhlbHBlcnM6OmVtaXRTYXZlVGhlbk1hdGVyaWFsaXplVGFnUmVnaXN0ZXJzKToKKyAgICAg
ICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZVNhdmVkVGFnUmVnaXN0ZXJzKToK
KyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjplbWl0TWF0ZXJpYWxpemVUYWdDaGVja1Jl
Z2lzdGVycyk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RDZWxs
KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkNlbGwpOgorICAgICAg
ICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmT3RoZXIpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90T3RoZXIpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJyYW5jaElmSW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6
OmJyYW5jaElmTm90SW50MzIpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5j
aElmTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZk5vdE51
bWJlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3REb3VibGVL
bm93bk5vdEludDMyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZkJv
b2xlYW4pOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmTm90Qm9vbGVh
bik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6Ym94RG91YmxlKToKKyAgICAgICAg
KEpTQzo6QXNzZW1ibHlIZWxwZXJzOjp1bmJveERvdWJsZVdpdGhvdXRBc3NlcnRpb25zKToKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpib3hJbnQ1Mik6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6Ym94Qm9vbGVhblBheWxvYWQpOgorICAgICAgICAoSlNDOjpBc3NlbWJs
eUhlbHBlcnM6OmJveEludDMyKToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEu
aDoKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsRnJhbWVTaHVmZmxlcjo6Q2FsbEZyYW1lU2h1ZmZsZXIpOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWVTaHVmZmxlcjo6ZHVtcCBjb25zdCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZm
bGVyOjpwcmVwYXJlQW55KToKKyAgICAgICAgKiBqaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaDoKKyAg
ICAgICAgKEpTQzo6Q2FsbEZyYW1lU2h1ZmZsZXI6OmdldEZyZWVSZWdpc3RlciBjb25zdCk6Cisg
ICAgICAgICogaml0L0NhbGxGcmFtZVNodWZmbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
RnJhbWVTaHVmZmxlcjo6ZW1pdEJveCk6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZVNodWZmbGVy
Ojp0cnlBY3F1aXJlTnVtYmVyVGFnUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpDYWxsRnJhbWVT
aHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAqIGpp
dC9HUFJJbmZvLmg6CisgICAgICAgIChKU0M6OkdQUkluZm86OnJlc2VydmVkUmVnaXN0ZXJzKToK
KyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9jb21wYXJlQW5kSnVtcFNsb3cpOgorICAgICAgICAqIGppdC9KSVRCaXRBbmRHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKSVRCaXRBbmRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAqIGppdC9KSVRCaXRPckdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkpJ
VEJpdE9yR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQml0
WG9yR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SklUQml0WG9yR2VuZXJhdG9yOjpnZW5l
cmF0ZUZhc3RQYXRoKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6Y29tcGlsZVRhaWxDYWxsKToKKyAgICAgICAgKiBqaXQvSklURGl2R2VuZXJhdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SklURGl2R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvSklUSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQYXRjaGFi
bGVKdW1wSWZOb3RJbnQpOgorICAgICAgICAqIGppdC9KSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpKSVRMZWZ0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgp
OgorICAgICAgICAqIGppdC9KSVRNdWxHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKSVRN
dWxHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX292ZXJyaWRlc19oYXNfaW5zdGFuY2Up
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfbnVt
YmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX2NlbGxfd2l0aF90eXBlKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX29iamVjdCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9ub3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamVxX251bGwpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfam5lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjpl
bWl0X29wX2p1bmRlZmluZWRfb3JfbnVsbCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9q
bnVuZGVmaW5lZF9vcl9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxX251bGwp
OgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbmVxX251bGwpOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdlbmVyaWNDb250
aWd1b3VzUHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQ
dXRCeVZhbCk6CisgICAgICAgICogaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXRoKToKKyAg
ICAgICAgKiBqaXQvUmVnaXN0ZXJTZXQuY3BwOgorICAgICAgICAoSlNDOjpSZWdpc3RlclNldDo6
cnVudGltZVRhZ1JlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpsbGludEJh
c2VsaW5lQ2FsbGVlU2F2ZVJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0Ojpk
ZmdDYWxsZWVTYXZlUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OmZ0bENh
bGxlZVNhdmVSZWdpc3RlcnMpOgorICAgICAgICAqIGppdC9TcGVjaWFsaXplZFRodW5rSklULmg6
CisgICAgICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnJldHVybkRvdWJsZSk6CisgICAg
ICAgIChKU0M6OlNwZWNpYWxpemVkVGh1bmtKSVQ6OnRhZ1JldHVybkFzSW50MzIpOgorICAgICAg
ICAqIGppdC9UaHVua0dlbmVyYXRvcnMuY3BwOgorICAgICAgICAoSlNDOjp2aXJ0dWFsVGh1bmtG
b3IpOgorICAgICAgICAoSlNDOjpuYXRpdmVGb3JHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjph
cml0eUZpeHVwR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6YWJzVGh1bmtHZW5lcmF0b3IpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpwZXJmb3JtQXNzZXJ0aW9ucyk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkNMb29wOjpleGVjdXRlKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtOgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtNjQucmI6CisgICAgICAgICogb2Zm
bGluZWFzbS9jbG9vcC5yYjoKKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjoKKyAgICAgICAg
KiBydW50aW1lL0pTQ0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmlzVW5kZWZpbmVkT3JOdWxsIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6aXNDZWxsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6aXNJbnQzMiBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OkpTVmFsdWUpOgor
ICAgICAgICAoSlNDOjpKU1ZhbHVlOjphc0RvdWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmlzTnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiB3YXNtL2pzL1dhc21Ub0pTLmNwcDoK
KyAgICAgICAgKEpTQzo6V2FzbTo6d2FzbVRvSlMpOgorICAgICAgICAqIHdhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OldlYkFzc2VtYmx5RnVuY3Rpb246Ompz
Q2FsbEVudHJ5cG9pbnRTbG93KToKKwogMjAxOS0wOS0xOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRp
QGFwcGxlLmNvbT4KIAogICAgICAgICBUT0NUT1UgYnVnIGluIGhhdmluZ0FCYWRUaW1lIHJlbGF0
ZWQgYXNzZXJ0aW9uIGluIERGR1NwZWN1bGF0aXZlSklUCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9BYm9ydFJlYXNvbi5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fib3J0UmVhc29uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDggKzQzLDggQEAgZW51bSBBYm9ydFJlYXNvbiB7CiAgICAgQUhJc05vdE51bGwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICA5MCwKICAgICBBSFN0YWNr
UG9pbnRlck1pc2FsaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgID0gMTAwLAogICAgIEFI
U3RydWN0dXJlSURJc1ZhbGlkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxMTAsCi0g
ICAgQUhUYWdNYXNrTm90SW5QbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDEy
MCwKLSAgICBBSFRhZ1R5cGVOdW1iZXJOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAgICAg
ID0gMTMwLAorICAgIEFITm90Q2VsbE1hc2tOb3RJblBsYWNlICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAxMjAsCisgICAgQUhOdW1iZXJUYWdOb3RJblBsYWNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDEzMCwKICAgICBBSFR5cGVJbmZvSW5saW5lVHlwZUZsYWdzQXJlVmFsaWQg
ICAgICAgICAgICAgICAgID0gMTQwLAogICAgIEFIVHlwZUluZm9Jc1ZhbGlkICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSAxNTAsCiAgICAgQjNPb3BzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDE1NSwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQWNjZXNzQ2FzZS5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BY2Nlc3NDYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE3LDcgKzQxNyw3IEBAIHZvaWQgQWNjZXNzQ2FzZTo6Z2VuZXJhdGVXaXRoR3VhcmQo
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXMgdGhlIHByb3BlcnR5LgogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3du
UG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBlcnM6Ok5vdEVx
dWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChWYWx1ZU51
bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQoaml0LmJy
YW5jaDY0KENDYWxsSGVscGVyczo6Tm90RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxsSGVs
cGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICNlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VG
b3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSAr
IFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Ok5v
blplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKQEAgLTQzMiw3ICs0MzIsNyBAQCB2b2lkIEFjY2Vz
c0Nhc2U6OmdlbmVyYXRlV2l0aEd1YXJkKAogICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoc3RydWN0dXJlLT5pc09iamVjdCgpKTsgLy8gUHJpbWl0aXZlcyBtdXN0IGhhdmUg
YSBzdG9yZWQgcHJvdG90eXBlLiBXZSB1c2UgcHJvdG90eXBlRm9yTG9va3VwIGZvciB0aGVtLgog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDY0KE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9C
YXNlKGtub3duUG9seVByb3RvT2Zmc2V0KSksIGJhc2VGb3JBY2Nlc3NHUFIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZmFsbFRocm91Z2guYXBwZW5kKGppdC5icmFuY2g2NChDQ2FsbEhlbHBl
cnM6OkVxdWFsLCBiYXNlRm9yQWNjZXNzR1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW02NChW
YWx1ZU51bGwpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmYWxsVGhyb3VnaC5hcHBlbmQo
aml0LmJyYW5jaDY0KENDYWxsSGVscGVyczo6RXF1YWwsIGJhc2VGb3JBY2Nlc3NHUFIsIENDYWxs
SGVscGVyczo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICNlbHNlCiAgICAg
ICAgICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VGb3JBY2Nlc3NHUFIsIG9mZnNldFJlbGF0aXZlVG9CYXNlKGtub3duUG9seVByb3RvT2Zmc2V0
KSArIFBheWxvYWRPZmZzZXQpLCBiYXNlRm9yQWNjZXNzR1BSKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbGxUaHJvdWdoLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6
Olplcm8sIGJhc2VGb3JBY2Nlc3NHUFIpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcxLDcgKzQ3MSw3IEBA
IHZvaWQgT1NSRXhpdDo6ZXhlY3V0ZU9TUkV4aXQoQ29udGV4dCYgY28KICAgICAgICAgICAgICAg
ICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1Lmdwcjx1aW50MzJfdD4ocmVjb3Zlcnkt
PmRlc3QoKSkgLSBjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+c3JjKCkpOwogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVz
dCgpKSA+PiAzMikpOwotICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkg
fD0gVGFnVHlwZU51bWJlcjsKKyAgICAgICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0
KCkpIHw9IEpTVmFsdWU6Ok51bWJlclRhZzsKICNlbmRpZgogICAgICAgICAgICAgICAgIGJyZWFr
OwogCkBAIC00NzksNyArNDc5LDcgQEAgdm9pZCBPU1JFeGl0OjpleGVjdXRlT1NSRXhpdChDb250
ZXh0JiBjbwogICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oY3B1LmdwcjxpbnQzMl90PihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAx
KSBeIDB4ODAwMDAwMDBVOwogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKCEoY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA+PiAzMikpOwotICAgICAgICAgICAgICAg
IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gVGFnVHlwZU51bWJlcjsKKyAgICAgICAgICAg
ICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpIHw9IEpTVmFsdWU6Ok51bWJlclRhZzsKICNl
bmRpZgogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC00ODcsMTMgKzQ4NywxMyBAQCB2b2lk
IE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgICAgICAgICAgICAgY3B1
LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSA9IChjcHUuZ3ByPHVpbnQzMl90PihyZWNvdmVyeS0+ZGVz
dCgpKSAtIHJlY292ZXJ5LT5pbW1lZGlhdGUoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgICAgICBBU1NFUlQoIShjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID4+IDMyKSk7Ci0g
ICAgICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+ZGVzdCgpKSB8PSBUYWdUeXBlTnVtYmVy
OworICAgICAgICAgICAgICAgIGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgfD0gSlNWYWx1ZTo6
TnVtYmVyVGFnOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAg
IGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAg
ICAgICAgICAgICBjcHUuZ3ByKHJlY292ZXJ5LT5kZXN0KCkpID0gY3B1LmdwcihyZWNvdmVyeS0+
ZGVzdCgpKSBeIFZhbHVlRmFsc2U7CisgICAgICAgICAgICAgICAgY3B1LmdwcihyZWNvdmVyeS0+
ZGVzdCgpKSA9IGNwdS5ncHIocmVjb3ZlcnktPmRlc3QoKSkgXiBKU1ZhbHVlOjpWYWx1ZUZhbHNl
OwogI2VuZGlmCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTU0Niw4ICs1NDYsOCBAQCB2
b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgQVNTRVJUKCEoY29u
dGV4dC5mcDx1aW50cHRyX3Q+KCkgJiAweDcpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
QVNTRVJUKGNwdS5ncHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSA9PSBUYWdUeXBl
TnVtYmVyKTsKLSAgICBBU1NFUlQoY3B1LmdwcihHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpID09
IFRhZ01hc2spOworICAgIEFTU0VSVChjcHUuZ3ByPGludDY0X3Q+KEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSA9PSBKU1ZhbHVlOjpOdW1iZXJUYWcpOworICAgIEFTU0VSVChjcHUuZ3ByPGlu
dDY0X3Q+KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpID09IEpTVmFsdWU6Ok5vdENlbGxN
YXNrKTsKICNlbmRpZgogCiAgICAgLy8gRG8gYWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFu
ZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRoZSBzdGFjay4KQEAgLTY4Niw4ICs2ODYsOCBAQCB2
b2lkIE9TUkV4aXQ6OmV4ZWN1dGVPU1JFeGl0KENvbnRleHQmIGNvCiAgICAgc2F2ZUNhbGxlZVNh
dmVzRm9yKGNvbnRleHQsIGJhc2VsaW5lQ29kZUJsb2NrKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgY3B1LmdwcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpID0gc3RhdGljX2Nh
c3Q8dWludHB0cl90PihUYWdUeXBlTnVtYmVyKTsKLSAgICBjcHUuZ3ByKEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KFRhZ1R5cGVOdW1iZXIgfCBUYWdC
aXRUeXBlT3RoZXIpOworICAgIGNwdS5ncHIoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpID0g
SlNWYWx1ZTo6TnVtYmVyVGFnOworICAgIGNwdS5ncHIoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikgPSBKU1ZhbHVlOjpOb3RDZWxsTWFzazsKICNlbmRpZgogCiAgICAgaWYgKGV4aXQuaXNF
eGNlcHRpb25IYW5kbGVyKCkpCkBAIC0xMTIxLDcgKzExMjEsNyBAQCB2b2lkIE9TUkV4aXQ6OmNv
bXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIGNhc2UgU3BlY3VsYXRpdmVBZGQ6CiAg
ICAgICAgICAgICBqaXQuc3ViMzIocmVjb3ZlcnktPnNyYygpLCByZWNvdmVyeS0+ZGVzdCgpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgog
ICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTExMzAsMjAgKzExMzAsMjAgQEAgdm9pZCBPU1JFeGl0
Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgaml0LnJzaGlmdDMyKEFz
c2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDEpLCByZWNvdmVyeS0+ZGVzdCgpKTsKICAgICAg
ICAgICAgIGppdC54b3IzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMigweDgwMDAwMDAw
KSwgcmVjb3ZlcnktPmRlc3QoKSk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgICAgIGpp
dC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7
CisgICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgcmVjb3Zl
cnktPmRlc3QoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2Ug
U3BlY3VsYXRpdmVBZGRJbW1lZGlhdGU6CiAgICAgICAgICAgICBqaXQuc3ViMzIoQXNzZW1ibHlI
ZWxwZXJzOjpJbW0zMihyZWNvdmVyeS0+aW1tZWRpYXRlKCkpLCByZWNvdmVyeS0+ZGVzdCgpKTsK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKKyAgICAgICAgICAgIGppdC5vcjY0
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWNvdmVyeS0+ZGVzdCgpKTsKICNlbmRpZgog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBCb29sZWFuU3BlY3VsYXRpb25DaGVj
azoKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgaml0LnhvcjY0KEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVj
b3ZlcnktPmRlc3QoKSk7CisgICAgICAgICAgICBqaXQueG9yNjQoQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlY292ZXJ5LT5kZXN0KCkpOwogI2Vu
ZGlmCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTI0OCwxMSArMTI0OCwxMSBAQCB2b2lkIE9T
UkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIGlmIChNZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0Fk
ZHJlc3MoKSkgewotICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBo
YXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lzdGVyLAor
ICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhhdCB3ZSBoYXZlIGEgc3BhcmUg
cmVnaXN0ZXIuIFNvIHVzZSB0aGUgbnVtYmVyVGFnUmVnaXN0ZXIsCiAgICAgICAgICAgICAgICAg
Ly8gc2luY2Ugd2Uga25vdyBob3cgdG8gcmVzdG9yZSBpdC4KLSAgICAgICAgICAgICAgICBqaXQu
bG9hZDY0KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0Fk
ZHJlc3MoKSksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgICAgICAg
ICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVncyhHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6
QWRkcmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShq
aXQsIEpTVmFsdWVSZWdzKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CisgICAgICAgICAg
ICAgICAgaml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6TnVt
YmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBKU1ZhbHVlUmVn
cyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5ncHIoKSkpOwogI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVF
NjQpCkBAIC0xNTE5LDcgKzE1MTksNyBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxs
SGVscGVycyYgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5sb2FkNjQoc2Ny
YXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQuemVyb0V4dGVu
ZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAgIGpp
dC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDApOwor
ICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJs
eUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwogI2Vsc2UKICAgICAgICAgICAgIGppdC5s
b2FkMzIoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsx
MDEsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKEVkZ2UgCiAgICAgICAg
ICAgICBzd2l0Y2ggKHNwaWxsRm9ybWF0KSB7CiAgICAgICAgICAgICBjYXNlIERhdGFGb3JtYXRJ
bnQzMjogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6YWRkcmVz
c0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwotICAgICAgICAgICAgICAgIG1faml0Lm9yNjQo
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBncHIpOworICAgICAgICAgICAgICAgIG1f
aml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGdwcik7CiAgICAgICAgICAgICAg
ICAgc3BpbGxGb3JtYXQgPSBEYXRhRm9ybWF0SlNJbnQzMjsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTEyMiwxMSArMTIyLDExIEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbEpTVmFsdWUoRWRnZSAKICAgICAgICAgLy8gSWYgbm90LCB3ZSdsbCB6ZXJvIGV4
dGVuZCBpbiBwbGFjZSwgc28gbWFyayBvbiB0aGUgaW5mbyB0aGF0IHRoaXMgaXMgbm93IHR5cGUg
RGF0YUZvcm1hdEludDMyLCBub3QgRGF0YUZvcm1hdEpTSW50MzIuCiAgICAgICAgIGlmIChtX2dw
cnMuaXNMb2NrZWQoZ3ByKSkgewogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdCA9IGFsbG9jYXRl
KCk7Ci0gICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgZ3ByLCByZXN1bHQpOworICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpudW1iZXJU
YWdSZWdpc3RlciwgZ3ByLCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBtX2ppdC5vcjY0KEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgbV9qaXQub3I2NChH
UFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgZ3ByKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1
ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTSW50MzIpOwogICAgICAgICByZXR1cm4gZ3By
OwogICAgIH0KQEAgLTI1NywxMyArMjU3LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNw
ZWN1bGF0aXZlTm9uUGUKICAKICAgICBpZiAoIWlzS25vd25Ob3RPdGhlcihvcGVyYW5kLm5vZGUo
KSkpIHsKICAgICAgICAgbV9qaXQubW92ZShhcmdHUFIsIHJlc3VsdEdQUik7Ci0gICAgICAgIG1f
aml0LmFuZDY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJl
c3VsdEdQUik7Ci0gICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIHJl
c3VsdEdQUiwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihWYWx1ZU51bGwpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5hbmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVl
OjpVbmRlZmluZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklU
Q29tcGlsZXI6OkVxdWFsLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVOdWxsKSwgcmVzdWx0R1BSKTsKICAgICB9CiAKICAgICBkb25lLmxpbmsoJm1f
aml0KTsKICAKLSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0
R1BSKTsKKyAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwg
cmVzdWx0R1BSKTsKICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9kZSwg
RGF0YUZvcm1hdEpTQm9vbGVhbik7CiB9CiAKQEAgLTMxOSw4ICszMTksOCBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgICAgICBzdGQ6OnN3YXAodGFr
ZW4sIG5vdFRha2VuKTsKICAgICAgICAgfQogICAgICAgICBtX2ppdC5tb3ZlKGFyZ0dQUiwgcmVz
dWx0R1BSKTsKLSAgICAgICAgbV9qaXQuYW5kNjQoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMih+
VGFnQml0VW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYnJhbmNoNjQoY29uZGl0aW9u
LCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSwgdGFrZW4p
OworICAgICAgICBtX2ppdC5hbmQ2NChKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVl
OjpVbmRlZmluZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBicmFuY2g2NChjb25kaXRpb24s
IHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZU51bGwp
LCB0YWtlbik7CiAgICAgICAgIGp1bXAobm90VGFrZW4pOwogICAgIH0KIH0KQEAgLTY3Miw3ICs2
NzIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlCiAgICAgICAg
ICAgICBpZiAoIWlzRGlyZWN0KQogICAgICAgICAgICAgICAgIGNhbGxlZS51c2UoKTsKIAotICAg
ICAgICAgICAgc2h1ZmZsZURhdGEudGFnVHlwZU51bWJlciA9IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcjsKKyAgICAgICAgICAgIHNodWZmbGVEYXRhLm51bWJlclRhZ1JlZ2lzdGVyID0g
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgICAgICAgICBzaHVmZmxlRGF0YS5udW1M
b2NhbHMgPSBtX2ppdC5ncmFwaCgpLmZyYW1lUmVnaXN0ZXJDb3VudCgpOwogICAgICAgICAgICAg
c2h1ZmZsZURhdGEuY2FsbGVlID0gVmFsdWVSZWNvdmVyeTo6aW5HUFIoY2FsbGVlR1BSLCBEYXRh
Rm9ybWF0SlMpOwogICAgICAgICAgICAgc2h1ZmZsZURhdGEuYXJncy5yZXNpemUobnVtQWxsb2Nh
dGVkQXJncyk7CkBAIC0xMjcyLDkgKzEyNzIsOSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZp
bGxTcGVjdWxhdGVCb29sCiAKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdw
ciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0Jvb2xlYW4pIHsKLSAg
ICAgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihW
YWx1ZUZhbHNlKSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6VmFsdWVGYWxzZSksIGdwcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4ofjEpKSksIFNwZWN1bGF0aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ssIGdw
ciwgSW52YWxpZEdQUlJlZykpOwotICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKKyAgICAgICAgICAgIG1f
aml0LnhvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKICAgICAg
ICAgfQogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0
SlNCb29sZWFuKTsKICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTEyOTEsOSArMTI5MSw5IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICAgICAgR1BSUmVnIGdw
ciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7CiAgICAgICAgIGlmICh0
eXBlICYgflNwZWNCb29sZWFuKSB7Ci0gICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCBncHIpOworICAgICAgICAgICAg
bV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCBncHIpOwogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdl
LCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpLCBTcGVjdWxhdGlvblJlY292ZXJ5KEJv
b2xlYW5TcGVjdWxhdGlvbkNoZWNrLCBncHIsIEludmFsaWRHUFJSZWcpKTsKLSAgICAgICAgICAg
IG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNl
KSksIGdwcik7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVGYWxzZSksIGdwcik7CiAgICAgICAgIH0KICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgq
bV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIHJldHVybiBncHI7
CkBAIC0xMzMxLDcgKzEzMzEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
U3RyaWN0CiAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBrbm93IHRoYXQgd2UgY2FuIHBlcmZvcm0g
YSBzdHJhaWdodC1mb3J3YXJkIGVxdWFsaXR5IGNvbXBhcmlzb24gb24gcG9pbnRlcgogICAgIC8v
IHZhbHVlcyBiZWNhdXNlIHdlIGFyZSBkb2luZyBzdHJpY3QgZXF1YWxpdHkuCiAgICAgbV9qaXQu
Y29tcGFyZTY0KE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxR1BSLCBvcDJHUFIsIHJlc3VsdEdQ
Uik7Ci0gICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7
CisgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3Vs
dEdQUik7CiAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFG
b3JtYXRKU0Jvb2xlYW4pOwogfQogICAgIApAQCAtMTQxMywxOCArMTQxMywxOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgLy8gcHJvdmUgdGhhdCBpdCBp
cyBlaXRoZXIgbnVsbCBvciB1bmRlZmluZWQuCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKHJpZ2h0
Q2hpbGQsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUo
b3AyR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAgICAgICBtX2pp
dC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRU
YWcpLCByZXN1bHRHUFIpOwogICAgICAgICAKICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgU3BlY0NlbGxDaGVjayB8IFNwZWNP
dGhlciwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSkpOworICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMigwKSwgcmVzdWx0LmdwcigpKTsKIAogICAgIGRvbmUu
bGluaygmbV9qaXQpOwotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCBy
ZXN1bHRHUFIpOworICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFs
c2UpLCByZXN1bHRHUFIpOwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnRO
b2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIApAQCAtMTQ4OSwxMiArMTQ4OSwxMiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIAogICAgICAg
ICByaWdodE5vdENlbGwubGluaygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tb3ZlKG9wMkdQUiwg
cmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMih+VGFnQml0VW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQuYW5kNjQo
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVz
dWx0R1BSKTsKICAgICAgICAgCiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIsIG1f
aml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
cmVzdWx0R1BSLAotICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQo
VmFsdWVOdWxsKSkpOworICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAgICAKICAgICBqdW1wKG5vdFRha2Vu
KTsKQEAgLTE1MjcsNyArMTUyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQ1
MkNvbXBhcmUKICAgICBtX2ppdC5jb21wYXJlNjQoY29uZGl0aW9uLCBvcDEuZ3ByKCksIG9wMi5n
cHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAKICAgICAvLyBJZiB3ZSBhZGQgYSBEYXRhRm9ybWF0
Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKIH0KIApA
QCAtMTYxMiwyMSArMTYxMiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
T3JPdGhlCiAKICAgICAgICAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0
KTsKICAgICB9Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3Vs
dEdQUik7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSks
IHJlc3VsdEdQUik7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAo
KTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKIAogICAgIGlmIChuZWVkc1R5cGVD
aGVjayhub2RlVXNlLCBTcGVjQ2VsbENoZWNrIHwgU3BlY090aGVyKSkgewogICAgICAgICBtX2pp
dC5tb3ZlKHZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOworICAg
ICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpV
bmRlZmluZWRUYWcpLCByZXN1bHRHUFIpOwogICAgICAgICB0eXBlQ2hlY2soCiAgICAgICAgICAg
ICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3Ro
ZXIsIG1faml0LmJyYW5jaDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgCiAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLCAKLSAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpKTsKICAgICB9
Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHRHUFIp
OwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgIApAQCAtMTY0NSw3ICsxNjQ1LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBTcGVj
dWxhdGVJbnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAgICAgICAgIG1faml0LmNv
bXBhcmUzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlLmdwcigpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKDApLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRy
dXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3Iz
MihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFu
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2NTQsNyArMTY1NCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAg
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vblplcm8gPSBtX2pp
dC5icmFuY2hEb3VibGVOb25aZXJvKHZhbHVlLmZwcigpLCBzY3JhdGNoLmZwcigpKTsKICAgICAg
ICAgbV9qaXQueG9yMzIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAgICAg
ICBub25aZXJvLmxpbmsoJm1faml0KTsKQEAgLTE2NzksMTEgKzE2NzksMTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOyAvLyBGSVhNRTogV2UgY291bGQgcmV1c2UsIGJ1dCBvbiBzcGVjdWxhdGlvbiBm
YWlsIHdvdWxkIG5lZWQgcmVjb3ZlcnkgdG8gcmVzdG9yZSB0YWcgKGFraW4gdG8gYWRkKS4KICAg
ICAgICAgCiAgICAgICAgIG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0g
ICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1
ZUZhbHNlKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnhvcjY0KFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgdHlwZUNoZWNr
KAogICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGlsZDEoKSwg
U3BlY0Jvb2xlYW4sIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6Tm9uWmVybywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4ofjEpKSkpOwotICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oVmFsdWVUcnVlKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lnhv
cjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZVRydWUpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICAKICAgICAgICAgLy8gSWYgd2UgYWRkIGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1
c2UgaXQgaGVyZS4KICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERh
dGFGb3JtYXRKU0Jvb2xlYW4pOwpAQCAtMTcxMCw3ICsxNzEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICB9CiAgICAgICAgIGJvb2wgbmVnYXRl
UmVzdWx0ID0gdHJ1ZTsKICAgICAgICAgbV9qaXQuZW1pdENvbnZlcnRWYWx1ZVRvQm9vbGVhbih2
bSgpLCBKU1ZhbHVlUmVncyhhcmcxR1BSKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCB2YWx1ZUZQ
Ui5mcHIoKSwgdGVtcEZQUi5mcHIoKSwgc2hvdWxkQ2hlY2tNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCBnbG9iYWxPYmplY3QsIG5lZ2F0ZVJlc3VsdCk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3Rl
ZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTc2OSwxMCArMTc2OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjplbWl0T2JqZWN0T3JPdGhlckJyCiAgICAgCiAgICAgaWYgKG5lZWRzVHlwZUNoZWNrKG5vZGVV
c2UsIFNwZWNDZWxsQ2hlY2sgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIG1faml0Lm1vdmUodmFs
dWVHUFIsIHNjcmF0Y2hHUFIpOwotICAgICAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgbV9q
aXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVk
VGFnKSwgc2NyYXRjaEdQUik7CiAgICAgICAgIHR5cGVDaGVjaygKICAgICAgICAgICAgIEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgU3BlY0NlbGxDaGVjayB8IFNwZWNPdGhlciwgbV9q
aXQuYnJhbmNoNjQoCi0gICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBz
Y3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpKTsKKyAg
ICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6VmFsdWVOdWxsKSkpOwogICAgIH0KICAg
ICBqdW1wKG5vdFRha2VuKTsKICAgICAKQEAgLTE4NzEsNyArMTg3MSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSogbm8KICAgICAgICAgICAgIAogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjSW50MzJPbmx5KSB7CiAgICAg
ICAgICAgICAgICAgYnJhbmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSwg
bm90VGFrZW4pOwotICAgICAgICAgICAgICAgIGJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHRha2Vu
KTsKKyAgICAgICAgICAgICAgICBicmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCB2YWx1ZUdQUiwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHRha2VuKTsKICAgICAgICAg
ICAgIH0KICAgICAKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigp
ICYgU3BlY0Jvb2xlYW4pIHsKQEAgLTIzOTEsNyArMjM5MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIHVzZShtX2dyYXBoLnZhckFyZ0No
aWxkKG5vZGUsIDApKTsKICAgICAgICAgICAgIGluZGV4LnVzZSgpOwogCi0gICAgICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCBy
ZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgcmVzdWx0R1BSKTsKICAgICAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0
bHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTMxMDEsMTIgKzMxMDEsMTIg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgb3BlcmFuZEdQUiA9IG9wZXJh
bmQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Ci0gICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdEdQ
Uik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwogICAgICAgICBkb25lLmFw
cGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0
ZWRJbW0zMig0KSkpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21w
aWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRydXN0ZWRJbW0zMigxKSkpOwogICAgICAgICBkb25l
LmFwcGVuZChtX2ppdC5icmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wZXJhbmRHUFIsIFRy
dXN0ZWRJbW0zMigyKSkpOwotICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZh
bHNlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CiAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwpA
QCAtMzMyMSw3ICszMzIxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsgLy8gRklYTUU6IFdl
IGNvdWxkIHJldXNlLCBidXQgb24gc3BlY3VsYXRpb24gZmFpbCB3b3VsZCBuZWVkIHJlY292ZXJ5
IHRvIHJlc3RvcmUgdGFnIChha2luIHRvIGFkZCkuCiAgICAgICAgICAgICAKICAgICAgICAgICAg
IG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBtX2pp
dC54b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCBy
ZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKEpTVmFs
dWU6OlZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWUuZ3ByKCkpLCBub2RlLT5jaGls
ZDEoKSwgU3BlY0Jvb2xlYW4sIG1faml0LmJyYW5jaFRlc3Q2NCgKICAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KH4xKSkpKTsKQEAgLTMzNDIsMTMgKzMzNDIsMTMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KFZhbHVlRmFsc2UpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0LnhvcjY0KFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaFRlc3Q2NCgKICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6WmVybywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1t
MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZh
bHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgIGlzQm9vbGVhbi5saW5rKCZtX2ppdCk7
Ci0gICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
cmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIsIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5v
ZGUpOwpAQCAtMzkxMiw3ICszOTEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1
ZSk7CiAKICAgICAgICAgbV9qaXQuY29tcGFyZVB0cihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVl
LmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSkpLCByZXN1bHQu
Z3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFs
dWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQu
Z3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKQEAgLTM5
MjcsNyArMzkyNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkK
IAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwo
dmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAKLSAgICAgICAgbV9qaXQuY29tcGFyZTY0KEpJVENvbXBp
bGVyOjpFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5lZCksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWws
IHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCByZXN1
bHQuZ3ByKCkpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgp
OwogICAgICAgICAKICAgICAgICAgaXNDZWxsLmxpbmsoJm1faml0KTsKQEAgLTM5NTQsNyArMzk1
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKIAogICAgICAg
ICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsoJm1faml0KTsKICAgICAgICAgZG9uZS5s
aW5rKCZtX2ppdCk7Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2Up
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHQuZ3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAgICBicmVhazsKICAg
ICB9CkBAIC0zOTY3LDggKzM5NjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAKICAg
ICAgICAgbV9qaXQubW92ZSh2YWx1ZUdQUiwgcmVzdWx0R1BSKTsKLSAgICAgICAgbV9qaXQuYW5k
NjQoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlc3VsdEdQ
Uik7Ci0gICAgICAgIG1faml0LmNvbXBhcmU2NChDQ2FsbEhlbHBlcnM6OkVxdWFsLCByZXN1bHRH
UFIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlc3VsdEdQUik7Cisg
ICAgICAgIG1faml0LmFuZDY0KENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpV
bmRlZmluZWRUYWcpLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5jb21wYXJlNjQoQ0NhbGxI
ZWxwZXJzOjpFcXVhbCwgcmVzdWx0R1BSLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpWYWx1ZU51bGwpLCByZXN1bHRHUFIpOwogCiAgICAgICAgIHVuYmxlc3NlZEJvb2xlYW5S
ZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTc5LDkgKzM5Nzks
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0Lnhv
cjY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7
CisgICAgICAgIG1faml0LnhvcjY0KEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVGYWxzZSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0LnRlc3Q2NChKSVRDb21w
aWxlcjo6WmVybywgcmVzdWx0LmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PGludDMyX3Q+KH4xKSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIG1faml0Lm9yMzIo
VHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5v
cjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIERhdGFGb3JtYXRKU0Jvb2xl
YW4pOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zOTkwLDggKzM5OTAsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzLCBSZXVzZSwgdmFsdWUpOwogICAgICAgICAKLSAgICAgICAgbV9qaXQudGVzdDY0KEpJ
VENvbXBpbGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihW
YWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgbV9qaXQudGVzdDY0KEpJVENvbXBp
bGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIoKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZh
bHVlRmFsc2UpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTQwMTksMjEgKzQwMTksMjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICBtX2ppdC51cnNoaWZ0NjQoVHJ1c3RlZEltbTMyKDUyKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgbV9qaXQuYW5kMzIoVHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgYXV0byBub3ROYW5Ob3JJbmZpbml0eSA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgVHJ1c3RlZEltbTMyKDB4N2ZmKSwgcmVzdWx0R1BSKTsKLSAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAg
ICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRH
UFIpOwogICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogCiAgICAgICAgIG5vdE5h
bk5vckluZmluaXR5LmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQucm91bmRUb3dhcmRaZXJv
RG91YmxlKHRlbXBGUFIxLCB0ZW1wRlBSMik7CiAgICAgICAgIG1faml0LmNvbXBhcmVEb3VibGUo
SklUQ29tcGlsZXI6OkRvdWJsZUVxdWFsLCB0ZW1wRlBSMSwgdGVtcEZQUjIsIHJlc3VsdEdQUik7
Ci0gICAgICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZXN1bHRHUFIp
OworICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwg
cmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKIAogICAgICAg
ICBpc0ludDMyLmxpbmsoJm1faml0KTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
VmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6VmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKICAgICAgICAgZG9uZS5hcHBlbmQobV9q
aXQuanVtcCgpKTsKIAogICAgICAgICBub3ROdW1iZXIubGluaygmbV9qaXQpOwotICAgICAgICBt
X2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
bV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlc3VsdEdQUik7
CiAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVz
dWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKQEAgLTQ1NjAsNyArNDU2MCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQu
ZXhjZXB0aW9uQ2hlY2soKTsKIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAgICAg
bV9qaXQub3IzMihUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSksIHJlc3VsdEdQUik7CisgICAgICAg
IG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZXN1bHRHUFIp
OwogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9v
bGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTUyMDEsMTcgKzUyMDEsMTcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjptb3ZlVHJ1ZVRvKEdQUlJlZyBncHIpCiB7Ci0gICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIoVmFsdWVUcnVlKSwgZ3ByKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpWYWx1ZVRydWUpLCBncHIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjptb3ZlRmFsc2VU
byhHUFJSZWcgZ3ByKQogewotICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2Up
LCBncHIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2Up
LCBncHIpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpibGVzc0Jvb2xlYW4oR1BSUmVnIGdw
cikKIHsKLSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihWYWx1ZUZhbHNlKSwgZ3ByKTsKKyAg
ICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgZ3ByKTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29udmVydEFueUludChFZGdlIHZhbHVlRWRnZSwgR1BS
UmVnIHJlc3VsdEdQUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcwLDcg
KzY3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNpbGVudEZpbGwoY29uc3QgU2kKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBMb2FkMzJQYXlsb2FkQm94SW50OgogICAgICAgICBtX2ppdC5s
b2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3Rl
cigpKSwgcGxhbi5ncHIoKSk7Ci0gICAgICAgIG1faml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBwbGFuLmdwcigpKTsKKyAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjpu
dW1iZXJUYWdSZWdpc3RlciwgcGxhbi5ncHIoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TG9hZDMyUGF5bG9hZENvbnZlcnRUb0ludDUyOgogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IocGxhbi5ub2RlKCktPnZpcnR1YWxSZWdpc3RlcigpKSwgcGxhbi5n
cHIoKSk7CkBAIC0xOTMxLDE4ICsxOTMxLDE4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNr
QXJndW1lbnRUeXBlcygKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBzd2l0Y2ggKGZvcm1h
dCkgewogICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjogewotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoNjQoTWFjcm9B
c3NlbWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaDY0KE1hY3Jv
QXNzZW1ibGVyOjpCZWxvdywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVy
KSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46IHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDY0KEpJVENvbXBpbGVy
OjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAg
bV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2Up
KSwgdGVtcC5ncHIoKSk7CisgICAgICAgICAgICBtX2ppdC54b3I2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVGYWxzZSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4ofjEpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBGbHVzaGVkQ2VsbDogewotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZSwgbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBHUFJJbmZv
Ojp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGUsIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5m
bzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgZGVmYXVsdDoKQEAgLTI0MDksNyArMjQwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
Z3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbENoZWNrLCBtX2ppdC5icmFuY2hJZkNlbGwo
SlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8v
IEl0J3Mgbm90IGEgY2VsbDogc28gdHJ1ZSB0dXJucyBpbnRvIDEgYW5kIGFsbCBlbHNlIHR1cm5z
IGludG8gMC4KLSAgICAgICAgICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVx
dWFsLCBncHIsIFRydXN0ZWRJbW0zMihWYWx1ZVRydWUpLCByZXN1bHRHcHIpOworICAgICAgICAg
ICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWwsIGdwciwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJlc3VsdEdwcik7CiAgICAgICAgICAgICAgICAgY29u
dmVydGVkLmFwcGVuZChtX2ppdC5qdW1wKCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGlzTnVtYmVyLmxpbmsoJm1faml0KTsKQEAgLTI2MzcsOSArMjYzNyw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVSZXAoTm8KICAgICAgICAgICAgIGRvbmUuYXBw
ZW5kKGlzTnVsbCk7CiAKICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKG9w
MUdQUiksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywKLSAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0NjQoSklUQ29tcGlsZXI6Olplcm8sIG9wMUdQUiwgVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFRhZ0JpdEJvb2wpKSkpOworICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q2NChKSVRDb21waWxlcjo6WmVybywgb3AxR1BSLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Qm9vbFRhZykpKTsKIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNG
YWxzZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVk
SW1tNjQoVmFsdWVGYWxzZSkpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNGYWxz
ZSA9IG1faml0LmJyYW5jaDY0KEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6VmFsdWVGYWxzZSkpOwogICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBk
b3VibGUgb25lID0gMTsKICAgICAgICAgICAgIG1faml0LmxvYWREb3VibGUoVHJ1c3RlZEltbVB0
cigmb25lKSwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1faml0Lmp1bXAo
KSk7CkBAIC0zMDcyLDcgKzMwNzIsNyBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpnZXRJbnRUeXBl
ZEFycmF5U3RvCiAgICAgICAgICAgICAgICAgICAgIGZwciwgZ3ByLCBNYWNyb0Fzc2VtYmxlcjo6
QnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwpKTsKIAogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgICAgICAgICAgbV9qaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHBy
b3BlcnR5KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgYm94RG91YmxlKGZwciwgZ3ByKTsK
ICNlbHNlCiAgICAgICAgICAgICAgICAgVU5VU0VEX1BBUkFNKHByb3BlcnR5KTsKQEAgLTEwNDg1
LDcgKzEwNDg1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdlIAog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgIHJlZ3MsIGVk
Z2UsIFNwZWNNaXNjLAotICAgICAgICBtX2ppdC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6QWJv
dmUsIHJlZ3MuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnQml0VHlwZU90
aGVyIHwgVGFnQml0Qm9vbCB8IFRhZ0JpdFVuZGVmaW5lZCkpKTsKKyAgICAgICAgbV9qaXQuYnJh
bmNoNjQoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCByZWdzLmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok1pc2NUYWcpKSk7CiAjZWxzZQogICAgIElHTk9SRV9XQVJO
SU5HU19CRUdJTigiZW51bS1jb21wYXJlIikKICAgICBzdGF0aWNfYXNzZXJ0KEpTVmFsdWU6Oklu
dDMyVGFnID49IEpTVmFsdWU6OlVuZGVmaW5lZFRhZywgIkludDMyVGFnIGlzIGluY2x1ZGVkIGlu
ID49IEpTVmFsdWU6OlVuZGVmaW5lZFRhZyByYW5nZS4iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDI1MDA4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTM4LDcgKzUzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIC8vIFdlIG5lZWQg
dG8gYm94IGludDMyIGFuZCBjZWxsIHZhbHVlcyAuLi4KICAgICAgICAgICAgIC8vIGJ1dCBvbiBK
U1ZBTFVFNjQgYm94aW5nIGEgY2VsbCBpcyBhIG5vLW9wIQogICAgICAgICAgICAgaWYgKHNwaWxs
Rm9ybWF0ID09IERhdGFGb3JtYXRJbnQzMikKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCByZWcpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBTcGlsbCB0aGUgdmFsdWUsIGFuZCByZWNvcmQgaXQgYXMgc3BpbGxlZCBp
biBpdHMgYm94ZWQgZm9ybS4KICAgICAgICAgICAgIG1faml0LnN0b3JlNjQocmVnLCBKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihzcGlsbE1lKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2MCwxMyArMjYwLDEzIEBAIHB1YmxpYzoKICAgICAgICAgYXV0byBwcmVPcmRlciA9IG1fZ3Jh
cGguYmxvY2tzSW5QcmVPcmRlcigpOwogCiAgICAgICAgIG1fY2FsbEZyYW1lID0gbV9vdXQuZnJh
bWVQb2ludGVyKCk7Ci0gICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0LmNvbnN0SW50NjQo
VGFnVHlwZU51bWJlcik7Ci0gICAgICAgIG1fdGFnTWFzayA9IG1fb3V0LmNvbnN0SW50NjQoVGFn
TWFzayk7CisgICAgICAgIG1fbnVtYmVyVGFnID0gbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpO
dW1iZXJUYWcpOworICAgICAgICBtX25vdENlbGxNYXNrID0gbV9vdXQuY29uc3RJbnQ2NChKU1Zh
bHVlOjpOb3RDZWxsTWFzayk7CiAKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgQjMga25vd3Mg
dGhhdCB3ZSByZWFsbHkgY2FyZSBhYm91dCB0aGUgbWFzayByZWdpc3RlcnMuIFRoaXMgZm9yY2Vz
IHRoZQogICAgICAgICAvLyBjb25zdGFudHMgdG8gYmUgbWF0ZXJpYWxpemVkIGluIHJlZ2lzdGVy
cy4KLSAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ1R5cGVOdW1iZXItPmtleSgp
KTsKLSAgICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX3RhZ01hc2stPmtleSgpKTsKKyAg
ICAgICAgbV9wcm9jLmFkZEZhc3RDb25zdGFudChtX251bWJlclRhZy0+a2V5KCkpOworICAgICAg
ICBtX3Byb2MuYWRkRmFzdENvbnN0YW50KG1fbm90Q2VsbE1hc2stPmtleSgpKTsKICAgICAgICAg
CiAgICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdGhlIENvZGVCbG9jayB0byBoYXZlIGEgd2VhayBw
b2ludGVyIHRvIGl0c2VsZiBiZWNhdXNlCiAgICAgICAgIC8vIHRoYXQgd291bGQgY2F1c2UgaXQg
dG8gYWx3YXlzIGdldCBjb2xsZWN0ZWQuCkBAIC0xNzM4LDcgKzE3MzgsNyBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnZlcnRCb29sZWFuRmFsc2VDYXNlID0gbV9v
dXQubmV3QmxvY2soKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKG5vbkRvdWJs
ZUNhc2UsIHVuZGVmaW5lZENhc2UpOwotICAgICAgICAgICAgICAgIExWYWx1ZSB2YWx1ZUlzVW5k
ZWZpbmVkID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVVbmRlZmlu
ZWQpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc1VuZGVmaW5lZCA9IG1fb3V0LmVx
dWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7CiAg
ICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKHZhbHVlSXNVbmRlZmluZWQsIHVuc3VyZSh1bmRl
ZmluZWRDYXNlKSwgdW5zdXJlKHRlc3ROdWxsQ2FzZSkpOwogCiAgICAgICAgICAgICAgICAgbV9v
dXQuYXBwZW5kVG8odW5kZWZpbmVkQ2FzZSwgdGVzdE51bGxDYXNlKTsKQEAgLTE3NDYsNyArMTc0
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24p
OwogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8odGVzdE51bGxDYXNlLCBudWxsQ2Fz
ZSk7Ci0gICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNOdWxsID0gbV9vdXQuZXF1YWwodmFs
dWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICAgICAgTFZhbHVl
IHZhbHVlSXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1
ZTo6VmFsdWVOdWxsKSk7CiAgICAgICAgICAgICAgICAgbV9vdXQuYnJhbmNoKHZhbHVlSXNOdWxs
LCB1bnN1cmUobnVsbENhc2UpLCB1bnN1cmUodGVzdEJvb2xlYW5UcnVlQ2FzZSkpOwogCiAgICAg
ICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8obnVsbENhc2UsIHRlc3RCb29sZWFuVHJ1ZUNhc2Up
OwpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5q
dW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyh0ZXN0
Qm9vbGVhblRydWVDYXNlLCBjb252ZXJ0Qm9vbGVhblRydWVDYXNlKTsKLSAgICAgICAgICAgICAg
ICBMVmFsdWUgdmFsdWVJc0Jvb2xlYW5UcnVlID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNv
bnN0SW50NjQoVmFsdWVUcnVlKSk7CisgICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlSXNCb29s
ZWFuVHJ1ZSA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZh
bHVlVHJ1ZSkpOwogICAgICAgICAgICAgICAgIG1fb3V0LmJyYW5jaCh2YWx1ZUlzQm9vbGVhblRy
dWUsIHVuc3VyZShjb252ZXJ0Qm9vbGVhblRydWVDYXNlKSwgdW5zdXJlKGNvbnZlcnRCb29sZWFu
RmFsc2VDYXNlKSk7CiAKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb252ZXJ0Qm9v
bGVhblRydWVDYXNlLCBjb252ZXJ0Qm9vbGVhbkZhbHNlQ2FzZSk7CkBAIC0xNzYzLDcgKzE3NjMs
NyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udmVydEJv
b2xlYW5GYWxzZUNhc2UsIGNvbnRpbnVhdGlvbik7CiAKLSAgICAgICAgICAgICAgICBMVmFsdWUg
dmFsdWVJc05vdEJvb2xlYW5GYWxzZSA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25z
dEludDY0KFZhbHVlRmFsc2UpKTsKKyAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWVJc05vdEJv
b2xlYW5GYWxzZSA9IG1fb3V0Lm5vdEVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFs
dWU6OlZhbHVlRmFsc2UpKTsKICAgICAgICAgICAgICAgICBGVExfVFlQRV9DSEVDSyhqc1ZhbHVl
VmFsdWUodmFsdWUpLCBtX25vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGxDaGVjaywgdmFsdWVJc05v
dEJvb2xlYW5GYWxzZSk7CiAgICAgICAgICAgICAgICAgVmFsdWVGcm9tQmxvY2sgY29udmVydGVk
RmFsc2UgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3REb3VibGUoMCkpOwogICAgICAgICAgICAg
ICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTE5MTMsNyArMTkxMyw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9v
dXQuYXBwZW5kVG8oYm9vbGVhbkNhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1
ZUZyb21CbG9jayBib29sZWFuUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmJpdE9yKAotICAg
ICAgICAgICAgICAgIG1fb3V0Lnplcm9FeHQodW5ib3hCb29sZWFuKHZhbHVlKSwgSW50NjQpLCBt
X3RhZ1R5cGVOdW1iZXIpKTsKKyAgICAgICAgICAgICAgICBtX291dC56ZXJvRXh0KHVuYm94Qm9v
bGVhbih2YWx1ZSksIEludDY0KSwgbV9udW1iZXJUYWcpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1
bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0yMTUxLDggKzIxNTEsOCBAQCBwcml2YXRl
OgogCiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoSW50NjQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIob3BlcmFu
ZCk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ss
IFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlcikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRp
b25zKHBhdGNocG9pbnQpOwogICAgICAgICBwYXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3Rl
cnMgPSAxOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1Nj
cmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0yMjQyLDggKzIyNDIsOCBAQCBwcml2YXRlOgogICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGxlZnQpOwogICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocmlnaHQpOwotICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFs
dWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIp
KTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhh
bmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2ludEZvckV4Y2VwdGlvbnMocGF0Y2hw
b2ludCk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJlZ2lzdGVycyA9IDE7CkBA
IC0zODIxLDggKzM4MjEsOCBAQCBwcml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBh
dGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOwogICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVS
ZWdpc3Rlcih2YWx1ZSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZh
bHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxN
YXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYg
dGhpcyBpcyBhIFB1dEJ5SWRGbHVzaCwgd2UgbWlnaHQgd2FudCB0byBsYXRlLWNsb2JiZXIgdm9s
YXRpbGUgcmVnaXN0ZXJzLgpAQCAtNDI1Niw3ICs0MjU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAx
KSk7CiAKICAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBtX25v
ZGUsIG1fb3V0Lmxlc3NUaGFuKGluZGV4LCBtX291dC5pbnQzMlplcm8pKTsKLSAgICAgICAgICAg
IHNldEpTVmFsdWUobV9vdXQuY29uc3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAg
ICAgc2V0SlNWYWx1ZShtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTI5Miw3
ICs1MjkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIGZvdW5kUmVz
dWx0ID0gbV9vdXQuYW5jaG9yKGluZGV4KTsKICAgICAgICAgICAgIHN3aXRjaCAoc2VhcmNoRWxl
bWVudEVkZ2UudXNlS2luZCgpKSB7CiAgICAgICAgICAgICBjYXNlIEludDMyVXNlOiB7Ci0gICAg
ICAgICAgICAgICAgLy8gRW1wdHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNlIG9mIFRhZ1R5cGVO
dW1iZXIuCisgICAgICAgICAgICAgICAgLy8gRW1wdHkgdmFsdWUgaXMgaWdub3JlZCBiZWNhdXNl
IG9mIEpTVmFsdWU6Ok51bWJlclRhZy4KICAgICAgICAgICAgICAgICBMVmFsdWUgdmFsdWUgPSBt
X291dC5sb2FkNjQobV9vdXQuYmFzZUluZGV4KG1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGll
cywgc3RvcmFnZSwgaW5kZXgpKTsKICAgICAgICAgICAgICAgICBtX291dC5icmFuY2gobV9vdXQu
ZXF1YWwodmFsdWUsIHNlYXJjaEVsZW1lbnQpLCB1bnN1cmUoY29udGludWF0aW9uKSwgdW5zdXJl
KGxvb3BOZXh0KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC03NjgyLDcgKzc2ODIsNyBA
QCBwcml2YXRlOgogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAg
bV9vdXQuYXBwZW5kVG8ob3V0T2ZCb3VuZHMsIGNvbnRpbnVhdGlvbik7Ci0gICAgICAgIFZhbHVl
RnJvbUJsb2NrIG91dE9mQm91bmRzUmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmNvbnN0SW50
NjQoVmFsdWVVbmRlZmluZWQpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNS
ZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZVVuZGVm
aW5lZCkpOwogICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC04MTIzLDggKzgxMjMsOCBA
QCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhj
ZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9u
cyhwYXRjaHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3Rh
Z01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIp
KTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2Ji
ZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hw
b2ludC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxs
KCkpOwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6
OnJlZyhHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUikgfTsKQEAgLTgyMzksOCArODIzOSw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIAogICAgICAgICBpZiAoaXNUYWlsKSB7CiAgICAgICAgICAgICAvLyBU
aGUgc2h1ZmZsZXIgbmVlZHMgdGFncy4KLSAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCht
X3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAg
ICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBWYWx1ZVJlcDo6cmVn
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1h
c2tSZWdpc3RlcikpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3Jv
U2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTg0MjUsOCArODQyNSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihhcmd1bWVudHMpOwogCi0gICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFn
TWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1i
ZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUklu
Zm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1f
bnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAK
ICAgICAgICAgLy8gUHJldmVudCBhbnkgb2YgdGhlIGFyZ3VtZW50cyBmcm9tIHVzaW5nIHRoZSBz
Y3JhdGNoIHJlZ2lzdGVyLgogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0
ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTg1NjAsOCArODU2MCw4IEBAIHBy
aXZhdGU6CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZCh0aGlzQXJnLCBWYWx1ZVJlcDo6V2Fy
bUFueSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcywgVmFsdWVSZXA6Oldhcm1BbnkpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0
b3JXaXRoUmVwKHBhdGNocG9pbnRBcmd1bWVudHMsIFZhbHVlUmVwOjpXYXJtQW55KTsKLSAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51
bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BS
SW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQo
bV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsK
IAogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFu
ZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogCkBAIC04
ODY0LDggKzg4NjQsOCBAQCBwcml2YXRlOgogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gZXhjZXB0aW9uSGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBv
aW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAgCi0gICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVl
UmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om5vdENl
bGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbnVtYmVyVGFn
LCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkp
OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldDo6dm9sYXRpbGVS
ZWdpc3RlcnNGb3JKU0NhbGwoKSk7CkBAIC05MTIyLDggKzkxMjIsOCBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlv
bkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAg
ICAgICAgCi0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpy
ZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVu
ZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1
ZVJlcDo6cmVnKEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6cmVnKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyKSk7CiAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUo
UmVnaXN0ZXJTZXQ6OnZvbGF0aWxlUmVnaXN0ZXJzRm9ySlNDYWxsKCkpOwogICAgICAgICBwYXRj
aHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IHsgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUikgfTsKQEAgLTEwNjQ2LDggKzEwNjQ2LDggQEAgcHJpdmF0ZToKIAogICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsK
ICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2UpOwotICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0
YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51
bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJlcDo6bGF0
ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQt
PmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIpKTsKIAogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0Ojpt
YWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CiAKQEAgLTEwODg3LDggKzEwODg3LDggQEAgcHJpdmF0
ZToKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2lu
dChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcih2YWx1ZSk7
CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3Rlcihwcm90b3R5cGUpOwotICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFn
VHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lz
dGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBWYWx1ZVJl
cDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNo
cG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0
ZXJzID0gMjsKICAgICAgICAgcGF0Y2hwb2ludC0+cmVzdWx0Q29uc3RyYWludHMgPSB7IFZhbHVl
UmVwOjpTb21lRWFybHlSZWdpc3RlciB9OwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFJl
Z2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0xMTIyOSw3ICsxMTIyOSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAg
ICBtX291dC5hcHBlbmRUbyhvdXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJ
bnQ2NChWYWx1ZU51bGwpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1
bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMTI1NSw3ICsxMTI1NSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAg
ICBtX291dC5hcHBlbmRUbyhvdXRPZkJvdW5kcywgY29udGludWF0aW9uKTsKLSAgICAgICAgVmFs
dWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJ
bnQ2NChWYWx1ZU51bGwpKTsKKyAgICAgICAgVmFsdWVGcm9tQmxvY2sgb3V0T2ZCb3VuZHNSZXN1
bHQgPSBtX291dC5hbmNob3IobV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsK
ICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRpb24pOwogICAgICAgICAKICAgICAgICAgbV9v
dXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC0xMjI4NSw4ICsxMjI4NSw4
IEBAIHByaXZhdGU6CiAKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9v
dXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdp
c3RlcihiYXNlKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRh
Z1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RD
ZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcikp
OworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRl
UmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gRklYTUU6IElm
IHRoaXMgaXMgYSBHZXRCeUlkRmx1c2gvR2V0QnlJZERpcmVjdEZsdXNoLCB3ZSBtaWdodCBnZXQg
c29tZSBwZXJmb3JtYW5jZSBib29zdCBpZiB3ZSBjbGFpbSB0aGF0IGl0CiAgICAgICAgIC8vIGNs
b2JiZXJzIHZvbGF0aWxlIHJlZ2lzdGVycyBsYXRlLiBJdCdzIG5vdCBuZWNlc3NhcnkgZm9yIGNv
cnJlY3RuZXNzLCB0aG91Z2gsIHNpbmNlIHRoZQpAQCAtMTIzNTgsOCArMTIzNTgsOCBAQCBwcml2
YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lzdGVyKGJhc2Up
OwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIodGhpc1ZhbHVlKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX3Rh
Z1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdp
c3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9ub3RDZWxsTWFzaywgVmFsdWVS
ZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86Om51
bWJlclRhZ1JlZ2lzdGVyKSk7CiAKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihSZWdpc3Rl
clNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogCkBAIC0xMjc0MCw4ICsxMjc0MCw4IEBA
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTbmlwcGV0PiBkb21KSVQgPSBjbGFzc0luZm8tPmNo
ZWNrU3ViQ2xhc3NTbmlwcGV0KCk7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2lu
dCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNv
bWVSZWdpc3RlcihjZWxsKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFzaywg
VmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hw
b2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2Vs
bE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlcikpOworICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVwOjpyZWcoR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKIAogICAgICAgICBOb2RlT3JpZ2luIG9yaWdpbiA9IG1f
b3JpZ2luOwogICAgICAgICB1bnNpZ25lZCBvc3JFeGl0QXJndW1lbnRPZmZzZXQgPSBwYXRjaHBv
aW50LT5udW1DaGlsZHJlbigpOwpAQCAtMTI4NjUsOCArMTI4NjUsOCBAQCBwcml2YXRlOgogICAg
ICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoYmFzZSk7CiAgICAgICAgIGlmIChk
b21KSVQtPnJlcXVpcmVHbG9iYWxPYmplY3QpCiAgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmRTb21lUmVnaXN0ZXIoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fdGFnTWFzaywgVmFsdWVSZXA6OnJlZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAg
ICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OnJlZyhH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBw
ZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpyZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVlUmVw
OjpyZWcoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNo
cG9pbnRFeGNlcHRpb25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50
Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50KTsKICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwogICAgICAgICBwYXRjaHBvaW50
LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSBkb21KSVQtPm51bUdQU2NyYXRjaFJlZ2lzdGVyczsK
QEAgLTEzNDY4LDggKzEzNDY4LDggQEAgcHJpdmF0ZToKICAgICAgICAgUGF0Y2hwb2ludFZhbHVl
KiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CiAgICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZFNvbWVSZWdpc3RlcihsZWZ0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
U29tZVJlZ2lzdGVyKHJpZ2h0KTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fdGFnTWFz
aywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX3RhZ1R5cGVOdW1iZXIsIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBl
bmQobV9ub3RDZWxsTWFzaywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV9udW1iZXJUYWcsIFZhbHVl
UmVwOjpsYXRlUmVnKEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKSk7CiAgICAgICAgIFJlZlB0
cjxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPQogICAgICAgICAg
ICAgcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQpOwogICAgICAgICBw
YXRjaHBvaW50LT5udW1HUFNjcmF0Y2hSZWdpc3RlcnMgPSAxOwpAQCAtMTM1MzQsOCArMTM1MzQs
OCBAQCBwcml2YXRlOgogICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KEludDY0KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJlZ2lz
dGVyKGxlZnQpOwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIocmlnaHQp
OwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdNYXNrLCBWYWx1ZVJlcDo6bGF0ZVJl
ZyhHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fdGFnVHlwZU51bWJlciwgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKSk7CisgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChtX25vdENlbGxNYXNrLCBW
YWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKSk7CisgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChtX251bWJlclRhZywgVmFsdWVSZXA6OmxhdGVSZWcoR1BSSW5m
bzo6bnVtYmVyVGFnUmVnaXN0ZXIpKTsKICAgICAgICAgUmVmUHRyPFBhdGNocG9pbnRFeGNlcHRp
b25IYW5kbGU+IGV4Y2VwdGlvbkhhbmRsZSA9CiAgICAgICAgICAgICBwcmVwYXJlUGF0Y2hwb2lu
dEZvckV4Y2VwdGlvbnMocGF0Y2hwb2ludCk7CiAgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDE7CkBAIC0xMzU4OSw4ICsxMzU4OSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoSW50NjQp
OwogICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIobGVmdCk7CiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihyaWdodCk7Ci0gICAgICAgIHBhdGNocG9p
bnQtPmFwcGVuZChtX3RhZ01hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOwotICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmQobV90YWdUeXBlTnVtYmVyLCBW
YWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAg
ICAgcGF0Y2hwb2ludC0+YXBwZW5kKG1fbm90Q2VsbE1hc2ssIFZhbHVlUmVwOjpsYXRlUmVnKEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5k
KG1fbnVtYmVyVGFnLCBWYWx1ZVJlcDo6bGF0ZVJlZyhHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rl
cikpOwogICAgICAgICBSZWZQdHI8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gZXhjZXB0aW9u
SGFuZGxlID0KICAgICAgICAgICAgIHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRj
aHBvaW50KTsKICAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMTsK
QEAgLTE0MzIyLDEwICsxNDMyMiwxMCBAQCBwcml2YXRlOgogICAgICAgICBMVmFsdWUgcHJpbWl0
aXZlUmVzdWx0OwogICAgICAgICBzd2l0Y2ggKHByaW1pdGl2ZU1vZGUpIHsKICAgICAgICAgY2Fz
ZSBFcXVhbE51bGw6Ci0gICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2
YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZU51bGwpKTsKKyAgICAgICAgICAgIHByaW1pdGl2
ZVJlc3VsdCA9IG1fb3V0LmVxdWFsKHZhbHVlLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZh
bHVlTnVsbCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXF1YWxVbmRlZmlu
ZWQ6Ci0gICAgICAgICAgICBwcmltaXRpdmVSZXN1bHQgPSBtX291dC5lcXVhbCh2YWx1ZSwgbV9v
dXQuY29uc3RJbnQ2NChWYWx1ZVVuZGVmaW5lZCkpOworICAgICAgICAgICAgcHJpbWl0aXZlUmVz
dWx0ID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFsdWVV
bmRlZmluZWQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVxdWFsTnVsbE9y
VW5kZWZpbmVkOgogICAgICAgICAgICAgcHJpbWl0aXZlUmVzdWx0ID0gaXNPdGhlcih2YWx1ZSwg
cHJvdmVuVHlwZShlZGdlKSk7CkBAIC0xNDk0Nyw3ICsxNDk0Nyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKG5vdE51bWJlckNhc2UsIG5vdE51bGxDYXNlKTsKICAgICAgICAg
TFZhbHVlIGlzTnVsbDsKICAgICAgICAgaWYgKHByb3ZlblR5cGUoY2hpbGQpICYgU3BlY090aGVy
KQotICAgICAgICAgICAgaXNOdWxsID0gbV9vdXQuZXF1YWwodmFsdWUsIG1fb3V0LmNvbnN0SW50
NjQoVmFsdWVOdWxsKSk7CisgICAgICAgICAgICBpc051bGwgPSBtX291dC5lcXVhbCh2YWx1ZSwg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgaXNOdWxsID0gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgICAgICBtX291dC5icmFu
Y2goaXNOdWxsLCB1bnN1cmUocmVhbGx5T2JqZWN0Q2FzZSksIHVuc3VyZShub3ROdWxsQ2FzZSkp
OwpAQCAtMTU4MDcsMTMgKzE1ODA3LDEzIEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBpZiAo
TFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY0ludDMyT25seSkpCiAgICAg
ICAgICAgICByZXR1cm4gcHJvdmVuOwotICAgICAgICByZXR1cm4gbV9vdXQuYWJvdmVPckVxdWFs
KGpzVmFsdWUsIG1fdGFnVHlwZU51bWJlcik7CisgICAgICAgIHJldHVybiBtX291dC5hYm92ZU9y
RXF1YWwoanNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgaXNOb3RJbnQz
MihMVmFsdWUganNWYWx1ZSwgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IFNwZWNGdWxsVG9wKQogICAg
IHsKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVj
SW50MzJPbmx5KSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBt
X291dC5iZWxvdyhqc1ZhbHVlLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9v
dXQuYmVsb3coanNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICBMVmFsdWUgdW5ib3hJ
bnQzMihMVmFsdWUganNWYWx1ZSkKICAgICB7CkBAIC0xNTgyMSwzMiArMTU4MjEsMzIgQEAgcHJp
dmF0ZToKICAgICB9CiAgICAgTFZhbHVlIGJveEludDMyKExWYWx1ZSB2YWx1ZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX291dC5hZGQobV9vdXQuemVyb0V4dCh2YWx1ZSwgSW50NjQpLCBtX3Rh
Z1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQuYWRkKG1fb3V0Lnplcm9FeHQodmFs
dWUsIEludDY0KSwgbV9udW1iZXJUYWcpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgaXNDZWxs
T3JNaXNjKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3Ap
CiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwg
U3BlY0NlbGxDaGVjayB8IFNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0g
ICAgICAgIHJldHVybiBtX291dC50ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIG1fb3V0LnRlc3RJc1plcm82NChqc1ZhbHVlLCBtX251bWJlclRh
Zyk7CiAgICAgfQogICAgIExWYWx1ZSBpc05vdENlbGxPck1pc2MoTFZhbHVlIGpzVmFsdWUsIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKICAgICB7CiAgICAgICAgIGlmIChMVmFs
dWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBlLCB+KFNwZWNDZWxsQ2hlY2sgfCBTcGVjTWlz
YykpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKLSAgICAgICAgcmV0dXJuIG1fb3V0LnRl
c3ROb25aZXJvNjQoanNWYWx1ZSwgbV90YWdUeXBlTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG1f
b3V0LnRlc3ROb25aZXJvNjQoanNWYWx1ZSwgbV9udW1iZXJUYWcpOwogICAgIH0KIAogICAgIExW
YWx1ZSB1bmJveERvdWJsZShMVmFsdWUganNWYWx1ZSwgTFZhbHVlKiB1bmJveGVkQXNJbnQgPSBu
dWxscHRyKQogICAgIHsKLSAgICAgICAgTFZhbHVlIGFzSW50ID0gbV9vdXQuYWRkKGpzVmFsdWUs
IG1fdGFnVHlwZU51bWJlcik7CisgICAgICAgIExWYWx1ZSBhc0ludCA9IG1fb3V0LmFkZChqc1Zh
bHVlLCBtX251bWJlclRhZyk7CiAgICAgICAgIGlmICh1bmJveGVkQXNJbnQpCiAgICAgICAgICAg
ICAqdW5ib3hlZEFzSW50ID0gYXNJbnQ7CiAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGFz
SW50LCBEb3VibGUpOwogICAgIH0KICAgICBMVmFsdWUgYm94RG91YmxlKExWYWx1ZSBkb3VibGVW
YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX291dC5zdWIobV9vdXQuYml0Q2FzdChkb3Vi
bGVWYWx1ZSwgSW50NjQpLCBtX3RhZ1R5cGVOdW1iZXIpOworICAgICAgICByZXR1cm4gbV9vdXQu
c3ViKG1fb3V0LmJpdENhc3QoZG91YmxlVmFsdWUsIEludDY0KSwgbV9udW1iZXJUYWcpOwogICAg
IH0KICAgICAKICAgICBMVmFsdWUganNWYWx1ZVRvU3RyaWN0SW50NTIoRWRnZSBlZGdlLCBMVmFs
dWUgYm94ZWRWYWx1ZSkKQEAgLTE1OTM4LDIxICsxNTkzOCwyMSBAQCBwcml2YXRlOgogICAgIHsK
ICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVjQ2Vs
bENoZWNrKSkKICAgICAgICAgICAgIHJldHVybiBwcm92ZW47Ci0gICAgICAgIHJldHVybiBtX291
dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CisgICAgICAgIHJldHVybiBtX291
dC50ZXN0Tm9uWmVybzY0KGpzVmFsdWUsIG1fbm90Q2VsbE1hc2spOwogICAgIH0KICAgICAKICAg
ICBMVmFsdWUgaXNDZWxsKExWYWx1ZSBqc1ZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3Bl
Y0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFs
dWUodHlwZSwgU3BlY0NlbGxDaGVjaykpCiAgICAgICAgICAgICByZXR1cm4gcHJvdmVuOwotICAg
ICAgICByZXR1cm4gbV9vdXQudGVzdElzWmVybzY0KGpzVmFsdWUsIG1fdGFnTWFzayk7CisgICAg
ICAgIHJldHVybiBtX291dC50ZXN0SXNaZXJvNjQoanNWYWx1ZSwgbV9ub3RDZWxsTWFzayk7CiAg
ICAgfQogICAgIAogICAgIExWYWx1ZSBpc05vdE1pc2MoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAgICBpZiAoTFZhbHVlIHByb3Zl
biA9IGlzUHJvdmVuVmFsdWUodHlwZSwgflNwZWNNaXNjKSkKICAgICAgICAgICAgIHJldHVybiBw
cm92ZW47Ci0gICAgICAgIHJldHVybiBtX291dC5hYm92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2
NChUYWdCaXRUeXBlT3RoZXIgfCBUYWdCaXRCb29sIHwgVGFnQml0VW5kZWZpbmVkKSk7CisgICAg
ICAgIHJldHVybiBtX291dC5hYm92ZSh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpN
aXNjVGFnKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc01pc2MoTFZhbHVlIHZhbHVlLCBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkBAIC0xNTk2Nyw3ICsxNTk2Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGlmIChMVmFsdWUgcHJvdmVuID0gaXNQcm92ZW5WYWx1ZSh0eXBl
LCB+U3BlY0Jvb2xlYW4pKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0
dXJuIG1fb3V0LnRlc3ROb25aZXJvNjQoCi0gICAgICAgICAgICBtX291dC5iaXRYb3IoanNWYWx1
ZSwgbV9vdXQuY29uc3RJbnQ2NChWYWx1ZUZhbHNlKSksCisgICAgICAgICAgICBtX291dC5iaXRY
b3IoanNWYWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjpWYWx1ZUZhbHNlKSksCiAgICAg
ICAgICAgICBtX291dC5jb25zdEludDY0KH4xKSk7CiAgICAgfQogICAgIExWYWx1ZSBpc0Jvb2xl
YW4oTFZhbHVlIGpzVmFsdWUsIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBTcGVjRnVsbFRvcCkKQEAg
LTE1OTg1LDcgKzE1OTg1LDcgQEAgcHJpdmF0ZToKICAgICBMVmFsdWUgYm94Qm9vbGVhbihMVmFs
dWUgdmFsdWUpCiAgICAgewogICAgICAgICByZXR1cm4gbV9vdXQuc2VsZWN0KAotICAgICAgICAg
ICAgdmFsdWUsIG1fb3V0LmNvbnN0SW50NjQoVmFsdWVUcnVlKSwgbV9vdXQuY29uc3RJbnQ2NChW
YWx1ZUZhbHNlKSk7CisgICAgICAgICAgICB2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVl
OjpWYWx1ZVRydWUpLCBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OlZhbHVlRmFsc2UpKTsKICAg
ICB9CiAgICAgCiAgICAgTFZhbHVlIGlzTm90T3RoZXIoTFZhbHVlIHZhbHVlLCBTcGVjdWxhdGVk
VHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCkBAIC0xNTk5MywxNiArMTU5OTMsMTYgQEAgcHJpdmF0
ZToKICAgICAgICAgaWYgKExWYWx1ZSBwcm92ZW4gPSBpc1Byb3ZlblZhbHVlKHR5cGUsIH5TcGVj
T3RoZXIpKQogICAgICAgICAgICAgcmV0dXJuIHByb3ZlbjsKICAgICAgICAgcmV0dXJuIG1fb3V0
Lm5vdEVxdWFsKAotICAgICAgICAgICAgbV9vdXQuYml0QW5kKHZhbHVlLCBtX291dC5jb25zdElu
dDY0KH5UYWdCaXRVbmRlZmluZWQpKSwKLSAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoVmFs
dWVOdWxsKSk7CisgICAgICAgICAgICBtX291dC5iaXRBbmQodmFsdWUsIG1fb3V0LmNvbnN0SW50
NjQofkpTVmFsdWU6OlVuZGVmaW5lZFRhZykpLAorICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQ2
NChKU1ZhbHVlOjpWYWx1ZU51bGwpKTsKICAgICB9CiAgICAgTFZhbHVlIGlzT3RoZXIoTFZhbHVl
IHZhbHVlLCBTcGVjdWxhdGVkVHlwZSB0eXBlID0gU3BlY0Z1bGxUb3ApCiAgICAgewogICAgICAg
ICBpZiAoTFZhbHVlIHByb3ZlbiA9IGlzUHJvdmVuVmFsdWUodHlwZSwgU3BlY090aGVyKSkKICAg
ICAgICAgICAgIHJldHVybiBwcm92ZW47CiAgICAgICAgIHJldHVybiBtX291dC5lcXVhbCgKLSAg
ICAgICAgICAgIG1fb3V0LmJpdEFuZCh2YWx1ZSwgbV9vdXQuY29uc3RJbnQ2NCh+VGFnQml0VW5k
ZWZpbmVkKSksCi0gICAgICAgICAgICBtX291dC5jb25zdEludDY0KFZhbHVlTnVsbCkpOworICAg
ICAgICAgICAgbV9vdXQuYml0QW5kKHZhbHVlLCBtX291dC5jb25zdEludDY0KH5KU1ZhbHVlOjpV
bmRlZmluZWRUYWcpKSwKKyAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6VmFs
dWVOdWxsKSk7CiAgICAgfQogICAgIAogICAgIExWYWx1ZSBpc1Byb3ZlblZhbHVlKFNwZWN1bGF0
ZWRUeXBlIHByb3ZlblR5cGUsIFNwZWN1bGF0ZWRUeXBlIHdhbnRlZFR5cGUpCkBAIC0xNzcyMiw4
ICsxNzcyMiw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgTFZhbHVlIG1fY2FsbEZyYW1lOwogICAg
IExWYWx1ZSBtX2NhcHR1cmVkOwotICAgIExWYWx1ZSBtX3RhZ1R5cGVOdW1iZXI7Ci0gICAgTFZh
bHVlIG1fdGFnTWFzazsKKyAgICBMVmFsdWUgbV9udW1iZXJUYWc7CisgICAgTFZhbHVlIG1fbm90
Q2VsbE1hc2s7CiAgICAgCiAgICAgSGFzaE1hcDxOb2RlKiwgTG93ZXJlZE5vZGVWYWx1ZT4gbV9p
bnQzMlZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX3N0cmlj
dEludDUyVmFsdWVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3
ICs1Miw3IEBAIHN0YXRpYyB2b2lkIHJlYm94QWNjb3JkaW5nVG9Gb3JtYXQoCiAgICAgc3dpdGNo
IChmb3JtYXQpIHsKICAgICBjYXNlIERhdGFGb3JtYXRJbnQzMjogewogICAgICAgICBqaXQuemVy
b0V4dGVuZDMyVG9QdHIodmFsdWUsIHZhbHVlKTsKLSAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6
dGFnVHlwZU51bWJlclJlZ2lzdGVyLCB2YWx1ZSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
NzMsNyArNzMsNyBAQCBzdGF0aWMgdm9pZCByZWJveEFjY29yZGluZ1RvRm9ybWF0KAogCiAgICAg
Y2FzZSBEYXRhRm9ybWF0Qm9vbGVhbjogewogICAgICAgICBqaXQuemVyb0V4dGVuZDMyVG9QdHIo
dmFsdWUsIHZhbHVlKTsKLSAgICAgICAgaml0Lm9yMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihWYWx1ZUZhbHNlKSwgdmFsdWUpOworICAgICAgICBqaXQub3IzMihNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCB2YWx1ZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjM3LDggKzIzNyw4IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVTdHVi
KAogICAgIAogICAgIC8vIEdldCB0aGUgY2FsbCBmcmFtZSBhbmQgdGFnIHRoaW5naWVzLgogICAg
IC8vIFJlc3RvcmUgdGhlIGV4aXRpbmcgZnVuY3Rpb24ncyBjYWxsRnJhbWUgdmFsdWUgaW50byBh
IHJlZ1Q0Ci0gICAgaml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChUYWdUeXBl
TnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBqaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KFRhZ01hc2spLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOworICAgIGppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1
ZTo6TnVtYmVyVGFnKSwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIGppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6Tm90Q2VsbE1hc2spLCBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICAgICAKICAgICAvLyBEbyBzb21lIHZhbHVlIHBy
b2ZpbGluZy4KICAgICBpZiAoZXhpdC5tX2Rlc2NyaXB0b3ItPm1fcHJvZmlsZURhdGFGb3JtYXQg
IT0gRGF0YUZvcm1hdE5vbmUpIHsKQEAgLTQ1MSwxMSArNDUxLDExIEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVTdHViKAogICAgIH0KIAogICAgIGlmIChleGl0LmlzRXhjZXB0aW9uSGFuZGxlcigpKSB7
Ci0gICAgICAgIFJlZ2lzdGVyQXRPZmZzZXQqIHZtQ2FsbGVlU2F2ZSA9IHZtQ2FsbGVlU2F2ZXMt
PmZpbmQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgaml0LnN0b3Jl
NjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhHUFJJbmZvOjpyZWdUMSwgdm1DYWxsZWVTYXZlLT5vZmZzZXQoKSkpOworICAgICAgICBSZWdp
c3RlckF0T2Zmc2V0KiB2bUNhbGxlZVNhdmUgPSB2bUNhbGxlZVNhdmVzLT5maW5kKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6bnVtYmVy
VGFnUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNh
bGxlZVNhdmUtPm9mZnNldCgpKSk7CiAKLSAgICAgICAgdm1DYWxsZWVTYXZlID0gdm1DYWxsZWVT
YXZlcy0+ZmluZChHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotICAgICAgICBqaXQuc3RvcmU2
NChHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUklu
Zm86OnJlZ1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgpKSk7CisgICAgICAgIHZtQ2FsbGVlU2F2
ZSA9IHZtQ2FsbGVlU2F2ZXMtPmZpbmQoR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7Cisg
ICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OnJlZ1QxLCB2bUNhbGxlZVNhdmUtPm9mZnNldCgpKSk7
CiAgICAgfQogCiAgICAgc2l6ZV90IGJhc2VsaW5lVmlydHVhbFJlZ2lzdGVyc0ZvckNhbGxlZVNh
dmVzID0gYmFzZWxpbmVDb2RlQmxvY2stPmNhbGxlZVNhdmVTcGFjZUFzVmlydHVhbFJlZ2lzdGVy
cygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxlZUJpdHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbGVl
Qml0cy5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbGVlQml0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgc3RhdGljIHZvaWQqIGJveFdhc20oV2Fz
bTo6Q2FsbGVlKiBjYWxsZWUpCiAgICAgewotICAgICAgICBDYWxsZWVCaXRzIHJlc3VsdChyZWlu
dGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oY2FsbGVlKSB8
IFRhZ0JpdHNXYXNtKSk7CisgICAgICAgIENhbGxlZUJpdHMgcmVzdWx0KHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihjYWxsZWUpIHwgSlNWYWx1ZTo6
V2FzbVRhZykpOwogICAgICAgICBBU1NFUlQocmVzdWx0LmlzV2FzbSgpKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdC5yYXdQdHIoKTsKICAgICB9CkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGlzV2FzbSgpIGNvbnN0CiAgICAgewogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICAgICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9wdHIpICYgVGFnV2Fz
bU1hc2spID09IFRhZ0JpdHNXYXNtOworICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90PihtX3B0cikgJiBKU1ZhbHVlOjpXYXNtTWFzaykgPT0gSlNWYWx1ZTo6V2FzbVRh
ZzsKICNlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgV2FzbTo6Q2FsbGVlKiBhc1dhc21DYWxsZWUoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzV2FzbSgpKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V2FzbTo6Q2FsbGVlKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1fcHRyKSAmIH5U
YWdCaXRzV2FzbSk7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdhc206OkNhbGxl
ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtX3B0cikgJiB+SlNWYWx1ZTo6V2FzbVRh
Zyk7CiAgICAgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNz
ZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDIy
ICsxMTUsMjIgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSW50MzIoRwogCiB2
b2lkIEFzc2VtYmx5SGVscGVyczo6aml0QXNzZXJ0SXNKU0ludDMyKEdQUlJlZyBncHIpCiB7Ci0g
ICAgSnVtcCBjaGVja0pTSW50MzIgPSBicmFuY2g2NChBYm92ZU9yRXF1YWwsIGdwciwgR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5j
aDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CiAgICAg
YWJvcnRXaXRoUmVhc29uKEFISXNOb3RKU0ludDMyKTsKICAgICBjaGVja0pTSW50MzIubGluayh0
aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNOdW1iZXIoR1BS
UmVnIGdwcikKIHsKLSAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
KyAgICBKdW1wIGNoZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIGFib3J0V2l0aFJl
YXNvbihBSElzTm90SlNOdW1iZXIpOwogICAgIGNoZWNrSlNOdW1iZXIubGluayh0aGlzKTsKIH0K
IAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElzSlNEb3VibGUoR1BSUmVnIGdwcikK
IHsKLSAgICBKdW1wIGNoZWNrSlNJbnQzMiA9IGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgIEp1bXAgY2hlY2tKU051bWJlciA9
IGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIpOworICAgIEp1bXAgY2hlY2tKU0ludDMyID0gYnJhbmNoNjQoQWJv
dmVPckVxdWFsLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICBKdW1wIGNo
ZWNrSlNOdW1iZXIgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwg
R1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOwogICAgIGNoZWNrSlNJbnQzMi5saW5rKHRoaXMp
OwogICAgIGFib3J0V2l0aFJlYXNvbihBSElzTm90SlNEb3VibGUpOwogICAgIGNoZWNrSlNOdW1i
ZXIubGluayh0aGlzKTsKQEAgLTEzOCwyMCArMTM4LDIwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJz
OjpqaXRBc3NlcnRJc0pTRG91YmwKIAogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmppdEFzc2VydElz
Q2VsbChHUFJSZWcgZ3ByKQogewotICAgIEp1bXAgY2hlY2tDZWxsID0gYnJhbmNoVGVzdDY0KE1h
Y3JvQXNzZW1ibGVyOjpaZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAg
SnVtcCBjaGVja0NlbGwgPSBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwg
R1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAgICAgYWJvcnRXaXRoUmVhc29uKEFISXNO
b3RDZWxsKTsKICAgICBjaGVja0NlbGwubGluayh0aGlzKTsKIH0KIAogdm9pZCBBc3NlbWJseUhl
bHBlcnM6OmppdEFzc2VydFRhZ3NJblBsYWNlKCkKIHsKLSAgICBKdW1wIG9rID0gYnJhbmNoNjQo
RXF1YWwsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgVHJ1c3RlZEltbTY0KFRhZ1R5
cGVOdW1iZXIpKTsKLSAgICBhYm9ydFdpdGhSZWFzb24oQUhUYWdUeXBlTnVtYmVyTm90SW5QbGFj
ZSk7CisgICAgSnVtcCBvayA9IGJyYW5jaDY0KEVxdWFsLCBHUFJJbmZvOjpudW1iZXJUYWdSZWdp
c3RlciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOworICAgIGFib3J0V2l0aFJl
YXNvbihBSE51bWJlclRhZ05vdEluUGxhY2UpOwogICAgIGJyZWFrcG9pbnQoKTsKICAgICBvay5s
aW5rKHRoaXMpOwogICAgIAotICAgIG9rID0gYnJhbmNoNjQoRXF1YWwsIEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlciwgVHJ1c3RlZEltbTY0KFRhZ01hc2spKTsKLSAgICBhYm9ydFdpdGhSZWFzb24o
QUhUYWdNYXNrTm90SW5QbGFjZSk7CisgICAgb2sgPSBicmFuY2g2NChFcXVhbCwgR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7
CisgICAgYWJvcnRXaXRoUmVhc29uKEFITm90Q2VsbE1hc2tOb3RJblBsYWNlKTsKICAgICBvay5s
aW5rKHRoaXMpOwogfQogI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAgLTc1MSw4ICs3NTEsNyBA
QCB2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiAKICAgICBub3REb3Vi
bGUubGluayh0aGlzKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIHN0YXRpY19hc3NlcnQoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVUcnVlKSA9PSBWYWx1ZVRydWUsICIiKTsKLSAgICBjb21w
YXJlNjQoaW52ZXJ0ID8gTm90RXF1YWwgOiBFcXVhbCwgdmFsdWUuZ3ByKCksIFRydXN0ZWRJbW0z
MihWYWx1ZVRydWUpLCByZXN1bHQpOworICAgIGNvbXBhcmU2NChpbnZlcnQgPyBOb3RFcXVhbCA6
IEVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlVHJ1ZSksIHJl
c3VsdCk7CiAjZWxzZQogICAgIG1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3Rl
ZEltbTMyKDApLCByZXN1bHQpOwogICAgIGRvbmUuYXBwZW5kKGJyYW5jaElmTm90Qm9vbGVhbih2
YWx1ZSwgSW52YWxpZEdQUlJlZykpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsMTAgKzMz
NCwxMCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAjaWYgQ1BVKEFSTTY0
KQotICAgICAgICBwdXNoUGFpcihHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgICAgIHB1c2hQYWlyKEdQUkluZm86Om51bWJlclRh
Z1JlZ2lzdGVyLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbHNlCi0gICAgICAg
IHB1c2goR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcHVzaChHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgICAgICBwdXNoKEdQUkluZm86Om51bWJlclRhZ1Jl
Z2lzdGVyKTsKKyAgICAgICAgcHVzaChHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNl
bmRpZgogICAgICAgICBlbWl0TWF0ZXJpYWxpemVUYWdDaGVja1JlZ2lzdGVycygpOwogI2VuZGlm
CkBAIC0zNTIsMTAgKzM1MiwxMCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQp
CiAjaWYgQ1BVKEFSTTY0KQotICAgICAgICBwb3BQYWlyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcG9wUGFpcihHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3Rlcik7CiAj
ZWxzZQotICAgICAgICBwb3AoR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLSAgICAgICAgcG9w
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgICAgIHBvcChHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcG9wKEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKICNlbmRpZgogI2VuZGlmCiAgICAgfQpAQCAtNDUyLDggKzQ1Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVtaXRNYXRlcmlhbGl6ZVRhZ0NoZWNrUmVnaXN0ZXJzKCkKICAgICB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0
KFRhZ1R5cGVOdW1iZXIpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAg
ICBvclB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFRhZ0JpdFR5cGVPdGhlciksIEdQ
UkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
KyAgICAgICAgbW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJl
clRhZyksIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAgICAgICAgb3JQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpPdGhlclRhZyksIEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKICNlbmRpZgogICAg
IH0KIApAQCAtNzAxLDggKzcwMSw4IEBAIHB1YmxpYzoKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAgICAgICAgIHJl
dHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8sIHJlZywgVHJ1c3RlZEltbTY0
KFRhZ01hc2spKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVn
LCBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRl
c3Q2NChOb25aZXJvLCByZWcsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpOb3RDZWxsTWFzaykpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWcsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpD
ZWxsVGFnKSk7CkBAIC03MjIsOCArNzIyLDggQEAgcHVibGljOgogICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJzKQotICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVnLCBUcnVzdGVkSW1tNjQo
VGFnTWFzaykpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWcsIEdQ
UkluZm86Om5vdENlbGxNYXNrUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KFplcm8sIHJlZywgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok5vdENlbGxNYXNrKSk7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0obW9kZSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
QEAgLTc0Miw4ICs3NDIsOCBAQCBwdWJsaWM6CiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAg
ICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0gICAgICAgIGFuZDY0KFRydXN0ZWRJ
bW0zMih+VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7Ci0gICAgICAgIHJldHVybiBicmFuY2g2
NChFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworICAgICAgICBhbmQ2
NChUcnVzdGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHRlbXBHUFIpOworICAgICAg
ICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjpW
YWx1ZU51bGwpKTsKICNlbHNlCiAgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRh
Z0dQUigpLCB0ZW1wR1BSKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCB0ZW1wR1BS
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOwpAQCAtNzU0LDggKzc1NCw4IEBAIHB1
YmxpYzoKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgbW92ZShyZWdzLmdwcigp
LCB0ZW1wR1BSKTsKLSAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQp
LCB0ZW1wR1BSKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNW
YWx1ZTo6VW5kZWZpbmVkVGFnKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChO
b3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlTnVsbCkpOwogI2Vs
c2UKICAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIp
OwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpOdWxsVGFnKSk7CkBAIC03NjYsOCArNzY2LDggQEAgcHVibGljOgogICAgIHsK
ICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0ZXJz
KQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVP
ckVxdWFsLCBncHIsIFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEFib3ZlT3JFcXVhbCwgZ3ByLCBUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6TnVtYmVyVGFnKSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0o
bW9kZSk7CiAgICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKTsKQEAgLTc4Nyw4ICs3ODcsOCBAQCBwdWJsaWM6CiAgICAgewog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMp
Ci0gICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQoQmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEJlbG93LCBncHIsIFRy
dXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoNjQo
QmVsb3csIGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4g
YnJhbmNoNjQoQmVsb3csIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwog
I2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNo
MzIoTm90RXF1YWwsIGdwciwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CkBAIC04
MjIsOCArODIyLDggQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoSWZOdW1iZXIoR1BSUmVnIGdw
ciwgVGFnUmVnaXN0ZXJzTW9kZSBtb2RlID0gSGF2ZVRhZ1JlZ2lzdGVycykKICAgICB7CiAgICAg
ICAgIGlmIChtb2RlID09IEhhdmVUYWdSZWdpc3RlcnMpCi0gICAgICAgICAgICByZXR1cm4gYnJh
bmNoVGVzdDY0KE5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChOb25aZXJvLCBncHIsIFRydXN0ZWRJbW02NChU
YWdUeXBlTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE5vblplcm8s
IGdwciwgR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNo
VGVzdDY0KE5vblplcm8sIGdwciwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwog
ICAgIH0KICNlbmRpZgogICAgIApAQCAtODQ0LDggKzg0NCw4IEBAIHB1YmxpYzoKICAgICBKdW1w
IGJyYW5jaElmTm90TnVtYmVyKEdQUlJlZyBncHIsIFRhZ1JlZ2lzdGVyc01vZGUgbW9kZSA9IEhh
dmVUYWdSZWdpc3RlcnMpCiAgICAgewogICAgICAgICBpZiAobW9kZSA9PSBIYXZlVGFnUmVnaXN0
ZXJzKQotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86
OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVy
bywgZ3ByLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCBncHIsIFRydXN0ZWRJbW02NChKU1ZhbHVl
OjpOdW1iZXJUYWcpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODUzLDggKzg1Myw4IEBAIHB1Ymxp
YzoKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaWYgKG1vZGUgPT0gSGF2ZVRh
Z1JlZ2lzdGVycykKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVybywgcmVncy5n
cHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3Q2NChaZXJvLCByZWdzLmdwcigpLCBUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlcikp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChaZXJvLCByZWdzLmdwcigpLCBHUFJJ
bmZvOjpudW1iZXJUYWdSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVy
bywgcmVncy5ncHIoKSwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZykpOwogI2Vsc2UK
ICAgICAgICAgVU5VU0VEX1BBUkFNKG1vZGUpOwogICAgICAgICByZXR1cm4gYnJhbmNoMzIoQWJv
dmVPckVxdWFsLCByZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFn
KSk7CkBAIC04NjcsNyArODY3LDcgQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgIEFTU0VSVCh0ZW1wR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICBtb3ZlKGdwciwg
dGVtcEdQUik7Ci0gICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
PihWYWx1ZUZhbHNlKSksIHRlbXBHUFIpOworICAgICAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVGYWxzZSksIHRlbXBHUFIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KFplcm8sIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKTsK
ICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh0ZW1wR1BSKTsKQEAgLTg5MSw3ICs4OTEsNyBA
QCBwdWJsaWM6CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgQVNTRVJUKHRlbXBHUFIgIT0g
SW52YWxpZEdQUlJlZyk7CiAgICAgICAgIG1vdmUoZ3ByLCB0ZW1wR1BSKTsKLSAgICAgICAgeG9y
NjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgdGVtcEdQ
Uik7CisgICAgICAgIHhvcjY0KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgdGVt
cEdQUik7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgdGVtcEdQUiwgVHJ1
c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpOwogI2Vsc2UKICAgICAgICAgVU5V
U0VEX1BBUkFNKHRlbXBHUFIpOwpAQCAtMTI2NCwxNiArMTI2NCwxNiBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBtb3ZlRG91YmxlVG82NChmcHIsIGdwcik7CiAgICAgICAgIGlmIChtb2RlID09
IERvTm90SGF2ZVRhZ1JlZ2lzdGVycykKLSAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChU
YWdUeXBlTnVtYmVyKSwgZ3ByKTsKKyAgICAgICAgICAgIHN1YjY0KFRydXN0ZWRJbW02NChKU1Zh
bHVlOjpOdW1iZXJUYWcpLCBncHIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN1YjY0
KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZ3ByKTsKKyAgICAgICAgICAgIHN1YjY0
KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBncHIpOwogICAgICAgICAgICAgaml0QXNzZXJ0
SXNKU0RvdWJsZShncHIpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQog
ICAgIEZQUlJlZyB1bmJveERvdWJsZVdpdGhvdXRBc3NlcnRpb25zKEdQUlJlZyBncHIsIEdQUlJl
ZyByZXN1bHRHUFIsIEZQUlJlZyBmcHIpCiAgICAgewotICAgICAgICBhZGQ2NChHUFJJbmZvOjp0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIGdwciwgcmVzdWx0R1BSKTsKKyAgICAgICAgYWRkNjQoR1BS
SW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGdwciwgcmVzdWx0R1BSKTsKICAgICAgICAgbW92ZTY0
VG9Eb3VibGUocmVzdWx0R1BSLCBmcHIpOwogICAgICAgICByZXR1cm4gZnByOwogICAgIH0KQEAg
LTEzMTAsNyArMTMxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIGlzSW50MzIubGlu
ayh0aGlzKTsKICAgICAgICAgemVyb0V4dGVuZDMyVG9QdHIoc291cmNlLCB0YXJnZXQpOwotICAg
ICAgICBvcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgdGFyZ2V0KTsKKyAgICAg
ICAgb3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgdGFyZ2V0KTsKICAgICAgICAgCiAg
ICAgICAgIGRvbmUubGluayh0aGlzKTsKICAgICB9CkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBib3hCb29sZWFuUGF5bG9hZChHUFJSZWcgYm9vbEdQUiwgR1BSUmVnIHBh
eWxvYWRHUFIpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIGFkZDMyKFRydXN0
ZWRJbW0zMihWYWx1ZUZhbHNlKSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7CisgICAgICAgIGFkZDMy
KFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwgYm9vbEdQUiwgcGF5bG9hZEdQUik7
CiAjZWxzZQogICAgICAgICBtb3ZlKGJvb2xHUFIsIHBheWxvYWRHUFIpOwogI2VuZGlmCkBAIC0x
MzUzLDcgKzEzNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBib3hCb29sZWFuUGF5bG9hZChib29s
IHZhbHVlLCBHUFJSZWcgcGF5bG9hZEdQUikKICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAg
ICAgICAgbW92ZShUcnVzdGVkSW1tMzIoVmFsdWVGYWxzZSArIHZhbHVlKSwgcGF5bG9hZEdQUik7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UgKyB2YWx1ZSks
IHBheWxvYWRHUFIpOwogI2Vsc2UKICAgICAgICAgbW92ZShUcnVzdGVkSW1tMzIodmFsdWUpLCBw
YXlsb2FkR1BSKTsKICNlbmRpZgpAQCAtMTM4MCw5ICsxMzgwLDkgQEAgcHVibGljOgogI2lmIFVT
RShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChtb2RlID09IERvTm90SGF2ZVRhZ1JlZ2lzdGVycykg
ewogICAgICAgICAgICAgbW92ZShpbnRHUFIsIGJveGVkUmVncy5ncHIoKSk7Ci0gICAgICAgICAg
ICBvcjY0KFRydXN0ZWRJbW02NChUYWdUeXBlTnVtYmVyKSwgYm94ZWRSZWdzLmdwcigpKTsKKyAg
ICAgICAgICAgIG9yNjQoVHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIGJveGVkUmVn
cy5ncHIoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgb3I2NChHUFJJbmZvOjp0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIGludEdQUiwgYm94ZWRSZWdzLmdwcigpKTsKKyAgICAgICAgICAg
IG9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIGludEdQUiwgYm94ZWRSZWdzLmdwcigp
KTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShtb2RlKTsKICAgICAgICAgbW92ZShpbnRH
UFIsIGJveGVkUmVncy5wYXlsb2FkR1BSKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZURhdGEuaAkocmV2aXNpb24gMjUwMDg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtUGFzc2Vk
QXJncyB7IFVJTlRfTUFYIH07CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBSZWdpc3Rlck1hcDxW
YWx1ZVJlY292ZXJ5PiByZWdpc3RlcnM7Ci0gICAgR1BSUmVnIHRhZ1R5cGVOdW1iZXIgeyBJbnZh
bGlkR1BSUmVnIH07CisgICAgR1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVyIHsgSW52YWxpZEdQUlJl
ZyB9OwogCiAgICAgdm9pZCBzZXR1cENhbGxlZVNhdmVSZWdpc3RlcnMoQ29kZUJsb2NrKik7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXI2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVT
aHVmZmxlcjY0LmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9DYWxsRnJhbWVTaHVmZmxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04OCwxMSArODgsMTEg
QEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAg
ICAgIGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3ByKCksCiAgICAgICAgICAgICAgICAgY2Fj
aGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CiAgICAgICAgICAgICBtX2xvY2tlZFJlZ2lz
dGVycy5zZXQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7Ci0gICAgICAgICAgICBp
ZiAodHJ5QWNxdWlyZVRhZ1R5cGVOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0
KG1fdGFnVHlwZU51bWJlciwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CisgICAg
ICAgICAgICBpZiAodHJ5QWNxdWlyZU51bWJlclRhZ1JlZ2lzdGVyKCkpCisgICAgICAgICAgICAg
ICAgbV9qaXQub3I2NChtX251bWJlclRhZ1JlZ2lzdGVyLCBjYWNoZWRSZWNvdmVyeS5yZWNvdmVy
eSgpLmdwcigpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8vIFdlIGhh
dmUgdG8gZG8gdGhpcyB0aGUgaGFyZCB3YXkKLSAgICAgICAgICAgICAgICBtX2ppdC5vcjY0KE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksCisgICAgICAgICAgICAg
ICAgbV9qaXQub3I2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJl
clRhZyksCiAgICAgICAgICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZ3By
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9sb2NrZWRSZWdpc3RlcnMuY2xlYXIo
Y2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5ncHIoKSk7CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOgogICAgICAgICAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiICAgKiBCb3hpbmcgIiwgY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKSk7Ci0gICAg
ICAgICAgICBtX2ppdC5hZGQzMihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKFZhbHVlRmFs
c2UpLAorICAgICAgICAgICAgbV9qaXQuYWRkMzIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpWYWx1ZUZhbHNlKSwKICAgICAgICAgICAgICAgICBjYWNoZWRSZWNvdmVyeS5y
ZWNvdmVyeSgpLmdwcigpKTsKICAgICAgICAgICAgIGNhY2hlZFJlY292ZXJ5LnNldFJlY292ZXJ5
KAogICAgICAgICAgICAgICAgIFZhbHVlUmVjb3Zlcnk6OmluR1BSKGNhY2hlZFJlY292ZXJ5LnJl
Y292ZXJ5KCkuZ3ByKCksIERhdGFGb3JtYXRKUykpOwpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9p
ZCBDYWxsRnJhbWVTaHVmZmxlcjo6ZW1pdEJveChDYWNoZWRSZQogICAgICAgICAgICAgbV9qaXQu
cHVyaWZ5TmFOKGNhY2hlZFJlY292ZXJ5LnJlY292ZXJ5KCkuZnByKCkpOwogICAgICAgICAgICAg
bV9qaXQubW92ZURvdWJsZVRvNjQoY2FjaGVkUmVjb3ZlcnkucmVjb3ZlcnkoKS5mcHIoKSwgcmVz
dWx0R1BSKTsKICAgICAgICAgICAgIG1fbG9ja2VkUmVnaXN0ZXJzLnNldChyZXN1bHRHUFIpOwot
ICAgICAgICAgICAgaWYgKHRyeUFjcXVpcmVUYWdUeXBlTnVtYmVyKCkpCi0gICAgICAgICAgICAg
ICAgbV9qaXQuc3ViNjQobV90YWdUeXBlTnVtYmVyLCByZXN1bHRHUFIpOworICAgICAgICAgICAg
aWYgKHRyeUFjcXVpcmVOdW1iZXJUYWdSZWdpc3RlcigpKQorICAgICAgICAgICAgICAgIG1faml0
LnN1YjY0KG1fbnVtYmVyVGFnUmVnaXN0ZXIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9qaXQuc3ViNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02
NChUYWdUeXBlTnVtYmVyKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdWI2
NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIHJlc3Vs
dEdQUik7CiAgICAgICAgICAgICBtX2xvY2tlZFJlZ2lzdGVycy5jbGVhcihyZXN1bHRHUFIpOwog
ICAgICAgICAgICAgdXBkYXRlUmVjb3ZlcnkoY2FjaGVkUmVjb3ZlcnksIFZhbHVlUmVjb3Zlcnk6
OmluR1BSKHJlc3VsdEdQUiwgRGF0YUZvcm1hdEpTKSk7CiAgICAgICAgICAgICBpZiAodmVyYm9z
ZSkKQEAgLTM0OSwxOCArMzQ5LDE4IEBAIHZvaWQgQ2FsbEZyYW1lU2h1ZmZsZXI6OmVtaXREaXNw
bGFjZShDYWMKICAgICBBU1NFUlQobV9yZWdpc3RlcnNbd2FudGVkUmVnXSA9PSAmY2FjaGVkUmVj
b3ZlcnkpOwogfQogICAgIAotYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZVRhZ1R5
cGVOdW1iZXIoKQorYm9vbCBDYWxsRnJhbWVTaHVmZmxlcjo6dHJ5QWNxdWlyZU51bWJlclRhZ1Jl
Z2lzdGVyKCkKIHsKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCisg
ICAgaWYgKG1fbnVtYmVyVGFnUmVnaXN0ZXIgIT0gSW52YWxpZEdQUlJlZykKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBtX3RhZ1R5cGVOdW1iZXIgPSBnZXRGcmVlR1BSKCk7CisgICAgbV9u
dW1iZXJUYWdSZWdpc3RlciA9IGdldEZyZWVHUFIoKTsKIAotICAgIGlmIChtX3RhZ1R5cGVOdW1i
ZXIgPT0gSW52YWxpZEdQUlJlZykKKyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciA9PSBJbnZh
bGlkR1BSUmVnKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xvY2tlZFJlZ2lzdGVy
cy5zZXQobV90YWdUeXBlTnVtYmVyKTsKLSAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIG1fdGFnVHlwZU51bWJlcik7CisgICAgbV9sb2Nr
ZWRSZWdpc3RlcnMuc2V0KG1fbnVtYmVyVGFnUmVnaXN0ZXIpOworICAgIG1faml0Lm1vdmUoTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpOdW1iZXJUYWcpLCBtX251bWJlclRh
Z1JlZ2lzdGVyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5jcHAJKHJldmlzaW9uIDI1MDA4NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw5ICs3OSw5IEBAIENhbGxGcmFtZVNodWZmbGVyOjpDYWxsRnJhbWVT
aHVmZmxlcihDQ2EKICAgICAgICAgICAgIGFkZE5ldyhyZWcuZnByKCksIGRhdGEucmVnaXN0ZXJz
W3JlZ10pOwogICAgIH0KIAotICAgIG1fdGFnVHlwZU51bWJlciA9IGRhdGEudGFnVHlwZU51bWJl
cjsKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJSZWcpCi0gICAgICAgIGxv
Y2tHUFIobV90YWdUeXBlTnVtYmVyKTsKKyAgICBtX251bWJlclRhZ1JlZ2lzdGVyID0gZGF0YS5u
dW1iZXJUYWdSZWdpc3RlcjsKKyAgICBpZiAobV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlk
R1BSUmVnKQorICAgICAgICBsb2NrR1BSKG1fbnVtYmVyVGFnUmVnaXN0ZXIpOwogI2VuZGlmCiB9
CiAKQEAgLTIxNiw4ICsyMTYsOCBAQCB2b2lkIENhbGxGcmFtZVNodWZmbGVyOjpkdW1wKFByaW50
U3RyZWFtCiAgICAgaWYgKG1fbmV3RnJhbWVPZmZzZXQpCiAgICAgICAgIG91dC5wcmludCgiICAg
TmV3IGZyYW1lIG9mZnNldCBpcyAiLCBtX25ld0ZyYW1lT2Zmc2V0LCAiXG4iKTsKICNpZiBVU0Uo
SlNWQUxVRTY0KQotICAgIGlmIChtX3RhZ1R5cGVOdW1iZXIgIT0gSW52YWxpZEdQUlJlZykKLSAg
ICAgICAgb3V0LnByaW50KCIgICBUYWdUeXBlTnVtYmVyIGlzIGN1cnJlbnRseSBpbiAiLCBtX3Rh
Z1R5cGVOdW1iZXIsICJcbiIpOworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFs
aWRHUFJSZWcpCisgICAgICAgIG91dC5wcmludCgiICAgTnVtYmVyVGFnIGlzIGN1cnJlbnRseSBp
biAiLCBtX251bWJlclRhZ1JlZ2lzdGVyLCAiXG4iKTsKICNlbmRpZgogfQogCkBAIC02OTgsOCAr
Njk4LDggQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAgICAgfQogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IEludmFsaWRHUFJS
ZWcgJiYgbV9uZXdSZWdpc3RlcnNbbV90YWdUeXBlTnVtYmVyXSkKLSAgICAgICAgcmVsZWFzZUdQ
UihtX3RhZ1R5cGVOdW1iZXIpOworICAgIGlmIChtX251bWJlclRhZ1JlZ2lzdGVyICE9IEludmFs
aWRHUFJSZWcgJiYgbV9uZXdSZWdpc3RlcnNbbV9udW1iZXJUYWdSZWdpc3Rlcl0pCisgICAgICAg
IHJlbGVhc2VHUFIobV9udW1iZXJUYWdSZWdpc3Rlcik7CiAjZW5kaWYKIAogICAgIC8vIEhhbmRs
ZSAyKSBieSBsb2FkaW5nIGFsbCByZWdpc3RlcnMuIFdlIGRvbid0IGhhdmUgdG8gZG8gYW55CkBA
IC03MTcsOCArNzE3LDggQEAgdm9pZCBDYWxsRnJhbWVTaHVmZmxlcjo6cHJlcGFyZUFueSgpCiAg
ICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICBpZiAobV90YWdUeXBlTnVtYmVyICE9IElu
dmFsaWRHUFJSZWcpCi0gICAgICAgIHJlbGVhc2VHUFIobV90YWdUeXBlTnVtYmVyKTsKKyAgICBp
ZiAobV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnKQorICAgICAgICByZWxlYXNl
R1BSKG1fbnVtYmVyVGFnUmVnaXN0ZXIpOwogI2VuZGlmCiAKICAgICAvLyBBdCB0aGlzIHBvaW50
LCB3ZSBoYXZlIHJlYWQgZXZlcnl0aGluZyB3ZSBjYXJlZCBhYm91dCBmcm9tIHRoZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ2FsbEZyYW1lU2h1ZmZsZXIuaAkocmV2aXNp
b24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DYWxsRnJhbWVTaHVmZmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTIsOSArNDEyLDkgQEAgcHJpdmF0ZToKICAgICBSZWdp
c3Rlck1hcDxDYWNoZWRSZWNvdmVyeSo+IG1fcmVnaXN0ZXJzOwogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBtdXRhYmxlIEdQUlJlZyBtX3RhZ1R5cGVOdW1iZXI7CisgICAgbXV0YWJsZSBHUFJS
ZWcgbV9udW1iZXJUYWdSZWdpc3RlcjsKIAotICAgIGJvb2wgdHJ5QWNxdWlyZVRhZ1R5cGVOdW1i
ZXIoKTsKKyAgICBib29sIHRyeUFjcXVpcmVOdW1iZXJUYWdSZWdpc3RlcigpOwogI2VuZGlmCiAK
ICAgICAvLyBUaGlzIHN0b3JlcywgZm9yIGVhY2ggcmVnaXN0ZXIsIGluZm9ybWF0aW9uIGFib3V0
IHRoZSByZWNvdmVyeQpAQCAtNDQ4LDExICs0NDgsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgfQog
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYgKCFub25UZW1wICYmIG1fdGFnVHlwZU51
bWJlciAhPSBJbnZhbGlkR1BSUmVnICYmIGNoZWNrKFJlZyB7IG1fdGFnVHlwZU51bWJlciB9KSkg
ewotICAgICAgICAgICAgQVNTRVJUKG1fbG9ja2VkUmVnaXN0ZXJzLmdldChtX3RhZ1R5cGVOdW1i
ZXIpKTsKLSAgICAgICAgICAgIG1fbG9ja2VkUmVnaXN0ZXJzLmNsZWFyKG1fdGFnVHlwZU51bWJl
cik7Ci0gICAgICAgICAgICBub25UZW1wID0gUmVnIHsgbV90YWdUeXBlTnVtYmVyIH07Ci0gICAg
ICAgICAgICBtX3RhZ1R5cGVOdW1iZXIgPSBJbnZhbGlkR1BSUmVnOworICAgICAgICBpZiAoIW5v
blRlbXAgJiYgbV9udW1iZXJUYWdSZWdpc3RlciAhPSBJbnZhbGlkR1BSUmVnICYmIGNoZWNrKFJl
ZyB7IG1fbnVtYmVyVGFnUmVnaXN0ZXIgfSkpIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2xvY2tl
ZFJlZ2lzdGVycy5nZXQobV9udW1iZXJUYWdSZWdpc3RlcikpOworICAgICAgICAgICAgbV9sb2Nr
ZWRSZWdpc3RlcnMuY2xlYXIobV9udW1iZXJUYWdSZWdpc3Rlcik7CisgICAgICAgICAgICBub25U
ZW1wID0gUmVnIHsgbV9udW1iZXJUYWdSZWdpc3RlciB9OworICAgICAgICAgICAgbV9udW1iZXJU
YWdSZWdpc3RlciA9IEludmFsaWRHUFJSZWc7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBy
ZXR1cm4gbm9uVGVtcDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZp
c2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQwOCw4ICs0MDgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBy
ZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQ
UlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6ZWJwOwotICAgIHN0YXRpYyBj
b25zdGV4cHIgR1BSUmVnIHRhZ1R5cGVOdW1iZXJSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE0
OwotICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IFg4NlJlZ2lz
dGVyczo6cjE1OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG51bWJlclRhZ1JlZ2lzdGVy
ID0gWDg2UmVnaXN0ZXJzOjpyMTQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbm90Q2Vs
bE1hc2tSZWdpc3RlciA9IFg4NlJlZ2lzdGVyczo6cjE1OwogCiAgICAgLy8gVGVtcG9yYXJ5IHJl
Z2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdUMCA9IFg4NlJlZ2lzdGVy
czo6ZWF4OwpAQCAtNTE1LDggKzUxNSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzdGQ6OmFycmF5PEdQUlJlZywgMz4gcmVzZXJ2ZWRSZWdpc3RlcnMgeyB7CiAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6c19zY3JhdGNoUmVnaXN0ZXIsCi0gICAgICAgICAgICB0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAg
ICAgICAgICBudW1iZXJUYWdSZWdpc3RlciwKKyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0
ZXIsCiAgICAgICAgIH0gfTsKICAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAg
IH0KQEAgLTYwOCw4ICs2MDgsOCBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSByZWdpc3RlcnMg
bWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBjYWxs
RnJhbWVSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJzOjpmcDsKLSAgICBzdGF0aWMgY29uc3RleHBy
IEdQUlJlZyB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI3OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHRhZ01hc2tSZWdpc3RlciA9IEFSTTY0UmVnaXN0ZXJz
Ojp4Mjg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgbnVtYmVyVGFnUmVnaXN0ZXIgPSBB
Uk02NFJlZ2lzdGVyczo6eDI3OworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIG5vdENlbGxN
YXNrUmVnaXN0ZXIgPSBBUk02NFJlZ2lzdGVyczo6eDI4OwogICAgIHN0YXRpYyBjb25zdGV4cHIg
R1BSUmVnIGRhdGFUZW1wUmVnaXN0ZXIgPSBNYWNyb0Fzc2VtYmxlcjo6ZGF0YVRlbXBSZWdpc3Rl
cjsKICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBtZW1vcnlUZW1wUmVnaXN0ZXIgPSBNYWNy
b0Fzc2VtYmxlcjo6bWVtb3J5VGVtcFJlZ2lzdGVyOwogICAgIC8vIFRlbXBvcmFyeSByZWdpc3Rl
cnMuCkBAIC02MzcsOCArNjM3LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgR1BS
UmVnIHJlZ0NTNSA9IEFSTTY0UmVnaXN0ZXJzOjp4MjQ7IC8vIFVzZWQgYnkgRlRMIG9ubHkKICAg
ICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzYgPSBBUk02NFJlZ2lzdGVyczo6eDI1OyAv
LyBVc2VkIGJ5IEZUTCBvbmx5CiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJSZWcgcmVnQ1M3ID0g
QVJNNjRSZWdpc3RlcnM6OngyNjsKLSAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyByZWdDUzgg
PSBBUk02NFJlZ2lzdGVyczo6eDI3OyAvLyB0YWdUeXBlTnVtYmVyCi0gICAgc3RhdGljIGNvbnN0
ZXhwciBHUFJSZWcgcmVnQ1M5ID0gQVJNNjRSZWdpc3RlcnM6OngyODsgLy8gdGFnTWFzaworICAg
IHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOCA9IEFSTTY0UmVnaXN0ZXJzOjp4Mjc7IC8v
IG51bWJlclRhZworICAgIHN0YXRpYyBjb25zdGV4cHIgR1BSUmVnIHJlZ0NTOSA9IEFSTTY0UmVn
aXN0ZXJzOjp4Mjg7IC8vIG5vdENlbGxNYXNrCiAgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3Zp
ZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZh
bHVlIHJlZ2lzdGVycy4KICAgICBzdGF0aWMgY29uc3RleHByIEdQUlJlZyBhcmd1bWVudEdQUjAg
PSBBUk02NFJlZ2lzdGVyczo6eDA7IC8vIHJlZ1QwCiAgICAgc3RhdGljIGNvbnN0ZXhwciBHUFJS
ZWcgYXJndW1lbnRHUFIxID0gQVJNNjRSZWdpc3RlcnM6OngxOyAvLyByZWdUMQpAQCAtNzAzLDgg
KzcwMyw4IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8R1BSUmVn
LCA0PiByZXNlcnZlZFJlZ2lzdGVycyB7IHsKICAgICAgICAgICAgIGRhdGFUZW1wUmVnaXN0ZXIs
CiAgICAgICAgICAgICBtZW1vcnlUZW1wUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIsCi0gICAgICAgICAgICB0YWdNYXNrUmVnaXN0ZXIsCisgICAgICAgICAgICBu
dW1iZXJUYWdSZWdpc3RlciwKKyAgICAgICAgICAgIG5vdENlbGxNYXNrUmVnaXN0ZXIsCiAgICAg
ICAgIH0gfTsKICAgICAgICAgcmV0dXJuIHJlc2VydmVkUmVnaXN0ZXJzOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAkocmV2aXNpb24g
MjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVB
bmRKdW1wU2xvdyhjb25zdCAKIAogICAgICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkp
IHsKICAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJZk5vdE51bWJlcihyZWdUMCk7Ci0g
ICAgICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICAgICAg
ICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBtb3ZlNjRU
b0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAKICAgICAgICAgICAgIGludDMyX3Qgb3AyaW1tID0g
Z2V0Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpOwpAQCAtMzE3LDcgKzMxNyw3IEBAIHZv
aWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25zdCAKIAogICAgICAgICBpZiAoc3Vw
cG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKICAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBicmFuY2hJ
Zk5vdE51bWJlcihyZWdUMSk7Ci0gICAgICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIsIHJlZ1QxKTsKKyAgICAgICAgICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMSk7
CiAgICAgICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CiAKICAgICAgICAg
ICAgIGludDMyX3Qgb3AxaW1tID0gZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkuYXNJbnQzMigpOwpA
QCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhjb25z
dCAKICAgICAgICAgSnVtcCBmYWlsMSA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QwKTsKICAgICAg
ICAgSnVtcCBmYWlsMiA9IGJyYW5jaElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgSnVtcCBm
YWlsMyA9IGJyYW5jaElmSW50MzIocmVnVDEpOwotICAgICAgICBhZGQ2NCh0YWdUeXBlTnVtYmVy
UmVnaXN0ZXIsIHJlZ1QwKTsKLSAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBy
ZWdUMSk7CisgICAgICAgIGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CisgICAgICAg
IGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgIG1vdmU2NFRvRG91Ymxl
KHJlZ1QwLCBmcFJlZ1QwKTsKICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVnVDEsIGZwUmVnVDEp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdEFuZEdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRCaXRBbmRHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEJpdEFuZEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTYsNyArNTYsNyBAQCB2b2lk
IEpJVEJpdEFuZEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0CiAjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgICAgIGppdC5hbmQ2NChDQ2FsbEhlbHBlcnM6OkltbTMyKGNvbnN0T3ByLmFzQ29u
c3RJbnQzMigpKSwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICAgICAgICAgICAgIGlmIChjb25z
dE9wci5hc0NvbnN0SW50MzIoKSA+PSAwKQotICAgICAgICAgICAgICAgIGppdC5vcjY0KEdQUklu
Zm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKKyAgICAg
ICAgICAgICAgICBqaXQub3I2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgbV9yZXN1bHQu
cGF5bG9hZEdQUigpKTsKICNlbHNlCiAgICAgICAgICAgICBqaXQuYW5kMzIoQ0NhbGxIZWxwZXJz
OjpJbW0zMihjb25zdE9wci5hc0NvbnN0SW50MzIoKSksIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0T3JH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEJpdE9yR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw3ICs0Nyw3IEBAIHZv
aWQgSklUQml0T3JHZW5lcmF0b3I6OmdlbmVyYXRlRmFzdFBhdGgKICAgICAgICAgaWYgKGNvbnN0
T3ByLmFzQ29uc3RJbnQzMigpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGpp
dC5vcjMyKENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOwotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgaml0
Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7
CiAjZWxzZQogICAgICAgICAgICAgaml0Lm9yMzIoQ0NhbGxIZWxwZXJzOjpJbW0zMihjb25zdE9w
ci5hc0NvbnN0SW50MzIoKSksIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0WG9yR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEJpdFhvckdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQml0WG9y
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSklUQml0WG9y
R2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3ModmFy
LCBtX3Jlc3VsdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjMyKENDYWxs
SGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jlc3VsdC5wYXlsb2Fk
R1BSKCkpOwotICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIs
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJl
clRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogI2Vsc2UKICAgICAgICAgaml0
LnhvcjMyKENDYWxsSGVscGVyczo6SW1tMzIoY29uc3RPcHIuYXNDb25zdEludDMyKCkpLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSklUQml0
WG9yR2VuZXJhdG9yOjpnZW5lcmF0ZUZhc3RQYXQKICAgICAgICAgaml0Lm1vdmVWYWx1ZVJlZ3Mo
bV9sZWZ0LCBtX3Jlc3VsdCk7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgaml0LnhvcjY0
KG1fcmlnaHQucGF5bG9hZEdQUigpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwotICAgICAgICBq
aXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRH
UFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jl
c3VsdC5wYXlsb2FkR1BSKCkpOwogI2Vsc2UKICAgICAgICAgaml0LnhvcjMyKG1fcmlnaHQucGF5
bG9hZEdQUigpLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw3ICsx
ODIsNyBAQCBib29sIEpJVDo6Y29tcGlsZVRhaWxDYWxsKGNvbnN0IE9wVGFpbENhCiB7CiAgICAg
Q2FsbEZyYW1lU2h1ZmZsZURhdGEgc2h1ZmZsZURhdGE7CiAgICAgc2h1ZmZsZURhdGEubnVtUGFz
c2VkQXJncyA9IGJ5dGVjb2RlLm1fYXJnYzsKLSAgICBzaHVmZmxlRGF0YS50YWdUeXBlTnVtYmVy
ID0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyOworICAgIHNodWZmbGVEYXRhLm51bWJl
clRhZ1JlZ2lzdGVyID0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXI7CiAgICAgc2h1ZmZsZURh
dGEubnVtTG9jYWxzID0KICAgICAgICAgYnl0ZWNvZGUubV9hcmd2IC0gc2l6ZW9mKENhbGxlckZy
YW1lQW5kUEMpIC8gc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICBzaHVmZmxlRGF0YS5hcmdzLnJlc2l6
ZShieXRlY29kZS5tX2FyZ2MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
aXZHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURGl2R2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREaXZHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyNCw3ICsxMjQs
NyBAQCB2b2lkIEpJVERpdkdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0UGF0aChDCiAgICAgaml0Lm1v
dmVEb3VibGVUbzY0KG1fbGVmdEZQUiwgbV9zY3JhdGNoR1BSKTsKICAgICBDQ2FsbEhlbHBlcnM6
Okp1bXAgbm90RG91YmxlWmVybyA9IGppdC5icmFuY2hUZXN0NjQoQ0NhbGxIZWxwZXJzOjpOb25a
ZXJvLCBtX3NjcmF0Y2hHUFIpOwogCi0gICAgaml0Lm1vdmUoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgIGppdC5tb3ZlKEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogICAgIG1fZW5kSnVt
cExpc3QuYXBwZW5kKGppdC5qdW1wKCkpOwogCiAgICAgbm90RG91YmxlWmVyby5saW5rKCZqaXQp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDI1
MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NzEsNyArNjcxLDcgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZEludDMy
VG9Eb3VibGUoaQogCiBBTFdBWVNfSU5MSU5FIEpJVDo6UGF0Y2hhYmxlSnVtcCBKSVQ6OmVtaXRQ
YXRjaGFibGVKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgcmV0dXJuIHBhdGNo
YWJsZUJyYW5jaDY0KEJlbG93LCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CisgICAgcmV0
dXJuIHBhdGNoYWJsZUJyYW5jaDY0KEJlbG93LCByZWcsIG51bWJlclRhZ1JlZ2lzdGVyKTsKIH0K
IAogQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90SW50KFJlZ2lzdGVy
SUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHNjcmF0Y2gpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVExlZnRTaGlmdEdlbmVyYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRMZWZ0U2hpZnRHZW5lcmF0b3IuY3Bw
CShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVExlZnRT
aGlmdEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIEpJVExl
ZnRTaGlmdEdlbmVyYXRvcjo6Z2VuZXJhdGVGYXN0CiAgICAgfQogCiAjaWYgVVNFKEpTVkFMVUU2
NCkKLSAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0
LnBheWxvYWRHUFIoKSk7CisgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIs
IG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUTXVsR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMjUwMDg1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNdWxHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgSklUTXVsR2VuZXJhdG9yOjpnZW5lcmF0
ZUZhc3RQYXRoKEMKICAgICAgICAgbm9JbnQ1Mk92ZXJmbG93LmxpbmsoJmppdCk7CiAKICAgICAg
ICAgZG9uZS5saW5rKCZqaXQpOwotICAgICAgICBqaXQuc3ViNjQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOyAvLyBCb3ggdGhlIGRvdWJsZS4K
KyAgICAgICAgaml0LnN1YjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCBtX3Jlc3VsdC5w
YXlsb2FkR1BSKCkpOyAvLyBCb3ggdGhlIGRvdWJsZS4KICNlbHNlCiAgICAgICAgIGppdC5ib3hE
b3VibGUobV9sZWZ0RlBSLCBtX3Jlc3VsdCk7CiAgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExp
c3Qgbm90TmVnYXRpdmVaZXJvOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3Bfb3ZlcnJpZGVzX2hhc19pbnN0YW5jZQogICAgIEp1bXAgZG9uZSA9IGp1bXAo
KTsKIAogICAgIGN1c3RvbWhhc0luc3RhbmNlVmFsdWUubGluayh0aGlzKTsKLSAgICBtb3ZlKFRy
dXN0ZWRJbW0zMihWYWx1ZVRydWUpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVUcnVlKSwgcmVnVDApOwogCiAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pc191bmRlZmluZWQoY29uc3QgSW5zCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDApOwogICAgIEp1bXAgaXNDZWxsID0gYnJhbmNoSWZDZWxsKHJlZ1QwKTsK
IAotICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0zMihWYWx1ZVVuZGVmaW5l
ZCksIHJlZ1QwKTsKKyAgICBjb21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6VmFsdWVVbmRlZmluZWQpLCByZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwog
ICAgIAogICAgIGlzQ2VsbC5saW5rKHRoaXMpOwpAQCAtMjUxLDggKzI1MSw4IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX3VuZGVmaW5lZF9vcl9udWxsKGMKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodmFsdWUsIHJlZ1QwKTsKIAotICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5k
ZWZpbmVkKSwgcmVnVDApOwotICAgIGNvbXBhcmU2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0z
MihWYWx1ZU51bGwpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpV
bmRlZmluZWRUYWcpLCByZWdUMCk7CisgICAgY29tcGFyZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OlZhbHVlTnVsbCksIHJlZ1QwKTsKIAogICAgIGJveEJvb2xlYW4ocmVn
VDAsIEpTVmFsdWVSZWdzIHsgcmVnVDAgfSk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihk
c3QpOwpAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX2Jvb2xlYW4oY29u
c3QgSW5zdHIKICAgICBpbnQgdmFsdWUgPSBieXRlY29kZS5tX29wZXJhbmQub2Zmc2V0KCk7CiAg
ICAgCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwotICAgIHhvcjY0
KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlZ1QwKTsK
KyAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsKICAg
ICB0ZXN0NjQoWmVybywgcmVnVDAsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+
MSkpLCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3MgeyByZWdUMCB9
KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0yNzgsNyArMjc4LDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfaXNfbnVtYmVyKGNvbnN0IEluc3RydQogICAgIGludCB2YWx1ZSA9
IGJ5dGVjb2RlLm1fb3BlcmFuZC5vZmZzZXQoKTsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKHZhbHVlLCByZWdUMCk7Ci0gICAgdGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdUeXBl
TnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIG51bWJl
clRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAgICAgYm94Qm9vbGVhbihyZWdUMCwgSlNWYWx1ZVJlZ3Mg
eyByZWdUMCB9KTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CkBAIC0yOTgs
NyArMjk4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfY2VsbF93aXRoX3R5cGUoY29ucwogICAg
IEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIG1v
dmUoVHJ1c3RlZEltbTMyKFZhbHVlRmFsc2UpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6VmFsdWVGYWxzZSksIHJlZ1QwKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0zMTgsNyArMzE4LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KGNvbnN0IEluc3RydQogICAgIEp1bXAgZG9uZSA9IGp1
bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMpOwotICAgIG1vdmUoVHJ1c3RlZEltbTMy
KFZhbHVlRmFsc2UpLCByZWdUMCk7CisgICAgbW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFs
dWVGYWxzZSksIHJlZ1QwKTsKIAogICAgIGRvbmUubGluayh0aGlzKTsKICAgICBlbWl0UHV0Vmly
dHVhbFJlZ2lzdGVyKGRzdCk7CkBAIC0zNzMsOSArMzczLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
bm90KGNvbnN0IEluc3RydWN0aW9uKgogICAgIC8vIEludmVydCBhZ2FpbnN0IEpTVmFsdWUoZmFs
c2UpOyBpZiB0aGUgdmFsdWUgd2FzIHRhZ2dlZCBhcyBhIGJvb2xlYW4sIHRoZW4gYWxsIGJpdHMg
d2lsbCBiZQogICAgIC8vIGNsZWFyIG90aGVyIHRoYW4gdGhlIGxvdyBiaXQgKHdoaWNoIHdpbGwg
YmUgMCBvciAxIGZvciBmYWxzZSBvciB0cnVlIGlucHV0cyByZXNwZWN0aXZlbHkpLgogICAgIC8v
IFRoZW4gaW52ZXJ0IGFnYWluc3QgSlNWYWx1ZSh0cnVlKSwgd2hpY2ggd2lsbCBhZGQgdGhlIHRh
ZyBiYWNrIGluLCBhbmQgZmxpcCB0aGUgbG93IGJpdC4KLSAgICB4b3I2NChUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWdUMCk7CisgICAgeG9yNjQoVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OlZhbHVlRmFsc2UpLCByZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdFB0cihOb25aZXJvLCByZWdUMCwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGlu
dDMyX3Q+KH4xKSkpKTsKLSAgICB4b3I2NChUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4oVmFsdWVUcnVlKSksIHJlZ1QwKTsKKyAgICB4b3I2NChUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
VmFsdWVUcnVlKSwgcmVnVDApOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKSk7CiB9CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfamVxX251bGwoY29uc3QgSW5zdHJ1YwogCiAgICAgLy8gTm93IGhhbmRsZSB0aGUgaW1tZWRp
YXRlIGNhc2VzIC0gdW5kZWZpbmVkICYgbnVsbAogICAgIGlzSW1tZWRpYXRlLmxpbmsodGhpcyk7
Ci0gICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7CisgICAg
YW5kNjQoVHJ1c3RlZEltbTMyKH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZWdUMCk7CiAgICAg
YWRkSnVtcChicmFuY2g2NChFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNv
ZGUoanNOdWxsKCkpKSksIHRhcmdldCk7ICAgICAgICAgICAgCiAKICAgICBpc05vdE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKQEAgLTQzNiw3ICs0MzYsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9qbmVxX251bGwoY29uc3QgSW5zdHJ1CiAKICAgICAvLyBOb3cgaGFuZGxlIHRoZSBp
bW1lZGlhdGUgY2FzZXMgLSB1bmRlZmluZWQgJiBudWxsCiAgICAgaXNJbW1lZGlhdGUubGluayh0
aGlzKTsKLSAgICBhbmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJlZ1QwKTsK
KyAgICBhbmQ2NChUcnVzdGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsK
ICAgICBhZGRKdW1wKGJyYW5jaDY0KE5vdEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSkpKSwgdGFyZ2V0KTsgICAgICAgICAgICAKIAogICAgIHdhc05v
dEltbWVkaWF0ZS5saW5rKHRoaXMpOwpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2p1bmRlZmluZWRfb3JfbnVsbChjb24KIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
dmFsdWUsIHJlZ1QwKTsKIAotICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVk
KSwgcmVnVDApOworICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVkVGFn
KSwgcmVnVDApOwogICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1t
NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKSkpLCB0YXJnZXQpOwogfQogCkBAIC00NjIsNyAr
NDYyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam51bmRlZmluZWRfb3JfbnVsbChjbwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDApOwogCi0gICAgYW5kNjQoVHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7CisgICAgYW5kNjQoVHJ1c3RlZEltbTMy
KH5KU1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZWdUMCk7CiAgICAgYWRkSnVtcChicmFuY2g2NChO
b3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdWxsKCkpKSks
IHRhcmdldCk7CiB9CiAKQEAgLTgzMiw4ICs4MzIsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9lcV9u
dWxsKGNvbnN0IEluc3RydWN0CiAKICAgICBpc0ltbWVkaWF0ZS5saW5rKHRoaXMpOwogCi0gICAg
YW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZWdUMCk7Ci0gICAgY29tcGFy
ZTY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTMyKFZhbHVlTnVsbCksIHJlZ1QwKTsKKyAgICBh
bmQ2NChUcnVzdGVkSW1tMzIofkpTVmFsdWU6OlVuZGVmaW5lZFRhZyksIHJlZ1QwKTsKKyAgICBj
b21wYXJlNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6VmFsdWVOdWxsKSwg
cmVnVDApOwogCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAgICAgd2FzTm90TWFz
cXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwpAQCAtODY1LDggKzg2NSw4IEBAIHZvaWQg
SklUOjplbWl0X29wX25lcV9udWxsKGNvbnN0IEluc3RydWMKIAogICAgIGlzSW1tZWRpYXRlLmxp
bmsodGhpcyk7CiAKLSAgICBhbmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHJl
Z1QwKTsKLSAgICBjb21wYXJlNjQoTm90RXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tMzIoVmFsdWVO
dWxsKSwgcmVnVDApOworICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+SlNWYWx1ZTo6VW5kZWZpbmVk
VGFnKSwgcmVnVDApOworICAgIGNvbXBhcmU2NChOb3RFcXVhbCwgcmVnVDAsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpWYWx1ZU51bGwpLCByZWdUMCk7CiAKICAgICB3YXNOb3RJbW1lZGlhdGUubGlu
ayh0aGlzKTsKICAgICB3YXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OSw3ICsyODksNyBAQCBKSVQ6Okp1
bXBMaXN0IEpJVDo6ZW1pdEdlbmVyaWNDb250aWd1b3VzCiAgICAgICAgIGNvbnZlcnRJbnQzMlRv
RG91YmxlKHJlZ1QzLCBmcFJlZ1QwKTsKICAgICAgICAgSnVtcCByZWFkeSA9IGp1bXAoKTsKICAg
ICAgICAgbm90SW50LmxpbmsodGhpcyk7Ci0gICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdp
c3RlciwgcmVnVDMpOworICAgICAgICBhZGQ2NChudW1iZXJUYWdSZWdpc3RlciwgcmVnVDMpOwog
ICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMywgZnBSZWdUMCk7CiAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoYnJhbmNoSWZOYU4oZnBSZWdUMCkpOwogICAgICAgICByZWFkeS5saW5rKHRoaXMp
OwpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVk
QXJyYXlQdQogICAgIEp1bXAgcmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRo
aXMpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSWZOb3ROdW1iZXIoZWFybHlTY3JhdGNo
KSk7Ci0gICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOworICAg
IGFkZDY0KG51bWJlclRhZ1JlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOwogICAgIG1vdmU2NFRvRG91
YmxlKGVhcmx5U2NyYXRjaCwgZnBSZWdUMCk7CiAgICAgcmVhZHkubGluayh0aGlzKTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFJpZ2h0U2hpZnRHZW5lcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUmlnaHRTaGlm
dEdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUmlnaHRTaGlmdEdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsNyArNTcs
NyBAQCB2b2lkIEpJVFJpZ2h0U2hpZnRHZW5lcmF0b3I6OmdlbmVyYXRlRmFzCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgaml0LnVyc2hpZnQzMihDQ2FsbEhlbHBlcnM6OkltbTMy
KHNoaWZ0QW1vdW50KSwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBt
X3Jlc3VsdC5wYXlsb2FkR1BSKCkpOworICAgICAgICAgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVt
YmVyVGFnUmVnaXN0ZXIsIG1fcmVzdWx0LnBheWxvYWRHUFIoKSk7CiAjZW5kaWYKICAgICAgICAg
fQogCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBKSVRSaWdodFNoaWZ0R2VuZXJhdG9yOjpnZW5l
cmF0ZUZhcwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBqaXQudXJzaGlmdDMyKHJpZ2h0T3Bl
cmFuZEdQUiwgbV9yZXN1bHQucGF5bG9hZEdQUigpKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIG1fcmVzdWx0LnBh
eWxvYWRHUFIoKSk7CisgICAgICAgIGppdC5vcjY0KEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVy
LCBtX3Jlc3VsdC5wYXlsb2FkR1BSKCkpOwogI2VuZGlmCiAgICAgICAgIGlmIChtX2xlZnRPcGVy
YW5kLmlzQ29uc3RJbnQzMigpKQogICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjEsNyArNjEsNyBAQCBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cmVzZXJ2ZWRIYXJkd2Fy
CiBSZWdpc3RlclNldCBSZWdpc3RlclNldDo6cnVudGltZVRhZ1JlZ2lzdGVycygpCiB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICByZXR1cm4gUmVnaXN0ZXJTZXQoR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHJldHVybiBSZWdp
c3RlclNldChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3RlciwgR1BSSW5mbzo6bm90Q2VsbE1hc2tS
ZWdpc3Rlcik7CiAjZWxzZQogICAgIHJldHVybiB7IH07CiAjZW5kaWYKQEAgLTE3OCwxNSArMTc4
LDE1IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpsbGludEJhc2VsaW5lQ2EKICNpZiAhT1Mo
V0lORE9XUykKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAgICAgcmVzdWx0LnNl
dChHUFJJbmZvOjpyZWdDUzIpOwotICAgIEFTU0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5m
bzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNz
ZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7
CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5m
bzo6cmVnQ1M0KTsKICNlbHNlCiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAg
IHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1
ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86
OnJlZ0NTNiA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQo
R1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdp
c3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQu
c2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5kaWYKQEAgLTE5NSw4ICsxOTUsOCBAQCBSZWdpc3Rl
clNldCBSZWdpc3RlclNldDo6bGxpbnRCYXNlbGluZUNhCiAjZWxpZiBDUFUoQVJNNjQpCiAgICAg
cmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzYpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVn
Q1M3KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M4ID09IEdQUklu
Zm86Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpy
ZWdDUzkgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5z
ZXQoR1BSSW5mbzo6cmVnQ1M4KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTOSk7CiAj
ZWxpZiBDUFUoTUlQUykKQEAgLTIxNiwyMiArMjE2LDIyIEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVy
U2V0OjpkZmdDYWxsZWVTYXZlUmUKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMSk7CiAg
ICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzIpOwogI2lmICFPUyhXSU5ET1dTKQotICAgIEFT
U0VSVChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsK
LSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M0ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7
CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzMgPT0gR1BSSW5mbzo6bnVtYmVyVGFn
UmVnaXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJ
bmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpy
ZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0KTsKICNlbHNlCiAgICAgcmVz
dWx0LnNldChHUFJJbmZvOjpyZWdDUzMpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M0
KTsKLSAgICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3Rlcik7Ci0gICAgQVNTRVJUKEdQUkluZm86OnJlZ0NTNiA9PSBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpOworICAgIHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1M1ID09IEdQUkluZm86
Om51bWJlclRhZ1JlZ2lzdGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdD
UzYgPT0gR1BSSW5mbzo6bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQo
R1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNik7CiAjZW5k
aWYKICNlbGlmIENQVShBUk1fVEhVTUIyKQogI2VsaWYgQ1BVKEFSTTY0KQotICAgIEFTU0VSVChH
UFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAgICBB
U1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisgICAg
c3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0
ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZvOjpu
b3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzgp
OwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICNlbGlmIENQVShNSVBTKQpAQCAt
MjQ5LDggKzI0OSw4IEBAIFJlZ2lzdGVyU2V0IFJlZ2lzdGVyU2V0OjpmdGxDYWxsZWVTYXZlUmUK
ICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTMCk7CiAgICAgcmVzdWx0LnNldChHUFJJbmZv
OjpyZWdDUzEpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1MyKTsKLSAgICBBU1NFUlQo
R1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7Ci0gICAg
QVNTRVJUKEdQUkluZm86OnJlZ0NTNCA9PSBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworICAg
IHN0YXRpY19hc3NlcnQoR1BSSW5mbzo6cmVnQ1MzID09IEdQUkluZm86Om51bWJlclRhZ1JlZ2lz
dGVyLCAiIik7CisgICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzQgPT0gR1BSSW5mbzo6
bm90Q2VsbE1hc2tSZWdpc3RlciwgIiIpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1Mz
KTsKICAgICByZXN1bHQuc2V0KEdQUkluZm86OnJlZ0NTNCk7CiAjZWxpZiBDUFUoQVJNNjQpCkBA
IC0yNjMsOCArMjYzLDggQEAgUmVnaXN0ZXJTZXQgUmVnaXN0ZXJTZXQ6OmZ0bENhbGxlZVNhdmVS
ZQogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M1KTsKICAgICByZXN1bHQuc2V0KEdQUklu
Zm86OnJlZ0NTNik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdDUzcpOwotICAgIEFTU0VS
VChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKLSAg
ICBBU1NFUlQoR1BSSW5mbzo6cmVnQ1M5ID09IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Cisg
ICAgc3RhdGljX2Fzc2VydChHUFJJbmZvOjpyZWdDUzggPT0gR1BSSW5mbzo6bnVtYmVyVGFnUmVn
aXN0ZXIsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KEdQUkluZm86OnJlZ0NTOSA9PSBHUFJJbmZv
Ojpub3RDZWxsTWFza1JlZ2lzdGVyLCAiIik7CiAgICAgcmVzdWx0LnNldChHUFJJbmZvOjpyZWdD
UzgpOwogICAgIHJlc3VsdC5zZXQoR1BSSW5mbzo6cmVnQ1M5KTsKICAgICByZXN1bHQuc2V0KEZQ
UkluZm86OmZwUmVnQ1MwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDEwICsxMTQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAg
ICAgICAgIG1vdmVEb3VibGVUbzY0KHNyYywgcmVnVDApOwogICAgICAgICAgICAgSnVtcCB6ZXJv
ID0gYnJhbmNoVGVzdDY0KFplcm8sIHJlZ1QwKTsKLSAgICAgICAgICAgIHN1YjY0KHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVnVDApOworICAgICAgICAgICAgc3ViNjQobnVtYmVyVGFnUmVnaXN0
ZXIsIHJlZ1QwKTsKICAgICAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKICAgICAgICAgICAg
IHplcm8ubGluayh0aGlzKTsKLSAgICAgICAgICAgIG1vdmUodGFnVHlwZU51bWJlclJlZ2lzdGVy
LCByZWdUMCk7CisgICAgICAgICAgICBtb3ZlKG51bWJlclRhZ1JlZ2lzdGVyLCByZWdUMCk7CiAg
ICAgICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAjZWxzZQogICAgICAgICAgICAgbW92ZURvdWJs
ZVRvSW50cyhzcmMsIHJlZ1QwLCByZWdUMSk7CkBAIC0xODIsNyArMTgyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgdGFnUmV0dXJuQXNJbnQzMigpCiAgICAgICAgIHsKICNpZiBV
U0UoSlNWQUxVRTY0KQotICAgICAgICAgICAgb3I2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJl
Z1QwKTsKKyAgICAgICAgICAgIG9yNjQobnVtYmVyVGFnUmVnaXN0ZXIsIHJlZ1QwKTsKICNlbHNl
CiAgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIHJlZ1Qx
KTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9UaHVua0dlbmVyYXRvcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsOSArMTg0LDkgQEAg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFN0dWJSb3V0aW5lUHRyVAogICAgIAogI2lmIFVTRShK
U1ZBTFVFNjQpCiAgICAgaWYgKGNhbGxMaW5rSW5mby5pc1RhaWxDYWxsKCkpIHsKLSAgICAgICAg
Ly8gVGFpbCBjYWxscyBjb3VsZCBoYXZlIGNsb2JiZXJlZCB0aGUgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyIGJlY2F1c2UgdGhleQorICAgICAgICAvLyBUYWlsIGNhbGxzIGNvdWxkIGhhdmUgY2xv
YmJlcmVkIHRoZSBHUFJJbmZvOjpub3RDZWxsTWFza1JlZ2lzdGVyIGJlY2F1c2UgdGhleQogICAg
ICAgICAvLyByZXN0b3JlIGNhbGxlZSBzYXZlZCByZWdpc3RlcnMgYmVmb3JlIGdldHRoaW5nIGhl
cmUuIFNvLCBsZXQncyBtYXRlcmlhbGl6ZQotICAgICAgICAvLyB0aGUgVGFnTWFzayBpbiBhIHRl
bXAgcmVnaXN0ZXIgYW5kIHVzZSB0aGUgdGVtcCBpbnN0ZWFkLgorICAgICAgICAvLyB0aGUgTm90
Q2VsbE1hc2sgaW4gYSB0ZW1wIHJlZ2lzdGVyIGFuZCB1c2UgdGhlIHRlbXAgaW5zdGVhZC4KICAg
ICAgICAgc2xvd0Nhc2UuYXBwZW5kKGppdC5icmFuY2hJZk5vdENlbGwoR1BSSW5mbzo6cmVnVDAs
IERvTm90SGF2ZVRhZ1JlZ2lzdGVycykpOwogICAgIH0gZWxzZQogICAgICAgICBzbG93Q2FzZS5h
cHBlbmQoaml0LmJyYW5jaElmTm90Q2VsbChHUFJJbmZvOjpyZWdUMCkpOwpAQCAtMjU3LDcgKzI1
Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHIKICNpZiBVU0Uo
SlNWQUxVRTY0KQogICAgICAgICAvLyBXZSdyZSBjb21pbmcgZnJvbSBhIHNwZWNpYWxpemVkIHRo
dW5rIHRoYXQgaGFzIHNhdmVkIHRoZSBwcmlvciB0YWcgcmVnaXN0ZXJzJyBjb250ZW50cy4KICAg
ICAgICAgLy8gUmVzdG9yZSB0aGVtIG5vdy4KLSAgICAgICAgaml0LnBvcFBhaXIoSlNJbnRlcmZh
Y2VKSVQ6OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OnRhZ01hc2tSZWdp
c3Rlcik7CisgICAgICAgIGppdC5wb3BQYWlyKEpTSW50ZXJmYWNlSklUOjpudW1iZXJUYWdSZWdp
c3RlciwgSlNJbnRlcmZhY2VKSVQ6Om5vdENlbGxNYXNrUmVnaXN0ZXIpOwogI2VuZGlmCiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgRW50ZXJWaWFKdW1wV2l0aG91dFNhdmVkVGFnczoKQEAgLTQ0
NSw3ICs0NDUsNyBAQCBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJUYWc+IGFyCiAg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMCwgSlNJbnRlcmZhY2VKSVQ6
OmFyZ3VtZW50R1BSMSk7CiAgICAgaml0LmFuZDMyKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
MzIoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSAtIDEpLCBKU0ludGVyZmFjZUpJVDo6YXJndW1l
bnRHUFIxKTsKICAgICBKU0ludGVyZmFjZUpJVDo6SnVtcCBub0V4dHJhU2xvdCA9IGppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQ
UjEpOwotICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tNjQoVmFsdWVVbmRl
ZmluZWQpLCBleHRyYVRlbXApOworICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVk
SW1tNjQoSlNWYWx1ZTo6VmFsdWVVbmRlZmluZWQpLCBleHRyYVRlbXApOwogICAgIEpTSW50ZXJm
YWNlSklUOjpMYWJlbCBmaWxsRXh0cmFTbG90cyhqaXQubGFiZWwoKSk7CiAgICAgaml0LnN0b3Jl
NjQoZXh0cmFUZW1wLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KEpTSW50ZXJmYWNlSklUOjpj
YWxsRnJhbWVSZWdpc3RlciwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMiwgSlNJbnRlcmZh
Y2VKSVQ6OlRpbWVzRWlnaHQpKTsKICAgICBqaXQuYWRkMzIoSlNJbnRlcmZhY2VKSVQ6OlRydXN0
ZWRJbW0zMigxKSwgSlNJbnRlcmZhY2VKSVQ6OmFyZ3VtZW50R1BSMik7CkBAIC00NzYsNyArNDc2
LDcgQEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhcgogCiAgICAgLy8g
RmlsbCBpbiBhcmd1bWVudEdQUjAgbWlzc2luZyBhcmcgc2xvdHMgd2l0aCB1bmRlZmluZWQKICAg
ICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6YXJndW1lbnRHUFIwLCBKU0ludGVyZmFjZUpJVDo6
YXJndW1lbnRHUFIyKTsKLSAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbTY0
KFZhbHVlVW5kZWZpbmVkKSwgZXh0cmFUZW1wKTsKKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OlZhbHVlVW5kZWZpbmVkKSwgZXh0cmFUZW1wKTsKICAg
ICBKU0ludGVyZmFjZUpJVDo6TGFiZWwgZmlsbFVuZGVmaW5lZExvb3Aoaml0LmxhYmVsKCkpOwog
ICAgIGppdC5zdG9yZTY0KGV4dHJhVGVtcCwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChKU0lu
dGVyZmFjZUpJVDo6cmVnVDMsIEpTSW50ZXJmYWNlSklUOjphcmd1bWVudEdQUjAsIEpTSW50ZXJm
YWNlSklUOjpUaW1lc0VpZ2h0KSk7CiAgICAgaml0LmFkZFB0cihKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbTMyKDgpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDMpOwpAQCAtMTA4Miw3ICsxMDgyLDcg
QEAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVFRodW5rUHRyVGFnPiBhYgogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGludGVnZXJJc0ludE1pbiA9IGppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6OlNpZ25lZCwgR1BSSW5mbzo6cmVnVDApOwogCiAgICAgLy8gQm94IGFuZCBmaW5pc2gu
Ci0gICAgaml0Lm9yNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCBHUFJJbmZvOjpy
ZWdUMCk7CisgICAgaml0Lm9yNjQoR1BSSW5mbzo6bnVtYmVyVGFnUmVnaXN0ZXIsIEdQUkluZm86
OnJlZ1QwKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lV2l0aEludGVnZXJzID0gaml0
Lmp1bXAoKTsKIAogICAgIC8vIEhhbmRsZSBEb3VibGVzLgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMs
MjUgKzExMyw2IEBAIHZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoVk0mIHZtKQogICAgIFNU
QVRJQ19BU1NFUlQoVGFnT2Zmc2V0ID09IDQpOwogICAgIFNUQVRJQ19BU1NFUlQoUGF5bG9hZE9m
ZnNldCA9PSAwKTsKICNlbmRpZgotI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgU1RBVElDX0FT
U0VSVChKU1ZhbHVlOjpJbnQzMlRhZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTEpKTsKLSAg
ICBTVEFUSUNfQVNTRVJUKEpTVmFsdWU6OkJvb2xlYW5UYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KC0yKSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpOdWxsVGFnID09IHN0YXRpY19j
YXN0PHVuc2lnbmVkPigtMykpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNWYWx1ZTo6VW5kZWZpbmVk
VGFnID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPigtNCkpOwotICAgIFNUQVRJQ19BU1NFUlQoSlNW
YWx1ZTo6Q2VsbFRhZyA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oLTUpKTsKLSAgICBTVEFUSUNf
QVNTRVJUKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC02
KSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpEZWxldGVkVmFsdWVUYWcgPT0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KC03KSk7Ci0gICAgU1RBVElDX0FTU0VSVChKU1ZhbHVlOjpMb3dlc3RU
YWcgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KC03KSk7Ci0jZWxzZQotICAgIFNUQVRJQ19BU1NF
UlQoVGFnQml0VHlwZU90aGVyID09IDB4Mik7Ci0gICAgU1RBVElDX0FTU0VSVChUYWdCaXRCb29s
ID09IDB4NCk7Ci0gICAgU1RBVElDX0FTU0VSVChUYWdCaXRVbmRlZmluZWQgPT0gMHg4KTsKLSAg
ICBTVEFUSUNfQVNTRVJUKFZhbHVlRW1wdHkgPT0gMHgwKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZh
bHVlRmFsc2UgPT0gKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wpKTsKLSAgICBTVEFUSUNf
QVNTRVJUKFZhbHVlVHJ1ZSA9PSAoVGFnQml0VHlwZU90aGVyIHwgVGFnQml0Qm9vbCB8IDEpKTsK
LSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlVW5kZWZpbmVkID09IChUYWdCaXRUeXBlT3RoZXIgfCBU
YWdCaXRVbmRlZmluZWQpKTsKLSAgICBTVEFUSUNfQVNTRVJUKFZhbHVlTnVsbCA9PSBUYWdCaXRU
eXBlT3RoZXIpOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQ19MT09QKQogICAgIEFTU0VSVChDb2Rl
QmxvY2s6OmxsaW50QmFzZWxpbmVDYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSA9
PSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyNjQuYXNtCShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpA
QCAtNTA0LDEyICs1MDQsMTIgQEAgZW5kCiAKIG1hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVJ
bnQzMihzaXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShzaXplLCBpbmRleCwgdmFsdWUpCi0gICAgYnFiIHZhbHVlLCB0YWdUeXBlTnVtYmVyLCBzbG93
CisgICAgYnFiIHZhbHVlLCBudW1iZXJUYWcsIHNsb3cKIGVuZAogCiBtYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlQ2VsbChzaXplLCBpbmRleCwgdmFsdWUsIHNsb3cpCiAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCBpbmRleCwgdmFsdWUpCi0gICAgYnRxbnogdmFsdWUsIHRhZ01h
c2ssIHNsb3cKKyAgICBidHFueiB2YWx1ZSwgbm90Q2VsbE1hc2ssIHNsb3cKIGVuZAogCiBtYWNy
byB3cml0ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgp
CkBAIC01MjYsNyArNTI2LDcgQEAgbWFjcm8gd3JpdGVCYXJyaWVyT25DZWxsV2l0aFJlbG9hZChj
ZWxsLAogZW5kCiAKIG1hY3JvIHdyaXRlQmFycmllck9uQ2VsbEFuZFZhbHVlV2l0aFJlbG9hZChj
ZWxsLCB2YWx1ZSwgcmVsb2FkQWZ0ZXJTbG93UGF0aCkKLSAgICBidHFueiB2YWx1ZSwgdGFnTWFz
aywgLndyaXRlQmFycmllckRvbmUKKyAgICBidHFueiB2YWx1ZSwgbm90Q2VsbE1hc2ssIC53cml0
ZUJhcnJpZXJEb25lCiAgICAgYnRxeiB2YWx1ZSwgLndyaXRlQmFycmllckRvbmUKICAgICB3cml0
ZUJhcnJpZXJPbkNlbGxXaXRoUmVsb2FkKGNlbGwsIHJlbG9hZEFmdGVyU2xvd1BhdGgpCiAud3Jp
dGVCYXJyaWVyRG9uZToKQEAgLTcyNCw3ICs3MjQsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVy
bihvcF9hcmd1bWVudF9jb3VudCwgT3BBcmd1bWVudENvdW50LCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgcmV0dXJuKQogICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50
W2Nmcl0sIHQwCiAgICAgc3ViaSAxLCB0MAotICAgIG9ycSBUYWdUeXBlTnVtYmVyLCB0MAorICAg
IG9ycSBUYWdOdW1iZXIsIHQwCiAgICAgcmV0dXJuKHQwKQogZW5kKQogCkBAIC03MzksNyArNzM5
LDcgQEAgZW5kKQogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFj
cm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgZ2V0KG1fc3Jj
RHN0LCB0MCkKICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgYnRxbnogdDAsIHRhZ01h
c2ssIC5vcFRvVGhpc1Nsb3cKKyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvVGhpc1Ns
b3cKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9U
aGlzU2xvdwogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgbWV0
YWRhdGEodDIsIHQzKQpAQCAtODA2LDcgKzgwNiw3IEBAIG1hY3JvIGVxdWFsTnVsbENvbXBhcmlz
b25PcChvcGNvZGVOYW1lLCAKICAgICBsbGludE9wV2l0aFJldHVybihvcGNvZGVOYW1lLCBvcGNv
ZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgICAgIGdl
dChtX29wZXJhbmQsIHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAg
IGJ0cW56IHQwLCB0YWdNYXNrLCAuaW1tZWRpYXRlCisgICAgICAgIGJ0cW56IHQwLCBub3RDZWxs
TWFzaywgLmltbWVkaWF0ZQogICAgICAgICBidGJueiBKU0NlbGw6Om1fZmxhZ3NbdDBdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCAubWFzcXVlcmFkZXNBc1VuZGVmaW5lZAogICAgICAgICBtb3Zl
IDAsIHQwCiAgICAgICAgIGptcCAuZG9uZQpAQCAtODE3LDcgKzgxNyw3IEBAIG1hY3JvIGVxdWFs
TnVsbENvbXBhcmlzb25PcChvcGNvZGVOYW1lLCAKICAgICAgICAgY3BlcSBTdHJ1Y3R1cmU6Om1f
Z2xvYmFsT2JqZWN0W3QyXSwgdDAsIHQwCiAgICAgICAgIGptcCAuZG9uZQogICAgIC5pbW1lZGlh
dGU6Ci0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5kcSB+VGFn
VW5kZWZpbmVkLCB0MAogICAgICAgICBjcWVxIHQwLCBWYWx1ZU51bGwsIHQwCiAgICAgLmRvbmU6
CiAgICAgICAgIGZuKHQwKQpAQCAtODM2LDcgKzgzNiw3IEBAIGVxdWFsTnVsbENvbXBhcmlzb25P
cChvcF9uZXFfbnVsbCwgT3BOZXEKIGxsaW50T3BXaXRoUmV0dXJuKG9wX2lzX3VuZGVmaW5lZF9v
cl9udWxsLCBPcElzVW5kZWZpbmVkT3JOdWxsLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwg
cmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDEsIHQwKQotICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICBhbmRx
IH5UYWdVbmRlZmluZWQsIHQwCiAgICAgY3FlcSB0MCwgVmFsdWVOdWxsLCB0MAogICAgIG9ycSBW
YWx1ZUZhbHNlLCB0MAogICAgIHJldHVybih0MCkKQEAgLTg1MSwxMiArODUxLDEyIEBAIG1hY3Jv
IHN0cmljdEVxT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAgIG9y
cSB0MSwgdDIKLSAgICAgICAgYnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFhZXEg
dDAsIHRhZ1R5cGVOdW1iZXIsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVOdW1i
ZXIsIC5zbG93CisgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAgICBi
cWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJUYWcs
IC5zbG93CiAgICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIsIC5y
aWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBi
cWFlcSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVyVGFn
LCAuc2xvdwogICAgIC5yaWdodE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEs
IHQwKQogICAgICAgICBvcnEgVmFsdWVGYWxzZSwgdDAKQEAgLTg4NSwxMiArODg1LDEyIEBAIG1h
Y3JvIHN0cmljdEVxdWFsaXR5SnVtcE9wKG9wY29kZU5hbWUsIG8KICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZShzaXplLCB0MywgdDEpCiAgICAgICAgIG1vdmUgdDAsIHQyCiAgICAgICAg
IG9ycSB0MSwgdDIKLSAgICAgICAgYnRxeiB0MiwgdGFnTWFzaywgLnNsb3cKLSAgICAgICAgYnFh
ZXEgdDAsIHRhZ1R5cGVOdW1iZXIsIC5sZWZ0T0sKLSAgICAgICAgYnRxbnogdDAsIHRhZ1R5cGVO
dW1iZXIsIC5zbG93CisgICAgICAgIGJ0cXogdDIsIG5vdENlbGxNYXNrLCAuc2xvdworICAgICAg
ICBicWFlcSB0MCwgbnVtYmVyVGFnLCAubGVmdE9LCisgICAgICAgIGJ0cW56IHQwLCBudW1iZXJU
YWcsIC5zbG93CiAgICAgLmxlZnRPSzoKLSAgICAgICAgYnFhZXEgdDEsIHRhZ1R5cGVOdW1iZXIs
IC5yaWdodE9LCi0gICAgICAgIGJ0cW56IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAg
ICBicWFlcSB0MSwgbnVtYmVyVGFnLCAucmlnaHRPSworICAgICAgICBidHFueiB0MSwgbnVtYmVy
VGFnLCAuc2xvdwogICAgIC5yaWdodE9LOgogICAgICAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwg
dDEsIC5qdW1wVGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC05MTcsOSArOTE3LDkgQEAg
bWFjcm8gcHJlT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWN0LCBhcgogICAgIGxsaW50T3Aob3Bf
JW9wY29kZU5hbWUlLCBvcGNvZGVTdHJ1Y3QsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoKQog
ICAgICAgICBnZXQobV9zcmNEc3QsIHQwKQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQx
Ci0gICAgICAgIGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLnNsb3cKKyAgICAgICAgYnFiIHQxLCBu
dW1iZXJUYWcsIC5zbG93CiAgICAgICAgIGFyaXRobWV0aWNPcGVyYXRpb24odDEsIC5zbG93KQot
ICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgdDEKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDEK
ICAgICAgICAgc3RvcmVxIHQxLCBbY2ZyLCB0MCwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogICAg
IC5zbG93OgpAQCAtOTMxLDggKzkzMSw4IEBAIGVuZAogbGxpbnRPcFdpdGhQcm9maWxlKG9wX3Rv
X251bWJlciwgT3BUb051bWJlciwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIHJldHVybikK
ICAgICBnZXQobV9vcGVyYW5kLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQwLCB0MikKLSAgICBicWFlcSB0MiwgdGFnVHlwZU51bWJlciwgLm9wVG9OdW1iZXJJc0ltbWVk
aWF0ZQotICAgIGJ0cXogdDIsIHRhZ1R5cGVOdW1iZXIsIC5vcFRvTnVtYmVyU2xvdworICAgIGJx
YWVxIHQyLCBudW1iZXJUYWcsIC5vcFRvTnVtYmVySXNJbW1lZGlhdGUKKyAgICBidHF6IHQyLCBu
dW1iZXJUYWcsIC5vcFRvTnVtYmVyU2xvdwogLm9wVG9OdW1iZXJJc0ltbWVkaWF0ZToKICAgICBy
ZXR1cm4odDIpCiAKQEAgLTk0NSw3ICs5NDUsNyBAQCBlbmQpCiBsbGludE9wV2l0aFJldHVybihv
cF90b19zdHJpbmcsIE9wVG9TdHJpbmcsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCByZXR1
cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShz
aXplLCB0MSwgdDApCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvU3RyaW5nU2xvdworICAg
IGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLm9wVG9TdHJpbmdTbG93CiAgICAgYmJuZXEgSlNDZWxs
OjptX3R5cGVbdDBdLCBTdHJpbmdUeXBlLCAub3BUb1N0cmluZ1Nsb3cKIC5vcFRvU3RyaW5nSXNT
dHJpbmc6CiAgICAgcmV0dXJuKHQwKQpAQCAtOTU5LDcgKzk1OSw3IEBAIGVuZCkKIGxsaW50T3BX
aXRoUHJvZmlsZShvcF90b19vYmplY3QsIE9wVG9PYmplY3QsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDApCiAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MCwgdDIpCi0gICAgYnRxbnogdDIsIHRhZ01hc2ssIC5vcFRvT2Jq
ZWN0U2xvdworICAgIGJ0cW56IHQyLCBub3RDZWxsTWFzaywgLm9wVG9PYmplY3RTbG93CiAgICAg
YmJiIEpTQ2VsbDo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wVG9PYmplY3RTbG93CiAgICAg
cmV0dXJuKHQyKQogCkBAIC05NzQsMTUgKzk3NCwxNSBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9w
X25lZ2F0ZSwgT3BOZWdhdGUsCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwg
dDMpCiAgICAgbWV0YWRhdGEodDEsIHQyKQogICAgIGxvYWRpIE9wTmVnYXRlOjpNZXRhZGF0YTo6
bV9hcml0aFByb2ZpbGUgKyBBcml0aFByb2ZpbGU6Om1fYml0c1t0MV0sIHQyCi0gICAgYnFiIHQz
LCB0YWdUeXBlTnVtYmVyLCAub3BOZWdhdGVOb3RJbnQKKyAgICBicWIgdDMsIG51bWJlclRhZywg
Lm9wTmVnYXRlTm90SW50CiAgICAgYnRpeiB0MywgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdwog
ICAgIG5lZ2kgdDMKLSAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBvcnEgbnVtYmVyVGFn
LCB0MwogICAgIG9yaSBBcml0aFByb2ZpbGVJbnQsIHQyCiAgICAgc3RvcmVpIHQyLCBPcE5lZ2F0
ZTo6TWV0YWRhdGE6Om1fYXJpdGhQcm9maWxlICsgQXJpdGhQcm9maWxlOjptX2JpdHNbdDFdCiAg
ICAgcmV0dXJuKHQzKQogLm9wTmVnYXRlTm90SW50OgotICAgIGJ0cXogdDMsIHRhZ1R5cGVOdW1i
ZXIsIC5vcE5lZ2F0ZVNsb3cKKyAgICBidHF6IHQzLCBudW1iZXJUYWcsIC5vcE5lZ2F0ZVNsb3cK
ICAgICB4b3JxIDB4ODAwMDAwMDAwMDAwMDAwMCwgdDMKICAgICBvcmkgQXJpdGhQcm9maWxlTnVt
YmVyLCB0MgogICAgIHN0b3JlaSB0MiwgT3BOZWdhdGU6Ok1ldGFkYXRhOjptX2FyaXRoUHJvZmls
ZSArIEFyaXRoUHJvZmlsZTo6bV9iaXRzW3QxXQpAQCAtMTAwNiw4ICsxMDA2LDggQEAgbWFjcm8g
YmluYXJ5T3BDdXN0b21TdG9yZShvcGNvZGVOYW1lLCBvcAogICAgICAgICBnZXQobV9saHMsIHQy
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MSkKICAgICAgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0gICAgICAgIGJxYiB0MCwgdGFn
VHlwZU51bWJlciwgLm9wMU5vdEludAotICAgICAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5v
cDJOb3RJbnQKKyAgICAgICAgYnFiIHQwLCBudW1iZXJUYWcsIC5vcDFOb3RJbnQKKyAgICAgICAg
YnFiIHQxLCBudW1iZXJUYWcsIC5vcDJOb3RJbnQKICAgICAgICAgZ2V0KG1fZHN0LCB0MikKICAg
ICAgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQxLCB0MCwgLnNsb3csIHQyKQogCkBAIC0x
MDE2LDEwICsxMDE2LDEwIEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFtZSwg
b3AKIAogICAgIC5vcDFOb3RJbnQ6CiAgICAgICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KLSAg
ICAgICAgYnRxeiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFhZXEgdDEsIHRh
Z1R5cGVOdW1iZXIsIC5vcDFOb3RJbnRPcDJJbnQKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51
bWJlciwgLnNsb3cKLSAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6
IHQwLCBudW1iZXJUYWcsIC5zbG93CisgICAgICAgIGJxYWVxIHQxLCBudW1iZXJUYWcsIC5vcDFO
b3RJbnRPcDJJbnQKKyAgICAgICAgYnRxeiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBh
ZGRxIG51bWJlclRhZywgdDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIHByb2ZpbGUo
QXJpdGhQcm9maWxlTnVtYmVyTnVtYmVyKQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CkBA
IC0xMDI4LDI1ICsxMDI4LDI1IEBAIG1hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUob3Bjb2RlTmFt
ZSwgb3AKICAgICAgICAgY2kyZCB0MSwgZnQxCiAgICAgLm9wMU5vdEludFJlYWR5OgogICAgICAg
ICBnZXQobV9kc3QsIHQyKQotICAgICAgICBhZGRxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgICAg
IGFkZHEgbnVtYmVyVGFnLCB0MAogICAgICAgICBmcTJkIHQwLCBmdDAKICAgICAgICAgZG91Ymxl
T3BlcmF0aW9uKGZ0MSwgZnQwKQogICAgICAgICBmZDJxIGZ0MCwgdDAKLSAgICAgICAgc3VicSB0
YWdUeXBlTnVtYmVyLCB0MAorICAgICAgICBzdWJxIG51bWJlclRhZywgdDAKICAgICAgICAgc3Rv
cmVxIHQwLCBbY2ZyLCB0MiwgOF0KICAgICAgICAgZGlzcGF0Y2goKQogCiAgICAgLm9wMk5vdElu
dDoKICAgICAgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vj
b25kIGlzIGRlZmluaXRlbHkgbm90LgogICAgICAgICBnZXQobV9kc3QsIHQyKQotICAgICAgICBi
dHF6IHQxLCB0YWdUeXBlTnVtYmVyLCAuc2xvdworICAgICAgICBidHF6IHQxLCBudW1iZXJUYWcs
IC5zbG93CiAgICAgICAgIHByb2ZpbGUoQXJpdGhQcm9maWxlSW50TnVtYmVyKQogICAgICAgICBj
aTJkIHQwLCBmdDAKLSAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBhZGRx
IG51bWJlclRhZywgdDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKICAgICAgICAgZmQycSBmdDAsIHQwCi0gICAgICAgIHN1YnEgdGFnVHlw
ZU51bWJlciwgdDAKKyAgICAgICAgc3VicSBudW1iZXJUYWcsIHQwCiAgICAgICAgIHN0b3JlcSB0
MCwgW2NmciwgdDIsIDhdCiAgICAgICAgIGRpc3BhdGNoKCkKIApAQCAtMTA3Miw3ICsxMDcyLDcg
QEAgaWYgWDg2XzY0IG9yIFg4Nl82NF9XSU4KICAgICAgICAgICAgIGNkcWkKICAgICAgICAgICAg
IGlkaXZpIHQzCiAgICAgICAgICAgICBidGlueiB0MSwgc2xvdwotICAgICAgICAgICAgb3JxIHRh
Z1R5cGVOdW1iZXIsIHQwCisgICAgICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAogICAgICAgICAg
ICAgc3RvcmVxIHQwLCBbY2ZyLCBpbmRleCwgOF0KICAgICAgICAgZW5kLAogICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kKQpAQCAtMTA5MCw3ICsxMDkwLDcg
QEAgYmluYXJ5T3BDdXN0b21TdG9yZShtdWwsIE9wTXVsLAogICAgICAgICBiaWx0IGxlZnQsIDAs
IHNsb3cKICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwogICAgIC5kb25lOgotICAgICAgICBv
cnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICAgICAgb3JxIG51bWJlclRhZywgdDMKICAgICAgICAg
c3RvcmVxIHQzLCBbY2ZyLCBpbmRleCwgOF0KICAgICBlbmQsCiAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCkKQEAgLTExMDAsNyArMTEwMCw3IEBAIG1hY3JvIGJp
bmFyeU9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwKICAgICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwKICAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93LCBpbmRleCkKICAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNs
b3cpCi0gICAgICAgICAgICBvcnEgdGFnVHlwZU51bWJlciwgcmlnaHQKKyAgICAgICAgICAgIG9y
cSBudW1iZXJUYWcsIHJpZ2h0CiAgICAgICAgICAgICBzdG9yZXEgcmlnaHQsIFtjZnIsIGluZGV4
LCA4XQogICAgICAgICBlbmQsCiAgICAgICAgIGRvdWJsZU9wZXJhdGlvbikKQEAgLTExMzMsMTAg
KzExMzMsMTAgQEAgbWFjcm8gY29tbW9uQml0T3Aob3BLaW5kLCBvcGNvZGVOYW1lLCBvcAogICAg
ICAgICBnZXQobV9saHMsIHQyKQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQwLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCi0g
ICAgICAgIGJxYiB0MCwgdGFnVHlwZU51bWJlciwgLnNsb3cKLSAgICAgICAgYnFiIHQxLCB0YWdU
eXBlTnVtYmVyLCAuc2xvdworICAgICAgICBicWIgdDAsIG51bWJlclRhZywgLnNsb3cKKyAgICAg
ICAgYnFiIHQxLCBudW1iZXJUYWcsIC5zbG93CiAgICAgICAgIG9wZXJhdGlvbih0MSwgdDApCi0g
ICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAgICAgICBvcnEgbnVtYmVyVGFnLCB0MAog
ICAgICAgICByZXR1cm4odDApCiAKICAgICAuc2xvdzoKQEAgLTExNzcsNyArMTE3Nyw3IEBAIGxs
aW50T3BXaXRoUHJvZmlsZShvcF9iaXRub3QsIE9wQml0bm90LCAKICAgICBnZXQobV9vcGVyYW5k
LCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BC
aXROb3RTbG93KQogICAgIG5vdGkgdDMKLSAgICBvcnEgdGFnVHlwZU51bWJlciwgdDMKKyAgICBv
cnEgbnVtYmVyVGFnLCB0MwogICAgIHJldHVybih0MykKIC5vcEJpdE5vdFNsb3c6CiAgICAgY2Fs
bFNsb3dQYXRoKF9zbG93X3BhdGhfYml0bm90KQpAQCAtMTIyMCw3ICsxMjIwLDcgQEAgZW5kKQog
bGxpbnRPcFdpdGhSZXR1cm4ob3BfaXNfdW5kZWZpbmVkLCBPcElzVW5kZWZpbmVkLCBtYWNybyAo
c2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDEsIHQwKQotICAgIGJ0cXogdDAsIHRhZ01h
c2ssIC5vcElzVW5kZWZpbmVkQ2VsbAorICAgIGJ0cXogdDAsIG5vdENlbGxNYXNrLCAub3BJc1Vu
ZGVmaW5lZENlbGwKICAgICBjcWVxIHQwLCBWYWx1ZVVuZGVmaW5lZCwgdDMKICAgICBvcnEgVmFs
dWVGYWxzZSwgdDMKICAgICByZXR1cm4odDMpCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBlbmQpCiBs
bGludE9wV2l0aFJldHVybihvcF9pc19udW1iZXIsIE9wSXNOdW1iZXIsIG1hY3JvIChzaXplLCBn
ZXQsIGRpc3BhdGNoLCByZXR1cm4pCiAgICAgZ2V0KG1fb3BlcmFuZCwgdDEpCiAgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgdHFueiB0MCwgdGFnVHlwZU51bWJl
ciwgdDEKKyAgICB0cW56IHQwLCBudW1iZXJUYWcsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQx
CiAgICAgcmV0dXJuKHQxKQogZW5kKQpAQCAtMTI2MSw3ICsxMjYxLDcgQEAgbGxpbnRPcFdpdGhS
ZXR1cm4ob3BfaXNfY2VsbF93aXRoX3R5cGUsIAogICAgIGdldHUoc2l6ZSwgT3BJc0NlbGxXaXRo
VHlwZSwgbV90eXBlLCB0MCkKICAgICBnZXQobV9vcGVyYW5kLCB0MSkKICAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHNpemUsIHQxLCB0MykKLSAgICBidHFueiB0MywgdGFnTWFzaywgLm5vdENl
bGxDYXNlCisgICAgYnRxbnogdDMsIG5vdENlbGxNYXNrLCAubm90Q2VsbENhc2UKICAgICBjYmVx
IEpTQ2VsbDo6bV90eXBlW3QzXSwgdDAsIHQxCiAgICAgb3JxIFZhbHVlRmFsc2UsIHQxCiAgICAg
cmV0dXJuKHQxKQpAQCAtMTI3Myw3ICsxMjczLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4o
b3BfaXNfb2JqZWN0LCBPcElzT2JqZWN0LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0
dXJuKQogICAgIGdldChtX29wZXJhbmQsIHQxKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
c2l6ZSwgdDEsIHQwKQotICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BJc09iamVjdE5vdENlbGwK
KyAgICBidHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcElzT2JqZWN0Tm90Q2VsbAogICAgIGNiYWVx
IEpTQ2VsbDo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgdDEKICAgICBvcnEgVmFsdWVGYWxzZSwg
dDEKICAgICByZXR1cm4odDEpCkBAIC0xMzYyLDcgKzEzNjIsNyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCCiAgICAgbG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6
bV9idXR0ZXJmbHlbdDNdLCB0MCwgdDEpCiAgICAgbG9hZGkgLXNpemVvZiBJbmRleGluZ0hlYWRl
ciArIEluZGV4aW5nSGVhZGVyOjp1Lmxlbmd0aHMucHVibGljTGVuZ3RoW3QwXSwgdDAKICAgICBi
aWx0IHQwLCAwLCAub3BHZXRCeUlkU2xvdwotICAgIG9ycSB0YWdUeXBlTnVtYmVyLCB0MAorICAg
IG9ycSBudW1iZXJUYWcsIHQwCiAgICAgdmFsdWVQcm9maWxlKE9wR2V0QnlJZCwgdDIsIHQwKQog
ICAgIHJldHVybih0MCkKIApAQCAtMTQ2MCwxMyArMTQ2MCwxMyBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgZW5kCiAKICAgICBtYWNybyBmaW5pc2hJbnRH
ZXRCeVZhbChyZXN1bHQsIHNjcmF0Y2gpCi0gICAgICAgIG9ycSB0YWdUeXBlTnVtYmVyLCByZXN1
bHQKKyAgICAgICAgb3JxIG51bWJlclRhZywgcmVzdWx0CiAgICAgICAgIGZpbmlzaEdldEJ5VmFs
KHJlc3VsdCwgc2NyYXRjaCkKICAgICBlbmQKIAogICAgIG1hY3JvIGZpbmlzaERvdWJsZUdldEJ5
VmFsKHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyKQogICAgICAgICBmZDJxIHJlc3VsdCwgc2Ny
YXRjaDEKLSAgICAgICAgc3VicSB0YWdUeXBlTnVtYmVyLCBzY3JhdGNoMQorICAgICAgICBzdWJx
IG51bWJlclRhZywgc2NyYXRjaDEKICAgICAgICAgZmluaXNoR2V0QnlWYWwoc2NyYXRjaDEsIHNj
cmF0Y2gyKQogICAgIGVuZAogCkBAIC0xNDgyLDggKzE0ODIsOCBAQCBsbGludE9wV2l0aE1ldGFk
YXRhKG9wX2dldF9ieV92YWwsIE9wR2V0CiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUludDMy
KHNpemUsIHQzLCB0MSwgLm9wR2V0QnlWYWxTbG93KQogICAgIHN4aTJxIHQxLCB0MQogCi0gICAg
bG9hZENhZ2VkSlNWYWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDBdLCB0MywgdGFnVHlwZU51
bWJlcikKLSAgICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICBsb2FkQ2Fn
ZWRKU1ZhbHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MF0sIHQzLCBudW1iZXJUYWcpCisgICAg
bW92ZSBUYWdOdW1iZXIsIG51bWJlclRhZwogCiAgICAgYW5kaSBJbmRleGluZ1NoYXBlTWFzaywg
dDIKICAgICBiaWVxIHQyLCBJbnQzMlNoYXBlLCAub3BHZXRCeVZhbElzQ29udGlndW91cwpAQCAt
MTUwMyw3ICsxNTAzLDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfdmFsLCBPcEdl
dAogICAgIGxvYWRkIFt0MywgdDEsIDhdLCBmdDAKICAgICBiZG5lcXVuIGZ0MCwgZnQwLCAub3BH
ZXRCeVZhbFNsb3cKICAgICBmZDJxIGZ0MCwgdDIKLSAgICBzdWJxIHRhZ1R5cGVOdW1iZXIsIHQy
CisgICAgc3VicSBudW1iZXJUYWcsIHQyCiAgICAgam1wIC5vcEdldEJ5VmFsRG9uZQogICAgIAog
Lm9wR2V0QnlWYWxOb3REb3VibGU6CkBAIC0xNjQ3LDE1ICsxNjQ3LDE1IEBAIG1hY3JvIHB1dEJ5
VmFsT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3RydWMKICAgICAgICAgZ2V0KG1fcHJvcGVydHksIHQw
KQogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlSW50MzIoc2l6ZSwgdDAsIHQzLCAub3BQ
dXRCeVZhbFNsb3cpCiAgICAgICAgIHN4aTJxIHQzLCB0MwotICAgICAgICBsb2FkQ2FnZWRKU1Zh
bHVlKEpTT2JqZWN0OjptX2J1dHRlcmZseVt0MV0sIHQwLCB0YWdUeXBlTnVtYmVyKQotICAgICAg
ICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKKyAgICAgICAgbG9hZENhZ2VkSlNW
YWx1ZShKU09iamVjdDo6bV9idXR0ZXJmbHlbdDFdLCB0MCwgbnVtYmVyVGFnKQorICAgICAgICBt
b3ZlIFRhZ051bWJlciwgbnVtYmVyVGFnCiAgICAgICAgIGJ0aW56IHQyLCBDb3B5T25Xcml0ZSwg
Lm9wUHV0QnlWYWxTbG93CiAgICAgICAgIGFuZGkgSW5kZXhpbmdTaGFwZU1hc2ssIHQyCiAgICAg
ICAgIGJpbmVxIHQyLCBJbnQzMlNoYXBlLCAub3BQdXRCeVZhbE5vdEludDMyCiAgICAgICAgIGNv
bnRpZ3VvdXNQdXRCeVZhbCgKICAgICAgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBh
ZGRyZXNzKQogICAgICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3Bl
cmFuZCwgc2NyYXRjaCkKLSAgICAgICAgICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJl
ciwgLm9wUHV0QnlWYWxTbG93CisgICAgICAgICAgICAgICAgYnFiIHNjcmF0Y2gsIG51bWJlclRh
ZywgLm9wUHV0QnlWYWxTbG93CiAgICAgICAgICAgICAgICAgc3RvcmVxIHNjcmF0Y2gsIGFkZHJl
c3MKICAgICAgICAgICAgICAgICB3cml0ZUJhcnJpZXJPbk9wZXJhbmRzKHNpemUsIGdldCwgbV9i
YXNlLCBtX3ZhbHVlKQogICAgICAgICAgICAgZW5kKQpAQCAtMTY2NSwxMSArMTY2NSwxMSBAQCBt
YWNybyBwdXRCeVZhbE9wKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjCiAgICAgICAgIGNvbnRpZ3Vv
dXNQdXRCeVZhbCgKICAgICAgICAgICAgIG1hY3JvIChvcGVyYW5kLCBzY3JhdGNoLCBhZGRyZXNz
KQogICAgICAgICAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgb3BlcmFuZCwg
c2NyYXRjaCkKLSAgICAgICAgICAgICAgICBicWIgc2NyYXRjaCwgdGFnVHlwZU51bWJlciwgLm5v
dEludAorICAgICAgICAgICAgICAgIGJxYiBzY3JhdGNoLCBudW1iZXJUYWcsIC5ub3RJbnQKICAg
ICAgICAgICAgICAgICBjaTJkIHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGptcCAucmVh
ZHkKICAgICAgICAgICAgIC5ub3RJbnQ6Ci0gICAgICAgICAgICAgICAgYWRkcSB0YWdUeXBlTnVt
YmVyLCBzY3JhdGNoCisgICAgICAgICAgICAgICAgYWRkcSBudW1iZXJUYWcsIHNjcmF0Y2gKICAg
ICAgICAgICAgICAgICBmcTJkIHNjcmF0Y2gsIGZ0MAogICAgICAgICAgICAgICAgIGJkbmVxdW4g
ZnQwLCBmdDAsIC5vcFB1dEJ5VmFsU2xvdwogICAgICAgICAgICAgLnJlYWR5OgpAQCAtMTc0MSw3
ICsxNzQxLDcgQEAgbWFjcm8gZXF1YWxOdWxsSnVtcE9wKG9wY29kZU5hbWUsIG9wY29kZQogICAg
ICAgICBnZXQobV92YWx1ZSwgdDApCiAgICAgICAgIGFzc2VydE5vdENvbnN0YW50KHNpemUsIHQw
KQogICAgICAgICBsb2FkcSBbY2ZyLCB0MCwgOF0sIHQwCi0gICAgICAgIGJ0cW56IHQwLCB0YWdN
YXNrLCAuaW1tZWRpYXRlCisgICAgICAgIGJ0cW56IHQwLCBub3RDZWxsTWFzaywgLmltbWVkaWF0
ZQogICAgICAgICBsb2FkU3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQyLCB0MSwgdDMpCiAgICAg
ICAgIGNlbGxIYW5kbGVyKHQyLCBKU0NlbGw6Om1fZmxhZ3NbdDBdLCAudGFyZ2V0KQogICAgICAg
ICBkaXNwYXRjaCgpCkBAIC0xNzUwLDcgKzE3NTAsNyBAQCBtYWNybyBlcXVhbE51bGxKdW1wT3Ao
b3Bjb2RlTmFtZSwgb3Bjb2RlCiAgICAgICAgIGp1bXAobV90YXJnZXRMYWJlbCkKIAogICAgIC5p
bW1lZGlhdGU6Ci0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwgdDAKKyAgICAgICAgYW5k
cSB+VGFnVW5kZWZpbmVkLCB0MAogICAgICAgICBpbW1lZGlhdGVIYW5kbGVyKHQwLCAudGFyZ2V0
KQogICAgICAgICBkaXNwYXRjaCgpCiAgICAgZW5kKQpAQCAtMTc4MCw3ICsxNzgwLDcgQEAgbWFj
cm8gdW5kZWZpbmVkT3JOdWxsSnVtcE9wKG9wY29kZU5hbWUsIAogICAgIGxsaW50T3BXaXRoSnVt
cChvcF8lb3Bjb2RlTmFtZSUsIG9wY29kZVN0cnVjdCwgbWFjcm8gKHNpemUsIGdldCwganVtcCwg
ZGlzcGF0Y2gpCiAgICAgICAgIGdldChtX3ZhbHVlLCB0MSkKICAgICAgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZShzaXplLCB0MSwgdDApCi0gICAgICAgIGFuZHEgflRhZ0JpdFVuZGVmaW5lZCwg
dDAKKyAgICAgICAgYW5kcSB+VGFnVW5kZWZpbmVkLCB0MAogICAgICAgICBmbih0MCwgLnRhcmdl
dCkKICAgICAgICAgZGlzcGF0Y2goKQogCkBAIC0xODE4LDMwICsxODE4LDMwIEBAIG1hY3JvIGNv
bXBhcmVKdW1wT3Aob3Bjb2RlTmFtZSwgb3Bjb2RlU3QKICAgICAgICAgZ2V0KG1fcmhzLCB0MykK
ICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MiwgdDApCiAgICAgICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDMsIHQxKQotICAgICAgICBicWIgdDAsIHRhZ1R5
cGVOdW1iZXIsIC5vcDFOb3RJbnQKLSAgICAgICAgYnFiIHQxLCB0YWdUeXBlTnVtYmVyLCAub3Ay
Tm90SW50CisgICAgICAgIGJxYiB0MCwgbnVtYmVyVGFnLCAub3AxTm90SW50CisgICAgICAgIGJx
YiB0MSwgbnVtYmVyVGFnLCAub3AyTm90SW50CiAgICAgICAgIGludGVnZXJDb21wYXJlKHQwLCB0
MSwgLmp1bXBUYXJnZXQpCiAgICAgICAgIGRpc3BhdGNoKCkKIAogICAgIC5vcDFOb3RJbnQ6Ci0g
ICAgICAgIGJ0cXogdDAsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGJxYiB0MSwgdGFn
VHlwZU51bWJlciwgLm9wMU5vdEludE9wMk5vdEludAorICAgICAgICBidHF6IHQwLCBudW1iZXJU
YWcsIC5zbG93CisgICAgICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3AxTm90SW50T3AyTm90SW50
CiAgICAgICAgIGNpMmQgdDEsIGZ0MQogICAgICAgICBqbXAgLm9wMU5vdEludFJlYWR5CiAgICAg
Lm9wMU5vdEludE9wMk5vdEludDoKLSAgICAgICAgYnRxeiB0MSwgdGFnVHlwZU51bWJlciwgLnNs
b3cKLSAgICAgICAgYWRkcSB0YWdUeXBlTnVtYmVyLCB0MQorICAgICAgICBidHF6IHQxLCBudW1i
ZXJUYWcsIC5zbG93CisgICAgICAgIGFkZHEgbnVtYmVyVGFnLCB0MQogICAgICAgICBmcTJkIHQx
LCBmdDEKICAgICAub3AxTm90SW50UmVhZHk6Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwg
dDAKKyAgICAgICAgYWRkcSBudW1iZXJUYWcsIHQwCiAgICAgICAgIGZxMmQgdDAsIGZ0MAogICAg
ICAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKICAgICAgICAgZGlzcGF0
Y2goKQogCiAgICAgLm9wMk5vdEludDoKICAgICAgICAgY2kyZCB0MCwgZnQwCi0gICAgICAgIGJ0
cXogdDEsIHRhZ1R5cGVOdW1iZXIsIC5zbG93Ci0gICAgICAgIGFkZHEgdGFnVHlwZU51bWJlciwg
dDEKKyAgICAgICAgYnRxeiB0MSwgbnVtYmVyVGFnLCAuc2xvdworICAgICAgICBhZGRxIG51bWJl
clRhZywgdDEKICAgICAgICAgZnEyZCB0MSwgZnQxCiAgICAgICAgIGRvdWJsZUNvbXBhcmUoZnQw
LCBmdDEsIC5qdW1wVGFyZ2V0KQogICAgICAgICBkaXNwYXRjaCgpCkBAIC0xOTEyLDcgKzE5MTIs
NyBAQCBsbGludE9wV2l0aEp1bXAob3Bfc3dpdGNoX2ltbSwgT3BTd2l0Y2hJCiAgICAgbXVsaSBz
aXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MwogICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6
Om1fc3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCiAgICAgYWRk
cCB0MywgdDIKLSAgICBicWIgdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaEltbU5vdEludAor
ICAgIGJxYiB0MSwgbnVtYmVyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKICAgICBzdWJpIFNpbXBs
ZUp1bXBUYWJsZTo6bWluW3QyXSwgdDEKICAgICBiaWFlcSB0MSwgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJv
dWdoCiAgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3QyXSwgdDMKQEAgLTE5MjEsNyArMTkyMSw3IEBAIGxsaW50T3BXaXRoSnVtcChv
cF9zd2l0Y2hfaW1tLCBPcFN3aXRjaEkKICAgICBkaXNwYXRjaEluZGlyZWN0KHQxKQogCiAub3BT
d2l0Y2hJbW1Ob3RJbnQ6Ci0gICAgYnRxbnogdDEsIHRhZ1R5cGVOdW1iZXIsIC5vcFN3aXRjaElt
bVNsb3cgICAjIEdvIHNsb3cgaWYgaXQncyBhIGRvdWJsZS4KKyAgICBidHFueiB0MSwgbnVtYmVy
VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAgIyBHbyBzbG93IGlmIGl0J3MgYSBkb3VibGUuCiAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaDoKICAgICBqdW1wKG1fZGVmYXVsdE9mZnNldCkKIApAQCAtMTk0
MCw3ICsxOTQwLDcgQEAgbGxpbnRPcFdpdGhKdW1wKG9wX3N3aXRjaF9jaGFyLCBPcFN3aXRjaAog
ICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKICAgICBsb2FkcCBDb2RlQmxvY2s6
OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0
MgogICAgIGFkZHAgdDMsIHQyCi0gICAgYnRxbnogdDEsIHRhZ01hc2ssIC5vcFN3aXRjaENoYXJG
YWxsVGhyb3VnaAorICAgIGJ0cW56IHQxLCBub3RDZWxsTWFzaywgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKICAgICBsb2FkcCBKU1N0cmluZzo6bV9maWJlclt0MV0sIHQwCiAg
ICAgYnRwbnogdDAsIGlzUm9wZUluUG9pbnRlciwgLm9wU3dpdGNoT25Sb3BlCkBAIC0xOTc2LDcg
KzE5NzYsNyBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgCiAgICAg
Z2V0dShtX2FyZ3YsIHQzKQogICAgIG5lZ3AgdDMKICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZz
ZXRbY2ZyLCB0MywgOF0sIHQwCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25lCisgICAgYnRx
bnogdDAsIG5vdENlbGxNYXNrLCAuZG9uZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJ
RFt0MF0sIHQzCiAgICAgc3RvcmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25l
OgpAQCAtMjAyMiw3ICsyMDIyLDcgQEAgZW5kKQogbGxpbnRPcFdpdGhSZXR1cm4ob3BfdG9fcHJp
bWl0aXZlLCBPcFRvUHJpbWl0aXZlLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgcmV0dXJu
KQogICAgIGdldChtX3NyYywgdDIpCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0
MiwgdDApCi0gICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBi
dHFueiB0MCwgbm90Q2VsbE1hc2ssIC5vcFRvUHJpbWl0aXZlSXNJbW0KICAgICBiYmFlcSBKU0Nl
bGw6Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKIC5vcFRv
UHJpbWl0aXZlSXNJbW06CiAgICAgcmV0dXJuKHQwKQpAQCAtMjU0NCw3ICsyNTQ0LDcgQEAgbGxp
bnRPcFdpdGhNZXRhZGF0YShvcF9wcm9maWxlX3R5cGUsIE9wUAogICAgIGxvYWRwIE9wUHJvZmls
ZVR5cGU6Ok1ldGFkYXRhOjptX3R5cGVMb2NhdGlvblt0NV0sIHQzCiAgICAgc3RvcmVwIHQzLCBU
eXBlUHJvZmlsZXJMb2c6OkxvZ0VudHJ5Ojpsb2NhdGlvblt0Ml0KIAotICAgIGJ0cXogdDAsIHRh
Z01hc2ssIC5vcFByb2ZpbGVUeXBlSXNDZWxsCisgICAgYnRxeiB0MCwgbm90Q2VsbE1hc2ssIC5v
cFByb2ZpbGVUeXBlSXNDZWxsCiAgICAgc3RvcmVpIDAsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50
cnk6OnN0cnVjdHVyZUlEW3QyXQogICAgIGptcCAub3BQcm9maWxlVHlwZVNraXBJc0NlbGwKIC5v
cFByb2ZpbGVUeXBlSXNDZWxsOgpAQCAtMjU4Myw3ICsyNTgzLDcgQEAgbGxpbnRPcFdpdGhSZXR1
cm4ob3BfZ2V0X3Jlc3RfbGVuZ3RoLCBPcAogLnN0b3JlWmVybzoKICAgICBtb3ZlIDAsIHQwCiAu
Ym94VXA6Ci0gICAgb3JxIHRhZ1R5cGVOdW1iZXIsIHQwCisgICAgb3JxIG51bWJlclRhZywgdDAK
ICAgICByZXR1cm4odDApCiBlbmQpCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDI1MDA4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkod29y
a2luZyBjb3B5KQpAQCAtMTg3LDE2ICsxODcsMTYgQEAgY29uc3QgTWV0YWRhdGFPZmZzZXRUYWJs
ZTMyT2Zmc2V0ID0gY29ucwogCiAjIFNvbWUgdmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRz
LgogaWYgSlNWQUxVRTY0Ci0gICAgY29uc3QgVGFnQml0VHlwZU90aGVyID0gY29uc3RleHByIFRh
Z0JpdFR5cGVPdGhlcgotICAgIGNvbnN0IFRhZ0JpdEJvb2wgICAgICA9IGNvbnN0ZXhwciBUYWdC
aXRCb29sCi0gICAgY29uc3QgVGFnQml0VW5kZWZpbmVkID0gY29uc3RleHByIFRhZ0JpdFVuZGVm
aW5lZAotICAgIGNvbnN0IFZhbHVlRW1wdHkgICAgICA9IGNvbnN0ZXhwciBWYWx1ZUVtcHR5Ci0g
ICAgY29uc3QgVmFsdWVGYWxzZSAgICAgID0gY29uc3RleHByIFZhbHVlRmFsc2UKLSAgICBjb25z
dCBWYWx1ZVRydWUgICAgICAgPSBjb25zdGV4cHIgVmFsdWVUcnVlCi0gICAgY29uc3QgVmFsdWVV
bmRlZmluZWQgID0gY29uc3RleHByIFZhbHVlVW5kZWZpbmVkCi0gICAgY29uc3QgVmFsdWVOdWxs
ICAgICAgID0gY29uc3RleHByIFZhbHVlTnVsbAotICAgIGNvbnN0IFRhZ1R5cGVOdW1iZXIgICA9
IGNvbnN0ZXhwciBUYWdUeXBlTnVtYmVyCi0gICAgY29uc3QgVGFnTWFzayAgICAgICAgID0gY29u
c3RleHByIFRhZ01hc2sKKyAgICBjb25zdCBUYWdPdGhlciAgICAgICAgPSBjb25zdGV4cHIgSlNW
YWx1ZTo6T3RoZXJUYWcKKyAgICBjb25zdCBUYWdCb29sICAgICAgICAgPSBjb25zdGV4cHIgSlNW
YWx1ZTo6Qm9vbFRhZworICAgIGNvbnN0IFRhZ1VuZGVmaW5lZCAgICA9IGNvbnN0ZXhwciBKU1Zh
bHVlOjpVbmRlZmluZWRUYWcKKyAgICBjb25zdCBWYWx1ZUVtcHR5ICAgICAgPSBjb25zdGV4cHIg
SlNWYWx1ZTo6VmFsdWVFbXB0eQorICAgIGNvbnN0IFZhbHVlRmFsc2UgICAgICA9IGNvbnN0ZXhw
ciBKU1ZhbHVlOjpWYWx1ZUZhbHNlCisgICAgY29uc3QgVmFsdWVUcnVlICAgICAgID0gY29uc3Rl
eHByIEpTVmFsdWU6OlZhbHVlVHJ1ZQorICAgIGNvbnN0IFZhbHVlVW5kZWZpbmVkICA9IGNvbnN0
ZXhwciBKU1ZhbHVlOjpWYWx1ZVVuZGVmaW5lZAorICAgIGNvbnN0IFZhbHVlTnVsbCAgICAgICA9
IGNvbnN0ZXhwciBKU1ZhbHVlOjpWYWx1ZU51bGwKKyAgICBjb25zdCBUYWdOdW1iZXIgICAgICAg
PSBjb25zdGV4cHIgSlNWYWx1ZTo6TnVtYmVyVGFnCisgICAgY29uc3QgTm90Q2VsbE1hc2sgICAg
ID0gY29uc3RleHByIEpTVmFsdWU6Ok5vdENlbGxNYXNrCiBlbHNlCiAgICAgY29uc3QgSW50MzJU
YWcgPSBjb25zdGV4cHIgSlNWYWx1ZTo6SW50MzJUYWcKICAgICBjb25zdCBCb29sZWFuVGFnID0g
Y29uc3RleHByIEpTVmFsdWU6OkJvb2xlYW5UYWcKQEAgLTI2NiwyMiArMjY2LDIyIEBAIGlmIEpT
VkFMVUU2NAogICAgIGlmIEFSTTY0IG9yIEFSTTY0RQogICAgICAgICBjb25zdCBtZXRhZGF0YVRh
YmxlID0gY3NyNgogICAgICAgICBjb25zdCBQQiA9IGNzcjcKLSAgICAgICAgY29uc3QgdGFnVHlw
ZU51bWJlciA9IGNzcjgKLSAgICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjkKKyAgICAgICAgY29u
c3QgbnVtYmVyVGFnID0gY3NyOAorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9IGNzcjkKICAg
ICBlbHNpZiBYODZfNjQKICAgICAgICAgY29uc3QgbWV0YWRhdGFUYWJsZSA9IGNzcjEKICAgICAg
ICAgY29uc3QgUEIgPSBjc3IyCi0gICAgICAgIGNvbnN0IHRhZ1R5cGVOdW1iZXIgPSBjc3IzCi0g
ICAgICAgIGNvbnN0IHRhZ01hc2sgPSBjc3I0CisgICAgICAgIGNvbnN0IG51bWJlclRhZyA9IGNz
cjMKKyAgICAgICAgY29uc3Qgbm90Q2VsbE1hc2sgPSBjc3I0CiAgICAgZWxzaWYgWDg2XzY0X1dJ
TgogICAgICAgICBjb25zdCBtZXRhZGF0YVRhYmxlID0gY3NyMwogICAgICAgICBjb25zdCBQQiA9
IGNzcjQKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNzcjUKLSAgICAgICAgY29uc3Qg
dGFnTWFzayA9IGNzcjYKKyAgICAgICAgY29uc3QgbnVtYmVyVGFnID0gY3NyNQorICAgICAgICBj
b25zdCBub3RDZWxsTWFzayA9IGNzcjYKICAgICBlbHNpZiBDX0xPT1Agb3IgQ19MT09QX1dJTgog
ICAgICAgICBjb25zdCBQQiA9IGNzcjAKLSAgICAgICAgY29uc3QgdGFnVHlwZU51bWJlciA9IGNz
cjEKLSAgICAgICAgY29uc3QgdGFnTWFzayA9IGNzcjIKKyAgICAgICAgY29uc3QgbnVtYmVyVGFn
ID0gY3NyMQorICAgICAgICBjb25zdCBub3RDZWxsTWFzayA9IGNzcjIKICAgICAgICAgY29uc3Qg
bWV0YWRhdGFUYWJsZSA9IGNzcjMKICAgICBlbmQKIApAQCAtMTIwMCw4ICsxMjAwLDggQEAgbWFj
cm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvYwogICAgIGxvYWRwIENvZGVCbG9j
azo6bV9tZXRhZGF0YVt0MV0sIG1ldGFkYXRhVGFibGUKIAogICAgIGlmIEpTVkFMVUU2NAotICAg
ICAgICBtb3ZlIFRhZ1R5cGVOdW1iZXIsIHRhZ1R5cGVOdW1iZXIKLSAgICAgICAgYWRkcSBUYWdC
aXRUeXBlT3RoZXIsIHRhZ1R5cGVOdW1iZXIsIHRhZ01hc2sKKyAgICAgICAgbW92ZSBUYWdOdW1i
ZXIsIG51bWJlclRhZworICAgICAgICBhZGRxIFRhZ090aGVyLCBudW1iZXJUYWcsIG5vdENlbGxN
YXNrCiAgICAgZW5kCiBlbmQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjUwMDg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTYsNyArMzE2LDcgQEAgSlNWYWx1ZSBDTG9vcDo6ZXhlY3V0ZShPcGNvZGVJ
RCBlbnRyeU9wYwogCiAgICAgQ0xvb3BSZWdpc3RlciB0MCwgdDEsIHQyLCB0MywgdDUsIHNwLCBj
ZnIsIGxyLCBwYzsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIENMb29wUmVnaXN0ZXIgcGNCYXNl
LCB0YWdUeXBlTnVtYmVyLCB0YWdNYXNrOworICAgIENMb29wUmVnaXN0ZXIgcGNCYXNlLCBudW1i
ZXJUYWcsIG5vdENlbGxNYXNrOwogI2VuZGlmCiAgICAgQ0xvb3BSZWdpc3RlciBtZXRhZGF0YVRh
YmxlOwogICAgIENMb29wRG91YmxlUmVnaXN0ZXIgZDAsIGQxOwpAQCAtMzU2LDggKzM1Niw4IEBA
IEpTVmFsdWUgQ0xvb3A6OmV4ZWN1dGUoT3Bjb2RlSUQgZW50cnlPcGMKICNpZiBVU0UoSlNWQUxV
RTY0KQogICAgIC8vIEZvciB0aGUgQVNNIGxsaW50LCBKSVRTdHVicyB0YWtlcyBjYXJlIG9mIHRo
aXMgaW5pdGlhbGl6YXRpb24uIFdlIGRvCiAgICAgLy8gaXQgZXhwbGljaXRseSBoZXJlIGZvciB0
aGUgQyBsb29wOgotICAgIHRhZ1R5cGVOdW1iZXIgPSAweEZGRkYwMDAwMDAwMDAwMDA7Ci0gICAg
dGFnTWFzayA9IDB4RkZGRjAwMDAwMDAwMDAwMjsKKyAgICBudW1iZXJUYWcgPSBKU1ZhbHVlOjpO
dW1iZXJUYWc7CisgICAgbm90Q2VsbE1hc2sgPSBKU1ZhbHVlOjpOb3RDZWxsTWFzazsKICNlbmRp
ZiAvLyBVU0UoSlNWQUxVRTY0KQogCiAgICAgLy8gSW50ZXJwcmV0ZXIgdmFyaWFibGVzIGZvciB2
YWx1ZSBwYXNzaW5nIGJldHdlZW4gb3Bjb2RlcyBhbmQvb3IgaGVscGVyczoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybTY0LnJiCShyZXZpc2lvbiAyNTAwODUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm02NC5yYgkod29ya2luZyBjb3B5
KQpAQCAtNDcsOCArNDcsOCBAQCByZXF1aXJlICJyaXNjIgogIyB4MTYgID0+ICAgICAgICAgICAg
ICAgICAgKHNjcmF0Y2gpCiAjIHgxNyAgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKICMg
eDI2ICA9PiAgICAgICAgICAgICBjc3IwIChQQikKLSMgeDI3ICA9PiAgICAgICAgICAgICBjc3Ix
ICh0YWdUeXBlTnVtYmVyKQotIyB4MjggID0+ICAgICAgICAgICAgIGNzcjIgKHRhZ01hc2spCisj
IHgyNyAgPT4gICAgICAgICAgICAgY3NyMSAobnVtYmVyVGFnKQorIyB4MjggID0+ICAgICAgICAg
ICAgIGNzcjIgKG5vdENlbGxNYXNrKQogIyB4MjkgID0+IGNmcgogIyAgc3AgID0+IHNwCiAjICBs
ciAgPT4gbHIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Nsb29wLnJi
CShyZXZpc2lvbiAyNTAwODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9j
bG9vcC5yYgkod29ya2luZyBjb3B5KQpAQCAtODgsOSArODgsOSBAQCBjbGFzcyBSZWdpc3RlcklE
CiAgICAgICAgIHdoZW4gImNzcjAiCiAgICAgICAgICAgICAicGNCYXNlIgogICAgICAgICB3aGVu
ICJjc3IxIgotICAgICAgICAgICAgInRhZ1R5cGVOdW1iZXIiCisgICAgICAgICAgICAibnVtYmVy
VGFnIgogICAgICAgICB3aGVuICJjc3IyIgotICAgICAgICAgICAgInRhZ01hc2siCisgICAgICAg
ICAgICAibm90Q2VsbE1hc2siCiAgICAgICAgIHdoZW4gImNzcjMiCiAgICAgICAgICAgICAibWV0
YWRhdGFUYWJsZSIKICAgICAgICAgd2hlbiAiY2ZyIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBA
IHJlcXVpcmUgImNvbmZpZyIKICMgcmJ4ID0+ICAgICAgICAgICAgIGNzcjAgKGNhbGxlZS1zYXZl
LCBQQiwgdW51c2VkIGluIGJhc2VsaW5lKQogIyByMTIgPT4gICAgICAgICAgICAgY3NyMSAoY2Fs
bGVlLXNhdmUpCiAjIHIxMyA9PiAgICAgICAgICAgICBjc3IyIChjYWxsZWUtc2F2ZSkKLSMgcjE0
ID0+ICAgICAgICAgICAgIGNzcjMgKGNhbGxlZS1zYXZlLCB0YWdUeXBlTnVtYmVyKQotIyByMTUg
PT4gICAgICAgICAgICAgY3NyNCAoY2FsbGVlLXNhdmUsIHRhZ01hc2spCisjIHIxNCA9PiAgICAg
ICAgICAgICBjc3IzIChjYWxsZWUtc2F2ZSwgbnVtYmVyVGFnKQorIyByMTUgPT4gICAgICAgICAg
ICAgY3NyNCAoY2FsbGVlLXNhdmUsIG5vdENlbGxNYXNrKQogIyByc3AgPT4gc3AKICMgcmJwID0+
IGNmcgogIyByMTEgPT4gICAgICAgICAgICAgICAgICAoc2NyYXRjaCkKQEAgLTc1LDggKzc1LDgg
QEAgcmVxdWlyZSAiY29uZmlnIgogIyByZGkgPT4gICAgICAgICAgICAgY3NyMiAoY2FsbGVlLXNh
dmUpCiAjIHIxMiA9PiAgICAgICAgICAgICBjc3IzIChjYWxsZWUtc2F2ZSkKICMgcjEzID0+ICAg
ICAgICAgICAgIGNzcjQgKGNhbGxlZS1zYXZlKQotIyByMTQgPT4gICAgICAgICAgICAgY3NyNSAo
Y2FsbGVlLXNhdmUsIHRhZ1R5cGVOdW1iZXIpCi0jIHIxNSA9PiAgICAgICAgICAgICBjc3I2IChj
YWxsZWUtc2F2ZSwgdGFnTWFzaykKKyMgcjE0ID0+ICAgICAgICAgICAgIGNzcjUgKGNhbGxlZS1z
YXZlLCBudW1iZXJUYWcpCisjIHIxNSA9PiAgICAgICAgICAgICBjc3I2IChjYWxsZWUtc2F2ZSwg
bm90Q2VsbE1hc2spCiAjIHJzcCA9PiBzcAogIyByYnAgPT4gY2ZyCiAjIHIxMSA9PiAgICAgICAg
ICAgICAgICAgIChzY3JhdGNoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuaAkocmV2aXNpb24gMjUwMDg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsOSArNDEwLDkgQEAg
cHVibGljOgogICAgICAqICAgICBOdWxsOiAgICAgIDB4MDIKICAgICAgKgogICAgICAqIFRoZXNl
IHZhbHVlcyBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAgKiAtIEJpdCAxIChU
YWdCaXRUeXBlT3RoZXIpIGlzIHNldCBmb3IgYWxsIGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFs
IHBvaW50ZXJzIHRvIGJlCisgICAgICogLSBCaXQgMSAoT3RoZXJUYWcpIGlzIHNldCBmb3IgYWxs
IGZvdXIgdmFsdWVzLCBhbGxvd2luZyByZWFsIHBvaW50ZXJzIHRvIGJlCiAgICAgICogICBxdWlj
a2x5IGRpc3Rpbmd1aXNoZWQgZnJvbSBhbGwgaW1tZWRpYXRlIHZhbHVlcywgaW5jbHVkaW5nIHRo
ZXNlIGludmFsaWQgcG9pbnRlcnMuCi0gICAgICogLSBXaXRoIGJpdCAzIGlzIG1hc2tlZCBvdXQg
KFRhZ0JpdFVuZGVmaW5lZCkgVW5kZWZpbmVkIGFuZCBOdWxsIHNoYXJlIHRoZQorICAgICAqIC0g
V2l0aCBiaXQgMyBpcyBtYXNrZWQgb3V0IChVbmRlZmluZWRUYWcpIFVuZGVmaW5lZCBhbmQgTnVs
bCBzaGFyZSB0aGUKICAgICAgKiAgIHNhbWUgdmFsdWUsIGFsbG93aW5nIG51bGwgJiB1bmRlZmlu
ZWQgdG8gYmUgcXVpY2tseSBkZXRlY3RlZC4KICAgICAgKgogICAgICAqIE5vIHZhbGlkIEpTVmFs
dWUgd2lsbCBoYXZlIHRoZSBiaXQgcGF0dGVybiAweDAsIHRoaXMgaXMgdXNlZCB0byByZXByZXNl
bnQgYXJyYXkKQEAgLTQyMywzNyArNDIzLDQwIEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgdmFs
dWUgaXMgMl40OCwgdXNlZCB0byBlbmNvZGUgZG91YmxlcyBzdWNoIHRoYXQgdGhlIGVuY29kZWQg
dmFsdWUgd2lsbCBiZWdpbgogICAgIC8vIHdpdGggYSAxNi1iaXQgcGF0dGVybiB3aXRoaW4gdGhl
IHJhbmdlIDB4MDAwMS4uMHhGRkZFLgotICAgICNkZWZpbmUgRG91YmxlRW5jb2RlT2Zmc2V0IDB4
MTAwMDAwMDAwMDAwMGxsCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgRG91YmxlRW5jb2Rl
T2Zmc2V0Qml0ID0gNDg7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IERvdWJsZUVuY29k
ZU9mZnNldCA9IDFsbCA8PCBEb3VibGVFbmNvZGVPZmZzZXRCaXQ7CiAgICAgLy8gSWYgYWxsIGJp
dHMgaW4gdGhlIG1hc2sgYXJlIHNldCwgdGhpcyBpbmRpY2F0ZXMgYW4gaW50ZWdlciBudW1iZXIs
CiAgICAgLy8gaWYgYW55IGJ1dCBub3QgYWxsIGFyZSBzZXQgdGhpcyB2YWx1ZSBpcyBhIGRvdWJs
ZSBwcmVjaXNpb24gbnVtYmVyLgotICAgICNkZWZpbmUgVGFnVHlwZU51bWJlciAweGZmZmYwMDAw
MDAwMDAwMDBsbAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBOdW1iZXJUYWcgPSAweGZm
ZmYwMDAwMDAwMDAwMDBsbDsKIAogICAgIC8vIEFsbCBub24tbnVtZXJpYyAoYm9vbCwgbnVsbCwg
dW5kZWZpbmVkKSBpbW1lZGlhdGVzIGhhdmUgYml0IDIgc2V0LgotICAgICNkZWZpbmUgVGFnQml0
VHlwZU90aGVyIDB4MmxsCi0gICAgI2RlZmluZSBUYWdCaXRCb29sICAgICAgMHg0bGwKLSAgICAj
ZGVmaW5lIFRhZ0JpdFVuZGVmaW5lZCAweDhsbAorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJf
dCBPdGhlclRhZyAgICAgICA9IDB4MjsKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgQm9v
bFRhZyAgICAgICAgPSAweDQ7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFVuZGVmaW5l
ZFRhZyAgID0gMHg4OwogICAgIC8vIENvbWJpbmVkIGludGVnZXIgdmFsdWUgZm9yIG5vbi1udW1l
cmljIGltbWVkaWF0ZXMuCi0gICAgI2RlZmluZSBWYWx1ZUZhbHNlICAgICAoVGFnQml0VHlwZU90
aGVyIHwgVGFnQml0Qm9vbCB8IGZhbHNlKQotICAgICNkZWZpbmUgVmFsdWVUcnVlICAgICAgKFRh
Z0JpdFR5cGVPdGhlciB8IFRhZ0JpdEJvb2wgfCB0cnVlKQotICAgICNkZWZpbmUgVmFsdWVVbmRl
ZmluZWQgKFRhZ0JpdFR5cGVPdGhlciB8IFRhZ0JpdFVuZGVmaW5lZCkKLSAgICAjZGVmaW5lIFZh
bHVlTnVsbCAgICAgIChUYWdCaXRUeXBlT3RoZXIpCi0KLSAgICAvLyBUYWdNYXNrIGlzIHVzZWQg
dG8gY2hlY2sgZm9yIGFsbCB0eXBlcyBvZiBpbW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVtYmVy
IG9yICdvdGhlcicpLgotICAgICNkZWZpbmUgVGFnTWFzayAoVGFnVHlwZU51bWJlciB8IFRhZ0Jp
dFR5cGVPdGhlcikKLQorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZUZhbHNlICAg
ICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IGZhbHNlOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50
MzJfdCBWYWx1ZVRydWUgICAgICA9IE90aGVyVGFnIHwgQm9vbFRhZyB8IHRydWU7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlVW5kZWZpbmVkID0gT3RoZXJUYWcgfCBVbmRlZmlu
ZWRUYWc7CisgICAgc3RhdGljIGNvbnN0ZXhwciBpbnQzMl90IFZhbHVlTnVsbCAgICAgID0gT3Ro
ZXJUYWc7CisKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0X3QgTWlzY1RhZyA9IE90aGVyVGFn
IHwgQm9vbFRhZyB8IFVuZGVmaW5lZFRhZzsKKworICAgIC8vIE5vdENlbGxNYXNrIGlzIHVzZWQg
dG8gY2hlY2sgZm9yIGFsbCB0eXBlcyBvZiBpbW1lZGlhdGUgdmFsdWVzIChlaXRoZXIgbnVtYmVy
IG9yICdvdGhlcicpLgorICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBOb3RDZWxsTWFzayA9
IE51bWJlclRhZyB8IE90aGVyVGFnOworICAgIAogICAgIC8vIFRoZXNlIHNwZWNpYWwgdmFsdWVz
IGFyZSBuZXZlciB2aXNpYmxlIHRvIEphdmFTY3JpcHQgY29kZTsgRW1wdHkgaXMgdXNlZCB0byBy
ZXByZXNlbnQKICAgICAvLyBBcnJheSBob2xlcywgYW5kIGZvciB1bmluaXRpYWxpemVkIEpTVmFs
dWVzLiBEZWxldGVkIGlzIHVzZWQgaW4gaGFzaCB0YWJsZSBjb2RlLgogICAgIC8vIFRoZXNlIHZh
bHVlcyB3b3VsZCBtYXAgdG8gY2VsbCB0eXBlcyBpbiB0aGUgSlNWYWx1ZSBlbmNvZGluZywgYnV0
IG5vdCB2YWxpZCBHQyBjZWxsCiAgICAgLy8gcG9pbnRlciBzaG91bGQgaGF2ZSBlaXRoZXIgb2Yg
dGhlc2UgdmFsdWVzIChFbXB0eSBpcyBudWxsLCBkZWxldGVkIGlzIGF0IGFuIGludmFsaWQKICAg
ICAvLyBhbGlnbm1lbnQgZm9yIGEgR0MgY2VsbCwgYW5kIGluIHRoZSB6ZXJvIHBhZ2UpLgotICAg
ICNkZWZpbmUgVmFsdWVFbXB0eSAgIDB4MGxsCi0gICAgI2RlZmluZSBWYWx1ZURlbGV0ZWQgMHg0
bGwKKyAgICBzdGF0aWMgY29uc3RleHByIGludDMyX3QgVmFsdWVFbXB0eSAgID0gMHgwOworICAg
IHN0YXRpYyBjb25zdGV4cHIgaW50MzJfdCBWYWx1ZURlbGV0ZWQgPSAweDQ7CiAKLSAgICAjZGVm
aW5lIFRhZ0JpdHNXYXNtIChUYWdCaXRUeXBlT3RoZXIgfCAweDEpCi0gICAgI2RlZmluZSBUYWdX
YXNtTWFzayAoVGFnVHlwZU51bWJlciB8IDB4NykKKyAgICBzdGF0aWMgY29uc3RleHByIGludDY0
X3QgV2FzbVRhZyA9IE90aGVyVGFnIHwgMHgxOworICAgIHN0YXRpYyBjb25zdGV4cHIgaW50NjRf
dCBXYXNtTWFzayA9IE51bWJlclRhZyB8IDB4NzsKICAgICAvLyBXZSB0YWcgV2FzbSBub24tSlND
ZWxsIHBvaW50ZXJzIHdpdGggYSAzIGF0IHRoZSBib3R0b20uIFdlIGNhbiB0ZXN0IGlmIGEgNjQt
Yml0IEpTVmFsdWUgcGF0dGVybgogICAgIC8vIGlzIGEgV2FzbSBjYWxsZWUgYnkgbWFza2luZyB0
aGUgdXBwZXIgMTYgYml0cyBhbmQgdGhlIGxvd2VyIDMgYml0cywgYW5kIHNlZWluZyBpZgotICAg
IC8vIHRoZSByZXN1bHRpbmcgdmFsdWUgaXMgMy4gVGhlIGZ1bGwgdGVzdCBpczogeCAmIFRhZ1dh
c21NYXNrID09IFRhZ0JpdHNXYXNtCisgICAgLy8gdGhlIHJlc3VsdGluZyB2YWx1ZSBpcyAzLiBU
aGUgZnVsbCB0ZXN0IGlzOiB4ICYgV2FzbU1hc2sgPT0gV2FzbVRhZwogICAgIC8vIFRoaXMgd29y
a3MgYmVjYXVzZSB0aGUgbG93ZXIgMyBiaXRzIG9mIHRoZSBub24tbnVtYmVyIGltbWVkaWF0ZSB2
YWx1ZXMgYXJlIGFzIGZvbGxvd3M6CiAgICAgLy8gdW5kZWZpbmVkOiAwYjAxMAogICAgIC8vIG51
bGw6ICAgICAgMGIwMTAKQEAgLTQ2NSw5ICs0NjgsOSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlaXIg
bG93ZXIgMyBiaXRzLiBOb3RlLCB0aGlzIGJpdCBwYXR0ZXJuIGFsc28gYWxsb3dzIHRoZSBub3Jt
YWwgSlNWYWx1ZSBpc0NlbGwoKSwgZXRjLAogICAgIC8vIHByZWRpY2F0ZXMgdG8gd29yayBvbiBh
IFdhc206OkNhbGxlZSBiZWNhdXNlIHRoZSB2YXJpb3VzIHRlc3RzIHdpbGwgZmFpbCBpZiB5b3UK
ICAgICAvLyBiaXQgY2FzdGVkIGEgYm94ZWQgV2FzbTo6Q2FsbGVlKiB0byBhIEpTVmFsdWUuIGlz
Q2VsbCgpIHdvdWxkIGZhaWwgc2luY2UgaXQgc2VlcwotICAgIC8vIFRhZ0JpdFR5cGVPdGhlci4g
VGhlIG90aGVyIHRlc3RzIGFsc28gdHJpdmlhbGx5IGZhaWwsIHNpbmNlIGl0IHdvbid0IGJlIGEg
bnVtYmVyLAorICAgIC8vIE90aGVyVGFnLiBUaGUgb3RoZXIgdGVzdHMgYWxzbyB0cml2aWFsbHkg
ZmFpbCwgc2luY2UgaXQgd29uJ3QgYmUgYSBudW1iZXIsCiAgICAgLy8gYW5kIGl0IHdvbid0IGJl
IGVxdWFsIHRvIG51bGwsIHVuZGVmaW5lZCwgdHJ1ZSwgb3IgZmFsc2UuIFRoZSBpc0Jvb2xlYW4o
KSBwcmVkaWNhdGUKLSAgICAvLyB3aWxsIGZhaWwgYmVjYXVzZSB3ZSB3b24ndCBoYXZlIFRhZ0Jp
dEJvb2wgc2V0LgorICAgIC8vIHdpbGwgZmFpbCBiZWNhdXNlIHdlIHdvbid0IGhhdmUgQm9vbFRh
ZyBzZXQuCiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjUwMDg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTRmFs
c2VUYWcpCiBpbmxpbmUgYm9vbCBKU1ZhbHVlOjppc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0CiB7
CiAgICAgLy8gVW5kZWZpbmVkIGFuZCBudWxsIHNoYXJlIHRoZSBzYW1lIHZhbHVlLCBiYXIgdGhl
ICd1bmRlZmluZWQnIGJpdCBpbiB0aGUgZXh0ZW5kZWQgdGFnLgotICAgIHJldHVybiAodS5hc0lu
dDY0ICYgflRhZ0JpdFVuZGVmaW5lZCkgPT0gVmFsdWVOdWxsOworICAgIHJldHVybiAodS5hc0lu
dDY0ICYgflVuZGVmaW5lZFRhZykgPT0gVmFsdWVOdWxsOwogfQogCiBpbmxpbmUgYm9vbCBKU1Zh
bHVlOjppc0Jvb2xlYW4oKSBjb25zdApAQCAtNDc3LDEyICs0NzcsMTIgQEAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNCb29sZWFuKCkgY29uc3QKIAogaW5saW5lIGJvb2wgSlNWYWx1ZTo6aXNDZWxs
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gISh1LmFzSW50NjQgJiBUYWdNYXNrKTsKKyAgICByZXR1
cm4gISh1LmFzSW50NjQgJiBOb3RDZWxsTWFzayk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6
OmlzSW50MzIoKSBjb25zdAogewotICAgIHJldHVybiAodS5hc0ludDY0ICYgVGFnVHlwZU51bWJl
cikgPT0gVGFnVHlwZU51bWJlcjsKKyAgICByZXR1cm4gKHUuYXNJbnQ2NCAmIE51bWJlclRhZykg
PT0gTnVtYmVyVGFnOwogfQogCiBpbmxpbmUgaW50NjRfdCByZWludGVycHJldERvdWJsZVRvSW50
NjQoZG91YmxlIHZhbHVlKQpAQCAtNDk3LDIzICs0OTcsMjMgQEAgaW5saW5lIGRvdWJsZSByZWlu
dGVycHJldEludDY0VG9Eb3VibGUoaQogQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlVGFnLCBkb3VibGUgZCkKIHsKICAgICBBU1NFUlQoIWlzSW1wdXJlTmFOKGQp
KTsKLSAgICB1LmFzSW50NjQgPSByZWludGVycHJldERvdWJsZVRvSW50NjQoZCkgKyBEb3VibGVF
bmNvZGVPZmZzZXQ7CisgICAgdS5hc0ludDY0ID0gcmVpbnRlcnByZXREb3VibGVUb0ludDY0KGQp
ICsgSlNWYWx1ZTo6RG91YmxlRW5jb2RlT2Zmc2V0OwogfQogCiBpbmxpbmUgSlNWYWx1ZTo6SlNW
YWx1ZShpbnQgaSkKIHsKLSAgICB1LmFzSW50NjQgPSBUYWdUeXBlTnVtYmVyIHwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGkpOworICAgIHUuYXNJbnQ2NCA9IEpTVmFsdWU6Ok51bWJlclRhZyB8IHN0
YXRpY19jYXN0PHVpbnQzMl90PihpKTsKIH0KIAogaW5saW5lIGRvdWJsZSBKU1ZhbHVlOjphc0Rv
dWJsZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzRG91YmxlKCkpOwotICAgIHJldHVybiByZWlu
dGVycHJldEludDY0VG9Eb3VibGUodS5hc0ludDY0IC0gRG91YmxlRW5jb2RlT2Zmc2V0KTsKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRJbnQ2NFRvRG91YmxlKHUuYXNJbnQ2NCAtIEpTVmFsdWU6OkRv
dWJsZUVuY29kZU9mZnNldCk7CiB9CiAKIGlubGluZSBib29sIEpTVmFsdWU6OmlzTnVtYmVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gdS5hc0ludDY0ICYgVGFnVHlwZU51bWJlcjsKKyAgICByZXR1
cm4gdS5hc0ludDY0ICYgSlNWYWx1ZTo6TnVtYmVyVGFnOwogfQogCiBBTFdBWVNfSU5MSU5FIEpT
Q2VsbCogSlNWYWx1ZTo6YXNDZWxsKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dhc21Ub0pTLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XYXNtVG9KUy5jcHAJKHJldmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dhc21Ub0pTLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIwLDkg
KzQyMCwxMiBAQCBFeHBlY3RlZDxNYWNyb0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAgICAg
ICAgIGJvb2wgaGFzTWF0ZXJpYWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0ID0gZmFsc2U7CiAgICAg
ICAgIGF1dG8gbWF0ZXJpYWxpemVEb3VibGVFbmNvZGVPZmZzZXQgPSBbJmhhc01hdGVyaWFsaXpl
ZERvdWJsZUVuY29kZU9mZnNldCwgJmppdF0gKEdQUlJlZyBkZXN0KSB7CiAgICAgICAgICAgICBp
ZiAoIWhhc01hdGVyaWFsaXplZERvdWJsZUVuY29kZU9mZnNldCkgewotICAgICAgICAgICAgICAg
IHN0YXRpY19hc3NlcnQoRG91YmxlRW5jb2RlT2Zmc2V0ID09IDFsbCA8PCA0OCwgImNvZGVnZW4g
YXNzdW1lcyB0aGlzIGJlbG93Iik7CisjaWYgQ1BVKEFSTTY0KQorICAgICAgICAgICAgICAgIGpp
dC5tb3ZlKEpJVDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldCksIGRl
c3QpOworI2Vsc2UKICAgICAgICAgICAgICAgICBqaXQubW92ZShKSVQ6OlRydXN0ZWRJbW0zMigx
KSwgZGVzdCk7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDY0KEpJVDo6VHJ1c3RlZEltbTMy
KDQ4KSwgZGVzdCk7CisgICAgICAgICAgICAgICAgaml0LmxzaGlmdDY0KEpJVDo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkRvdWJsZUVuY29kZU9mZnNldEJpdCksIGRlc3QpOworI2VuZGlmCiAgICAg
ICAgICAgICAgICAgaGFzTWF0ZXJpYWxpemVkRG91YmxlRW5jb2RlT2Zmc2V0ID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfTsKQEAgLTUwMSw3ICs1MDQsNyBAQCBFeHBlY3RlZDxNYWNy
b0Fzc2VtYmxlckNvZGVSZWY8V2FzbUVudHJ5CiAKICAgICBqaXQuc3RvcmU2NChpbXBvcnRKU0Nl
bGxHUFJSZWcsIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICog
c3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIGppdC5zdG9yZTMyKEpJ
VDo6VHJ1c3RlZEltbTMyKG51bWJlck9mUGFyYW1ldGVycyksIGNhbGxlZUZyYW1lLndpdGhPZmZz
ZXQoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9m
KFJlZ2lzdGVyKSkgKyBQYXlsb2FkT2Zmc2V0KSk7Ci0gICAgaml0LnN0b3JlNjQoSklUOjpUcnVz
dGVkSW1tNjQoVmFsdWVVbmRlZmluZWQpLCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KENhbGxGcmFt
ZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkp
KTsKKyAgICBqaXQuc3RvcmU2NChKSVQ6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjpWYWx1ZVVuZGVm
aW5lZCksIGNhbGxlZUZyYW1lLndpdGhPZmZzZXQoQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogCiAgICAgLy8gRklYTUUg
VGFpbCBjYWxsIGlmIHRoZSB3YXNtIHJldHVybiB0eXBlIGlzIHZvaWQgYW5kIG5vIHJlZ2lzdGVy
cyB3ZXJlIHNwaWxsZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjU0ODgKIApAQCAtNTc4LDcgKzU4MSw3IEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxXYXNtRW50cnkKICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7CiAKICAgICAgICAg
aXNEb3VibGUubGluaygmaml0KTsKLSAgICAgICAgaml0Lm1vdmUoSklUOjpUcnVzdGVkSW1tNjQo
VGFnVHlwZU51bWJlciksIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7CisgICAgICAgIGppdC5t
b3ZlKEpJVDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQUkluZm86OnJldHVy
blZhbHVlR1BSMik7CiAgICAgICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUjIs
IEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgaml0Lm1vdmU2NFRvRG91YmxlKEdQ
UkluZm86OnJldHVyblZhbHVlR1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUik7CiAgICAgICAg
IGppdC5jb252ZXJ0RG91YmxlVG9GbG9hdChGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQUiwgRlBSSW5m
bzo6cmV0dXJuVmFsdWVGUFIpOwpAQCAtNjEzLDcgKzYxNiw3IEBAIEV4cGVjdGVkPE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjxXYXNtRW50cnkKICAgICAgICAgZG9uZS5hcHBlbmQoaml0Lmp1bXAoKSk7
CiAKICAgICAgICAgaXNEb3VibGUubGluaygmaml0KTsKLSAgICAgICAgaml0Lm1vdmUoSklUOjpU
cnVzdGVkSW1tNjQoVGFnVHlwZU51bWJlciksIEdQUkluZm86OnJldHVyblZhbHVlR1BSMik7Cisg
ICAgICAgIGppdC5tb3ZlKEpJVDo6VHJ1c3RlZEltbTY0KEpTVmFsdWU6Ok51bWJlclRhZyksIEdQ
UkluZm86OnJldHVyblZhbHVlR1BSMik7CiAgICAgICAgIGppdC5hZGQ2NChHUFJJbmZvOjpyZXR1
cm5WYWx1ZUdQUjIsIEdQUkluZm86OnJldHVyblZhbHVlR1BSKTsKICAgICAgICAgaml0Lm1vdmU2
NFRvRG91YmxlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCBGUFJJbmZvOjpyZXR1cm5WYWx1ZUZQ
Uik7CiAgICAgICAgIGRvbmUuYXBwZW5kKGppdC5qdW1wKCkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDI1MDA4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTMsNyArMzUzLDcgQEAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IFdlYgogICAgICAgICAgICAgICAgICAgICAg
ICAgaml0LmNvbnZlcnREb3VibGVUb0Zsb2F0KHNjcmF0Y2hGUFIsIHNjcmF0Y2hGUFIpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaml0LnN0b3JlRmxvYXQoc2NyYXRjaEZQUiwgY2FsbGVlRnJh
bWUud2l0aE9mZnNldCh3YXNtT2Zmc2V0KSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBqaXQuYWRkNjQoR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyLCBzY3JhdGNoR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGppdC5hZGQ2NChHUFJJbmZvOjpudW1iZXJUYWdSZWdpc3Rlciwgc2NyYXRjaEdQUiwgc2Ny
YXRjaEdQUik7CiAgICAgICAgICAgICAgICAgICAgICAgICBqaXQuc3RvcmU2NChzY3JhdGNoR1BS
LCBjYWxsZWVGcmFtZS53aXRoT2Zmc2V0KHdhc21PZmZzZXQpKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBhdXRvIGRvbmUgPSBqaXQuanVtcCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>