<?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>220710</bug_id>
          
          <creation_ts>2021-01-18 07:10:29 -0800</creation_ts>
          <short_desc>Validate ItemHandles when decoding them in GPUProcess</short_desc>
          <delta_ts>2021-01-22 01:34:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Local 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>
          
          <blocked>219097</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1720339</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-18 07:10:29 -0800</bug_when>
    <thetext>Validate ItemHandles when decoding them in GPUProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720347</commentid>
    <comment_count>1</comment_count>
      <attachid>417832</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-18 08:10:13 -0800</bug_when>
    <thetext>Created attachment 417832
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720348</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-18 08:10:41 -0800</bug_when>
    <thetext>&lt;rdar://problem/72931549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720360</commentid>
    <comment_count>3</comment_count>
      <attachid>417837</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-18 09:22:22 -0800</bug_when>
    <thetext>Created attachment 417837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1720495</commentid>
    <comment_count>4</comment_count>
      <attachid>417865</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-19 02:14:01 -0800</bug_when>
    <thetext>Created attachment 417865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721174</commentid>
    <comment_count>5</comment_count>
      <attachid>417865</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-01-21 08:39:25 -0800</bug_when>
    <thetext>Comment on attachment 417865
Patch

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

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:543
&gt; +template&lt;typename, typename = void&gt; inline constexpr bool HasIsValid = false;
&gt; +template&lt;typename T&gt; inline constexpr bool HasIsValid&lt;T, std::void_t&lt;decltype(std::declval&lt;T&gt;().isValid())&gt;&gt; = true;

This is a really neat trick!

&gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:559
&gt; +bool ItemHandle::decodeInto(ItemHandle destination) const

Nit - I think the notion of &quot;copying&quot; is more accurate here than &quot;decoding&quot; (the latter of which sounds like it would involve marshaling of data to and from buffers, à la IPC encoding/decoding). Perhaps &quot;createValidCopy&quot; or &quot;copyWithValidation&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721516</commentid>
    <comment_count>6</comment_count>
      <attachid>418117</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-22 01:05:29 -0800</bug_when>
    <thetext>Created attachment 418117
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721517</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2021-01-22 01:06:03 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/platform/graphics/displaylists/DisplayListItemBuffer.cpp:559
&gt; &gt; +bool ItemHandle::decodeInto(ItemHandle destination) const
&gt; 
&gt; Nit - I think the notion of &quot;copying&quot; is more accurate here than &quot;decoding&quot;
&gt; (the latter of which sounds like it would involve marshaling of data to and
&gt; from buffers, à la IPC encoding/decoding). Perhaps &quot;createValidCopy&quot; or
&gt; &quot;copyWithValidation&quot;?

I changed to safeCopy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721520</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-22 01:34:16 -0800</bug_when>
    <thetext>Committed r271741: &lt;https://trac.webkit.org/changeset/271741&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418117.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417832</attachid>
            <date>2021-01-18 08:10:13 -0800</date>
            <delta_ts>2021-01-18 09:22:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220710-20210118171011.patch</filename>
            <type>text/plain</type>
            <size>23069</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViYzZlZjM1NzU5ODYy
ODgxZjQwMWIzOTM4ZDdhMWNmZWUyYTcwZS4uN2U5ZDkyMGY4MTA4NzYwNzA2ZmNmN2I4NzM0MGUx
YjAwODRjMDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWYWxpZGF0ZSBJdGVtSGFu
ZGxlcyB3aGVuIGRlY29kaW5nIHRoZW0gaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNzEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlbUhhbmRsZSBtYXkgY29udGFpbiBtZW1i
ZXJzIHRoYXQgbmVlZCB0byBiZSB2YWxpZGF0ZWQgaWYgdGhleSBhcmUgZW5jb2RlZC9kZWNvZGVk
IHRocm91Z2ggbWVtb3J5IGNvcHkgaW5zdGVhZCBvZiBJUEMgZW5jb2RlL2RlY29kZSByb3V0aW5l
cy4KKyAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBvZiBpZGVudGlmaWVycyB0aGF0
IGNhbiBiZSBudWxsIGJ1dCBjYW5ub3QgYmUgZW5jb2RlZC9kZWNvZGVkIGlmIHRoZSBpZGVudGlm
aWVyIGlzIG51bGwuCisgICAgICAgIEZvciB0aGVzZSBpbmxpbmUgSXRlbUhhbmRsZXMsIHZhbGlk
YXRlIHRoZW0gYmVmb3JlIGNvcHlpbmcgdGhlbS4KKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFu
Z2Ugb2YgYmVoYXZpb3IsIGNvdmVyZWRkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlSW5zcGVjdG9yOjp0ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpj
b3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVj
b2RlSW50byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZTo6Y29weVRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9JbWFnZUJ1ZmZlcjo6aXNWYWxpZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmlzVmFs
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpp
c1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dDo6Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaENvbnRleHQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6OmlzVmFsaWQg
Y29uc3QpOgorCiAyMDIxLTAxLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgYSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGE5NDc5ZjI2Yzc1NzI1Y2U3N2VhZGYxNTliMDJlNDI4
YzgzY2JmZDUuLjk4MWEwOTdkZTkxZmNkYjljNDE0MDYyNGNiZDNjMTBlM2I0MzQ0YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMzYyLDcgKzM2MiwxMCBAQCB2b2lkIERpc3BsYXlM
aXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwogICAgICAgICBt
X2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5jb3B5VG8oeyBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtIH0pOworICAgICAgICBpZiAoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LmRlY29k
ZUludG8oeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogSW5zdGVhZCBvZiBjcmFzaGluZywgdGhpcyBuZWVkcyB0byBmYWlsIGdyYWNlZnVsbHkgYW5k
IGluZm9ybSB0aGUgY2FsbGVyLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1ZjljOWUyYTg0MTFmYmZjYTVmZWM2ZTk5Y2Q4MjZh
Mzg4OTdlYjA4Li43ZWU3YWFjNWExNWEwMTk1OWQ1YjE2NmZhZTFlNGQ2MDYxNTFkZjA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNTM5LDI1OCAr
NTM5LDE2MCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdm9pZCBJ
dGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1Zh
bGlkID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wg
SGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1Zh
bGlkKCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4KK2NvcHlJbnRvKGNvbnN0IEl0
ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9mZnNldCkKK3sK
KyAgICBuZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbShpdGVtSGFuZGxlLmdldDxJdGVt
PigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KK3R5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4KK2NvcHlJbnRv
KGNvbnN0IEl0ZW1IYW5kbGUmIGl0ZW1IYW5kbGUsIHVpbnQ4X3QqIGRlc3RpbmF0aW9uV2l0aE9m
ZnNldCkKK3sKKyAgICBhdXRvJiB0eXBlZEl0ZW0gPSBpdGVtSGFuZGxlLmdldDxJdGVtPigpOwor
ICAgIGlmICghdHlwZWRJdGVtLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKHR5cGVkSXRlbSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgSXRlbUhhbmRsZTo6ZGVjb2RlSW50byhJdGVtSGFuZGxlIGRlc3Rp
bmF0aW9uKSBjb25zdAogewogICAgIGF1dG8gaXRlbVR5cGUgPSB0eXBlKCk7CiAgICAgZGVzdGlu
YXRpb24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKICAgICBhdXRv
IGl0ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKHVpbnQ2NF90KTsKICAgICBz
d2l0Y2ggKGl0ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogewot
ICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIENsaXBPdXRUb1BhdGgoZ2V0PENsaXBPdXRUb1BhdGg+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRo
OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcFBhdGgoZ2V0PENsaXBQYXRoPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5n
Q29tbWFuZHM6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwVG9EcmF3aW5nQ29tbWFu
ZHMoZ2V0PENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBEcmF3Rm9jdXNSaW5nUGF0aChnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdS
ZWN0czogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdGb2N1c1JpbmdSZWN0cyhnZXQ8
RHJhd0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3R2x5cGhzOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0ds
eXBocyhnZXQ8RHJhd0dseXBocz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkg
RHJhd0ltYWdlQnVmZmVyKGdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBEcmF3TGluZXNGb3JUZXh0KGdldDxEcmF3TGluZXNGb3JUZXh0Pigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZl
SW1hZ2U6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1hZ2UoZ2V0PERy
YXdOYXRpdmVJbWFnZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd1BhdHRlcm46IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UGF0dGVy
bihnZXQ8RHJhd1BhdHRlcm4+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdGgo
Z2V0PERyYXdQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxs
Q29tcG9zaXRlZFJlY3QoZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBGaWxsUGF0aChnZXQ8RmlsbFBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgRmlsbFJlY3RXaXRoQ29sb3IoZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhHcmFkaWVudDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxSZWN0V2l0aEdyYWRp
ZW50KGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6IHsKLSAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShnZXQ8RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxSb3Vu
ZGVkUmVjdChnZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zm
c2V0KSBQdXRJbWFnZURhdGEoZ2V0PFB1dEltYWdlRGF0YT4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBTZXRMaW5lRGFzaChnZXQ8U2V0TGluZURhc2g+KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgU2V0U3RhdGUoZ2V0PFNldFN0YXRlPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU3Ryb2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZ2V0PEFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRl
bVR5cGU6OkNsaXBPdXRUb1BhdGg6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0VG9Q
YXRoPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88
RHJhd0ZvY3VzUmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpEcmF3Rm9jdXNSaW5nUmVjdHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3Rm9jdXNS
aW5nUmVjdHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5
cGhzOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0dseXBocz4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3
TGluZXNGb3JUZXh0PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJh
d05hdGl2ZUltYWdlOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd05hdGl2ZUltYWdlPigq
dGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxEcmF3UGF0dGVybj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd1Bh
dGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRl
ZFJlY3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsQ29tcG9zaXRlZFJlY3Q+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEZpbGxQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVt
VHlwZTo6RmlsbFJlY3RXaXRoQ29sb3I6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVj
dFdpdGhDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0V2l0aEdyYWRpZW50OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoR3Jh
ZGllbnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aFJvdW5k
ZWRIb2xlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5k
ZWRSZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJvdW5kZWRSZWN0PigqdGhpcywg
aXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICBy
ZXR1cm4gY29weUludG88UHV0SW1hZ2VEYXRhPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5l
RGFzaD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgor
ICAgICAgICByZXR1cm4gY29weUludG88U2V0U3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAg
ICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88U3Ry
b2tlUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2
aWNlU2NhbGVGYWN0b3I6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseURldmljZVNjYWxl
RmFjdG9yPigqdGhpcywgaXRlbU9mZnNldCk7CiAjaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5
cGU6OkFwcGx5RmlsbFBhdHRlcm46IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBBcHBseUZp
bGxQYXR0ZXJuKGdldDxBcHBseUZpbGxQYXR0ZXJuPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBBcHBseVN0cm9rZVBhdHRlcm4oZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxs
UGF0dGVybjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlz
LCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGdldDxC
ZWdpblRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGVh
clJlY3QoZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJTaGFkb3c6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGVh
clNoYWRvdyhnZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkNsaXA6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwKGdl
dDxDbGlwPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpD
bGlwT3V0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcE91dChnZXQ8Q2xpcE91dD4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1h
Z2VCdWZmZXI6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwVG9JbWFnZUJ1ZmZlcihn
ZXQ8Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkg
Q29uY2F0ZW5hdGVDVE0oZ2V0PENvbmNhdGVuYXRlQ1RNPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOiB7Ci0g
ICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihnZXQ8RHJh
d0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBE
cmF3RWxsaXBzZShnZXQ8RHJhd0VsbGlwc2U+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkg
RHJhd0xpbmUoZ2V0PERyYXdMaW5lPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdS
ZWN0KGdldDxEcmF3UmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBFbmRUcmFuc3BhcmVuY3lMYXllcihnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB7Ci0g
ICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbEVsbGlwc2UoZ2V0PEZpbGxFbGxpcHNlPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFy
ZW5jeUxheWVyOgorICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXll
cj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKKyAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAg
IGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAgICByZXR1cm4gY29weUludG88Q2xl
YXJTaGFkb3c+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgor
ICAgICAgICByZXR1cm4gY29weUludG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBPdXQ6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0Pigq
dGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6
CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICByZXR1
cm4gY29weUludG88Q29uY2F0ZW5hdGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAgICByZXR1cm4gY29w
eUludG88RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgorICAgICAgICByZXR1cm4gY29weUludG88RHJh
d0VsbGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGlu
ZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7
CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxE
cmF3UmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5z
cGFyZW5jeUxheWVyOgorICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5
ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToK
KyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7
CiAjaWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElu
bGluZVBhdGg6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsSW5saW5lUGF0aChnZXQ8
RmlsbElubGluZVBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRl
bVR5cGU6OkZpbGxJbmxpbmVQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbElubGlu
ZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZp
bGxSZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbFJlY3QoZ2V0PEZpbGxSZWN0
PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENv
bnRleHQ6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGbHVzaENvbnRleHQoZ2V0PEZsdXNo
Q29udGV4dD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKGdldDxN
ZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZl
cjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZl
cihnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKLSAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBQYWludEZyYW1lRm9yTWVkaWEoZ2V0PFBhaW50RnJhbWVGb3JNZWRp
YT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9y
ZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFJlc3RvcmUoZ2V0PFJlc3RvcmU+KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZTogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU2F2ZShnZXQ8U2F2ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTY2FsZShn
ZXQ8U2NhbGU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OlNldENUTTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldENUTShnZXQ8U2V0Q1RNPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVG
aWxsQ29sb3I6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRJbmxpbmVGaWxsQ29sb3Io
Z2V0PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Y2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU2V0SW5saW5lRmlsbEdyYWRpZW50KGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGlu
ZVN0cm9rZUNvbG9yOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0SW5saW5lU3Ryb2tl
Q29sb3IoZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgU2V0TGluZUNhcChnZXQ8U2V0TGluZUNhcD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46IHsKLSAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBTZXRMaW5lSm9pbihnZXQ8U2V0TGluZUpvaW4+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBTZXRNaXRlckxpbWl0KGdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRTdHJva2VUaGlja25lc3MoZ2V0PFNldFN0
cm9rZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlRWxsaXBzZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUVs
bGlwc2UoZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJl
Y3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6
CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGbHVzaENvbnRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VC
dWZmZXI6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0
aW9uSW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxQYWlu
dEZyYW1lRm9yTWVkaWE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpS
ZXN0b3JlOgorICAgICAgICByZXR1cm4gY29weUludG88UmVzdG9yZT4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PFJvdGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxTYXZlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTY2FsZT4oKnRoaXMs
IGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKKyAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPFNldENUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6
OlNldElubGluZUZpbGxDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZp
bGxDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGlu
ZUZpbGxHcmFkaWVudDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxHcmFk
aWVudD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0
cm9rZUNvbG9yOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0SW5saW5lU3Ryb2tlQ29sb3I+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgorICAg
ICAgICByZXR1cm4gY29weUludG88U2V0TGluZUNhcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAg
IGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0
TGluZUpvaW4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRl
ckxpbWl0OgorICAgICAgICByZXR1cm4gY29weUludG88U2V0TWl0ZXJMaW1pdD4oKnRoaXMsIGl0
ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKKyAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldFN0cm9rZVRoaWNrbmVzcz4oKnRoaXMsIGl0ZW1PZmZzZXQp
OworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6CisgICAgICAgIHJldHVybiBjb3B5
SW50bzxTdHJva2VFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7CiAjaWYgRU5BQkxFKElOTElO
RV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBh
dGg+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZUlubGluZVBhdGg6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VJbmxpbmVQYXRoPigq
dGhpcywgaXRlbU9mZnNldCk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU3Ryb2tlUmVjdChnZXQ8U3Ryb2tlUmVjdD4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGlu
ZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUxpbmUoZ2V0PFN0cm9rZUxpbmU+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0
ZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFRyYW5zbGF0ZShnZXQ8VHJhbnNsYXRlPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0
OgorICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQp
OworICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6CisgICAgICAgIHJldHVybiBjb3B5SW50
bzxTdHJva2VMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6VHJh
bnNsYXRlOgorICAgICAgICByZXR1cm4gY29weUludG88VHJhbnNsYXRlPigqdGhpcywgaXRlbU9m
ZnNldCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmgKaW5kZXggMDIxN2U0OTMzYTUyNTA3OWQxYWI0ZDg0NjhiZmJkODJmNzVmMjU2Ny4uOWJmNDUy
NDhkODFlYmQ1ZGEzZGJkOTk5ODhjZjAzOTEwMWRiYjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaApAQCAtODAsNyArODAsNyBAQCBzdHJ1Y3QgSXRlbUhhbmRs
ZSB7CiAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxUKj4oJmRhdGFbc2l6ZW9mKHVp
bnQ2NF90KV0pOwogICAgIH0KIAotICAgIHZvaWQgY29weVRvKEl0ZW1IYW5kbGUgZGVzdGluYXRp
b24pIGNvbnN0OworICAgIGJvb2wgZGVjb2RlSW50byhJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBj
b25zdDsKIH07CiAKIGVudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywg
WWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBjMjhkNjlmODY4ODRl
MzE2MzYwNzc4NmVmOWJiMjE5Y2JlY2RhY2U5Li4xZTAzZGU3NjQ5MzVlZTM1YTJkMGQwYzI5MmEy
MzQ0NzcyNDdmNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTc1Myw2
ICs3NTMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
ISFtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCkBAIC0xMDMzLDYgKzEwMzQs
OCBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Jj
UmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uUmVjdDsgfQogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0
byB2YWxpZGF0ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJikgY29uc3Q7CiAKQEAgLTEw
NjYsNiArMTA2OSw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUlkZW50aWZpZXI7IH0KICAg
ICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQog
ICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvblJlY3Q7IH0KKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB2YWxpZGF0
ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biAhIW1faW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsKQEAgLTEwOTYsNiArMTEwMSw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm07IH0KICAgICBGbG9hdFBvaW50IHBoYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9waGFzZTsgfQogICAgIEZsb2F0U2l6ZSBzcGFjaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zcGFjaW5nOyB9CisgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdmFs
aWRhdGUgSW1hZ2VQYWludGluZ09wdGlvbnMuCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2ltYWdlSWRlbnRpZmllcjsgfQogCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CkBAIC0xOTk5LDYgKzIwMDYsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb247IH0KICAgICBNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KKwogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQpAQCAtMjIyMywxMiArMjIzMiwxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEZsdXNoQ29udGV4
dChGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBsaWNpdCBGbHVzaENvbnRleHQo
Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKQEAgLTIyNDQsMTIgKzIyNTQsMTMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXIoSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBsaWNpdCBN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCiAg
ICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pZGVudGlm
aWVyOyB9CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwpAQCAtMjI2MSwxMiArMjI3MiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBs
aWNpdCBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKICAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417837</attachid>
            <date>2021-01-18 09:22:22 -0800</date>
            <delta_ts>2021-01-19 02:13:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220710-20210118182220.patch</filename>
            <type>text/plain</type>
            <size>23146</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViYzZlZjM1NzU5ODYy
ODgxZjQwMWIzOTM4ZDdhMWNmZWUyYTcwZS4uN2U5ZDkyMGY4MTA4NzYwNzA2ZmNmN2I4NzM0MGUx
YjAwODRjMDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWYWxpZGF0ZSBJdGVtSGFu
ZGxlcyB3aGVuIGRlY29kaW5nIHRoZW0gaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNzEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlbUhhbmRsZSBtYXkgY29udGFpbiBtZW1i
ZXJzIHRoYXQgbmVlZCB0byBiZSB2YWxpZGF0ZWQgaWYgdGhleSBhcmUgZW5jb2RlZC9kZWNvZGVk
IHRocm91Z2ggbWVtb3J5IGNvcHkgaW5zdGVhZCBvZiBJUEMgZW5jb2RlL2RlY29kZSByb3V0aW5l
cy4KKyAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBvZiBpZGVudGlmaWVycyB0aGF0
IGNhbiBiZSBudWxsIGJ1dCBjYW5ub3QgYmUgZW5jb2RlZC9kZWNvZGVkIGlmIHRoZSBpZGVudGlm
aWVyIGlzIG51bGwuCisgICAgICAgIEZvciB0aGVzZSBpbmxpbmUgSXRlbUhhbmRsZXMsIHZhbGlk
YXRlIHRoZW0gYmVmb3JlIGNvcHlpbmcgdGhlbS4KKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFu
Z2Ugb2YgYmVoYXZpb3IsIGNvdmVyZWRkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlSW5zcGVjdG9yOjp0ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpj
b3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVj
b2RlSW50byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZTo6Y29weVRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9JbWFnZUJ1ZmZlcjo6aXNWYWxpZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmlzVmFs
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpp
c1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dDo6Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaENvbnRleHQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6OmlzVmFsaWQg
Y29uc3QpOgorCiAyMDIxLTAxLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgYSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGE5NDc5ZjI2Yzc1NzI1Y2U3N2VhZGYxNTliMDJlNDI4
YzgzY2JmZDUuLjk4MWEwOTdkZTkxZmNkYjljNDE0MDYyNGNiZDNjMTBlM2I0MzQ0YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMzYyLDcgKzM2MiwxMCBAQCB2b2lkIERpc3BsYXlM
aXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwogICAgICAgICBt
X2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5jb3B5VG8oeyBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtIH0pOworICAgICAgICBpZiAoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LmRlY29k
ZUludG8oeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogSW5zdGVhZCBvZiBjcmFzaGluZywgdGhpcyBuZWVkcyB0byBmYWlsIGdyYWNlZnVsbHkgYW5k
IGluZm9ybSB0aGUgY2FsbGVyLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1ZjljOWUyYTg0MTFmYmZjYTVmZWM2ZTk5Y2Q4MjZh
Mzg4OTdlYjA4Li5mOTYyNTkwMTkwOTViNDE1Mjg1ZDBkMGFkZjY0NTQwZGY4NzBjMWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNTM5LDI1OSAr
NTM5LDE2MCBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdm9pZCBJ
dGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1Zh
bGlkID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wg
SGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1Zh
bGlkKCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRl
bUhhbmRsZSYgaXRlbUhhbmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQorewor
ICAgIG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhj
b25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZz
ZXQpCit7CisgICAgYXV0byYgdHlwZWRJdGVtID0gaXRlbUhhbmRsZS5nZXQ8SXRlbT4oKTsKKyAg
ICBpZiAoIXR5cGVkSXRlbS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBu
ZXcgKGRlc3RpbmF0aW9uV2l0aE9mZnNldCkgSXRlbSh0eXBlZEl0ZW0pOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIEl0ZW1IYW5kbGU6OmRlY29kZUludG8oSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbikgY29uc3QKIHsKICAgICBhdXRvIGl0ZW1UeXBlID0gdHlwZSgpOwogICAgIGRlc3RpbmF0
aW9uLmRhdGFbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CiAgICAgYXV0byBp
dGVtT2Zmc2V0ID0gZGVzdGluYXRpb24uZGF0YSArIHNpemVvZih1aW50NjRfdCk7CiAgICAgc3dp
dGNoIChpdGVtVHlwZSkgewotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHsKLSAg
ICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwT3V0VG9QYXRoKGdldDxDbGlwT3V0VG9QYXRoPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIENsaXBQYXRoKGdldDxDbGlwUGF0aD4oKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0Nv
bW1hbmRzOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcFRvRHJhd2luZ0NvbW1hbmRz
KGdldDxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgRHJhd0ZvY3VzUmluZ1BhdGgoZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVj
dHM6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3Rm9jdXNSaW5nUmVjdHMoZ2V0PERy
YXdGb2N1c1JpbmdSZWN0cz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0dseXBoczogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdHbHlw
aHMoZ2V0PERyYXdHbHlwaHM+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERy
YXdJbWFnZUJ1ZmZlcihnZXQ8RHJhd0ltYWdlQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgRHJhd0xpbmVzRm9yVGV4dChnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUlt
YWdlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd05hdGl2ZUltYWdlKGdldDxEcmF3
TmF0aXZlSW1hZ2U+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OkRyYXdQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4o
Z2V0PERyYXdQYXR0ZXJuPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3UGF0aDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdQYXRoKGdl
dDxEcmF3UGF0aD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbENvbXBvc2l0ZWRSZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbENv
bXBvc2l0ZWRSZWN0KGdldDxGaWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgRmlsbFBhdGgoZ2V0PEZpbGxQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhDb2xvcjogewotICAgICAgICBuZXcg
KGl0ZW1PZmZzZXQpIEZpbGxSZWN0V2l0aENvbG9yKGdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
R3JhZGllbnQ6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsUmVjdFdpdGhHcmFkaWVu
dChnZXQ8RmlsbFJlY3RXaXRoR3JhZGllbnQ+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
ICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgRmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoZ2V0PEZpbGxSZWN0V2l0aFJv
dW5kZWRIb2xlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsUm91bmRlZFJlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsUm91bmRl
ZFJlY3QoZ2V0PEZpbGxSb3VuZGVkUmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNl
dCkgUHV0SW1hZ2VEYXRhKGdldDxQdXRJbWFnZURhdGE+KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVEYXNoOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU2V0TGluZURhc2goZ2V0PFNldExpbmVEYXNoPigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIFNldFN0YXRlKGdldDxTZXRTdGF0ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDogewotICAgICAgICBuZXcgKGl0ZW1P
ZmZzZXQpIFN0cm9rZVBhdGgoZ2V0PFN0cm9rZVBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6IHsKLSAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBBcHBseURldmljZVNjYWxlRmFjdG9yKGdldDxBcHBseURldmlj
ZVNjYWxlRmFjdG9yPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1U
eXBlOjpDbGlwT3V0VG9QYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dFRvUGF0
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgorICAg
ICAgICByZXR1cm4gY29weUludG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBjb3B5
SW50bzxDbGlwVG9EcmF3aW5nQ29tbWFuZHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERy
YXdGb2N1c1JpbmdQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6
RHJhd0ZvY3VzUmluZ1JlY3RzOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmlu
Z1JlY3RzPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdHbHlwaHM+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xp
bmVzRm9yVGV4dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdO
YXRpdmVJbWFnZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdOYXRpdmVJbWFnZT4oKnRo
aXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgorICAgICAg
ICByZXR1cm4gY29weUludG88RHJhd1BhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXRo
PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRS
ZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbENvbXBvc2l0ZWRSZWN0PigqdGhpcywg
aXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6CisgICAgICAgIHJldHVy
biBjb3B5SW50bzxGaWxsUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxSZWN0V2l0aENvbG9yOgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RX
aXRoQ29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVj
dFdpdGhHcmFkaWVudDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aEdyYWRp
ZW50PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRo
Um91bmRlZEhvbGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhSb3VuZGVk
SG9sZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVk
UmVjdDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSb3VuZGVkUmVjdD4oKnRoaXMsIGl0
ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFB1dEltYWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2Ug
SXRlbVR5cGU6OlNldExpbmVEYXNoOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURh
c2g+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAg
Y2FzZSBJdGVtVHlwZTo6U3Ryb2tlUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9r
ZVBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmlj
ZVNjYWxlRmFjdG9yOgorICAgICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZh
Y3Rvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBl
OjpBcHBseUZpbGxQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQXBwbHlGaWxs
UGF0dGVybihnZXQ8QXBwbHlGaWxsUGF0dGVybj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgQXBwbHlTdHJva2VQYXR0ZXJuKGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBh
dHRlcm46CisgICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseUZpbGxQYXR0ZXJuPigqdGhpcywg
aXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgorICAg
ICAgICByZXR1cm4gY29weUludG88QXBwbHlTdHJva2VQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNl
dCk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOiB7
Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQmVnaW5UcmFuc3BhcmVuY3lMYXllcihnZXQ8QmVn
aW5UcmFuc3BhcmVuY3lMYXllcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6Q2xlYXJSZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xlYXJS
ZWN0KGdldDxDbGVhclJlY3Q+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNsZWFyU2hhZG93OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xlYXJT
aGFkb3coZ2V0PENsZWFyU2hhZG93PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBj
YXNlIEl0ZW1UeXBlOjpDbGlwOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcChnZXQ8
Q2xpcD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xp
cE91dDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIENsaXBPdXQoZ2V0PENsaXBPdXQ+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdl
QnVmZmVyOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcFRvSW1hZ2VCdWZmZXIoZ2V0
PENsaXBUb0ltYWdlQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIENv
bmNhdGVuYXRlQ1RNKGdldDxDb25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoZ2V0PERyYXdE
b3RzRm9yRG9jdW1lbnRNYXJrZXI+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJh
d0VsbGlwc2UoZ2V0PERyYXdFbGxpcHNlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERy
YXdMaW5lKGdldDxEcmF3TGluZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd1JlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UmVj
dChnZXQ8RHJhd1JlY3Q+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkVuZFRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkg
RW5kVHJhbnNwYXJlbmN5TGF5ZXIoZ2V0PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxFbGxpcHNlKGdldDxGaWxsRWxsaXBzZT4oKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVu
Y3lMYXllcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxDbGVhclJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpDbGVhclNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsZWFy
U2hhZG93PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPENsaXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpDbGlwT3V0OgorICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgor
ICAgICAgICByZXR1cm4gY29weUludG88Q2xpcFRvSW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKKyAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPENvbmNhdGVuYXRlQ1RNPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpEcmF3RWxsaXBzZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdF
bGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6
CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdSZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RHJh
d1JlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3Bh
cmVuY3lMYXllcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5zcGFyZW5jeUxheWVy
PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsRWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwog
I2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxp
bmVQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbElubGluZVBhdGgoZ2V0PEZp
bGxJbmxpbmVQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsSW5saW5lUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQ
YXRoPigqdGhpcywgaXRlbU9mZnNldCk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxSZWN0KGdldDxGaWxsUmVjdD4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250
ZXh0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmx1c2hDb250ZXh0KGdldDxGbHVzaENv
bnRleHQ+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1l
dGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjogewotICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihnZXQ8TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIo
Z2V0PE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgUGFpbnRGcmFtZUZvck1lZGlhKGdldDxQYWludEZyYW1lRm9yTWVkaWE+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBSZXN0b3JlKGdldDxSZXN0b3JlPigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6IHsKLSAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBSb3RhdGUoZ2V0PFJvdGF0ZT4oKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2F2ZTogewotICAgICAgICBuZXcgKGl0ZW1P
ZmZzZXQpIFNhdmUoZ2V0PFNhdmU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OlNjYWxlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2NhbGUoZ2V0
PFNjYWxlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRDVE06IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRDVE0oZ2V0PFNldENUTT4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmls
bENvbG9yOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0SW5saW5lRmlsbENvbG9yKGdl
dDxTZXRJbmxpbmVGaWxsQ29sb3I+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OlNldElubGluZUZpbGxHcmFkaWVudDogewotICAgICAgICBuZXcgKGl0ZW1P
ZmZzZXQpIFNldElubGluZUZpbGxHcmFkaWVudChnZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50Pigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVT
dHJva2VDb2xvcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldElubGluZVN0cm9rZUNv
bG9yKGdldDxTZXRJbmxpbmVTdHJva2VDb2xvcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDogewotICAgICAgICBuZXcgKGl0ZW1PZmZz
ZXQpIFNldExpbmVDYXAoZ2V0PFNldExpbmVDYXA+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgU2V0TGluZUpvaW4oZ2V0PFNldExpbmVKb2luPigpKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxpbWl0OiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgU2V0TWl0ZXJMaW1pdChnZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7
Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0U3Ryb2tlVGhpY2tuZXNzKGdldDxTZXRTdHJv
a2VUaGlja25lc3M+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OlN0cm9rZUVsbGlwc2U6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTdHJva2VFbGxp
cHNlKGdldDxTdHJva2VFbGxpcHNlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBj
YXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0
PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0Ogor
ICAgICAgICByZXR1cm4gY29weUludG88Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7
CisgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVm
ZmVyOgorICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlv
bkltYWdlQnVmZmVyPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyOgorICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNv
bW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOgorICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRG
cmFtZUZvck1lZGlhPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6UmVz
dG9yZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxS
b3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgorICAg
ICAgICByZXR1cm4gY29weUludG88U2F2ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2Ug
SXRlbVR5cGU6OlNjYWxlOgorICAgICAgICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06CisgICAgICAgIHJldHVybiBj
b3B5SW50bzxTZXRDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpT
ZXRJbmxpbmVGaWxsQ29sb3I6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxs
Q29sb3I+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVG
aWxsR3JhZGllbnQ6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGll
bnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJv
a2VDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigq
dGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRMaW5lSm9pbjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExp
bmVKb2luPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJM
aW1pdDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6CisgICAgICAg
IHJldHVybiBjb3B5SW50bzxTZXRTdHJva2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VFbGxpcHNlOgorICAgICAgICByZXR1cm4gY29weUlu
dG88U3Ryb2tlRWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBTdHJva2VJbmxpbmVQYXRoKGdldDxTdHJva2VJbmxpbmVQYXRo
PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJ
bmxpbmVQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRo
aXMsIGl0ZW1PZmZzZXQpOwogI2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZVJlY3QoZ2V0PFN0cm9rZVJlY3Q+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTdHJva2VMaW5lKGdldDxTdHJva2VMaW5lPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBUcmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9r
ZVJlY3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VSZWN0PigqdGhpcywgaXRlbU9m
ZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZToKKyAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFN0cm9rZUxpbmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpUcmFuc2xhdGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxUcmFuc2xhdGU+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBJdGVtQnVmZmVyOjpJ
dGVtQnVmZmVyKEl0ZW1CdWZmZXJIYW5kbGVzJiYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1C
dWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAppbmRleCAwMjE3ZTQ5MzNhNTI1MDc5ZDFhYjRkODQ2OGJm
YmQ4MmY3NWYyNTY3Li45YmY0NTI0OGQ4MWViZDVkYTNkYmQ5OTk4OGNmMDM5MTAxZGJiNjE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04MCw3ICs4MCw3
IEBAIHN0cnVjdCBJdGVtSGFuZGxlIHsKICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0
PFQqPigmZGF0YVtzaXplb2YodWludDY0X3QpXSk7CiAgICAgfQogCi0gICAgdm9pZCBjb3B5VG8o
SXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3Q7CisgICAgYm9vbCBkZWNvZGVJbnRvKEl0ZW1I
YW5kbGUgZGVzdGluYXRpb24pIGNvbnN0OwogfTsKIAogZW51bSBjbGFzcyBEaWRDaGFuZ2VJdGVt
QnVmZmVyIDogYm9vbCB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5o
CmluZGV4IGMyOGQ2OWY4Njg4NGUzMTYzNjA3Nzg2ZWY5YmIyMTljYmVjZGFjZTkuLjFlMDNkZTc2
NDkzNWVlMzVhMmQwZDBjMjkyYTIzNDQ3NzI0N2Y0MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuaApAQCAtNzUzLDYgKzc1Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICBSZW5kZXJp
bmdSZXNvdXJjZUlkZW50aWZpZXIgaW1hZ2VCdWZmZXJJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25S
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KKyAgICBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9CiAKICAgICB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJikgY29uc3Q7
CiAKQEAgLTEwMzMsNiArMTAzNCw4IEBAIHB1YmxpYzoKICAgICBGbG9hdFJlY3Qgc291cmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CiAgICAgSW1hZ2VQYWludGlu
Z09wdGlvbnMgb3B0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9uczsgfQorICAgIC8vIEZJ
WE1FOiBXZSBtaWdodCB3YW50IHRvIHZhbGlkYXRlIEltYWdlUGFpbnRpbmdPcHRpb25zLgorICAg
IGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7
IH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6SW1hZ2VCdWZm
ZXImKSBjb25zdDsKIApAQCAtMTA2Niw2ICsxMDY5LDggQEAgcHVibGljOgogICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlSWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zcmNSZWN0OyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvblJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIC8vIEZJWE1FOiBXZSBt
aWdodCB3YW50IHRvIHZhbGlkYXRlIEltYWdlUGFpbnRpbmdPcHRpb25zLgorICAgIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbWFnZUlkZW50aWZpZXI7IH0KIAogICAgIE5PX1JF
VFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAg
ICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwpAQCAt
MTA5Niw2ICsxMTAxLDggQEAgcHVibGljOgogICAgIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0
dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblRyYW5zZm9ybTsgfQogICAg
IEZsb2F0UG9pbnQgcGhhc2UoKSBjb25zdCB7IHJldHVybiBtX3BoYXNlOyB9CiAgICAgRmxvYXRT
aXplIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmc7IH0KKyAgICAvLyBGSVhNRTog
V2UgbWlnaHQgd2FudCB0byB2YWxpZGF0ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKyAgICBib29s
IGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1faW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICBO
T19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
OwogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsK
QEAgLTE5OTksNiArMjAwNiw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbjsgfQogICAgIE1lZGlhUGxheWVy
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAK
KyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1faWRlbnRpZmllcjsgfQorCiAg
ICAgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBj
b25zdDsKIAogICAgIE9wdGlvbmFsPEZsb2F0UmVjdD4gbG9jYWxCb3VuZHMoY29uc3QgR3JhcGhp
Y3NDb250ZXh0JikgY29uc3QgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CkBAIC0yMjIzLDEyICsy
MjMyLDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVt
ID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNl
OwogCi0gICAgRmx1c2hDb250ZXh0KEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKQorICAgIGV4
cGxpY2l0IEZsdXNoQ29udGV4dChGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCiAgICAgRmx1c2hJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1faWRlbnRpZmllcjsgfQogCiAgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKIApAQCAtMjI0NCwxMiArMjI1NCwxMyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAg
IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcihJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlm
aWVyKQorICAgIGV4cGxpY2l0IE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcihJdGVtQnVmZmVy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQogICAgIHsKICAgICB9CiAKICAgICBJdGVtQnVmZmVySWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKICAgICBJdGVtQnVmZmVySWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CkBAIC0yMjYxLDEyICsyMjcyLDEzIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsKICAgICBzdGF0aWMg
Y29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAgTWV0YUNvbW1hbmRD
aGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyKQorICAgIGV4cGxpY2l0IE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCiAgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiAhIW1faWRlbnRpZmllcjsg
fQogCiBwcml2YXRlOgogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417865</attachid>
            <date>2021-01-19 02:14:01 -0800</date>
            <delta_ts>2021-01-22 01:05:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220710-20210119111359.patch</filename>
            <type>text/plain</type>
            <size>23088</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWViYzZlZjM1NzU5ODYy
ODgxZjQwMWIzOTM4ZDdhMWNmZWUyYTcwZS4uN2U5ZDkyMGY4MTA4NzYwNzA2ZmNmN2I4NzM0MGUx
YjAwODRjMDZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWYWxpZGF0ZSBJdGVtSGFu
ZGxlcyB3aGVuIGRlY29kaW5nIHRoZW0gaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNzEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSXRlbUhhbmRsZSBtYXkgY29udGFpbiBtZW1i
ZXJzIHRoYXQgbmVlZCB0byBiZSB2YWxpZGF0ZWQgaWYgdGhleSBhcmUgZW5jb2RlZC9kZWNvZGVk
IHRocm91Z2ggbWVtb3J5IGNvcHkgaW5zdGVhZCBvZiBJUEMgZW5jb2RlL2RlY29kZSByb3V0aW5l
cy4KKyAgICAgICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdHJ1ZSBvZiBpZGVudGlmaWVycyB0aGF0
IGNhbiBiZSBudWxsIGJ1dCBjYW5ub3QgYmUgZW5jb2RlZC9kZWNvZGVkIGlmIHRoZSBpZGVudGlm
aWVyIGlzIG51bGwuCisgICAgICAgIEZvciB0aGVzZSBpbmxpbmUgSXRlbUhhbmRsZXMsIHZhbGlk
YXRlIHRoZW0gYmVmb3JlIGNvcHlpbmcgdGhlbS4KKyAgICAgICAgTm8gb2JzZXJ2YWJsZSBjaGFu
Z2Ugb2YgYmVoYXZpb3IsIGNvdmVyZWRkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6aXRlcmF0b3I6OnVwZGF0ZUN1cnJl
bnRJdGVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVt
SGFuZGxlSW5zcGVjdG9yOjp0ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0Ojpj
b3B5SW50byk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6ZGVj
b2RlSW50byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZTo6Y29weVRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9JbWFnZUJ1ZmZlcjo6aXNWYWxpZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmlzVmFs
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpp
c1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dDo6Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaENvbnRleHQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6OmlzVmFsaWQg
Y29uc3QpOgorCiAyMDIxLTAxLTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgYSBNZWRpYVNlc3Npb25Hcm91cElkZW50aWZpZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGE5NDc5ZjI2Yzc1NzI1Y2U3N2VhZGYxNTliMDJlNDI4
YzgzY2JmZDUuLjk4MWEwOTdkZTkxZmNkYjljNDE0MDYyNGNiZDNjMTBlM2I0MzQ0YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtMzYyLDcgKzM2MiwxMCBAQCB2b2lkIERpc3BsYXlM
aXN0OjppdGVyYXRvcjo6dXBkYXRlQ3VycmVudEl0ZW0oKQogICAgICAgICBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtWzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaXRlbVR5cGUpOwogICAgICAgICBt
X2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gMiAqIHNpemVvZih1aW50NjRfdCkgKyByb3VuZFVw
VG9NdWx0aXBsZU9mKGFsaWdub2YodWludDY0X3QpLCBkYXRhTGVuZ3RoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBJdGVtSGFuZGxlIHsgbV9jdXJzb3IgfS5jb3B5VG8oeyBtX2N1cnJlbnRCdWZm
ZXJGb3JJdGVtIH0pOworICAgICAgICBpZiAoIUl0ZW1IYW5kbGUgeyBtX2N1cnNvciB9LmRlY29k
ZUludG8oeyBtX2N1cnJlbnRCdWZmZXJGb3JJdGVtIH0pKSB7CisgICAgICAgICAgICAvLyBGSVhN
RTogSW5zdGVhZCBvZiBjcmFzaGluZywgdGhpcyBuZWVkcyB0byBmYWlsIGdyYWNlZnVsbHkgYW5k
IGluZm9ybSB0aGUgY2FsbGVyLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFk
ZGVkU2l6ZU9mVHlwZUFuZEl0ZW07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1ZjljOWUyYTg0MTFmYmZjYTVmZWM2ZTk5Y2Q4MjZh
Mzg4OTdlYjA4Li5hOGUzZGFiNjgyZTlkMWYyMDJiYjliNmViODAzNjRkZDc5MGRhNGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNTM5LDI1OSAr
NTM5LDE1NyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdm9pZCBJ
dGVtSGFuZGxlOjpjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lLCB0eXBlbmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1Zh
bGlkID0gZmFsc2U7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wg
SGFzSXNWYWxpZDxULCBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1Zh
bGlkKCkpPj4gPSB0cnVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlwZW5hbWUgc3Rk
OjplbmFibGVfaWZfdDwhSGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRl
bUhhbmRsZSYgaXRlbUhhbmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQorewor
ICAgIG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+
KCkpOworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlw
ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhj
b25zdCBJdGVtSGFuZGxlJiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZz
ZXQpCit7CisgICAgYXV0byogbmV3SXRlbSA9IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJ
dGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+KCkpOworICAgIHJldHVybiBuZXdJdGVtLT5pc1ZhbGlk
KCk7Cit9CisKK2Jvb2wgSXRlbUhhbmRsZTo6ZGVjb2RlSW50byhJdGVtSGFuZGxlIGRlc3RpbmF0
aW9uKSBjb25zdAogewogICAgIGF1dG8gaXRlbVR5cGUgPSB0eXBlKCk7CiAgICAgZGVzdGluYXRp
b24uZGF0YVswXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KGl0ZW1UeXBlKTsKICAgICBhdXRvIGl0
ZW1PZmZzZXQgPSBkZXN0aW5hdGlvbi5kYXRhICsgc2l6ZW9mKHVpbnQ2NF90KTsKICAgICBzd2l0
Y2ggKGl0ZW1UeXBlKSB7Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dFRvUGF0aDogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIENsaXBPdXRUb1BhdGgoZ2V0PENsaXBPdXRUb1BhdGg+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOiB7
Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcFBhdGgoZ2V0PENsaXBQYXRoPigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwVG9EcmF3aW5nQ29t
bWFuZHM6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwVG9EcmF3aW5nQ29tbWFuZHMo
Z2V0PENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1BhdGg6IHsKLSAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBEcmF3Rm9jdXNSaW5nUGF0aChnZXQ8RHJhd0ZvY3VzUmluZ1BhdGg+KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdSZWN0
czogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdGb2N1c1JpbmdSZWN0cyhnZXQ8RHJh
d0ZvY3VzUmluZ1JlY3RzPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3R2x5cGhzOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0dseXBo
cyhnZXQ8RHJhd0dseXBocz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6RHJhd0ltYWdlQnVmZmVyOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJh
d0ltYWdlQnVmZmVyKGdldDxEcmF3SW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBEcmF3TGluZXNGb3JUZXh0KGdldDxEcmF3TGluZXNGb3JUZXh0PigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TmF0aXZlSW1h
Z2U6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3TmF0aXZlSW1hZ2UoZ2V0PERyYXdO
YXRpdmVJbWFnZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6RHJhd1BhdHRlcm46IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UGF0dGVybihn
ZXQ8RHJhd1BhdHRlcm4+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdGgoZ2V0
PERyYXdQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBl
OjpGaWxsQ29tcG9zaXRlZFJlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsQ29t
cG9zaXRlZFJlY3QoZ2V0PEZpbGxDb21wb3NpdGVkUmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6IHsKLSAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBGaWxsUGF0aChnZXQ8RmlsbFBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENvbG9yOiB7Ci0gICAgICAgIG5ldyAo
aXRlbU9mZnNldCkgRmlsbFJlY3RXaXRoQ29sb3IoZ2V0PEZpbGxSZWN0V2l0aENvbG9yPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhH
cmFkaWVudDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxSZWN0V2l0aEdyYWRpZW50
KGdldDxGaWxsUmVjdFdpdGhHcmFkaWVudD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShnZXQ8RmlsbFJlY3RXaXRoUm91
bmRlZEhvbGU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSb3VuZGVkUmVjdDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxSb3VuZGVk
UmVjdChnZXQ8RmlsbFJvdW5kZWRSZWN0PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBjYXNlIEl0ZW1UeXBlOjpQdXRJbWFnZURhdGE6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBQdXRJbWFnZURhdGEoZ2V0PFB1dEltYWdlRGF0YT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZURhc2g6IHsKLSAgICAgICAgbmV3IChpdGVt
T2Zmc2V0KSBTZXRMaW5lRGFzaChnZXQ8U2V0TGluZURhc2g+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU2V0U3RhdGUoZ2V0PFNldFN0YXRlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgU3Ryb2tlUGF0aChnZXQ8U3Ryb2tlUGF0aD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlEZXZpY2VTY2FsZUZhY3RvcjogewotICAgICAg
ICBuZXcgKGl0ZW1PZmZzZXQpIEFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZ2V0PEFwcGx5RGV2aWNl
U2NhbGVGYWN0b3I+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5
cGU6OkNsaXBPdXRUb1BhdGg6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0VG9QYXRo
PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFBhdGg6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxDbGlwUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXBUb0RyYXdpbmdDb21tYW5kczoKKyAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPENsaXBUb0RyYXdpbmdDb21tYW5kcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2Ug
SXRlbVR5cGU6OkRyYXdGb2N1c1JpbmdQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88RHJh
d0ZvY3VzUmluZ1BhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3Rm9jdXNSaW5nUmVjdHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3Rm9jdXNSaW5n
UmVjdHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3R2x5cGhz
OgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0dseXBocz4oKnRoaXMsIGl0ZW1PZmZzZXQp
OworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFnZUJ1ZmZlcjoKKyAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPERyYXdJbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRl
bVR5cGU6OkRyYXdMaW5lc0ZvclRleHQ6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3TGlu
ZXNGb3JUZXh0PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd05h
dGl2ZUltYWdlOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd05hdGl2ZUltYWdlPigqdGhp
cywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd1BhdHRlcm46CisgICAgICAg
IHJldHVybiBjb3B5SW50bzxEcmF3UGF0dGVybj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd1BhdGg+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsQ29tcG9zaXRlZFJl
Y3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsQ29tcG9zaXRlZFJlY3Q+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUGF0aDoKKyAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPEZpbGxQYXRoPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlw
ZTo6RmlsbFJlY3RXaXRoQ29sb3I6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdp
dGhDb2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0
V2l0aEdyYWRpZW50OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoR3JhZGll
bnQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhS
b3VuZGVkSG9sZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJvdW5kZWRS
ZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJvdW5kZWRSZWN0PigqdGhpcywgaXRl
bU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6UHV0SW1hZ2VEYXRhOgorICAgICAgICByZXR1
cm4gY29weUludG88UHV0SW1hZ2VEYXRhPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJ
dGVtVHlwZTo6U2V0TGluZURhc2g6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRMaW5lRGFz
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOgorICAg
ICAgICByZXR1cm4gY29weUludG88U2V0U3RhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpTdHJva2VQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tl
UGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RGV2aWNl
U2NhbGVGYWN0b3I6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxBcHBseURldmljZVNjYWxlRmFj
dG9yPigqdGhpcywgaXRlbU9mZnNldCk7CiAjaWYgVVNFKENHKQotICAgIGNhc2UgSXRlbVR5cGU6
OkFwcGx5RmlsbFBhdHRlcm46IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBBcHBseUZpbGxQ
YXR0ZXJuKGdldDxBcHBseUZpbGxQYXR0ZXJuPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBBcHBseVN0cm9rZVBhdHRlcm4oZ2V0PEFwcGx5U3Ryb2tlUGF0dGVybj4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QXBwbHlGaWxsUGF0
dGVybjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEFwcGx5RmlsbFBhdHRlcm4+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseVN0cm9rZVBhdHRlcm46CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxBcHBseVN0cm9rZVBhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI6IHsK
LSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBCZWdpblRyYW5zcGFyZW5jeUxheWVyKGdldDxCZWdp
blRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpDbGVhclJlY3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGVhclJl
Y3QoZ2V0PENsZWFyUmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJ
dGVtVHlwZTo6Q2xlYXJTaGFkb3c6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGVhclNo
YWRvdyhnZXQ8Q2xlYXJTaGFkb3c+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNh
c2UgSXRlbVR5cGU6OkNsaXA6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwKGdldDxD
bGlwPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
T3V0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcE91dChnZXQ8Q2xpcE91dD4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VC
dWZmZXI6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBDbGlwVG9JbWFnZUJ1ZmZlcihnZXQ8
Q2xpcFRvSW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ29u
Y2F0ZW5hdGVDVE0oZ2V0PENvbmNhdGVuYXRlQ1RNPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOiB7Ci0gICAg
ICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcihnZXQ8RHJhd0Rv
dHNGb3JEb2N1bWVudE1hcmtlcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6RHJhd0VsbGlwc2U6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3
RWxsaXBzZShnZXQ8RHJhd0VsbGlwc2U+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IGNhc2UgSXRlbVR5cGU6OkRyYXdMaW5lOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJh
d0xpbmUoZ2V0PERyYXdMaW5lPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpEcmF3UmVjdDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdSZWN0
KGdldDxEcmF3UmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RW5kVHJhbnNwYXJlbmN5TGF5ZXI6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBF
bmRUcmFuc3BhcmVuY3lMYXllcihnZXQ8RW5kVHJhbnNwYXJlbmN5TGF5ZXI+KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxFbGxpcHNlOiB7Ci0gICAg
ICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbEVsbGlwc2UoZ2V0PEZpbGxFbGxpcHNlPigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5j
eUxheWVyOgorICAgICAgICByZXR1cm4gY29weUludG88QmVnaW5UcmFuc3BhcmVuY3lMYXllcj4o
KnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyUmVjdDoKKyAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPENsZWFyUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkNsZWFyU2hhZG93OgorICAgICAgICByZXR1cm4gY29weUludG88Q2xlYXJT
aGFkb3c+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwOgorICAg
ICAgICByZXR1cm4gY29weUludG88Q2xpcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2Ug
SXRlbVR5cGU6OkNsaXBPdXQ6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwT3V0PigqdGhp
cywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvSW1hZ2VCdWZmZXI6Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwVG9JbWFnZUJ1ZmZlcj4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNvbmNhdGVuYXRlQ1RNOgorICAgICAgICByZXR1cm4g
Y29weUludG88Q29uY2F0ZW5hdGVDVE0+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3RG90c0ZvckRvY3VtZW50TWFya2VyOgorICAgICAgICByZXR1cm4gY29weUlu
dG88RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OkRyYXdFbGxpcHNlOgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0Vs
bGlwc2U+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZToK
KyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdMaW5lPigqdGhpcywgaXRlbU9mZnNldCk7Cisg
ICAgY2FzZSBJdGVtVHlwZTo6RHJhd1JlY3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3
UmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFy
ZW5jeUxheWVyOgorICAgICAgICByZXR1cm4gY29weUludG88RW5kVHJhbnNwYXJlbmN5TGF5ZXI+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZToKKyAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7CiAj
aWYgRU5BQkxFKElOTElORV9QQVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbElubGlu
ZVBhdGg6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsSW5saW5lUGF0aChnZXQ8Rmls
bElubGluZVBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5
cGU6OkZpbGxJbmxpbmVQYXRoOgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbElubGluZVBh
dGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKICNlbmRpZgotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxS
ZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbFJlY3QoZ2V0PEZpbGxSZWN0Pigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRl
eHQ6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGbHVzaENvbnRleHQoZ2V0PEZsdXNoQ29u
dGV4dD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6TWV0
YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKGdldDxNZXRh
Q29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIE1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcihn
ZXQ8TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpQYWludEZyYW1lRm9yTWVkaWE6IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBQYWludEZyYW1lRm9yTWVkaWEoZ2V0PFBhaW50RnJhbWVGb3JNZWRpYT4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZTog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFJlc3RvcmUoZ2V0PFJlc3RvcmU+KCkpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZTogewotICAgICAg
ICBuZXcgKGl0ZW1PZmZzZXQpIFJvdGF0ZShnZXQ8Um90YXRlPigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgU2F2ZShnZXQ8U2F2ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2NhbGU6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTY2FsZShnZXQ8
U2NhbGU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNl
dENUTTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldENUTShnZXQ8U2V0Q1RNPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxs
Q29sb3I6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRJbmxpbmVGaWxsQ29sb3IoZ2V0
PFNldElubGluZUZpbGxDb2xvcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbEdyYWRpZW50OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9m
ZnNldCkgU2V0SW5saW5lRmlsbEdyYWRpZW50KGdldDxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0
cm9rZUNvbG9yOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0SW5saW5lU3Ryb2tlQ29s
b3IoZ2V0PFNldElubGluZVN0cm9rZUNvbG9yPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNl
dCkgU2V0TGluZUNhcChnZXQ8U2V0TGluZUNhcD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUpvaW46IHsKLSAgICAgICAgbmV3IChpdGVtT2Zm
c2V0KSBTZXRMaW5lSm9pbihnZXQ8U2V0TGluZUpvaW4+KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldE1pdGVyTGltaXQ6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBTZXRNaXRlckxpbWl0KGdldDxTZXRNaXRlckxpbWl0PigpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6IHsK
LSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTZXRTdHJva2VUaGlja25lc3MoZ2V0PFNldFN0cm9r
ZVRoaWNrbmVzcz4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U3Ryb2tlRWxsaXBzZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUVsbGlw
c2UoZ2V0PFN0cm9rZUVsbGlwc2U+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNh
c2UgSXRlbVR5cGU6OkZpbGxSZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3Q+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGbHVzaENvbnRleHQ6Cisg
ICAgICAgIHJldHVybiBjb3B5SW50bzxGbHVzaENvbnRleHQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsK
KyAgICBjYXNlIEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXI6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9u
SW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpNZXRh
Q29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxNZXRhQ29t
bWFuZENoYW5nZUl0ZW1CdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpQYWludEZyYW1lRm9yTWVkaWE6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxQYWludEZy
YW1lRm9yTWVkaWE+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpSZXN0
b3JlOgorICAgICAgICByZXR1cm4gY29weUludG88UmVzdG9yZT4oKnRoaXMsIGl0ZW1PZmZzZXQp
OworICAgIGNhc2UgSXRlbVR5cGU6OlJvdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFJv
dGF0ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNhdmU6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxTYXZlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJ
dGVtVHlwZTo6U2NhbGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTY2FsZT4oKnRoaXMsIGl0
ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldENUTToKKyAgICAgICAgcmV0dXJuIGNv
cHlJbnRvPFNldENUTT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNl
dElubGluZUZpbGxDb2xvcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxD
b2xvcj4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZUZp
bGxHcmFkaWVudDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldElubGluZUZpbGxHcmFkaWVu
dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldElubGluZVN0cm9r
ZUNvbG9yOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0SW5saW5lU3Ryb2tlQ29sb3I+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOgorICAgICAg
ICByZXR1cm4gY29weUludG88U2V0TGluZUNhcD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OlNldExpbmVKb2luOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0TGlu
ZUpvaW4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRNaXRlckxp
bWl0OgorICAgICAgICByZXR1cm4gY29weUludG88U2V0TWl0ZXJMaW1pdD4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0cm9rZVRoaWNrbmVzczoKKyAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFNldFN0cm9rZVRoaWNrbmVzcz4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6CisgICAgICAgIHJldHVybiBjb3B5SW50
bzxTdHJva2VFbGxpcHNlPigqdGhpcywgaXRlbU9mZnNldCk7CiAjaWYgRU5BQkxFKElOTElORV9Q
QVRIX0RBVEEpCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlSW5saW5lUGF0aDogewotICAgICAg
ICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUlubGluZVBhdGgoZ2V0PFN0cm9rZUlubGluZVBhdGg+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUlu
bGluZVBhdGg6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTdHJva2VJbmxpbmVQYXRoPigqdGhp
cywgaXRlbU9mZnNldCk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VSZWN0OiB7
Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU3Ryb2tlUmVjdChnZXQ8U3Ryb2tlUmVjdD4oKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlTGluZTog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZUxpbmUoZ2V0PFN0cm9rZUxpbmU+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlRyYW5zbGF0ZTog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFRyYW5zbGF0ZShnZXQ8VHJhbnNsYXRlPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICB9CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tl
UmVjdDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVJlY3Q+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VMaW5lOgorICAgICAgICByZXR1cm4gY29w
eUludG88U3Ryb2tlTGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6
OlRyYW5zbGF0ZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFRyYW5zbGF0ZT4oKnRoaXMsIGl0
ZW1PZmZzZXQpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEl0ZW1CdWZmZXI6Okl0
ZW1CdWZmZXIoSXRlbUJ1ZmZlckhhbmRsZXMmJiBoYW5kbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbUJ1ZmZlci5oCmluZGV4IDAyMTdlNDkzM2E1MjUwNzlkMWFiNGQ4NDY4YmZi
ZDgyZjc1ZjI1NjcuLjliZjQ1MjQ4ZDgxZWJkNWRhM2RiZDk5OTg4Y2YwMzkxMDFkYmI2MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmgKQEAgLTgwLDcgKzgwLDcg
QEAgc3RydWN0IEl0ZW1IYW5kbGUgewogICAgICAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8
VCo+KCZkYXRhW3NpemVvZih1aW50NjRfdCldKTsKICAgICB9CiAKLSAgICB2b2lkIGNvcHlUbyhJ
dGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBjb25zdDsKKyAgICBib29sIGRlY29kZUludG8oSXRlbUhh
bmRsZSBkZXN0aW5hdGlvbikgY29uc3Q7CiB9OwogCiBlbnVtIGNsYXNzIERpZENoYW5nZUl0ZW1C
dWZmZXIgOiBib29sIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
aW5kZXggYzI4ZDY5Zjg2ODg0ZTMxNjM2MDc3ODZlZjliYjIxOWNiZWNkYWNlOS4uMWUwM2RlNzY0
OTM1ZWUzNWEyZDBkMGMyOTJhMjM0NDc3MjQ3ZjQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5oCkBAIC03NTMsNiArNzUzLDcgQEAgcHVibGljOgogICAgIAogICAgIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllciBpbWFnZUJ1ZmZlcklkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uUmVjdDsgfQorICAgIGJvb2wgaXNWYWxp
ZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbWFnZUJ1ZmZlcklkZW50aWZpZXI7IH0KIAogICAgIHZv
aWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6SW1hZ2VCdWZmZXImKSBjb25zdDsK
IApAQCAtMTAzMyw2ICsxMDM0LDggQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NyY1JlY3Q7IH0KICAgICBGbG9hdFJlY3QgZGVzdGluYXRpb25SZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvblJlY3Q7IH0KICAgICBJbWFnZVBhaW50aW5n
T3B0aW9ucyBvcHRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zOyB9CisgICAgLy8gRklY
TUU6IFdlIG1pZ2h0IHdhbnQgdG8gdmFsaWRhdGUgSW1hZ2VQYWludGluZ09wdGlvbnMuCisgICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsg
fQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZl
ciYpIGNvbnN0OwogCkBAIC0xMDY2LDYgKzEwNjksOCBAQCBwdWJsaWM6CiAgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIGltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW1h
Z2VJZGVudGlmaWVyOyB9CiAgICAgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtX3NyY1JlY3Q7IH0KICAgICBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgLy8gRklYTUU6IFdlIG1p
Z2h0IHdhbnQgdG8gdmFsaWRhdGUgSW1hZ2VQYWludGluZ09wdGlvbnMuCisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2ltYWdlSWRlbnRpZmllcjsgfQogCiAgICAgTk9fUkVU
VVJOX0RVRV9UT19BU1NFUlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAg
ICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CkBAIC0x
MDk2LDYgKzExMDEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuVHJhbnNmb3JtOyB9CiAgICAg
RmxvYXRQb2ludCBwaGFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGhhc2U7IH0KICAgICBGbG9hdFNp
emUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIG1fc3BhY2luZzsgfQorICAgIC8vIEZJWE1FOiBX
ZSBtaWdodCB3YW50IHRvIHZhbGlkYXRlIEltYWdlUGFpbnRpbmdPcHRpb25zLgorICAgIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pbWFnZUlkZW50aWZpZXI7IH0KIAogICAgIE5P
X1JFVFVSTl9EVUVfVE9fQVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CiAgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSYpIGNvbnN0OwpA
QCAtMTk5OSw2ICsyMDA2LDggQEAgcHVibGljOgogICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uOyB9CiAgICAgTWVkaWFQbGF5ZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KIAor
ICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pZGVudGlmaWVyOyB9CisKICAg
ICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0OwogCiAgICAgT3B0aW9uYWw8RmxvYXRSZWN0PiBsb2NhbEJvdW5kcyhjb25zdCBHcmFwaGlj
c0NvbnRleHQmKSBjb25zdCB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KQEAgLTIyMjMsMTIgKzIy
MzIsMTMgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0g
PSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7
CiAKLSAgICBGbHVzaENvbnRleHQoRmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgZXhw
bGljaXQgRmx1c2hDb250ZXh0KEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKICAgICBGbHVzaElkZW50
aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pZGVudGlmaWVyOyB9CiAKICAgICB2b2lk
IGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogCkBAIC0yMjQ0LDEyICsyMjU0LDEzIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNJbmxpbmVJdGVtID0gdHJ1ZTsK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCi0gICAg
TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpCisgICAgZXhwbGljaXQgTWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVmZmVyKEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgewogICAgIH0KIAogICAgIEl0ZW1CdWZmZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7
IHJldHVybiAhIW1faWRlbnRpZmllcjsgfQogCiBwcml2YXRlOgogICAgIEl0ZW1CdWZmZXJJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKQEAgLTIyNjEsMTIgKzIyNzIsMTMgQEAgcHVibGljOgogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBNZXRhQ29tbWFuZENo
YW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGlk
ZW50aWZpZXIpCisgICAgZXhwbGljaXQgTWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdl
QnVmZmVyKFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKICAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pZGVudGlmaWVyOyB9
CiAKIHByaXZhdGU6CiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418117</attachid>
            <date>2021-01-22 01:05:29 -0800</date>
            <delta_ts>2021-01-22 01:34:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220710-20210122100527.patch</filename>
            <type>text/plain</type>
            <size>23069</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc0NGRiZjdlZTUzMTAz
ZTMwMjc5MjgwYjhiMDg2Y2NmZTJmNzAzMS4uYjkwZDQ2OWEzMWJjODcyZTRhODhkMTlmMDhiMTc3
ODkwYjE1YmExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDIxLTAxLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBWYWxpZGF0ZSBJdGVtSGFu
ZGxlcyB3aGVuIGRlY29kaW5nIHRoZW0gaW4gR1BVUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwNzEwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIEl0ZW1IYW5kbGUgbWF5IGNvbnRhaW4gbWVtYmVy
cyB0aGF0IG5lZWQgdG8gYmUgdmFsaWRhdGVkIGlmIHRoZXkgYXJlIGVuY29kZWQvZGVjb2RlZCB0
aHJvdWdoIG1lbW9yeSBjb3B5IGluc3RlYWQgb2YgSVBDIGVuY29kZS9kZWNvZGUgcm91dGluZXMu
CisgICAgICAgIFRoaXMgaXMgcGFydGljdWxhcmx5IHRydWUgb2YgaWRlbnRpZmllcnMgdGhhdCBj
YW4gYmUgbnVsbCBidXQgY2Fubm90IGJlIGVuY29kZWQvZGVjb2RlZCBpZiB0aGUgaWRlbnRpZmll
ciBpcyBudWxsLgorICAgICAgICBGb3IgdGhlc2UgaW5saW5lIEl0ZW1IYW5kbGVzLCB2YWxpZGF0
ZSB0aGVtIGJlZm9yZSBjb3B5aW5nIHRoZW0uCisgICAgICAgIE5vIG9ic2VydmFibGUgY2hhbmdl
IG9mIGJlaGF2aW9yLCBjb3ZlcmVkZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6Oml0ZXJhdG9yOjp1cGRhdGVDdXJyZW50
SXRlbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhh
bmRsZUluc3BlY3Rvcjo6dGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6Y29w
eUludG8pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1IYW5kbGU6OnNhZmVD
b3B5SW50byBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZTo6Y29weVRvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRpc3BsYXlMaXN0OjpDbGlwVG9JbWFnZUJ1ZmZlcjo6aXNWYWxpZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6RHJhd0ltYWdlQnVmZmVyOjppc1ZhbGlkIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpEcmF3TmF0aXZlSW1hZ2U6OmlzVmFs
aWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OkRyYXdQYXR0ZXJuOjpp
c1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpQYWludEZyYW1l
Rm9yTWVkaWE6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6
OkZsdXNoQ29udGV4dDo6Rmx1c2hDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpGbHVzaENvbnRleHQ6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlSXRlbUJ1ZmZlcjo6TWV0YUNvbW1hbmRDaGFuZ2VJ
dGVtQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpNZXRhQ29tbWFuZENo
YW5nZUl0ZW1CdWZmZXI6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxh
eUxpc3Q6Ok1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcjo6TWV0YUNvbW1h
bmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3Bs
YXlMaXN0OjpNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXI6OmlzVmFsaWQg
Y29uc3QpOgorCiAyMDIxLTAxLTIxICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgSGFuZGxlIHNoYXBlTWFyZ2luIGJlY29taW5nIE5hTgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKaW5kZXggYTk0NzlmMjZjNzU3MjVjZTc3ZWFkZjE1OWIwMmU0MjhjODNjYmZkNS4uMTk2
MTM4YmFkNDg0NTBhZDcwNzE3YTQzYmRmMDU1ZTcyNTJmNjZjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3QuY3BwCkBAIC0zNjIsNyArMzYyLDEwIEBAIHZvaWQgRGlzcGxheUxpc3Q6Oml0ZXJhdG9y
Ojp1cGRhdGVDdXJyZW50SXRlbSgpCiAgICAgICAgIG1fY3VycmVudEJ1ZmZlckZvckl0ZW1bMF0g
PSBzdGF0aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CiAgICAgICAgIG1fY3VycmVudEl0ZW1T
aXplSW5CdWZmZXIgPSAyICogc2l6ZW9mKHVpbnQ2NF90KSArIHJvdW5kVXBUb011bHRpcGxlT2Yo
YWxpZ25vZih1aW50NjRfdCksIGRhdGFMZW5ndGgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIEl0
ZW1IYW5kbGUgeyBtX2N1cnNvciB9LmNvcHlUbyh7IG1fY3VycmVudEJ1ZmZlckZvckl0ZW0gfSk7
CisgICAgICAgIGlmICghSXRlbUhhbmRsZSB7IG1fY3Vyc29yIH0uc2FmZUNvcHkoeyBtX2N1cnJl
bnRCdWZmZXJGb3JJdGVtIH0pKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBj
cmFzaGluZywgdGhpcyBuZWVkcyB0byBmYWlsIGdyYWNlZnVsbHkgYW5kIGluZm9ybSB0aGUgY2Fs
bGVyLgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fQogICAgICAgICBtX2N1cnJlbnRJdGVtU2l6ZUluQnVmZmVyID0gcGFkZGVkU2l6ZU9mVHlwZUFu
ZEl0ZW07CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcAppbmRleCA1ZjljOWUyYTg0MTFmYmZjYTVmZWM2ZTk5Y2Q4MjZhMzg4OTdlYjA4Li41MGM4
ZDhmNzU3N2ExNjcwNWVjZjg1NWFkMTY5ODE4YjZkZjk4YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNTM5LDI1OSArNTM5LDE1NyBAQCB2b2lk
IEl0ZW1IYW5kbGU6OmRlc3Ryb3koKQogICAgIH0KIH0KIAotdm9pZCBJdGVtSGFuZGxlOjpjb3B5
VG8oSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lLCB0eXBl
bmFtZSA9IHZvaWQ+IGlubGluZSBjb25zdGV4cHIgYm9vbCBIYXNJc1ZhbGlkID0gZmFsc2U7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgY29uc3RleHByIGJvb2wgSGFzSXNWYWxpZDxULCBz
dGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8VD4oKS5pc1ZhbGlkKCkpPj4gPSB0cnVl
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwh
SGFzSXNWYWxpZDxJdGVtPiwgYm9vbD4gY29weUludG8oY29uc3QgSXRlbUhhbmRsZSYgaXRlbUhh
bmRsZSwgdWludDhfdCogZGVzdGluYXRpb25XaXRoT2Zmc2V0KQoreworICAgIG5ldyAoZGVzdGlu
YXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUuZ2V0PEl0ZW0+KCkpOworICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVtPgordHlwZW5hbWUgc3RkOjplbmFi
bGVfaWZfdDxIYXNJc1ZhbGlkPEl0ZW0+LCBib29sPiBjb3B5SW50byhjb25zdCBJdGVtSGFuZGxl
JiBpdGVtSGFuZGxlLCB1aW50OF90KiBkZXN0aW5hdGlvbldpdGhPZmZzZXQpCit7CisgICAgYXV0
byogbmV3SXRlbSA9IG5ldyAoZGVzdGluYXRpb25XaXRoT2Zmc2V0KSBJdGVtKGl0ZW1IYW5kbGUu
Z2V0PEl0ZW0+KCkpOworICAgIHJldHVybiBuZXdJdGVtLT5pc1ZhbGlkKCk7Cit9CisKK2Jvb2wg
SXRlbUhhbmRsZTo6c2FmZUNvcHkoSXRlbUhhbmRsZSBkZXN0aW5hdGlvbikgY29uc3QKIHsKICAg
ICBhdXRvIGl0ZW1UeXBlID0gdHlwZSgpOwogICAgIGRlc3RpbmF0aW9uLmRhdGFbMF0gPSBzdGF0
aWNfY2FzdDx1aW50OF90PihpdGVtVHlwZSk7CiAgICAgYXV0byBpdGVtT2Zmc2V0ID0gZGVzdGlu
YXRpb24uZGF0YSArIHNpemVvZih1aW50NjRfdCk7CiAgICAgc3dpdGNoIChpdGVtVHlwZSkgewot
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBPdXRUb1BhdGg6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zm
c2V0KSBDbGlwT3V0VG9QYXRoKGdldDxDbGlwT3V0VG9QYXRoPigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwUGF0aDogewotICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIENsaXBQYXRoKGdldDxDbGlwUGF0aD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcFRvRHJhd2luZ0NvbW1hbmRzOiB7Ci0gICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgQ2xpcFRvRHJhd2luZ0NvbW1hbmRzKGdldDxDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdGb2N1c1JpbmdQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0ZvY3Vz
UmluZ1BhdGgoZ2V0PERyYXdGb2N1c1JpbmdQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9jdXNSaW5nUmVjdHM6IHsKLSAgICAgICAgbmV3
IChpdGVtT2Zmc2V0KSBEcmF3Rm9jdXNSaW5nUmVjdHMoZ2V0PERyYXdGb2N1c1JpbmdSZWN0cz4o
KSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBo
czogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdHbHlwaHMoZ2V0PERyYXdHbHlwaHM+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdJbWFn
ZUJ1ZmZlcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdJbWFnZUJ1ZmZlcihnZXQ8
RHJhd0ltYWdlQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpEcmF3TGluZXNGb3JUZXh0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJh
d0xpbmVzRm9yVGV4dChnZXQ8RHJhd0xpbmVzRm9yVGV4dD4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd05hdGl2ZUltYWdlOiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgRHJhd05hdGl2ZUltYWdlKGdldDxEcmF3TmF0aXZlSW1hZ2U+KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOiB7
Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd1BhdHRlcm4oZ2V0PERyYXdQYXR0ZXJuPigp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3UGF0aDog
ewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdQYXRoKGdldDxEcmF3UGF0aD4oKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRS
ZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbENvbXBvc2l0ZWRSZWN0KGdldDxG
aWxsQ29tcG9zaXRlZFJlY3Q+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2Ug
SXRlbVR5cGU6OkZpbGxQYXRoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmlsbFBhdGgo
Z2V0PEZpbGxQYXRoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1U
eXBlOjpGaWxsUmVjdFdpdGhDb2xvcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIEZpbGxS
ZWN0V2l0aENvbG9yKGdldDxGaWxsUmVjdFdpdGhDb2xvcj4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoR3JhZGllbnQ6IHsKLSAgICAg
ICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsUmVjdFdpdGhHcmFkaWVudChnZXQ8RmlsbFJlY3RXaXRo
R3JhZGllbnQ+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6
OkZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRmls
bFJlY3RXaXRoUm91bmRlZEhvbGUoZ2V0PEZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlPigpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUm91bmRlZFJlY3Q6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBGaWxsUm91bmRlZFJlY3QoZ2V0PEZpbGxSb3Vu
ZGVkUmVjdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6
UHV0SW1hZ2VEYXRhOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgUHV0SW1hZ2VEYXRhKGdl
dDxQdXRJbWFnZURhdGE+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OlNldExpbmVEYXNoOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0TGluZURh
c2goZ2V0PFNldExpbmVEYXNoPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldFN0YXRl
KGdldDxTZXRTdGF0ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6U3Ryb2tlUGF0aDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFN0cm9rZVBhdGgo
Z2V0PFN0cm9rZVBhdGg+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRl
bVR5cGU6OkFwcGx5RGV2aWNlU2NhbGVGYWN0b3I6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBBcHBseURldmljZVNjYWxlRmFjdG9yKGdldDxBcHBseURldmljZVNjYWxlRmFjdG9yPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0VG9QYXRo
OgorICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dFRvUGF0aD4oKnRoaXMsIGl0ZW1PZmZz
ZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBQYXRoOgorICAgICAgICByZXR1cm4gY29weUlu
dG88Q2xpcFBhdGg+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
VG9EcmF3aW5nQ29tbWFuZHM6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxDbGlwVG9EcmF3aW5n
Q29tbWFuZHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3Rm9j
dXNSaW5nUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdGb2N1c1JpbmdQYXRoPigq
dGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0ZvY3VzUmluZ1JlY3Rz
OgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0ZvY3VzUmluZ1JlY3RzPigqdGhpcywgaXRl
bU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0dseXBoczoKKyAgICAgICAgcmV0dXJu
IGNvcHlJbnRvPERyYXdHbHlwaHM+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpEcmF3SW1hZ2VCdWZmZXI6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxEcmF3SW1hZ2VC
dWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3TGluZXNG
b3JUZXh0OgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd0xpbmVzRm9yVGV4dD4oKnRoaXMs
IGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdOYXRpdmVJbWFnZToKKyAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPERyYXdOYXRpdmVJbWFnZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdQYXR0ZXJuOgorICAgICAgICByZXR1cm4gY29weUludG88
RHJhd1BhdHRlcm4+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
UGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdQYXRoPigqdGhpcywgaXRlbU9mZnNl
dCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbENvbXBvc2l0ZWRSZWN0OgorICAgICAgICByZXR1
cm4gY29weUludG88RmlsbENvbXBvc2l0ZWRSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAg
Y2FzZSBJdGVtVHlwZTo6RmlsbFBhdGg6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxGaWxsUGF0
aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSZWN0V2l0aENv
bG9yOgorICAgICAgICByZXR1cm4gY29weUludG88RmlsbFJlY3RXaXRoQ29sb3I+KCp0aGlzLCBp
dGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdFdpdGhHcmFkaWVudDoKKyAg
ICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0V2l0aEdyYWRpZW50PigqdGhpcywgaXRlbU9m
ZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbFJlY3RXaXRoUm91bmRlZEhvbGU6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxGaWxsUmVjdFdpdGhSb3VuZGVkSG9sZT4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxSb3VuZGVkUmVjdDoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPEZpbGxSb3VuZGVkUmVjdD4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNh
c2UgSXRlbVR5cGU6OlB1dEltYWdlRGF0YToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFB1dElt
YWdlRGF0YT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVE
YXNoOgorICAgICAgICByZXR1cm4gY29weUludG88U2V0TGluZURhc2g+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZToKKyAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPFNldFN0YXRlPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6U3Ry
b2tlUGF0aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZVBhdGg+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseURldmljZVNjYWxlRmFjdG9yOgorICAg
ICAgICByZXR1cm4gY29weUludG88QXBwbHlEZXZpY2VTY2FsZUZhY3Rvcj4oKnRoaXMsIGl0ZW1P
ZmZzZXQpOwogI2lmIFVTRShDRykKLSAgICBjYXNlIEl0ZW1UeXBlOjpBcHBseUZpbGxQYXR0ZXJu
OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQXBwbHlGaWxsUGF0dGVybihnZXQ8QXBwbHlG
aWxsUGF0dGVybj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6QXBwbHlTdHJva2VQYXR0ZXJuOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQXBwbHlT
dHJva2VQYXR0ZXJuKGdldDxBcHBseVN0cm9rZVBhdHRlcm4+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OkFwcGx5RmlsbFBhdHRlcm46CisgICAgICAgIHJl
dHVybiBjb3B5SW50bzxBcHBseUZpbGxQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAg
Y2FzZSBJdGVtVHlwZTo6QXBwbHlTdHJva2VQYXR0ZXJuOgorICAgICAgICByZXR1cm4gY29weUlu
dG88QXBwbHlTdHJva2VQYXR0ZXJuPigqdGhpcywgaXRlbU9mZnNldCk7CiAjZW5kaWYKLSAgICBj
YXNlIEl0ZW1UeXBlOjpCZWdpblRyYW5zcGFyZW5jeUxheWVyOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgQmVnaW5UcmFuc3BhcmVuY3lMYXllcihnZXQ8QmVnaW5UcmFuc3BhcmVuY3lMYXll
cj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xlYXJS
ZWN0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xlYXJSZWN0KGdldDxDbGVhclJlY3Q+
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsZWFyU2hh
ZG93OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xlYXJTaGFkb3coZ2V0PENsZWFyU2hh
ZG93PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDbGlw
OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgQ2xpcChnZXQ8Q2xpcD4oKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Q2xpcE91dDogewotICAgICAgICBu
ZXcgKGl0ZW1PZmZzZXQpIENsaXBPdXQoZ2V0PENsaXBPdXQ+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOiB7Ci0gICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgQ2xpcFRvSW1hZ2VCdWZmZXIoZ2V0PENsaXBUb0ltYWdlQnVmZmVy
PigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpDb25jYXRl
bmF0ZUNUTTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIENvbmNhdGVuYXRlQ1RNKGdldDxD
b25jYXRlbmF0ZUNUTT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6RHJhd0RvdHNGb3JEb2N1bWVudE1hcmtlcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZz
ZXQpIERyYXdEb3RzRm9yRG9jdW1lbnRNYXJrZXIoZ2V0PERyYXdEb3RzRm9yRG9jdW1lbnRNYXJr
ZXI+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkRyYXdF
bGxpcHNlOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRHJhd0VsbGlwc2UoZ2V0PERyYXdF
bGxpcHNlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpE
cmF3TGluZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIERyYXdMaW5lKGdldDxEcmF3TGlu
ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6RHJhd1Jl
Y3Q6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBEcmF3UmVjdChnZXQ8RHJhd1JlY3Q+KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OkVuZFRyYW5zcGFy
ZW5jeUxheWVyOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgRW5kVHJhbnNwYXJlbmN5TGF5
ZXIoZ2V0PEVuZFRyYW5zcGFyZW5jeUxheWVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsRWxsaXBzZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZz
ZXQpIEZpbGxFbGxpcHNlKGdldDxGaWxsRWxsaXBzZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9CisgICAgY2FzZSBJdGVtVHlwZTo6QmVnaW5UcmFuc3BhcmVuY3lMYXllcjoKKyAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPEJlZ2luVHJhbnNwYXJlbmN5TGF5ZXI+KCp0aGlzLCBpdGVtT2Zmc2V0
KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVhclJlY3Q6CisgICAgICAgIHJldHVybiBjb3B5SW50
bzxDbGVhclJlY3Q+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGVh
clNoYWRvdzoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENsZWFyU2hhZG93PigqdGhpcywgaXRl
bU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Q2xpcDoKKyAgICAgICAgcmV0dXJuIGNvcHlJ
bnRvPENsaXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpDbGlwT3V0
OgorICAgICAgICByZXR1cm4gY29weUludG88Q2xpcE91dD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwor
ICAgIGNhc2UgSXRlbVR5cGU6OkNsaXBUb0ltYWdlQnVmZmVyOgorICAgICAgICByZXR1cm4gY29w
eUludG88Q2xpcFRvSW1hZ2VCdWZmZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0
ZW1UeXBlOjpDb25jYXRlbmF0ZUNUTToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPENvbmNhdGVu
YXRlQ1RNPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0RvdHNG
b3JEb2N1bWVudE1hcmtlcjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdEb3RzRm9yRG9j
dW1lbnRNYXJrZXI+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpEcmF3
RWxsaXBzZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPERyYXdFbGxpcHNlPigqdGhpcywgaXRl
bU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RHJhd0xpbmU6CisgICAgICAgIHJldHVybiBj
b3B5SW50bzxEcmF3TGluZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6
OkRyYXdSZWN0OgorICAgICAgICByZXR1cm4gY29weUludG88RHJhd1JlY3Q+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpFbmRUcmFuc3BhcmVuY3lMYXllcjoKKyAgICAg
ICAgcmV0dXJuIGNvcHlJbnRvPEVuZFRyYW5zcGFyZW5jeUxheWVyPigqdGhpcywgaXRlbU9mZnNl
dCk7CisgICAgY2FzZSBJdGVtVHlwZTo6RmlsbEVsbGlwc2U6CisgICAgICAgIHJldHVybiBjb3B5
SW50bzxGaWxsRWxsaXBzZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOwogI2lmIEVOQUJMRShJTkxJTkVf
UEFUSF9EQVRBKQotICAgIGNhc2UgSXRlbVR5cGU6OkZpbGxJbmxpbmVQYXRoOiB7Ci0gICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgRmlsbElubGluZVBhdGgoZ2V0PEZpbGxJbmxpbmVQYXRoPigpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsSW5saW5lUGF0
aDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxJbmxpbmVQYXRoPigqdGhpcywgaXRlbU9m
ZnNldCk7CiAjZW5kaWYKLSAgICBjYXNlIEl0ZW1UeXBlOjpGaWxsUmVjdDogewotICAgICAgICBu
ZXcgKGl0ZW1PZmZzZXQpIEZpbGxSZWN0KGdldDxGaWxsUmVjdD4oKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OiB7Ci0gICAgICAgIG5l
dyAoaXRlbU9mZnNldCkgRmx1c2hDb250ZXh0KGdldDxGbHVzaENvbnRleHQ+KCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6Ok1ldGFDb21tYW5kQ2hhbmdlRGVz
dGluYXRpb25JbWFnZUJ1ZmZlcjogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIE1ldGFDb21t
YW5kQ2hhbmdlRGVzdGluYXRpb25JbWFnZUJ1ZmZlcihnZXQ8TWV0YUNvbW1hbmRDaGFuZ2VEZXN0
aW5hdGlvbkltYWdlQnVmZmVyPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNl
IEl0ZW1UeXBlOjpNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXI6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBNZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoZ2V0PE1ldGFDb21tYW5kQ2hh
bmdlSXRlbUJ1ZmZlcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVt
VHlwZTo6UGFpbnRGcmFtZUZvck1lZGlhOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgUGFp
bnRGcmFtZUZvck1lZGlhKGdldDxQYWludEZyYW1lRm9yTWVkaWE+KCkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlJlc3RvcmU6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBSZXN0b3JlKGdldDxSZXN0b3JlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpSb3RhdGU6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBSb3RhdGUoZ2V0PFJvdGF0ZT4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2Fz
ZSBJdGVtVHlwZTo6U2F2ZTogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNhdmUoZ2V0PFNh
dmU+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxl
OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2NhbGUoZ2V0PFNjYWxlPigpKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRDVE06IHsKLSAgICAgICAg
bmV3IChpdGVtT2Zmc2V0KSBTZXRDVE0oZ2V0PFNldENUTT4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgY2FzZSBJdGVtVHlwZTo6U2V0SW5saW5lRmlsbENvbG9yOiB7Ci0gICAgICAg
IG5ldyAoaXRlbU9mZnNldCkgU2V0SW5saW5lRmlsbENvbG9yKGdldDxTZXRJbmxpbmVGaWxsQ29s
b3I+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlNldElu
bGluZUZpbGxHcmFkaWVudDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldElubGluZUZp
bGxHcmFkaWVudChnZXQ8U2V0SW5saW5lRmlsbEdyYWRpZW50PigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjogewotICAg
ICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldElubGluZVN0cm9rZUNvbG9yKGdldDxTZXRJbmxpbmVT
dHJva2VDb2xvcj4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY2FzZSBJdGVtVHlw
ZTo6U2V0TGluZUNhcDogewotICAgICAgICBuZXcgKGl0ZW1PZmZzZXQpIFNldExpbmVDYXAoZ2V0
PFNldExpbmVDYXA+KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVKb2luOiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0TGluZUpvaW4o
Z2V0PFNldExpbmVKb2luPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYXNlIEl0
ZW1UeXBlOjpTZXRNaXRlckxpbWl0OiB7Ci0gICAgICAgIG5ldyAoaXRlbU9mZnNldCkgU2V0TWl0
ZXJMaW1pdChnZXQ8U2V0TWl0ZXJMaW1pdD4oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgY2FzZSBJdGVtVHlwZTo6U2V0U3Ryb2tlVGhpY2tuZXNzOiB7Ci0gICAgICAgIG5ldyAoaXRl
bU9mZnNldCkgU2V0U3Ryb2tlVGhpY2tuZXNzKGdldDxTZXRTdHJva2VUaGlja25lc3M+KCkpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUVsbGlwc2U6
IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0KSBTdHJva2VFbGxpcHNlKGdldDxTdHJva2VFbGxp
cHNlPigpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpGaWxs
UmVjdDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPEZpbGxSZWN0PigqdGhpcywgaXRlbU9mZnNl
dCk7CisgICAgY2FzZSBJdGVtVHlwZTo6Rmx1c2hDb250ZXh0OgorICAgICAgICByZXR1cm4gY29w
eUludG88Rmx1c2hDb250ZXh0PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlw
ZTo6TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyOgorICAgICAgICByZXR1
cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyPigqdGhp
cywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6TWV0YUNvbW1hbmRDaGFuZ2VJdGVt
QnVmZmVyOgorICAgICAgICByZXR1cm4gY29weUludG88TWV0YUNvbW1hbmRDaGFuZ2VJdGVtQnVm
ZmVyPigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6UGFpbnRGcmFtZUZv
ck1lZGlhOgorICAgICAgICByZXR1cm4gY29weUludG88UGFpbnRGcmFtZUZvck1lZGlhPigqdGhp
cywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6UmVzdG9yZToKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFJlc3RvcmU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1U
eXBlOjpSb3RhdGU6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxSb3RhdGU+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTYXZlOgorICAgICAgICByZXR1cm4gY29weUlu
dG88U2F2ZT4oKnRoaXMsIGl0ZW1PZmZzZXQpOworICAgIGNhc2UgSXRlbVR5cGU6OlNjYWxlOgor
ICAgICAgICByZXR1cm4gY29weUludG88U2NhbGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBj
YXNlIEl0ZW1UeXBlOjpTZXRDVE06CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRDVE0+KCp0
aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsQ29sb3I6
CisgICAgICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsQ29sb3I+KCp0aGlzLCBpdGVt
T2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVGaWxsR3JhZGllbnQ6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxTZXRJbmxpbmVGaWxsR3JhZGllbnQ+KCp0aGlzLCBpdGVtT2Zm
c2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRJbmxpbmVTdHJva2VDb2xvcjoKKyAgICAgICAg
cmV0dXJuIGNvcHlJbnRvPFNldElubGluZVN0cm9rZUNvbG9yPigqdGhpcywgaXRlbU9mZnNldCk7
CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRv
PFNldExpbmVDYXA+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpTZXRM
aW5lSm9pbjoKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFNldExpbmVKb2luPigqdGhpcywgaXRl
bU9mZnNldCk7CisgICAgY2FzZSBJdGVtVHlwZTo6U2V0TWl0ZXJMaW1pdDoKKyAgICAgICAgcmV0
dXJuIGNvcHlJbnRvPFNldE1pdGVyTGltaXQ+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNl
IEl0ZW1UeXBlOjpTZXRTdHJva2VUaGlja25lc3M6CisgICAgICAgIHJldHVybiBjb3B5SW50bzxT
ZXRTdHJva2VUaGlja25lc3M+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBl
OjpTdHJva2VFbGxpcHNlOgorICAgICAgICByZXR1cm4gY29weUludG88U3Ryb2tlRWxsaXBzZT4o
KnRoaXMsIGl0ZW1PZmZzZXQpOwogI2lmIEVOQUJMRShJTkxJTkVfUEFUSF9EQVRBKQotICAgIGNh
c2UgSXRlbVR5cGU6OlN0cm9rZUlubGluZVBhdGg6IHsKLSAgICAgICAgbmV3IChpdGVtT2Zmc2V0
KSBTdHJva2VJbmxpbmVQYXRoKGdldDxTdHJva2VJbmxpbmVQYXRoPigpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBjYXNlIEl0ZW1UeXBlOjpTdHJva2VJbmxpbmVQYXRoOgorICAgICAg
ICByZXR1cm4gY29weUludG88U3Ryb2tlSW5saW5lUGF0aD4oKnRoaXMsIGl0ZW1PZmZzZXQpOwog
I2VuZGlmCi0gICAgY2FzZSBJdGVtVHlwZTo6U3Ryb2tlUmVjdDogewotICAgICAgICBuZXcgKGl0
ZW1PZmZzZXQpIFN0cm9rZVJlY3QoZ2V0PFN0cm9rZVJlY3Q+KCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZUxpbmU6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBTdHJva2VMaW5lKGdldDxTdHJva2VMaW5lPigpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6IHsKLSAgICAgICAgbmV3IChp
dGVtT2Zmc2V0KSBUcmFuc2xhdGUoZ2V0PFRyYW5zbGF0ZT4oKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgfQorICAgIGNhc2UgSXRlbVR5cGU6OlN0cm9rZVJlY3Q6CisgICAgICAgIHJl
dHVybiBjb3B5SW50bzxTdHJva2VSZWN0PigqdGhpcywgaXRlbU9mZnNldCk7CisgICAgY2FzZSBJ
dGVtVHlwZTo6U3Ryb2tlTGluZToKKyAgICAgICAgcmV0dXJuIGNvcHlJbnRvPFN0cm9rZUxpbmU+
KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICBjYXNlIEl0ZW1UeXBlOjpUcmFuc2xhdGU6CisgICAg
ICAgIHJldHVybiBjb3B5SW50bzxUcmFuc2xhdGU+KCp0aGlzLCBpdGVtT2Zmc2V0KTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBJdGVtQnVmZmVyOjpJdGVtQnVmZmVyKEl0ZW1CdWZm
ZXJIYW5kbGVzJiYgaGFuZGxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZm
ZXIuaAppbmRleCAwMjE3ZTQ5MzNhNTI1MDc5ZDFhYjRkODQ2OGJmYmQ4MmY3NWYyNTY3Li44OWY3
NGZmYjQwNmU3ZTg2YmFiYjk0Yjc0NTc3ZGM2YTgyMjEwMTU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5oCkBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBJdGVtSGFu
ZGxlIHsKICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFQqPigmZGF0YVtzaXplb2Yo
dWludDY0X3QpXSk7CiAgICAgfQogCi0gICAgdm9pZCBjb3B5VG8oSXRlbUhhbmRsZSBkZXN0aW5h
dGlvbikgY29uc3Q7CisgICAgYm9vbCBzYWZlQ29weShJdGVtSGFuZGxlIGRlc3RpbmF0aW9uKSBj
b25zdDsKIH07CiAKIGVudW0gY2xhc3MgRGlkQ2hhbmdlSXRlbUJ1ZmZlciA6IGJvb2wgeyBObywg
WWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCBjMjhkNjlmODY4ODRl
MzE2MzYwNzc4NmVmOWJiMjE5Y2JlY2RhY2U5Li4xZTAzZGU3NjQ5MzVlZTM1YTJkMGQwYzI5MmEy
MzQ0NzcyNDdmNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTc1Myw2
ICs3NTMsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IGltYWdlQnVmZmVySWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VCdWZmZXJJZGVu
dGlmaWVyOyB9CiAgICAgRmxvYXRSZWN0IGRlc3RpbmF0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb25SZWN0OyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
ISFtX2ltYWdlQnVmZmVySWRlbnRpZmllcjsgfQogCiAgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBXZWJDb3JlOjpJbWFnZUJ1ZmZlciYpIGNvbnN0OwogCkBAIC0xMDMzLDYgKzEwMzQs
OCBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Jj
UmVjdDsgfQogICAgIEZsb2F0UmVjdCBkZXN0aW5hdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2Rlc3RpbmF0aW9uUmVjdDsgfQogICAgIEltYWdlUGFpbnRpbmdPcHRpb25zIG9wdGlvbnMoKSBj
b25zdCB7IHJldHVybiBtX29wdGlvbnM7IH0KKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0
byB2YWxpZGF0ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKyAgICBib29sIGlzVmFsaWQoKSBjb25z
dCB7IHJldHVybiAhIW1faW1hZ2VCdWZmZXJJZGVudGlmaWVyOyB9CiAKICAgICB2b2lkIGFwcGx5
KEdyYXBoaWNzQ29udGV4dCYsIFdlYkNvcmU6OkltYWdlQnVmZmVyJikgY29uc3Q7CiAKQEAgLTEw
NjYsNiArMTA2OSw4IEBAIHB1YmxpYzoKICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
aW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUlkZW50aWZpZXI7IH0KICAg
ICBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3JjUmVjdDsgfQog
ICAgIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb25SZWN0KCkgY29uc3QgeyByZXR1cm4gbV9k
ZXN0aW5hdGlvblJlY3Q7IH0KKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0byB2YWxpZGF0
ZSBJbWFnZVBhaW50aW5nT3B0aW9ucy4KKyAgICBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVy
biAhIW1faW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0FTU0VSVCB2
b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OwogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UmKSBjb25zdDsKQEAgLTEwOTYsNiArMTEwMSw4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm07IH0KICAgICBGbG9hdFBvaW50IHBoYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9waGFzZTsgfQogICAgIEZsb2F0U2l6ZSBzcGFjaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zcGFjaW5nOyB9CisgICAgLy8gRklYTUU6IFdlIG1pZ2h0IHdhbnQgdG8gdmFs
aWRhdGUgSW1hZ2VQYWludGluZ09wdGlvbnMuCisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gISFtX2ltYWdlSWRlbnRpZmllcjsgfQogCiAgICAgTk9fUkVUVVJOX0RVRV9UT19BU1NF
UlQgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsKICAgICB2b2lkIGFwcGx5KEdy
YXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlJikgY29uc3Q7CkBAIC0xOTk5LDYgKzIwMDYsOCBA
QCBwdWJsaWM6CiAgICAgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fZGVzdGluYXRpb247IH0KICAgICBNZWRpYVBsYXllcklkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCisgICAgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KKwogICAgIE5PX1JFVFVSTl9EVUVfVE9f
QVNTRVJUIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CiAKICAgICBPcHRpb25h
bDxGbG9hdFJlY3Q+IGxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0IHsg
cmV0dXJuIFdURjo6bnVsbG9wdDsgfQpAQCAtMjIyMywxMiArMjIzMiwxMyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIEZsdXNoQ29udGV4
dChGbHVzaElkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBsaWNpdCBGbHVzaENvbnRleHQo
Rmx1c2hJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIEZsdXNoSWRlbnRpZmllciBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KIAogICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250
ZXh0JikgY29uc3Q7CiAKQEAgLTIyNDQsMTIgKzIyNTQsMTMgQEAgcHVibGljOgogICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBpc0lubGluZUl0ZW0gPSB0cnVlOwogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKLSAgICBNZXRhQ29tbWFuZENoYW5nZUl0
ZW1CdWZmZXIoSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBsaWNpdCBN
ZXRhQ29tbWFuZENoYW5nZUl0ZW1CdWZmZXIoSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCiAg
ICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQorICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuICEhbV9pZGVudGlm
aWVyOyB9CiAKIHByaXZhdGU6CiAgICAgSXRlbUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlmaWVy
OwpAQCAtMjI2MSwxMiArMjI3MiwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBi
b29sIGlzSW5saW5lSXRlbSA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJh
d2luZ0l0ZW0gPSBmYWxzZTsKIAotICAgIE1ldGFDb21tYW5kQ2hhbmdlRGVzdGluYXRpb25JbWFn
ZUJ1ZmZlcihSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBleHBs
aWNpdCBNZXRhQ29tbWFuZENoYW5nZURlc3RpbmF0aW9uSW1hZ2VCdWZmZXIoUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBp
ZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2lkZW50aWZpZXI7IH0KIAogcHJpdmF0ZToKICAgICBS
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>