<?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>120549</bug_id>
          
          <creation_ts>2013-08-30 14:34:03 -0700</creation_ts>
          <short_desc>Implement ES6 Set class</short_desc>
          <delta_ts>2013-08-30 15:54:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>923182</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 14:34:03 -0700</bug_when>
    <thetext>Implement ES6 Set class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923192</commentid>
    <comment_count>1</comment_count>
      <attachid>210163</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 14:46:26 -0700</bug_when>
    <thetext>Created attachment 210163
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923210</commentid>
    <comment_count>2</comment_count>
      <attachid>210163</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-08-30 15:19:48 -0700</bug_when>
    <thetext>Comment on attachment 210163
Patch

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

Looks good, just some specific questions due to my ignorance.

&gt; Source/JavaScriptCore/runtime/SetConstructor.cpp:55
&gt; +        return throwVMError(callFrame, createRangeError(callFrame, WTF::ASCIILiteral(&quot;Invalid comparator function&quot;)));

Would it make sense to also say &quot;Set constructor does not accept arguments&quot; here too to avoid confusion from anybody trying this feature out? Also, this is in the case where they say &quot;Set()&quot; rather than &quot;new Set()&quot;, correct? Does it make sense to call this a &quot;constructor&quot; at all in that case?

&gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:88
&gt; +    if (!data)
&gt; +        return JSValue::encode(jsUndefined());

Should we crash here? Not having a MapData seems like it should never happen, no?

&gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:120
&gt; +    JSValue thisValue = callFrame-&gt;argument(1);

What happens if they don&apos;t pass a second argument? Should thisValue be undefined or the global object or what?

&gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:137
&gt; +    return JSValue::encode(jsUndefined());

What happens if we get an exception? Should we return it like we did for the no-callback case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923212</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 15:24:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 210163 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=210163&amp;action=review
&gt; 
&gt; Looks good, just some specific questions due to my ignorance.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/SetConstructor.cpp:55
&gt; &gt; +        return throwVMError(callFrame, createRangeError(callFrame, WTF::ASCIILiteral(&quot;Invalid comparator function&quot;)));
Made better message

&gt; 
&gt; Would it make sense to also say &quot;Set constructor does not accept arguments&quot; here too to avoid confusion from anybody trying this feature out? Also, this is in the case where they say &quot;Set()&quot; rather than &quot;new Set()&quot;, correct? Does it make sense to call this a &quot;constructor&quot; at all in that case?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:88
&gt; &gt; +    if (!data)
&gt; &gt; +        return JSValue::encode(jsUndefined());
&gt; 
&gt; Should we crash here? Not having a MapData seems like it should never happen, no?

these are prototype functions, you can call them on anything you would like (e.g. someSet.map.call({}) )

&gt; &gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:120
&gt; &gt; +    JSValue thisValue = callFrame-&gt;argument(1);
&gt; 
&gt; What happens if they don&apos;t pass a second argument? Should thisValue be undefined or the global object or what?
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/SetPrototype.cpp:137
&gt; &gt; +    return JSValue::encode(jsUndefined());
&gt; 
&gt; What happens if we get an exception? Should we return it like we did for the no-callback case?

Nope, we just return exceptions/value to guard against other code failing to check for an exception before trying to use something as a value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923214</commentid>
    <comment_count>4</comment_count>
      <attachid>210163</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-30 15:26:40 -0700</bug_when>
    <thetext>Comment on attachment 210163
Patch

Please also add benchmarks to js/regress.  Make them run for about ~10-20 ms on a decent Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923223</commentid>
    <comment_count>5</comment_count>
      <attachid>210171</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 15:48:00 -0700</bug_when>
    <thetext>Created attachment 210171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923225</commentid>
    <comment_count>6</comment_count>
      <attachid>210171</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-08-30 15:52:45 -0700</bug_when>
    <thetext>Comment on attachment 210171
Patch

I like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>923226</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-08-30 15:54:25 -0700</bug_when>
    <thetext>Committed r154916: &lt;http://trac.webkit.org/changeset/154916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210163</attachid>
            <date>2013-08-30 14:46:26 -0700</date>
            <delta_ts>2013-08-30 15:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120549-20130830144954.patch</filename>
            <type>text/plain</type>
            <size>57307</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ODBlZmY1ZWYyYjJjNmMzODIyODFkMzNiMzdkZGU1NDRlMGI0OTRlLi40ZjA5ZTMzOGE5ZmM0MDY0
MjYxNTZlYjkyZmMxYjI2MTBkYjE5MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxMy0wOC0zMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgog
CisgICAgICAgIEltcGxlbWVudCBFUzYgU2V0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaW1wbHkgcmV1c2UgdGhlIE1hcERhdGEgdHlw
ZSBmcm9tIEpTTWFwIG1ha2luZyB0aGUKKyAgICAgICAgaXQgbXVjaCBzaW1wbGVyLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNTZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU1NldDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTU2V0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NldDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNTZXQ6Om1hcERhdGEpOgorICAgICAgICAoSlNDOjpKU1NldDo6
SlNTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Y2FsbFNldCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgIChKU0M6
OlNldENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U2V0Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlNldENvbnN0cnVjdG9yOjpTZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TZXRQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjpzZXRQ
cm90b0Z1bmNBZGQpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNDbGVhcik6CisgICAgICAg
IChKU0M6OnNldFByb3RvRnVuY0RlbGV0ZSk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0Zv
ckVhY2gpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpz
ZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
ZXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlw
ZTo6U2V0UHJvdG90eXBlKToKKworMjAxMy0wOC0zMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCiAgICAgICAgIE1ha2UgSlNWYWx1ZSBib29sIGNvbnZlcnNpb24gbGVzcyBkYW5n
ZXJvdXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MDUwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTE1NDFjMDE4Y2Nl
Mjg1YTU2ZTkzNjRmNDhlYzU0MTM0NjU5ZmI5Ny4uNzExYjhkZWRmOWQ5Yzc5ODA1ZDdmZTMwMWE0
NDJkZmEyYTZjYjY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzUw
LDYgKzM1MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU1By
b3h5LmNwcAogICAgIHJ1bnRpbWUvSlNTY29wZS5jcHAKICAgICBydW50aW1lL0pTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1NldC5jcHAKICAgICBydW50aW1lL0pT
U3RhdGljU2NvcGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1N0cmluZy5jcHAKICAgICBydW50
aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzkyLDYgKzM5Myw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAgICAgcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwCisgICAg
cnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1NldFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogICAgIHJ1bnRpbWUv
U21hbGxTdHJpbmdzLmNwcAogICAgIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjRjMTkwYzM0NzQx
NmZjZWNmMTgxY2U3NzAxYmEzMzRhNWFhMzcxYS4uMWNjNDgyNGIyNGJjY2M2Y2ZhMzQ1NjI4YWZj
ZDQyY2JhMjY5MzczMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTg5Nyw2ICs4OTcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIFwKQEAgLTEw
MDMsNiArMTAwNSwxMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdDb3VudGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuaFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaW1wbGVUeXBlZEFycmF5Q29u
dHJvbGxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDhhYzcwMWEy
NjM0MzllYjljYzg1MGM1OWFiMmJjMzQyMmM3OGUyYzkuLjU4OWYzMjgzMWQzMDgzMjdlYzRhMjc3
NWYzZmJkNjM2MTYyMWU4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agpAQCAtNDg1LDYgKzQ4NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJveHkuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNT
Y29wZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTU2V0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTU3RyaW5nLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
U3RyaW5nSm9pbmVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIiAvPg0KQEAgLTUyNSw2ICs1MjYsOCBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxSZWdFeHBPYmplY3QuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhwUHJvdG90eXBlLmNwcCIgLz4NCiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNhbXBsaW5nQ291bnRlci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTZXRDb25zdHJ1Y3Rvci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTZXRQcm90b3R5cGUuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2ltcGxlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U21hbGxTdHJpbmdzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwIiAvPg0KQEAgLTkxNSw2ICs5MTgsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5oIiAvPg0KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU3RyaW5nQnVpbGRlci5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdKb2luZXIuaCIgLz4NCkBAIC05NzMsNiArOTc3LDgg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhwUHJvdG90eXBlLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxSZWplY3QuaCIgLz4NCiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNhbXBsaW5nQ291bnRlci5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0Q29uc3RydWN0b3IuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldFByb3RvdHlwZS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNtYWxsU3Ry
aW5ncy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3BhcnNlQXJy
YXlWYWx1ZU1hcC5oIiAvPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4OTU0ZmQ4YzQyNjgwOWYxOGVjZmJmZjEyNzM1N2U0ZDNjMmQ0
MGFlLi4xM2Y5MzliYmFlMTJmZTVmMzAyYWVmNjczYjYwOTIwMzM1ZmZjNGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC01OTcsNiAr
NTk3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTY29wZS5jcHAi
Pg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmNwcCI+DQorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAiPg0KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkBAIC03MDgs
NiArNzExLDEyIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNtYWxsU3Ry
aW5ncy5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldFByb3RvdHlwZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldENvbnN0cnVjdG9yLmNwcCI+
DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAi
Pg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5NTFlYTFlNmJkODdhYWQ2YTRjM2ZiNTQ1
OTljNTY4MTVlOGUzZjEuLjE2NzNlYWZlMzFlMTE1OTdlOTBjY2ZiZjMwOWJkZmUwZmZhZTFmODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzcsNiArODM3LDEyIEBACiAJCUE3
MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjdGRjY2MERBMzA1
M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJQTcyODBB
MjgxMTU1N0UzMDAwRDU2OTU3IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5RURCMDgxMTUzMUNENjAwMTlFOTEy
IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjkwMDlCMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCAq
LzsgfTsKKwkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5RDlCMTdEMTI4MzcwMDVG
NUZGOSAvKiBKU1NldC5jcHAgKi87IH07CisJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBK
U1NldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
OTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggKi87IH07CisJCUE3Mjk5REExMTdEMTI4
NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEOUYxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3Rv
dHlwZS5jcHAgKi87IH07CisJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5
REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTcyOTlEQTUx
N0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5REEzMTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi87IH07
CiAJCUE3MkZGRDY0MTM5OTg1QTgwMEU1MzY1QSAvKiBLZXl3b3JkTG9va3VwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MyMjVDRDEzOTk4NDlDMDBG
RjE2NjIgLyogS2V5d29yZExvb2t1cC5oICovOyB9OwogCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oICovOyB9OwogCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCAqLzsgfTsKQEAgLTIwMjQsNiArMjAzMCwxMiBAQAogCQlBNzI3RkY2NTBEQTMwNTNCMDBF
NTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI5MDA5QjE3
OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUIxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTAxN0QxMjg0ODAwNUY1
RkY5IC8qIFNldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTMxN0Qx
Mjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzMwQjYxMTEy
NTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM3ODEwOTE3OTlFQTJFMDA4MTc1MzMgLyogREZHQW5h
bHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQW5hbHlzaXMuaDsg
cGF0aCA9IGRmZy9ERkdBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjQwMyw5ICsyNDE1LDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3Rz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzJGNUJF
MTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0
RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJOTMyRjVCRDkwODIyQTFDNzAw
NzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLQkJCQk5MzJGNUJFMTA4MjJB
MUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAog
CQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLApAQCAtMzE3Nyw2
ICszMTg5LDggQEAKIAkJCQkxNDg3NEFFMjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oICov
LAogCQkJCTBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmNwcCAqLywKIAkJCQkwRjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5oICovLAorCQkJCUE3Mjk5RDlCMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1Nl
dC5jcHAgKi8sCisJCQkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggKi8sCiAJ
CQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjky
QTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5
OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCkBAIC0zMjc3LDYgKzMyOTEsMTAg
QEAKIAkJCQkwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyogUmVqZWN0LmggKi8sCiAJCQkJMEY3
NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8sCiAJCQkJMEY3
NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovLAorCQkJCUE3Mjk5
REEzMTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcyOTlE
QTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcyOTlEOUYx
N0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcyOTlEQTAxN0Qx
Mjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIw
MEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2
RDcxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJ
CQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCkBAIC0z
MzY4LDEwICszMzg2LDYgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEYzOEIwMTMxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLywKLQkJCQkwRjM4QjAxNDE3
Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAqLywKLQkJCQkwRjM4QjAxNTE3
Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCAqLywKLQkJCQkwRjM4QjAx
NjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmggKi8sCiAJCQkJQTc3QTQy
MzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAgKi8sCiAJCQkJQTc3QTQy
MzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oICovLAogCQkJCUE3MDREOEZF
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggKi8sCkBAIC0zNDE5
LDYgKzM0MzMsMTAgQEAKIAkJCQkwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9u
LmggKi8sCiAJCQkJMEZFQTBBMkQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3Bw
ICovLAogCQkJCTBGRUEwQTJFMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmggKi8s
CisJCQkJMEYzOEIwMTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAq
LywKKwkJCQkwRjM4QjAxNDE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAq
LywKKwkJCQkwRjM4QjAxNTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNw
cCAqLywKKwkJCQkwRjM4QjAxNjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2Rl
LmggKi8sCiAJCQkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCAqLywKIAkJCQkwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuaCAqLywKIAkJCQkwRkJFMEY2QjE2QzFEQjAxMDA4MkM1RTggLyogREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgKi8sCkBAIC0zODc2LDYgKzM4OTQsOCBAQAogCQkJCTBG
MkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEEzMjE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYzOEIwMTgxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9u
S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM4QjAxQTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZH
Q29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCM0ExQjE1M0U2OEY0MDAz
RUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkUwRjczMTZDMURCMDUwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0Q4OUNGNjE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdl
QnJlYWtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTA4LDcgKzQxMjgsNiBAQAogCQkJ
CTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzOEIwMUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBp
bGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2
IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYw
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MTQ5LDYgKzQxNjgsNyBAQAogCQkJCTE0ODc0QUU2MTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MwQzRBQzE2ODEwMzAyMDAxNzAxMUQgLyogSlNTY3Jp
cHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcy
OTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdD
MUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICov
LApAQCAtNDI3OCw3ICs0Mjk4LDYgQEAKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyog
UHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBG
NUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4
QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjM4QjAxODE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjEwNThFMTY3NTQ4M0EwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRT
aXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJv
ZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQw
QzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MzExLDYgKzQzMzAsOCBAQAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2Ft
cGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDg4NjBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzI5OURBNjE3RDEyODU4
MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mjk5REEy
MTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RW
aXNpdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3NjcsNyArNDc4OCw2IEBACiAJCQkJQTc3RjE4
MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29k
ZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5
NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhG
OTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00
ODA4LDYgKzQ4MjgsOCBAQAogCQkJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlEMTZCNzJBMDgwMDVERjk1QiAv
KiBERkdDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMzExNzBENDBCRjAwQkI3
MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzOEIwMTcxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgyQzVF
OCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNDgxOCw3ICs0ODQwLDYgQEAKIAkJCQlDMkMwRjdDRDE3QkJGQzVC
MDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzI5ODFGRDgxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRX
ZWFrUmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBC
MTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI5ODFG
REMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0Rv
bWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTk1LDYgKzUwMTYsNyBAQAogCQkJCTE0
ODc0QUU1MTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3QzBDNEFEMTY4MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyog
SlNTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IEpTU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3QTQ4
IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MDBCNUE2MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwOTUsNiArNTEx
Nyw4IEBACiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxp
bmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcyOTlEQTUxN0QxMjg1
ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Mjk5
REExMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjY3MDQxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90
VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEg
LyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQppbmRleCBkMzBhNDc4YjA3ZmNmM2EyMWZmODEyMzJjNDM1ZTNhNTI0MjdmY2EyLi4yNzY0NWQw
MTY5ZThmYzBjNWNmOWJjYjI4MjJmNWJjOWM1ZGEzNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQpAQCAtMzM4LDYgKzMzOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIFwKICAgICBydW50aW1lL0pTUHJveHkuY3BwIFwKKyAgICBydW50aW1lL0pTU2V0
LmNwcCBcCiAgICAgcnVudGltZS9KU1Njb3BlLmNwcCBcCiAgICAgcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU1N0cmluZy5jcHAgXApAQCAtMzgx
LDYgKzM4Miw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBc
CiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL1NhbXBsaW5n
Q291bnRlci5jcHAgXAorICAgIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50
aW1lL1NldFByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuY3BwIFwKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogICAgIHJ1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggOTQ3ZjY4MjY0NzY5MmExNzZkODY5MzU0
MDQ3N2JiZGUyNDU2ZjQ2NC4uNjQ4MGYwZjdlMjg2OTAyZWEzYTI5OThjNjE0MTI0ZjI1Y2UzN2Rj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC0xNDEsNyArMTQxLDkgQEAKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oY2xlYXIpIFwKICAgICBtYWNybyhzaXplKSBcCi0gICAgbWFjcm8oTWFwKQorICAgIG1hY3Jv
KE1hcClcCisgICAgbWFjcm8oU2V0KVwKKyAgICBtYWNybyhhZGQpCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhudWxsKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggNWM2NTE3NGQwNjFlYzZhOGU2MWZmOWEyYmU2ODg3OTQyNzgyOGVmNC4uNWVkZjc3NTVk
ZWFlZmI1NTQ3OTQyZmEyNzNhMmM4Y2QzYmIzMDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2lu
Y2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlDb25z
dHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgiCiAjaW5jbHVk
ZSAiSlNUeXBlZEFycmF5cy5oIgpAQCAtOTMsNiArOTQsOCBAQAogI2luY2x1ZGUgIlJlZ0V4cE1h
dGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4
cFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU2V0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAt
MzI2LDYgKzMyOSw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90
eXBlKQogICAgIG1fbWFwUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5
cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX21hcFN0cnVj
dHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNYXA6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX21hcFByb3RvdHlwZS5nZXQoKSkpOwogCisgICAgbV9zZXRQcm90b3R5cGUu
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIFNldFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIFNl
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOworICAgIG1fc2V0U3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlz
LCBKU1NldDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fc2V0UHJvdG90eXBl
LmdldCgpKSk7CisKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAogICAgIEpTQ2VsbCogb2JqZWN0Q29u
c3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKQEAgLTM0MSw2ICszNDcs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBK
U0NlbGwqIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yID0gSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpOwogI2VuZGlmIC8vIEVOQUJM
RShQUk9NSVNFUykKICAgICBKU0NlbGwqIG1hcENvbnN0cnVjdG9yID0gTWFwQ29uc3RydWN0b3I6
OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
PnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX21hcFByb3RvdHlwZS5n
ZXQoKSk7CisgICAgSlNDZWxsKiBzZXRDb25zdHJ1Y3RvciA9IFNldENvbnN0cnVjdG9yOjpjcmVh
dGUoZXhlYywgdGhpcywgU2V0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zZXRQcm90b3R5cGUuZ2V0KCkp
OwogCiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+dm0oKSwgdGhpcywgUmVnRXhw
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogCkBAIC0zNjksNiArMzc2LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2
ZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKICNlbmRpZgogICAgIG1fbWFwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9zZXRQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3Rvciwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5PYmplY3QsIG9i
amVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLkZ1bmN0aW9uLCBmdW5jdGlvbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zOTAsNiArMzk4LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlByb21pc2VSZXNvbHZlciwg
cHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICNlbmRpZgogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5N
YXAsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlNldCwgc2V0Q29uc3RydWN0
b3IsIERvbnRFbnVtKTsKIAogICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT52bSgpLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1
bmN0aW9uLmdldCgpLCBEb250RW51bSk7CkBAIC02NTMsNiArNjYyLDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zZXRQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3NldFN0cnVjdHVyZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9hcnJheUJ1ZmZlclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTI5YjdiMmY0YzIyMDE0YjgwNWYzNTdi
MzQ1ZDM4NzA4YjBlMTFhMS4uYWU4ZWMwNjMyMjM2ZTYxODQ5ZTQ4MDcwMmMxYmU5NjQwYmZhMTMz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90
eXBlOworY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIHN0cnVjdCBBY3Rp
dmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKQEAgLTE1Miw2ICsxNTMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNl
UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4g
bV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPE1hcFByb3RvdHlw
ZT4gbV9tYXBQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPFNldFByb3RvdHlwZT4gbV9zZXRQ
cm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlOwpAQCAtMTk1LDYgKzE5Nyw3IEBAIHByb3RlY3RlZDoKIAogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fbWFwRGF0YVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21hcFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Nl
dFN0cnVjdHVyZTsKICAgICAKICAgICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZlclByb3RvdHlw
ZT4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2FycmF5QnVmZmVyU3RydWN0dXJlOwpAQCAtMzkwLDYgKzM5Myw3IEBAIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcERhdGFTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4NmFiNDkzZGVjYTg0ZmFkMjY3ZGMzODI3MWRjNDdl
Njg5YWZhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2V0LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU2V0Lmgi
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIK
KyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1NldDo6c19pbmZvID0geyAiU2V0IiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NldCkgfTsKKwordm9pZCBKU1NldDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgSlNTZXQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNTZXQqPihjZWxsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBE
YXRhKTsKK30KKwordm9pZCBKU1NldDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBtX21hcERhdGEuc2V0KHZtLCB0aGlzLCBNYXBEYXRhOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZDA5YmVjNmVkODRkMzc3NjMxODRmZDJjZWIzYmFmZDFiY2NlYmIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaApAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBKU1NldF9oCisjZGVmaW5lIEpTU2V0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBEYXRhOworCitjbGFzcyBKU1NldCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU1NldCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1NldCogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldD4odm0uaGVhcCkpIEpTU2V0KHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAg
c3RhdGljIEpTU2V0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsK
KyAgICB9CisKKyAgICBNYXBEYXRhKiBtYXBEYXRhKCkgeyByZXR1cm4gbV9tYXBEYXRhLmdldCgp
OyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAg
ICBKU1NldChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CisgICAgCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxNYXBEYXRhPiBt
X21hcERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU1NldF9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2OWMwYmZlMWFhNGQzZmFiNTkyMDkxMWEwYWQ1YjJkZDQ1ZWQ0ZmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXRDb25zdHJ1Y3Rvci5oIgor
CisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgorI2luY2x1ZGUgIlNldFByb3Rv
dHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNldENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoU2V0Q29uc3RydWN0b3IpIH07CisKK3ZvaWQgU2V0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU2V0UHJvdG90eXBlKiBzZXRQcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgc2V0UHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzZXRQcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIC8vIFVudGlsIHdlIGhhdmUgaXRlcmF0b3JzIHdlIHRocm93IGlmIHdlJ3ZlIGJl
ZW4gZ2l2ZW4KKyAgICAvLyBhbnkgYXJndW1lbnRzIHRoYXQgY291bGQgcmVxdWlyZSB1cyB0byB0
aHJvdy4KKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiU2V0IGNvbnN0cnVjdG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVu
dHMiKSkpOworICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGNhbGxGcmFtZSwgY3JlYXRlUmFuZ2VFcnJvcihj
YWxsRnJhbWUsIFdURjo6QVNDSUlMaXRlcmFsKCJJbnZhbGlkIGNvbXBhcmF0b3IgZnVuY3Rpb24i
KSkpOworCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGFzSW50ZXJuYWxGdW5j
dGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgU3RydWN0dXJl
KiBzZXRTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnNldFN0cnVjdHVyZSgpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNTZXQ6OmNyZWF0ZShjYWxsRnJhbWUsIHNldFN0cnVjdHVyZSkp
OworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RTZXQo
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGFzSW50ZXJuYWxGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0
KCk7CisgICAgU3RydWN0dXJlKiBzZXRTdHJ1Y3R1cmUgPSBnbG9iYWxPYmplY3QtPnNldFN0cnVj
dHVyZSgpOworICAgIEpTU2V0KiBzZXQgPSBKU1NldDo6Y3JlYXRlKGNhbGxGcmFtZSwgc2V0U3Ry
dWN0dXJlKTsKKyAgICBNYXBEYXRhKiBtYXBEYXRhID0gc2V0LT5tYXBEYXRhKCk7CisgICAgc2l6
ZV90IGNvdW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIEpTVmFsdWUgaXRlbSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoaSk7CisgICAgICAgIG1hcERhdGEtPnNldChjYWxsRnJhbWUsIGl0ZW0sIGl0
ZW0pOworICAgIH0KKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNldCk7Cit9CisKK0NvbnN0
cnVjdFR5cGUgU2V0Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3Ry
dWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3sKKyAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5j
dGlvbiA9IGNvbnN0cnVjdFNldDsKKyAgICByZXR1cm4gQ29uc3RydWN0VHlwZUhvc3Q7Cit9CisK
K0NhbGxUeXBlIFNldENvbnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYg
Y2FsbERhdGEpCit7CisgICAgY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY2FsbFNldDsKKyAg
ICByZXR1cm4gQ2FsbFR5cGVIb3N0OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NDBjZjg5NmU1ZDk0MDZkZTg5
NGUwNmU0YWRmNTU1ODUwMWJkNzU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZXRDb25zdHJ1
Y3Rvcl9oCisjZGVmaW5lIFNldENvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNldFByb3RvdHlwZTsKKworY2xh
c3MgU2V0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKKyAgICBzdGF0aWMgU2V0Q29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTZXRQcm90b3R5cGUqIHNldFByb3RvdHlwZSkKKyAg
ICB7CisgICAgICAgIFNldENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNldENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgU2V0Q29uc3RydWN0
b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNo
Q3JlYXRpb24oZXhlYywgc2V0UHJvdG90eXBlKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9y
OworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTZXRDb25zdHJ1Y3RvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAg
ICAgOiBCYXNlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBTZXRQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMg
Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmKTsK
KyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKK307
CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKE1hcENvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTA1
NzRkNDk0ZDA2NWVhNGU4MDE0NTVkNGQwYjM3NzAwNmM5ZDAzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtMCwwICsx
LDE1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKKworI2luY2x1ZGUg
IkNhY2hlZENhbGwuaCIKKyNpbmNsdWRlICJFcnJvci5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVl
SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb25JbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNT
ZXQuaCIKKyNpbmNsdWRlICJNYXBEYXRhLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBD
bGFzc0luZm8gU2V0UHJvdG90eXBlOjpzX2luZm8gPSB7ICJTZXQiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFNldFByb3RvdHlwZSkgfTsKKworc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKEV4ZWNTdGF0ZSopOworc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNE
ZWxldGUoRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
ZXRQcm90b0Z1bmNGb3JFYWNoKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKEV4ZWNTdGF0ZSopOworCitzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKEV4ZWNTdGF0ZSopOworCit2
b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CisKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmFkZCwgc2V0UHJvdG9GdW5jQWRkLCBEb250
RW51bSwgMCk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jbGVh
ciwgc2V0UHJvdG9GdW5jQ2xlYXIsIERvbnRFbnVtLCAxKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmRlbGV0ZUtleXdvcmQsIHNldFByb3RvRnVuY0RlbGV0ZSwg
RG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+
Zm9yRWFjaCwgc2V0UHJvdG9GdW5jRm9yRWFjaCwgRG9udEVudW0sIDEpOworICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aGFzLCBzZXRQcm90b0Z1bmNIYXMsIERvbnRF
bnVtLCAxKTsKKworICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZShleGVjKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0
ZShleGVjLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCks
IHNldFByb3RvRnVuY1NpemUpOworICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+dm0oKSwg
ZnVuY3Rpb24pOworICAgIHB1dERpcmVjdEFjY2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMt
PnNpemUsIGFjY2Vzc29yLCBEb250RW51bSB8IEFjY2Vzc29yKTsKK30KKworQUxXQVlTX0lOTElO
RSBzdGF0aWMgTWFwRGF0YSogZ2V0TWFwRGF0YShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSB0aGlzVmFsdWUpCit7CisgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBjcmVhdGVOb3RBbk9iamVjdEVycm9yKGNhbGxGcmFt
ZSwgdGhpc1ZhbHVlKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBKU1NldCogc2V0
ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHRoaXNWYWx1ZSk7CisgICAgaWYgKCFzZXQpIHsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBBU0NJSUxpdGVyYWwoIlNldCBvcGVyYXRp
b24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0IikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
CisgICAgcmV0dXJuIHNldC0+bWFwRGF0YSgpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY0FkZChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBE
YXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBkYXRhLT5zZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByb3RvRnVuY0NsZWFyKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEq
IGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworICAgIGRhdGEtPmNsZWFyKCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1
bmNEZWxldGUoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdl
dE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRh
dGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGF0YS0+cmVtb3ZlKGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzZXRQcm90b0Z1bmNGb3JFYWNoKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIE1h
cERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOworICAgIEpTVmFsdWUgY2FsbEJhY2sgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoY2FsbEJhY2ssIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGNhbGxG
cmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIlNldC5wcm90b3R5cGUuZm9yRWFjaCBjYWxsZWQgd2l0
aG91dCBjYWxsYmFjayIpKSk7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpOworICAgIFZNKiB2bSA9ICZjYWxsRnJhbWUtPnZtKCk7CisgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlSlMpIHsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nh
c3Q8SlNGdW5jdGlvbio+KGNhbGxCYWNrKTsKKyAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxs
KGNhbGxGcmFtZSwgZnVuY3Rpb24sIDEpOworICAgICAgICBmb3IgKGF1dG8gcHRyID0gZGF0YS0+
YmVnaW4oKSwgZW5kID0gZGF0YS0+ZW5kKCk7IHB0ciAhPSBlbmQgJiYgIXZtLT5leGNlcHRpb24o
KTsgKytwdHIpIHsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0VGhpcyh0aGlzVmFsdWUpOwor
ICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgwLCBwdHIua2V5KCkpOworICAgICAg
ICAgICAgY2FjaGVkQ2FsbC5jYWxsKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBmb3IgKGF1dG8gcHRyID0gZGF0YS0+YmVnaW4oKSwgZW5kID0gZGF0YS0+ZW5kKCk7IHB0ciAh
PSBlbmQgJiYgIXZtLT5leGNlcHRpb24oKTsgKytwdHIpIHsKKyAgICAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgICAgICBhcmdzLmFwcGVuZChwdHIua2V5KCkpOwor
ICAgICAgICAgICAgSlNDOjpjYWxsKGNhbGxGcmFtZSwgY2FsbEJhY2ssIGNhbGxUeXBlLCBjYWxs
RGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHNldFByb3RvRnVuY0hhcyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBE
YXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5jb250
YWlucyhjYWxsRnJhbWUsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jU2l6ZShDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKK3sKKyAgICBNYXBEYXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKGRhdGEtPnNpemUoY2FsbEZyYW1lKSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhMDViOTQwZTFlNWIwOGI1
YTI4MGYwMWE5Mzc3OGYyZmZkYzExMTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTZXRQcm90b3R5
cGVfaAorI2RlZmluZSBTZXRQcm90b3R5cGVfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFNldFByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwor
ICAgIHN0YXRpYyBTZXRQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAg
ICAgU2V0UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxT
ZXRQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBTZXRQcm90b3R5cGUoZXhlYywgc3RydWN0dXJl
KTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3Qp
OworICAgICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBTZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgOiBCYXNlKGV4ZWMtPnZtKCksIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
fQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqKTsK
K307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKFNldFByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDgx
OWZjZGVlM2Y2YzJlNWJjOWU2ZGM4NGYyNWI5NWJmMGM1M2MyNzIuLjNmOGVjZDljMjU3YWE3ZTgy
ZDRkNGM1MjMzZWJkZTFkZGYwYjJhZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMy0wOC0z
MCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBF
UzYgU2V0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjA1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdHMKKworICAgICAgICAqIGZhc3QvanMvYmFzaWMtc2V0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9iYXNpYy1zZXQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzOiBBZGRlZC4KKyAgICAgICAg
KHNldCBuZXcpOgorICAgICAgICAob3RoZXJTdHJpbmcuc3RyaW5nX2FwcGVhcmVkX2hlcmUuc2V0
IGFkZCk6CisgICAgICAgICh0cnkuc2V0IGZvckVhY2gpOgorICAgICAgICAoc2V0IGZvckVhY2gp
OgorICAgICAgICAoc2V0IGdjKToKKwogMjAxMy0wOC0zMCAgUm9iIEJ1aXMgIDxyd2xidWlzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgU1ZHIGVycm9yIHBhcnNpbmcgZW1wdHkgcGF0aApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9iYXNpYy1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9qcy9iYXNpYy1zZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NGYxN2Vh
MjM3ZmY2YzgxZjE4NWI0ZTI5ODYyNTQ3MDMxMjQxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMjcgQEAK
K1Rlc3RzIGJhc2ljIGNvcnJlY3RuZXNzIG9mIEVTIFNldCBvYmplY3QKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgU2V0IGluc3RhbmNlb2YgU2V0IGlzIGZhbHNlCitQQVNT
IFNldC5wcm90b3R5cGUgaW5zdGFuY2VvZiBTZXQgaXMgZmFsc2UKK1BBU1MgU2V0KCkgaW5zdGFu
Y2VvZiBTZXQgaXMgdHJ1ZQorUEFTUyBuZXcgU2V0KCkgaW5zdGFuY2VvZiBTZXQgaXMgdHJ1ZQor
UEFTUyBTZXQobnVsbCkgaW5zdGFuY2VvZiBTZXQgaXMgdHJ1ZQorUEFTUyBTZXQodW5kZWZpbmVk
KSBpbnN0YW5jZW9mIFNldCBpcyB0cnVlCitQQVNTIFNldCh1bmRlZmluZWQsIHVuZGVmaW5lZCkg
aW5zdGFuY2VvZiBTZXQgaXMgdHJ1ZQorUEFTUyBTZXQobnVsbCwgdW5kZWZpbmVkKSBpbnN0YW5j
ZW9mIFNldCBpcyB0cnVlCitQQVNTIFNldCgxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBT
ZXQgY29uc3RydWN0b3IgZG9lcyBub3QgYWNjZXB0IGFyZ3VtZW50cy4KK1BBU1MgU2V0KHRydWUp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFNldCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2Nl
cHQgYXJndW1lbnRzLgorUEFTUyBTZXQoW10pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFNl
dCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzLgorUEFTUyBTZXQoe30pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFNldCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQg
YXJndW1lbnRzLgorUEFTUyBTZXQodW5kZWZpbmVkLCBudWxsKSB0aHJldyBleGNlcHRpb24gUmFu
Z2VFcnJvcjogSW52YWxpZCBjb21wYXJhdG9yIGZ1bmN0aW9uLgorUEFTUyBTZXQodW5kZWZpbmVk
LCB7fSkgdGhyZXcgZXhjZXB0aW9uIFJhbmdlRXJyb3I6IEludmFsaWQgY29tcGFyYXRvciBmdW5j
dGlvbi4KKzEKK3VuZGVmaW5lZAordHJ1ZQorNgorMQorMAorW29iamVjdCBPYmplY3RdCitQQVNT
IE9iamVjdC5oYXNPd25Qcm9wZXJ0eShzZXQsICdzaXplJykgaXMgZmFsc2UKK1BBU1MgU2V0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnc2l6ZScpIGlzIHRydWUKK1BBU1MgTWFwLnByb3RvdHlw
ZS5zaXplIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE1hcCBvcGVyYXRpb24gY2FsbGVkIG9u
IG5vbi1NYXAgb2JqZWN0LgorUEFTUyBzZXQuc2l6ZSBpcyAwCitQQVNTIHNldC5hZGQoLTApIGlz
IHNldAorUEFTUyBzZXQuYWRkKDApIGlzIHNldAorUEFTUyBzZXQuYWRkKEluZmluaXR5KSBpcyBz
ZXQKK1BBU1Mgc2V0LmFkZCgtSW5maW5pdHkpIGlzIHNldAorUEFTUyBzZXQuYWRkKE5hTikgaXMg
c2V0CitQQVNTIHNldC5hZGQoJzAnKSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCgwLjEpIGlzIHNldAor
UEFTUyBzZXQuc2l6ZSBpcyA3CitQQVNTIHNldC5oYXMoLTApIGlzIHRydWUKK1BBU1Mgc2V0Lmhh
cygwKSBpcyB0cnVlCitQQVNTIHNldC5oYXMoSW5maW5pdHkpIGlzIHRydWUKK1BBU1Mgc2V0Lmhh
cygtSW5maW5pdHkpIGlzIHRydWUKK1BBU1Mgc2V0LmhhcyhOYU4pIGlzIHRydWUKK1BBU1Mgc2V0
LmhhcygnMCcpIGlzIHRydWUKK1BBU1Mgc2V0LmhhcygwLjEpIGlzIHRydWUKK1BBU1Mgc2V0LmRl
bGV0ZSgtMCkgaXMgdHJ1ZQorUEFTUyBzZXQuZGVsZXRlKDApIGlzIHRydWUKK1BBU1Mgc2V0LmRl
bGV0ZShJbmZpbml0eSkgaXMgdHJ1ZQorUEFTUyBzZXQuZGVsZXRlKC1JbmZpbml0eSkgaXMgdHJ1
ZQorUEFTUyBzZXQuZGVsZXRlKE5hTikgaXMgdHJ1ZQorUEFTUyBzZXQuZGVsZXRlKCcwJykgaXMg
dHJ1ZQorUEFTUyBzZXQuZGVsZXRlKDAuMSkgaXMgdHJ1ZQorUEFTUyBzZXQuZGVsZXRlKC0wKSBp
cyBmYWxzZQorUEFTUyBzZXQuZGVsZXRlKDApIGlzIGZhbHNlCitQQVNTIHNldC5kZWxldGUoSW5m
aW5pdHkpIGlzIGZhbHNlCitQQVNTIHNldC5kZWxldGUoLUluZmluaXR5KSBpcyBmYWxzZQorUEFT
UyBzZXQuZGVsZXRlKE5hTikgaXMgZmFsc2UKK1BBU1Mgc2V0LmRlbGV0ZSgnMCcpIGlzIGZhbHNl
CitQQVNTIHNldC5kZWxldGUoMC4xKSBpcyBmYWxzZQorUEFTUyBzZXQuaGFzKHNpbXBsZVN0cmlu
ZykgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKG90aGVyU3RyaW5nKSBpcyB0cnVlCitQQVNTIHNldC5j
bGVhcigpIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc2V0LnNpemUgaXMgMAorUEFTUyBzZXQuYWRkKDAp
IGlzIHNldAorUEFTUyBzZXQuYWRkKCcwJykgaXMgc2V0CitQQVNTIHNldC5hZGQoMSkgaXMgc2V0
CitQQVNTIHNldC5hZGQoJzEnKSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCgyKSBpcyBzZXQKK1BBU1Mg
c2V0LmFkZCgnMicpIGlzIHNldAorUEFTUyBzZXQuYWRkKDMpIGlzIHNldAorUEFTUyBzZXQuYWRk
KCczJykgaXMgc2V0CitQQVNTIHNldC5hZGQoNCkgaXMgc2V0CitQQVNTIHNldC5hZGQoJzQnKSBp
cyBzZXQKK1BBU1Mgc2V0LmFkZCg1KSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCgnNScpIGlzIHNldAor
UEFTUyBzZXQuYWRkKDYpIGlzIHNldAorUEFTUyBzZXQuYWRkKCc2JykgaXMgc2V0CitQQVNTIHNl
dC5zaXplIGlzIDE0Citmb3JFYWNoICMwCitQQVNTIHRlc3RUaGlzIGlzIHVuZGVmaW5lZC4KKzAK
K2ZvckVhY2ggIzEKK1BBU1MgdGVzdFRoaXMgaXMgdGhpc1ZhbHVlCisxCiswCiswCisxCisxCisy
CisyCiszCiszCis0Cis0Cis1Cis1Cis2Cis2CitQQVNTIHNldC5mb3JFYWNoKGRlYnVnKSBpcyB1
bmRlZmluZWQuCiswIDogbnVtYmVyCiswIDogc3RyaW5nCisxIDogbnVtYmVyCisxIDogc3RyaW5n
CisyIDogbnVtYmVyCisyIDogc3RyaW5nCiszIDogc3RyaW5nCis0IDogc3RyaW5nCis1IDogbnVt
YmVyCis1IDogc3RyaW5nCis2IDogbnVtYmVyCis2IDogc3RyaW5nCis0IDogbnVtYmVyCitQQVNT
IHNldC5oYXMoMCkgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKCIwIikgaXMgdHJ1ZQorUEFTUyBzZXQu
aGFzKDEpIGlzIHRydWUKK1BBU1Mgc2V0LmhhcygiMSIpIGlzIHRydWUKK1BBU1Mgc2V0Lmhhcygi
MyIpIGlzIHRydWUKK1BBU1Mgc2V0LmhhcygiNCIpIGlzIHRydWUKK1BBU1Mgc2V0Lmhhcyg1KSBp
cyB0cnVlCitQQVNTIHNldC5oYXMoIjUiKSBpcyB0cnVlCitQQVNTIHNldC5oYXMoNikgaXMgdHJ1
ZQorUEFTUyBzZXQuaGFzKCI2IikgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKDQpIGlzIHRydWUKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9iYXNpYy1zZXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjAxYmQzZWRmZmI0MTZlZGQzNGIyOTY1
ZmQxNmNiZWY4ZTlkY2JhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9i
YXNpYy1zZXQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQg
c3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXNldC5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2Jhc2ljLXNldC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZGQxYzQ3ZjQ0ZjA0NzBhNTY3NDc5ZjNiOGNlOGM1MzE3OGY3ZmM3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzCkBAIC0w
LDAgKzEsMTIxIEBACitkZXNjcmlwdGlvbigiVGVzdHMgYmFzaWMgY29ycmVjdG5lc3Mgb2YgRVMg
U2V0IG9iamVjdCIpOworCisvLyBDdXJyZW50bHkgd2UgZG9uJ3Qgc3VwcG9ydCBpdGVyYXRvcnMs
IHNvIHdlIHRocm93CisvLyBvbiBhbnkgbm9uLXRocm93aW5nIHBhcmFtZXRlcnMKK3Nob3VsZEJl
RmFsc2UoIlNldCBpbnN0YW5jZW9mIFNldCIpOworc2hvdWxkQmVGYWxzZSgiU2V0LnByb3RvdHlw
ZSBpbnN0YW5jZW9mIFNldCIpOworc2hvdWxkQmVUcnVlKCJTZXQoKSBpbnN0YW5jZW9mIFNldCIp
Oworc2hvdWxkQmVUcnVlKCJuZXcgU2V0KCkgaW5zdGFuY2VvZiBTZXQiKTsKK3Nob3VsZEJlVHJ1
ZSgiU2V0KG51bGwpIGluc3RhbmNlb2YgU2V0Iik7CitzaG91bGRCZVRydWUoIlNldCh1bmRlZmlu
ZWQpIGluc3RhbmNlb2YgU2V0Iik7CitzaG91bGRCZVRydWUoIlNldCh1bmRlZmluZWQsIHVuZGVm
aW5lZCkgaW5zdGFuY2VvZiBTZXQiKTsKK3Nob3VsZEJlVHJ1ZSgiU2V0KG51bGwsIHVuZGVmaW5l
ZCkgaW5zdGFuY2VvZiBTZXQiKTsKKworc2hvdWxkVGhyb3coIlNldCgxKSIpOworc2hvdWxkVGhy
b3coIlNldCh0cnVlKSIpOworc2hvdWxkVGhyb3coIlNldChbXSkiKTsKK3Nob3VsZFRocm93KCJT
ZXQoe30pIik7CitzaG91bGRUaHJvdygiU2V0KHVuZGVmaW5lZCwgbnVsbCkiKTsKK3Nob3VsZFRo
cm93KCJTZXQodW5kZWZpbmVkLCB7fSkiKTsKKworLy8gQmFzaWMgdGVzdCBmb3IgY29uc3RydWN0
b3IKK3ZhciBzZXQgPSBuZXcgU2V0KDEsIHVuZGVmaW5lZCwgdHJ1ZSwgNiwgdHJ1ZSwgIjEiLCAw
LCB7fSkKK3NldC5mb3JFYWNoKGRlYnVnKTsKKwordmFyIHNldCA9IG5ldyBTZXQ7CitzaG91bGRC
ZUZhbHNlKCJPYmplY3QuaGFzT3duUHJvcGVydHkoc2V0LCAnc2l6ZScpIikKK3Nob3VsZEJlVHJ1
ZSgiU2V0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnc2l6ZScpIikKK3Nob3VsZFRocm93KCJN
YXAucHJvdG90eXBlLnNpemUiKQorc2hvdWxkQmUoInNldC5zaXplIiwgIjAiKQorc2hvdWxkQmUo
InNldC5hZGQoLTApIiwgInNldCIpCitzaG91bGRCZSgic2V0LmFkZCgwKSIsICJzZXQiKQorc2hv
dWxkQmUoInNldC5hZGQoSW5maW5pdHkpIiwgInNldCIpCitzaG91bGRCZSgic2V0LmFkZCgtSW5m
aW5pdHkpIiwgInNldCIpCitzaG91bGRCZSgic2V0LmFkZChOYU4pIiwgInNldCIpCitzaG91bGRC
ZSgic2V0LmFkZCgnMCcpIiwgInNldCIpCitzaG91bGRCZSgic2V0LmFkZCgwLjEpIiwgInNldCIp
CitzaG91bGRCZSgic2V0LnNpemUiLCAiNyIpCisKK3Nob3VsZEJlVHJ1ZSgic2V0LmhhcygtMCki
KQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKDApIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmhhcyhJbmZp
bml0eSkiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKC1JbmZpbml0eSkiKQorc2hvdWxkQmVUcnVl
KCJzZXQuaGFzKE5hTikiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKCcwJykiKQorc2hvdWxkQmVU
cnVlKCJzZXQuaGFzKDAuMSkiKQorCitzaG91bGRCZVRydWUoInNldC5kZWxldGUoLTApIikKK3No
b3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgwKSIpCitzaG91bGRCZVRydWUoInNldC5kZWxldGUoSW5m
aW5pdHkpIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgtSW5maW5pdHkpIikKK3Nob3VsZEJl
VHJ1ZSgic2V0LmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgnMCcpIikK
K3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgwLjEpIikKKworc2hvdWxkQmVGYWxzZSgic2V0LmRl
bGV0ZSgtMCkiKQorc2hvdWxkQmVGYWxzZSgic2V0LmRlbGV0ZSgwKSIpCitzaG91bGRCZUZhbHNl
KCJzZXQuZGVsZXRlKEluZmluaXR5KSIpCitzaG91bGRCZUZhbHNlKCJzZXQuZGVsZXRlKC1JbmZp
bml0eSkiKQorc2hvdWxkQmVGYWxzZSgic2V0LmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlRmFsc2Uo
InNldC5kZWxldGUoJzAnKSIpCitzaG91bGRCZUZhbHNlKCJzZXQuZGVsZXRlKDAuMSkiKQorCit2
YXIgc2ltcGxlU3RyaW5nID0gImFhYWFhIjsKK3ZhciBvdGhlclN0cmluZyA9ICIiOworZm9yICh2
YXIgaSA9IDA7IGkgPCA1OyBpKyspCisJb3RoZXJTdHJpbmcgKz0gImEiCitzZXQuYWRkKHNpbXBs
ZVN0cmluZywge30pOworc2hvdWxkQmVUcnVlKCJzZXQuaGFzKHNpbXBsZVN0cmluZykiKQorc2hv
dWxkQmVUcnVlKCJzZXQuaGFzKG90aGVyU3RyaW5nKSIpOworCisKKworc2hvdWxkQmVVbmRlZmlu
ZWQoInNldC5jbGVhcigpIik7CitzaG91bGRCZSgic2V0LnNpemUiLCAiMCIpCit2YXIgY291bnQg
PSA3OworZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgc2hvdWxkQmUoInNl
dC5hZGQoIiArIGkgKyAiKSIsICJzZXQiKQorICAgIHNob3VsZEJlKCJzZXQuYWRkKCciICsgaSAr
ICInKSIsICJzZXQiKQorfQorCitzaG91bGRCZSgic2V0LnNpemUiLCAiMTQiKQorCit2YXIgdGhp
c1ZhbHVlID0gMHhmMDAKK3ZhciB0ZXN0VGhpczsKK3ZhciBjb3VudCA9IDA7CisKK3RyeSB7CisJ
c2V0LmZvckVhY2goZnVuY3Rpb24oKSB7ICJ1c2Ugc3RyaWN0IjsgZGVidWcoImZvckVhY2ggIzAi
KTsgdGVzdFRoaXMgPSB0aGlzOyBzaG91bGRCZVVuZGVmaW5lZCgidGVzdFRoaXMiKTsgdGhyb3cg
Y291bnQrKzsgIH0pCit9IGNhdGNoKGUpIHsKKyAgICBkZWJ1ZyhlKQorfQordHJ5IHsKKyAgICBz
ZXQuZm9yRWFjaChmdW5jdGlvbigpIHsgInVzZSBzdHJpY3QiOyBkZWJ1ZygiZm9yRWFjaCAjMSIp
OyB0ZXN0VGhpcyA9IHRoaXM7IHNob3VsZEJlKCJ0ZXN0VGhpcyIsICJ0aGlzVmFsdWUiKTsgdGhy
b3cgY291bnQrKzsgIH0sIHRoaXNWYWx1ZSkKK30gY2F0Y2goZSkgeworICAgIGRlYnVnKGUpCit9
CisKK3Nob3VsZEJlVW5kZWZpbmVkKCdzZXQuZm9yRWFjaChkZWJ1ZyknKQorCit2YXIga2V5cyA9
IFtdOworc2V0LmZvckVhY2goZnVuY3Rpb24gKGspIHsKKwlkZWJ1ZyhrICsgIiA6ICIgKyB0eXBl
b2YgKGspKQorCisJaWYgKGsgPT0gMikgeworCQlzZXQuZGVsZXRlKDMpCisJCXNldC5kZWxldGUo
MikKKwl9IGVsc2UKKwlrZXlzLnB1c2goayk7CisJaWYgKGsgPT0gIjMiKSB7CisJCXNldC5hZGQo
IjMiKTsKKwkJc2V0LmRlbGV0ZSg0KQorCQlzZXQuYWRkKDQpCisJfQorCWdjKCkKK30pCisKK2dj
KCk7Citmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKKwl2YXIgZXhwZWN0
ZWRLZXkgPSBrZXlzW2ldCisJc2hvdWxkQmVUcnVlKCJzZXQuaGFzKCIrSlNPTi5zdHJpbmdpZnko
ZXhwZWN0ZWRLZXkpKyIpIik7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210171</attachid>
            <date>2013-08-30 15:48:00 -0700</date>
            <delta_ts>2013-08-30 15:52:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120549-20130830155128.patch</filename>
            <type>text/plain</type>
            <size>59218</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0OTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ODBlZmY1ZWYyYjJjNmMzODIyODFkMzNiMzdkZGU1NDRlMGI0OTRlLi40ZjA5ZTMzOGE5ZmM0MDY0
MjYxNTZlYjkyZmMxYjI2MTBkYjE5MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxMy0wOC0zMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgog
CisgICAgICAgIEltcGxlbWVudCBFUzYgU2V0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA1NDkKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaW1wbHkgcmV1c2UgdGhlIE1hcERhdGEgdHlw
ZSBmcm9tIEpTTWFwIG1ha2luZyB0aGUKKyAgICAgICAgaXQgbXVjaCBzaW1wbGVyLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpzZXRT
dHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6SlNTZXQ6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoSlNDOjpKU1NldDo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNTZXQuaDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTU2V0OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU1NldDo6Y3JlYXRl
KToKKyAgICAgICAgKEpTQzo6SlNTZXQ6Om1hcERhdGEpOgorICAgICAgICAoSlNDOjpKU1NldDo6
SlNTZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpT
Qzo6Y2FsbFNldCk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgIChKU0M6
OlNldENvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKToKKyAgICAgICAgKEpTQzo6U2V0Q29u
c3RydWN0b3I6OmdldENhbGxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL1NldENvbnN0cnVjdG9y
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpTZXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6U2V0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlNldENvbnN0cnVjdG9yOjpTZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9TZXRQ
cm90b3R5cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OmdldE1hcERhdGEpOgorICAgICAgICAoSlNDOjpzZXRQ
cm90b0Z1bmNBZGQpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNDbGVhcik6CisgICAgICAg
IChKU0M6OnNldFByb3RvRnVuY0RlbGV0ZSk6CisgICAgICAgIChKU0M6OnNldFByb3RvRnVuY0Zv
ckVhY2gpOgorICAgICAgICAoSlNDOjpzZXRQcm90b0Z1bmNIYXMpOgorICAgICAgICAoSlNDOjpz
ZXRQcm90b0Z1bmNTaXplKToKKyAgICAgICAgKiBydW50aW1lL1NldFByb3RvdHlwZS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpT
ZXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlw
ZTo6U2V0UHJvdG90eXBlKToKKworMjAxMy0wOC0zMCAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgorCiAgICAgICAgIE1ha2UgSlNWYWx1ZSBib29sIGNvbnZlcnNpb24gbGVzcyBkYW5n
ZXJvdXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
MDUwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTE1NDFjMDE4Y2Nl
Mjg1YTU2ZTkzNjRmNDhlYzU0MTM0NjU5ZmI5Ny4uNzExYjhkZWRmOWQ5Yzc5ODA1ZDdmZTMwMWE0
NDJkZmEyYTZjYjY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMzUw
LDYgKzM1MCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9KU1By
b3h5LmNwcAogICAgIHJ1bnRpbWUvSlNTY29wZS5jcHAKICAgICBydW50aW1lL0pTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QuY3BwCisgICAgcnVudGltZS9KU1NldC5jcHAKICAgICBydW50aW1lL0pT
U3RhdGljU2NvcGVPYmplY3QuY3BwCiAgICAgcnVudGltZS9KU1N0cmluZy5jcHAKICAgICBydW50
aW1lL0pTU3RyaW5nSm9pbmVyLmNwcApAQCAtMzkyLDYgKzM5Myw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAgICAgcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TYW1wbGluZ0NvdW50ZXIuY3BwCisgICAg
cnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1NldFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1NpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmNwcAogICAgIHJ1bnRpbWUv
U21hbGxTdHJpbmdzLmNwcAogICAgIHJ1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYjRjMTkwYzM0NzQx
NmZjZWNmMTgxY2U3NzAxYmEzMzRhNWFhMzcxYS4uMWNjNDgyNGIyNGJjY2M2Y2ZhMzQ1NjI4YWZj
ZDQyY2JhMjY5MzczMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTg5Nyw2ICs4OTcsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2VnbWVudGVkVmFyaWFibGVPYmplY3QuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2V0LmNwcCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVByb3RvdHlwZXMuY3BwIFwKQEAgLTEw
MDMsNiArMTAwNSwxMCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWplY3QuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2FtcGxpbmdDb3VudGVyLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2FtcGxpbmdDb3VudGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Nl
dENvbnN0cnVjdG9yLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29u
c3RydWN0b3IuaFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRyb2xsZXIu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaW1wbGVUeXBlZEFycmF5Q29u
dHJvbGxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TbWFsbFN0cmluZ3Mu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDhhYzcwMWEy
NjM0MzllYjljYzg1MGM1OWFiMmJjMzQyMmM3OGUyYzkuLjU4OWYzMjgzMWQzMDgzMjdlYzRhMjc3
NWYzZmJkNjM2MTYyMWU4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agpAQCAtNDg1LDYgKzQ4NSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTUHJveHkuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNT
Y29wZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NlZ21l
bnRlZFZhcmlhYmxlT2JqZWN0LmNwcCIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTU2V0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTU3RyaW5nLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
U3RyaW5nSm9pbmVyLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEpTU3ltYm9sVGFibGVPYmplY3QuY3BwIiAvPg0KQEAgLTUyNSw2ICs1MjYsOCBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxSZWdFeHBPYmplY3QuY3BwIiAvPg0KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhwUHJvdG90eXBlLmNwcCIgLz4NCiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNhbXBsaW5nQ291bnRlci5jcHAiIC8+
DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTZXRDb25zdHJ1Y3Rvci5jcHAi
IC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTZXRQcm90b3R5cGUuY3Bw
IiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2ltcGxlVHlwZWRBcnJh
eUNvbnRyb2xsZXIuY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U21hbGxTdHJpbmdzLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwIiAvPg0KQEAgLTkxNSw2ICs5MTgsNyBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Byb3h5LmgiIC8+DQogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1Njb3BlLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0LmgiIC8+DQorICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1NldC5oIiAvPg0KICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmcuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTU3RyaW5nQnVpbGRlci5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdKb2luZXIuaCIgLz4NCkBAIC05NzMsNiArOTc3LDgg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUmVnRXhwUHJvdG90eXBlLmgi
IC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxSZWplY3QuaCIgLz4NCiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNhbXBsaW5nQ291bnRlci5oIiAvPg0K
KyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2V0Q29uc3RydWN0b3IuaCIgLz4N
CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldFByb3RvdHlwZS5oIiAvPg0K
ICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFNtYWxsU3Ry
aW5ncy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3BhcnNlQXJy
YXlWYWx1ZU1hcC5oIiAvPg0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4OTU0ZmQ4YzQyNjgwOWYxOGVjZmJmZjEyNzM1N2U0ZDNjMmQ0
MGFlLi4xM2Y5MzliYmFlMTJmZTVmMzAyYWVmNjczYjYwOTIwMzM1ZmZjNGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC01OTcsNiAr
NTk3LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTY29wZS5jcHAi
Pg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmNwcCI+DQorICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5jcHAiPg0KICAg
ICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkBAIC03MDgs
NiArNzExLDEyIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNtYWxsU3Ry
aW5ncy5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29t
cGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldFByb3RvdHlwZS5j
cHAiPg0KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4N
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFNldENvbnN0cnVjdG9yLmNwcCI+
DQorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAi
Pg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM5NTFlYTFlNmJkODdhYWQ2YTRjM2ZiNTQ1
OTljNTY4MTVlOGUzZjEuLjE2NzNlYWZlMzFlMTE1OTdlOTBjY2ZiZjMwOWJkZmUwZmZhZTFmODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzcsNiArODM3LDEyIEBACiAJCUE3
MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjdGRjY2MERBMzA1
M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsgfTsKIAkJQTcyODBB
MjgxMTU1N0UzMDAwRDU2OTU3IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5RURCMDgxMTUzMUNENjAwMTlFOTEy
IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE3MjkwMDlDMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTXY3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3MjkwMDlCMTc5NzZDNjAwMDMxNzI5OCAvKiBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcCAq
LzsgfTsKKwkJQTcyOTlEOUQxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5RDlCMTdEMTI4MzcwMDVG
NUZGOSAvKiBKU1NldC5jcHAgKi87IH07CisJCUE3Mjk5RDlFMTdEMTI4MzcwMDVGNUZGOSAvKiBK
U1NldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcy
OTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggKi87IH07CisJCUE3Mjk5REExMTdEMTI4
NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyOTlEOUYxN0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3Rv
dHlwZS5jcHAgKi87IH07CisJCUE3Mjk5REEyMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5
REEwMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCAqLzsgfTsKKwkJQTcyOTlEQTUx
N0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Mjk5REEzMTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCUE3Mjk5REE2MTdEMTI4NTgwMDVGNUZGOSAvKiBT
ZXRDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi87IH07
CiAJCUE3MkZGRDY0MTM5OTg1QTgwMEU1MzY1QSAvKiBLZXl3b3JkTG9va3VwLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0MyMjVDRDEzOTk4NDlDMDBG
RjE2NjIgLyogS2V5d29yZExvb2t1cC5oICovOyB9OwogCQlBNzMwQjYxMjEyNTAwNjhGMDA5RDI1
QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFs
QWN0aXZhdGlvbi5oICovOyB9OwogCQlBNzMwQjYxMzEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0
RXZhbEFjdGl2YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTczMEI2MTExMjUwMDY4RjAwOUQyNUIxIC8qIFN0cmljdEV2YWxBY3RpdmF0aW9u
LmNwcCAqLzsgfTsKQEAgLTIwMjQsNiArMjAzMCwxMiBAQAogCQlBNzI3RkY2NTBEQTMwNTNCMDBF
NTQ4RDcgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI5MDA5QjE3
OTc2QzYwMDAzMTcyOTggLyogTWFjcm9Bc3NlbWJsZXJBUk12Ny5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNyb0Fzc2VtYmxlckFSTXY3LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUIxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU2V0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2V0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUE3Mjk5RDlGMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5
cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0UHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTAxN0QxMjg0ODAwNUY1
RkY5IC8qIFNldFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXRQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcyOTlEQTMxN0Qx
Mjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTcyOTlEQTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldENvbnN0cnVjdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzMwQjYxMTEy
NTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzM3ODEwOTE3OTlFQTJFMDA4MTc1MzMgLyogREZHQW5h
bHlzaXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQW5hbHlzaXMuaDsg
cGF0aCA9IGRmZy9ERkdBbmFseXNpcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjQwMyw5ICsyNDE1LDkgQEAKIAkJMDM0NzY4REZGRjM4QTUwNDExREI5QzhCIC8qIFByb2R1Y3Rz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MzJGNUJF
MTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0
RSAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkJOTMyRjVCRDkwODIyQTFDNzAw
NzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKLQkJCQk5MzJGNUJFMTA4MjJB
MUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAog
CQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLApAQCAtMzE3Nyw2
ICszMTg5LDggQEAKIAkJCQkxNDg3NEFFMjE1RUJERTRBMDAyRTM1ODcgLyogSlNTY29wZS5oICov
LAogCQkJCTBGOTE5RDBFMTU3RjMzMjcwMDRBNEU3RCAvKiBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0LmNwcCAqLywKIAkJCQkwRjkxOUQwRjE1N0YzMzI3MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdC5oICovLAorCQkJCUE3Mjk5RDlCMTdEMTI4MzcwMDVGNUZGOSAvKiBKU1Nl
dC5jcHAgKi8sCisJCQkJQTcyOTlEOUMxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggKi8sCiAJ
CQkJQkMwMkU5QjYwRTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjky
QTg2MjAyNTU1OTdEMDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5
OTY4MDAxQUY1MUUgLyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCkBAIC0zMjc3LDYgKzMyOTEsMTAg
QEAKIAkJCQkwRkI3RjM5MTE1RUQ4RTM4MDBGMTY3QjIgLyogUmVqZWN0LmggKi8sCiAJCQkJMEY3
NzAwOTExNDAyRkYyODAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgKi8sCiAJCQkJMEY3
NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovLAorCQkJCUE3Mjk5
REEzMTdEMTI4NTgwMDVGNUZGOSAvKiBTZXRDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJQTcyOTlE
QTQxN0QxMjg1ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmggKi8sCisJCQkJQTcyOTlEOUYx
N0QxMjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5jcHAgKi8sCisJCQkJQTcyOTlEQTAxN0Qx
Mjg0ODAwNUY1RkY5IC8qIFNldFByb3RvdHlwZS5oICovLAogCQkJCTBGMkI2NkQ2MTdCNkI1QUIw
MEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMEYyQjY2
RDcxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVyLmggKi8sCiAJ
CQkJOTMzMDNGRTgwRTZBNzJCNTAwNzg2RTZBIC8qIFNtYWxsU3RyaW5ncy5jcHAgKi8sCkBAIC0z
MzY4LDEwICszMzg2LDYgQEAKIAkJODZFQzlEQjMxMzI4REY0NDAwMkIyQUQ3IC8qIGRmZyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMEYzOEIwMTMxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAqLywKLQkJCQkwRjM4QjAxNDE3
Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAqLywKLQkJCQkwRjM4QjAxNTE3
Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNwcCAqLywKLQkJCQkwRjM4QjAx
NjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmggKi8sCiAJCQkJQTc3QTQy
MzYxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5jcHAgKi8sCiAJCQkJQTc3QTQy
MzcxN0EwQkJGRDAwQThEQjgxIC8qIERGR0Fic3RyYWN0SGVhcC5oICovLAogCQkJCUE3MDREOEZF
MTdBMEJBQTgwMDZCQTU1NCAvKiBERkdBYnN0cmFjdEludGVycHJldGVyLmggKi8sCkBAIC0zNDE5
LDYgKzM0MzMsMTAgQEAKIAkJCQkwRkMwOTc3RTE0NjlFQkM0MDBDRjI0NDIgLyogREZHQ29tbW9u
LmggKi8sCiAJCQkJMEZFQTBBMkQxNzBENDBCRjAwQkI3MjJDIC8qIERGR0NvbW1vbkRhdGEuY3Bw
ICovLAogCQkJCTBGRUEwQTJFMTcwRDQwQkYwMEJCNzIyQyAvKiBERkdDb21tb25EYXRhLmggKi8s
CisJCQkJMEYzOEIwMTMxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCAq
LywKKwkJCQkwRjM4QjAxNDE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCAq
LywKKwkJCQkwRjM4QjAxNTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2RlLmNw
cCAqLywKKwkJCQkwRjM4QjAxNjE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25Nb2Rl
LmggKi8sCiAJCQkJMEYzQjNBMTcxNTNFNjhFRjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9sZGlu
Z1BoYXNlLmNwcCAqLywKIAkJCQkwRjNCM0ExODE1M0U2OEVGMDAzRUQwRkYgLyogREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuaCAqLywKIAkJCQkwRkJFMEY2QjE2QzFEQjAxMDA4MkM1RTggLyogREZH
Q1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgKi8sCkBAIC0zODc2LDYgKzM4OTQsOCBAQAogCQkJCTBG
MkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0RDE0QzNDRDRDMDA3QzNEQjEgLyogREZHQ29tbW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRkVBMEEzMjE3MEQ0MEJGMDBCQjcyMkMgLyogREZHQ29tbW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYzOEIwMTgxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9u
S2V5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjM4QjAxQTE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZH
Q29tcGlsYXRpb25Nb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCM0ExQjE1M0U2OEY0MDAz
RUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
QkUwRjczMTZDMURCMDUwMDgyQzVFOCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBN0Q4OUNGNjE3QTBCOENDMDA3NzNBRDggLyogREZHQ3JpdGljYWxFZGdl
QnJlYWtpbmdQaGFzZS5oIGluIEhlYWRlcnMgKi8sCkBAIC00MTA4LDcgKzQxMjgsNiBAQAogCQkJ
CTk3ODgwMTQxMTQ3MUFEOTIwMDQxQjAxNiAvKiBKU0RhdGVNYXRoLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTg2RTNDNjE0MTY3QkFCRDcwMDZENzYwQSAvKiBKU0V4cG9ydC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzOEIwMUExN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBp
bGF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCNEFDQUYxNDg0QzlDRTAwQjM4QTM2
IC8qIEpTRXhwb3J0TWFjcm9zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFRjE3QjZCNUFC
MDBBN0FFM0YgLyogSlNGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkYw
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0Zsb2F0NjRBcnJheS5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MTQ5LDYgKzQxNjgsNyBAQAogCQkJCTE0ODc0QUU2MTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3Bl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0MwQzRBQzE2ODEwMzAyMDAxNzAxMUQgLyogSlNTY3Jp
cHRSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkxOUQxMTE1N0YzMzJDMDA0QTRF
N0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcy
OTlEOUUxN0QxMjgzNzAwNUY1RkY5IC8qIEpTU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4
QzQ1RTBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdD
MUVBRjAxNzk4N0FCNjAwMjk5REIyIC8qIEpTU3RhY2tJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQyNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNTdHJpbmcuaCBpbiBIZWFkZXJzICov
LApAQCAtNDI3OCw3ICs0Mjk4LDYgQEAKIAkJCQkwRkY3MjlCRjE2NkFEMzYwMDAwRjVCQTMgLyog
UHJvZmlsZXJPcmlnaW4uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjcyOUMwMTY2QUQzNjAwMDBG
NUJBMyAvKiBQcm9maWxlck9yaWdpblN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4
QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKLQkJ
CQkwRjM4QjAxODE3Q0ZFNzU1MDBCMTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjEwNThFMTY3NTQ4M0EwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRT
aXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJv
ZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdGQjYxMDAxMDQw
QzM4QjAwMTdBMjg2IC8qIFByb3BlcnR5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC00
MzExLDYgKzQzMzAsOCBAQAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2Ft
cGxpbmdDb3VudGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDg4NjBFRDIxQzNEMDBCODk2
MTkgLyogU2FtcGxpbmdUb29sLmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzI5OURBNjE3RDEyODU4
MDA1RjVGRjkgLyogU2V0Q29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3Mjk5REEy
MTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
QUU2NEFBMTM1RTVFMUMwMDk2MzAxMiAvKiBTSDRBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMkI2NzA1MTdCNkI1QUIwMEE3QUUzRiAvKiBTaW1wbGVUeXBlZEFycmF5Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRCQTc4RjExM0FBQjg4RjAwNUI3QzJDIC8qIFNsb3RW
aXNpdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTQ3NjcsNyArNDc4OCw2IEBACiAJCQkJQTc3RjE4
MjExNjQwODhCMjAwNjQwQTQ3IC8qIENvZGVDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjhGOTQ0NjE2Njc2NEYxMDBENjE5NzEgLyogQ29kZU9yaWdpbi5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NkI1ODI2NzE0RDI3OTZDMDBBOUMzMDYgLyogQ29kZVByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMEYzOEIwMTkxN0NGRTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uTW9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkI1ODI2OTE0RDI3OTcwMDBBOUMzMDYgLyogQ29k
ZVByb2ZpbGluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhGOTQzQzE2Njc2MzEzMDBENjE5
NzEgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjhG
OTQ0MjE2Njc2MzM1MDBENjE5NzEgLyogQ29kZVR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00
ODA4LDYgKzQ4MjgsOCBAQAogCQkJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjBGMTlEMTZCNzJBMDgwMDVERjk1QiAv
KiBERkdDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQTBBMzExNzBENDBCRjAwQkI3
MjJDIC8qIERGR0NvbW1vbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzOEIwMTcxN0NG
RTc1NTAwQjE0NEQzIC8qIERGR0NvbXBpbGF0aW9uS2V5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMzhCMDE5MTdDRkU3NTUwMEIxNDREMyAvKiBERkdDb21waWxhdGlvbk1vZGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYzQjNBMUExNTNFNjhGMjAwM0VEMEZGIC8qIERGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQkUwRjcyMTZDMURCMDMwMDgyQzVF
OCAvKiBERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3RDg5
Q0Y1MTdBMEI4Q0MwMDc3M0FEOCAvKiBERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcCBp
biBTb3VyY2VzICovLApAQCAtNDgxOCw3ICs0ODQwLDYgQEAKIAkJCQlDMkMwRjdDRDE3QkJGQzVC
MDA0NjRGRTQgLyogREZHRGVzaXJlZFRyYW5zaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRTg1MzRCMTcyM0NEQTUwMEI2MThGNSAvKiBERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQzI5ODFGRDgxN0JBRUU0QjAwQTNCQzk4IC8qIERGR0Rlc2lyZWRX
ZWFrUmVmZXJlbmNlcy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkwRjM4QjAxNzE3Q0ZFNzU1MDBC
MTQ0RDMgLyogREZHQ29tcGlsYXRpb25LZXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzI5ODFG
REMxN0JBRkY0NDAwQTNCQzk4IC8qIERGR0Rlc2lyZWRXcml0ZUJhcnJpZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0Rv
bWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC00OTk1LDYgKzUwMTYsNyBAQAogCQkJCTE0
ODc0QUU1MTVFQkRFNEEwMDJFMzU4NyAvKiBKU1Njb3BlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3QzBDNEFEMTY4MTA2N0UwMDE3MDExRCAvKiBKU1NjcmlwdFJlZi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjkxOUQxMDE1N0YzMzI5MDA0QTRFN0QgLyogSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzI5OUQ5RDE3RDEyODM3MDA1RjVGRjkgLyog
SlNTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8q
IEpTU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3QTQ4
IC8qIEpTU3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MDBCNUE2MTUyQkFBQTcwMDkx
RUU1RiAvKiBKU1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTUwOTUsNiArNTEx
Nyw4IEBACiAJCQkJMTQyODA4NDQxMDdFQzA5MzAwMTNFN0IyIC8qIFJlZ0V4cFByb3RvdHlwZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc3MDA5MjE0MDJGRjNDMDA3OEVCMzkgLyogU2FtcGxp
bmdDb3VudGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjlEODg1MEVEMjFDM0QwMEI4OTYx
OSAvKiBTYW1wbGluZ1Rvb2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTcyOTlEQTUxN0QxMjg1
ODAwNUY1RkY5IC8qIFNldENvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3Mjk5
REExMTdEMTI4NDgwMDVGNUZGOSAvKiBTZXRQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYyQjY3MDQxN0I2QjVBQjAwQTdBRTNGIC8qIFNpbXBsZVR5cGVkQXJyYXlDb250cm9sbGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90
VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwNDAyQzBFNkE3NjQwMDA3ODZFNkEg
LyogU21hbGxTdHJpbmdzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnBy
aQppbmRleCBkMzBhNDc4YjA3ZmNmM2EyMWZmODEyMzJjNDM1ZTNhNTI0MjdmY2EyLi4yNzY0NWQw
MTY5ZThmYzBjNWNmOWJjYjI4MjJmNWJjOWM1ZGEzNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQpAQCAtMzM4LDYgKzMzOCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvSlNQcm9t
aXNlUmVzb2x2ZXJQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuY3BwIFwKICAgICBydW50aW1lL0pTUHJveHkuY3BwIFwKKyAgICBydW50aW1lL0pTU2V0
LmNwcCBcCiAgICAgcnVudGltZS9KU1Njb3BlLmNwcCBcCiAgICAgcnVudGltZS9KU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0LmNwcCBcCiAgICAgcnVudGltZS9KU1N0cmluZy5jcHAgXApAQCAtMzgx
LDYgKzM4Miw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBc
CiAgICAgcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIFwKICAgICBydW50aW1lL1NhbXBsaW5n
Q291bnRlci5jcHAgXAorICAgIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIFwKKyAgICBydW50
aW1lL1NldFByb3RvdHlwZS5jcHAgXAogICAgIHJ1bnRpbWUvU2ltcGxlVHlwZWRBcnJheUNvbnRy
b2xsZXIuY3BwIFwKICAgICBydW50aW1lL1NtYWxsU3RyaW5ncy5jcHAgXAogICAgIHJ1bnRpbWUv
U3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggOTQ3ZjY4MjY0NzY5MmExNzZkODY5MzU0
MDQ3N2JiZGUyNDU2ZjQ2NC4uNjQ4MGYwZjdlMjg2OTAyZWEzYTI5OThjNjE0MTI0ZjI1Y2UzN2Rj
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRp
ZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCkBAIC0xNDEsNyArMTQxLDkgQEAKICAgICBtYWNybyhmb3JFYWNoKSBcCiAgICAgbWFj
cm8oY2xlYXIpIFwKICAgICBtYWNybyhzaXplKSBcCi0gICAgbWFjcm8oTWFwKQorICAgIG1hY3Jv
KE1hcClcCisgICAgbWFjcm8oU2V0KVwKKyAgICBtYWNybyhhZGQpCiAKICNkZWZpbmUgSlNDX0NP
TU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQobWFjcm8pIFwKICAgICBtYWNybyhudWxsKSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggNWM2NTE3NGQwNjFlYzZhOGU2MWZmOWEyYmU2ODg3OTQyNzgyOGVmNC4uNWVkZjc3NTVk
ZWFlZmI1NTQ3OTQyZmEyNzNhMmM4Y2QzYmIzMDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjcsNiArNjcsNyBAQAogI2lu
Y2x1ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU09O
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTZXQuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlDb25z
dHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgiCiAjaW5jbHVk
ZSAiSlNUeXBlZEFycmF5cy5oIgpAQCAtOTMsNiArOTQsOCBAQAogI2luY2x1ZGUgIlJlZ0V4cE1h
dGNoZXNBcnJheS5oIgogI2luY2x1ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4
cFByb3RvdHlwZS5oIgorI2luY2x1ZGUgIlNldENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU2V0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRl
ICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgpAQCAt
MzI2LDYgKzMyOSw5IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90
eXBlKQogICAgIG1fbWFwUHJvdG90eXBlLnNldChleGVjLT52bSgpLCB0aGlzLCBNYXBQcm90b3R5
cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVj
LT52bSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX21hcFN0cnVj
dHVyZS5zZXQoZXhlYy0+dm0oKSwgdGhpcywgSlNNYXA6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52
bSgpLCB0aGlzLCBtX21hcFByb3RvdHlwZS5nZXQoKSkpOwogCisgICAgbV9zZXRQcm90b3R5cGUu
c2V0KGV4ZWMtPnZtKCksIHRoaXMsIFNldFByb3RvdHlwZTo6Y3JlYXRlKGV4ZWMsIHRoaXMsIFNl
dFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fb2JqZWN0UHJv
dG90eXBlLmdldCgpKSkpOworICAgIG1fc2V0U3RydWN0dXJlLnNldChleGVjLT52bSgpLCB0aGlz
LCBKU1NldDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fc2V0UHJvdG90eXBl
LmdldCgpKSk7CisKICAgICAvLyBDb25zdHJ1Y3RvcnMKIAogICAgIEpTQ2VsbCogb2JqZWN0Q29u
c3RydWN0b3IgPSBPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIE9iamVjdENv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKTsKQEAgLTM0MSw2ICszNDcs
NyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBK
U0NlbGwqIHByb21pc2VSZXNvbHZlckNvbnN0cnVjdG9yID0gSlNQcm9taXNlUmVzb2x2ZXJDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKGV4ZWMsIHRoaXMsIEpTUHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdl
dCgpKSwgbV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGUuZ2V0KCkpOwogI2VuZGlmIC8vIEVOQUJM
RShQUk9NSVNFUykKICAgICBKU0NlbGwqIG1hcENvbnN0cnVjdG9yID0gTWFwQ29uc3RydWN0b3I6
OmNyZWF0ZShleGVjLCB0aGlzLCBNYXBDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMt
PnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBtX21hcFByb3RvdHlwZS5n
ZXQoKSk7CisgICAgSlNDZWxsKiBzZXRDb25zdHJ1Y3RvciA9IFNldENvbnN0cnVjdG9yOjpjcmVh
dGUoZXhlYywgdGhpcywgU2V0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgp
LCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zZXRQcm90b3R5cGUuZ2V0KCkp
OwogCiAgICAgbV9yZWdFeHBDb25zdHJ1Y3Rvci5zZXQoZXhlYy0+dm0oKSwgdGhpcywgUmVnRXhw
Q29uc3RydWN0b3I6OmNyZWF0ZShleGVjLCB0aGlzLCBSZWdFeHBDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGV4ZWMtPnZtKCksIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBt
X3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogCkBAIC0zNjksNiArMzc2LDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgbV9wcm9taXNlUmVzb2x2
ZXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgcHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3Is
IERvbnRFbnVtKTsKICNlbmRpZgogICAgIG1fbWFwUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3Is
IG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgbV9zZXRQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb25z
dHJ1Y3Rvciwgc2V0Q29uc3RydWN0b3IsIERvbnRFbnVtKTsKIAogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5PYmplY3QsIG9i
amVjdENvbnN0cnVjdG9yLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLkZ1bmN0aW9uLCBmdW5jdGlvbkNv
bnN0cnVjdG9yLCBEb250RW51bSk7CkBAIC0zOTAsNiArMzk4LDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlByb21pc2VSZXNvbHZlciwg
cHJvbWlzZVJlc29sdmVyQ29uc3RydWN0b3IsIERvbnRFbnVtKTsKICNlbmRpZgogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnZtKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5N
YXAsIG1hcENvbnN0cnVjdG9yLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLlNldCwgc2V0Q29uc3RydWN0
b3IsIERvbnRFbnVtKTsKIAogICAgIG1fZXZhbEZ1bmN0aW9uLnNldChleGVjLT52bSgpLCB0aGlz
LCBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgdGhpcywgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LmV2YWwuc3RyaW5nKCksIGdsb2JhbEZ1bmNFdmFsKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+dm0oKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmV2YWwsIG1fZXZhbEZ1
bmN0aW9uLmdldCgpLCBEb250RW51bSk7CkBAIC02NTMsNiArNjYyLDggQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21hcFByb3RvdHlwZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwRGF0YVN0cnVjdHVyZSk7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbWFwU3RydWN0dXJlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zZXRQcm90b3R5cGUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX3NldFN0cnVjdHVyZSk7CiAKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9hcnJheUJ1ZmZlclByb3RvdHlwZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggOTI5YjdiMmY0YzIyMDE0YjgwNWYzNTdi
MzQ1ZDM4NzA4YjBlMTFhMS4uYWU4ZWMwNjMyMjM2ZTYxODQ5ZTQ4MDcwMmMxYmU5NjQwYmZhMTMz
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CkBAIC02OSw2ICs2OSw3IEBAIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwogY2xhc3MgUmVnRXhwUHJvdG90
eXBlOworY2xhc3MgU2V0UHJvdG90eXBlOwogY2xhc3MgU291cmNlQ29kZTsKIHN0cnVjdCBBY3Rp
dmF0aW9uU3RhY2tOb2RlOwogc3RydWN0IEhhc2hUYWJsZTsKQEAgLTE1Miw2ICsxNTMsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPEpTUHJvbWlzZVByb3RvdHlwZT4gbV9wcm9taXNl
UHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxKU1Byb21pc2VSZXNvbHZlclByb3RvdHlwZT4g
bV9wcm9taXNlUmVzb2x2ZXJQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPE1hcFByb3RvdHlw
ZT4gbV9tYXBQcm90b3R5cGU7CisgICAgV3JpdGVCYXJyaWVyPFNldFByb3RvdHlwZT4gbV9zZXRQ
cm90b3R5cGU7CiAKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3dpdGhTY29wZVN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cmljdEV2YWxBY3RpdmF0aW9u
U3RydWN0dXJlOwpAQCAtMTk1LDYgKzE5Nyw3IEBAIHByb3RlY3RlZDoKIAogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fbWFwRGF0YVN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX21hcFN0cnVjdHVyZTsKKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Nl
dFN0cnVjdHVyZTsKICAgICAKICAgICBXcml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZlclByb3RvdHlw
ZT4gbV9hcnJheUJ1ZmZlclByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2FycmF5QnVmZmVyU3RydWN0dXJlOwpAQCAtMzkwLDYgKzM5Myw3IEBAIHB1YmxpYzoKICAgICBT
dHJ1Y3R1cmUqIG1hcERhdGFTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21hcERhdGFTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHJlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLmdldCgpOyB9
CiAgICAgU3RydWN0dXJlKiByZWdFeHBTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3JlZ0V4
cFN0cnVjdHVyZS5nZXQoKTsgfQorICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXRTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHN0cmluZ09i
amVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAKICNpZiBFTkFCTEUoUFJPTUlTRVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1NldC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1NldC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q4NmFiNDkzZGVjYTg0ZmFkMjY3ZGMzODI3MWRjNDdl
Njg5YWZhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2V0LmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTU2V0Lmgi
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIK
KyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Nv
bnN0IENsYXNzSW5mbyBKU1NldDo6c19pbmZvID0geyAiU2V0IiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1NldCkgfTsKKwordm9pZCBKU1NldDo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEJhc2U6OnZp
c2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisgICAgSlNTZXQqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNTZXQqPihjZWxsKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tYXBE
YXRhKTsKK30KKwordm9pZCBKU1NldDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICBtX21hcERhdGEuc2V0KHZtLCB0aGlzLCBNYXBEYXRhOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZDA5YmVjNmVkODRkMzc3NjMxODRmZDJjZWIzYmFmZDFiY2NlYmIzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTZXQuaApAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBKU1NldF9oCisjZGVmaW5lIEpTU2V0X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBNYXBEYXRhOworCitjbGFzcyBKU1NldCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU1NldCogY3JlYXRlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBKU1NldCogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1NldD4odm0uaGVhcCkpIEpTU2V0KHZtLCBzdHJ1
Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+
Z2xvYmFsT2JqZWN0KCkpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQorCisgICAg
c3RhdGljIEpTU2V0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjcmVhdGUoZXhlYy0+dm0oKSwgc3RydWN0dXJlKTsK
KyAgICB9CisKKyAgICBNYXBEYXRhKiBtYXBEYXRhKCkgeyByZXR1cm4gbV9tYXBEYXRhLmdldCgp
OyB9CisKK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAg
ICBKU1NldChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7CisgICAgCisgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOworICAgIAorICAgIFdyaXRlQmFycmllcjxNYXBEYXRhPiBt
X21hcERhdGE7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU1NldF9oKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk0NGY2N2YwM2RmMDNjOGI3OGU5ODNiYjQ0Y2UzNjNmNjAzYjY5YzcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZXRDb25zdHJ1Y3Rvci5oIgor
CisjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTU2V0LmgiCisjaW5jbHVkZSAiTWFwRGF0YS5oIgorI2luY2x1ZGUgIlNldFByb3Rv
dHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFNldENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoU2V0Q29uc3RydWN0b3IpIH07CisKK3ZvaWQgU2V0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgU2V0UHJvdG90eXBlKiBzZXRQcm90b3R5cGUp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZXhlYy0+dm0oKSwgc2V0UHJvdG90eXBlLT5j
bGFzc0luZm8oKS0+Y2xhc3NOYW1lKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBzZXRQcm90b3R5cGUs
IERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT52bSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOworfQorCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsU2V0KENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIC8vIFVudGlsIHdlIGhhdmUgaXRlcmF0b3JzIHdlIHRocm93IGlmIHdlJ3ZlIGJl
ZW4gZ2l2ZW4KKyAgICAvLyBhbnkgYXJndW1lbnRzIHRoYXQgY291bGQgcmVxdWlyZSB1cyB0byB0
aHJvdy4KKyAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNVbmRlZmluZWRPck51bGwo
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihjYWxsRnJh
bWUsIEFTQ0lJTGl0ZXJhbCgiU2V0IGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMgd2hlbiBjYWxs
ZWQgYXMgYSBmdW5jdGlvbiIpKSk7CisgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoY2FsbEZyYW1lLCBjcmVh
dGVSYW5nZUVycm9yKGNhbGxGcmFtZSwgV1RGOjpBU0NJSUxpdGVyYWwoIkludmFsaWQgY29tcGFy
YXRvciBmdW5jdGlvbiIpKSk7CisKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
YXNJbnRlcm5hbEZ1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKTsK
KyAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+c2V0U3RydWN0dXJl
KCk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1NldDo6Y3JlYXRlKGNhbGxGcmFtZSwg
c2V0U3RydWN0dXJlKSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdFNldChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gYXNJbnRlcm5hbEZ1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkp
LT5nbG9iYWxPYmplY3QoKTsKKyAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSA9IGdsb2JhbE9i
amVjdC0+c2V0U3RydWN0dXJlKCk7CisgICAgSlNTZXQqIHNldCA9IEpTU2V0OjpjcmVhdGUoY2Fs
bEZyYW1lLCBzZXRTdHJ1Y3R1cmUpOworICAgIE1hcERhdGEqIG1hcERhdGEgPSBzZXQtPm1hcERh
dGEoKTsKKyAgICBzaXplX3QgY291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgSlNWYWx1ZSBp
dGVtID0gY2FsbEZyYW1lLT5hcmd1bWVudChpKTsKKyAgICAgICAgbWFwRGF0YS0+c2V0KGNhbGxG
cmFtZSwgaXRlbSwgaXRlbSk7CisgICAgfQorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0
KTsKK30KKworQ29uc3RydWN0VHlwZSBTZXRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShK
U0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQoreworICAgIGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3RydWN0U2V0OworICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlSG9zdDsKK30KKworQ2FsbFR5cGUgU2V0Q29uc3RydWN0b3I6OmdldENhbGxEYXRhKEpTQ2Vs
bCosIENhbGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24g
PSBjYWxsU2V0OworICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7Cit9CisKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MGNm
ODk2ZTVkOTQwNmRlODk0ZTA2ZTRhZGY1NTU4NTAxYmQ3NTYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEs
NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNldENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgU2V0Q29uc3RydWN0b3JfaAorCisjaW5jbHVk
ZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2V0UHJv
dG90eXBlOworCitjbGFzcyBTZXRDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKworICAgIHN0
YXRpYyBTZXRDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFNldFByb3RvdHlwZSogc2V0
UHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgU2V0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2V0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBTZXRDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBzZXRQcm90b3R5cGUpOworICAgICAgICByZXR1
cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFNl
dENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSosIFNldFByb3RvdHlwZSop
OworICAgIHN0YXRpYyBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29u
c3RydWN0RGF0YSYpOworICAgIHN0YXRpYyBDYWxsVHlwZSBnZXRDYWxsRGF0YShKU0NlbGwqLCBD
YWxsRGF0YSYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoTWFwQ29uc3RydWN0b3Jf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk1MDU3NGQ0OTRkMDY1ZWE0ZTgwMTQ1NWQ0ZDBiMzc3MDA2YzlkMDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNldFByb3RvdHlwZS5o
IgorCisjaW5jbHVkZSAiQ2FjaGVkQ2FsbC5oIgorI2luY2x1ZGUgIkVycm9yLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIK
KyNpbmNsdWRlICJKU1NldC5oIgorI2luY2x1ZGUgIk1hcERhdGEuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NvbnN0IENsYXNzSW5mbyBTZXRQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlNldCIsICZC
YXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoU2V0UHJvdG90eXBlKSB9Owor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNBZGQoRXhl
Y1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1
bmNDbGVhcihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHNldFByb3RvRnVuY0RlbGV0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0ZvckVhY2goRXhlY1N0YXRlKik7CitzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNIYXMoRXhlY1N0YXRlKik7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY1NpemUoRXhl
Y1N0YXRlKik7CisKK3ZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5o
ZXJpdHMoaW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsK
KworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+YWRkLCBzZXRQcm90
b0Z1bmNBZGQsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3Bl
cnR5TmFtZXMtPmNsZWFyLCBzZXRQcm90b0Z1bmNDbGVhciwgRG9udEVudW0sIDEpOworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+ZGVsZXRlS2V5d29yZCwgc2V0UHJv
dG9GdW5jRGVsZXRlLCBEb250RW51bSwgMSk7CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5mb3JFYWNoLCBzZXRQcm90b0Z1bmNGb3JFYWNoLCBEb250RW51bSwgMSk7
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsIHNldFByb3Rv
RnVuY0hhcywgRG9udEVudW0sIDEpOworCisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdl
dHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOworICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+
c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jU2l6ZSk7CisgICAgYWNjZXNzb3ItPnNldEdldHRl
cihleGVjLT52bSgpLCBmdW5jdGlvbik7CisgICAgcHV0RGlyZWN0QWNjZXNzb3IoZXhlYywgdm0u
cHJvcGVydHlOYW1lcy0+c2l6ZSwgYWNjZXNzb3IsIERvbnRFbnVtIHwgQWNjZXNzb3IpOworfQor
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBNYXBEYXRhKiBnZXRNYXBEYXRhKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIHRoaXNWYWx1ZSkKK3sKKyAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKSB7CisgICAgICAgIHRocm93Vk1FcnJvcihjYWxsRnJhbWUsIGNyZWF0ZU5vdEFuT2JqZWN0
RXJyb3IoY2FsbEZyYW1lLCB0aGlzVmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
ICAgIEpTU2V0KiBzZXQgPSBqc0R5bmFtaWNDYXN0PEpTU2V0Kj4odGhpc1ZhbHVlKTsKKyAgICBp
ZiAoIXNldCkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihjYWxsRnJhbWUsIEFTQ0lJTGl0ZXJh
bCgiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBvYmplY3QiKSk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KKyAgICByZXR1cm4gc2V0LT5tYXBEYXRhKCk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQWRkKENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGRhdGEtPnNldChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCksIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jQ2xlYXIoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7
CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgZGF0YS0+Y2xlYXIoKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHNldFByb3RvRnVuY0RlbGV0ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICBNYXBE
YXRhKiBkYXRhID0gZ2V0TWFwRGF0YShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihkYXRhLT5yZW1v
dmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOworfQorCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHNldFByb3RvRnVuY0ZvckVhY2goQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpCit7CisgICAgTWFwRGF0YSogZGF0YSA9IGdldE1hcERhdGEoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIWRhdGEpCisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgSlNWYWx1ZSBjYWxsQmFjayA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsQmFjaywgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoY2FsbEZyYW1lLCBXVEY6OkFTQ0lJTGl0ZXJhbCgiU2V0LnByb3RvdHlwZS5mb3JF
YWNoIGNhbGxlZCB3aXRob3V0IGNhbGxiYWNrIikpKTsKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgVk0qIHZtID0gJmNhbGxGcmFtZS0+dm0oKTsK
KyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUykgeworICAgICAgICBKU0Z1bmN0aW9uKiBm
dW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbEJhY2spOworICAgICAgICBDYWNoZWRD
YWxsIGNhY2hlZENhbGwoY2FsbEZyYW1lLCBmdW5jdGlvbiwgMSk7CisgICAgICAgIGZvciAoYXV0
byBwdHIgPSBkYXRhLT5iZWdpbigpLCBlbmQgPSBkYXRhLT5lbmQoKTsgcHRyICE9IGVuZCAmJiAh
dm0tPmV4Y2VwdGlvbigpOyArK3B0cikgeworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlz
KHRoaXNWYWx1ZSk7CisgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIHB0ci5r
ZXkoKSk7CisgICAgICAgICAgICBjYWNoZWRDYWxsLmNhbGwoKTsKKyAgICAgICAgfQorICAgIH0g
ZWxzZSB7CisgICAgICAgIGZvciAoYXV0byBwdHIgPSBkYXRhLT5iZWdpbigpLCBlbmQgPSBkYXRh
LT5lbmQoKTsgcHRyICE9IGVuZCAmJiAhdm0tPmV4Y2VwdGlvbigpOyArK3B0cikgeworICAgICAg
ICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5k
KHB0ci5rZXkoKSk7CisgICAgICAgICAgICBKU0M6OmNhbGwoY2FsbEZyYW1lLCBjYWxsQmFjaywg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc2V0UHJvdG9GdW5jSGFzKENhbGxGcmFtZSogY2FsbEZyYW1l
KQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29s
ZWFuKGRhdGEtPmNvbnRhaW5zKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsK
K30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzZXRQcm90b0Z1bmNTaXplKENhbGxG
cmFtZSogY2FsbEZyYW1lKQoreworICAgIE1hcERhdGEqIGRhdGEgPSBnZXRNYXBEYXRhKGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFkYXRhKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZGF0YS0+c2l6ZShjYWxsRnJhbWUpKSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmEw
NWI5NDBlMWU1YjA4YjVhMjgwZjAxYTkzNzc4ZjJmZmRjMTExNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFNldFByb3RvdHlwZV9oCisjZGVmaW5lIFNldFByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU2V0UHJvdG90eXBlIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9i
amVjdCBCYXNlOworCisgICAgc3RhdGljIFNldFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgeworICAgICAgICBTZXRQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFNldFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFNldFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMs
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcml2YXRlOgorICAgIFNldFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2UoZXhlYy0+dm0oKSwgc3RydWN0dXJl
KQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCopOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoU2V0UHJvdG90eXBl
X2gpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODE5ZmNkZWUzZjZjMmU1YmM5ZTZkYzg0ZjI1Yjk1YmYwYzUzYzI3Mi4uM2Y4
ZWNkOWMyNTdhYTdlODJkNGQ0YzUyMzNlYmRlMWRkZjBiMmFkMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDEzLTA4LTMwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgSW1wbGVtZW50IEVTNiBTZXQgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMDU0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cworCisgICAgICAgICogZmFzdC9qcy9iYXNpYy1z
ZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL2Jhc2ljLXNldC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanM6IEFk
ZGVkLgorICAgICAgICAoc2V0IG5ldyk6CisgICAgICAgIChvdGhlclN0cmluZy5zdHJpbmdfYXBw
ZWFyZWRfaGVyZS5zZXQgYWRkKToKKyAgICAgICAgKHRyeS5zZXQgZm9yRWFjaCk6CisgICAgICAg
IChzZXQgZm9yRWFjaCk6CisgICAgICAgIChzZXQgZ2MpOgorCiAyMDEzLTA4LTMwICBSb2IgQnVp
cyAgPHJ3bGJ1aXNAd2Via2l0Lm9yZz4KIAogICAgICAgICBTVkcgZXJyb3IgcGFyc2luZyBlbXB0
eSBwYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNTU0ZjE3ZWEyMzdmZjZjODFmMTg1YjRlMjk4NjI1NDcwMzEyNDE4ZgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc2V0LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEyNyBAQAorVGVzdHMgYmFzaWMgY29ycmVjdG5lc3Mgb2YgRVMgU2V0IG9iamVjdAor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTZXQgaW5zdGFuY2VvZiBTZXQg
aXMgZmFsc2UKK1BBU1MgU2V0LnByb3RvdHlwZSBpbnN0YW5jZW9mIFNldCBpcyBmYWxzZQorUEFT
UyBTZXQoKSBpbnN0YW5jZW9mIFNldCBpcyB0cnVlCitQQVNTIG5ldyBTZXQoKSBpbnN0YW5jZW9m
IFNldCBpcyB0cnVlCitQQVNTIFNldChudWxsKSBpbnN0YW5jZW9mIFNldCBpcyB0cnVlCitQQVNT
IFNldCh1bmRlZmluZWQpIGluc3RhbmNlb2YgU2V0IGlzIHRydWUKK1BBU1MgU2V0KHVuZGVmaW5l
ZCwgdW5kZWZpbmVkKSBpbnN0YW5jZW9mIFNldCBpcyB0cnVlCitQQVNTIFNldChudWxsLCB1bmRl
ZmluZWQpIGluc3RhbmNlb2YgU2V0IGlzIHRydWUKK1BBU1MgU2V0KDEpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFNldCBjb25zdHJ1Y3RvciBkb2VzIG5vdCBhY2NlcHQgYXJndW1lbnRzLgor
UEFTUyBTZXQodHJ1ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU2V0IGNvbnN0cnVjdG9y
IGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMuCitQQVNTIFNldChbXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogU2V0IGNvbnN0cnVjdG9yIGRvZXMgbm90IGFjY2VwdCBhcmd1bWVudHMuCitQ
QVNTIFNldCh7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogU2V0IGNvbnN0cnVjdG9yIGRv
ZXMgbm90IGFjY2VwdCBhcmd1bWVudHMuCitQQVNTIFNldCh1bmRlZmluZWQsIG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBJbnZhbGlkIGNvbXBhcmF0b3IgZnVuY3Rpb24uCitQQVNT
IFNldCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gUmFuZ2VFcnJvcjogSW52YWxpZCBj
b21wYXJhdG9yIGZ1bmN0aW9uLgorMQordW5kZWZpbmVkCit0cnVlCis2CisxCiswCitbb2JqZWN0
IE9iamVjdF0KK1BBU1MgT2JqZWN0Lmhhc093blByb3BlcnR5KHNldCwgJ3NpemUnKSBpcyBmYWxz
ZQorUEFTUyBTZXQucHJvdG90eXBlLmhhc093blByb3BlcnR5KCdzaXplJykgaXMgdHJ1ZQorUEFT
UyBNYXAucHJvdG90eXBlLnNpemUgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTWFwIG9wZXJh
dGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QuCitQQVNTIHNldC5zaXplIGlzIDAKK1BBU1Mg
c2V0LmFkZCgtMCkgaXMgc2V0CitQQVNTIHNldC5hZGQoMCkgaXMgc2V0CitQQVNTIHNldC5hZGQo
SW5maW5pdHkpIGlzIHNldAorUEFTUyBzZXQuYWRkKC1JbmZpbml0eSkgaXMgc2V0CitQQVNTIHNl
dC5hZGQoTmFOKSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCgnMCcpIGlzIHNldAorUEFTUyBzZXQuYWRk
KDAuMSkgaXMgc2V0CitQQVNTIHNldC5zaXplIGlzIDcKK1BBU1Mgc2V0LmhhcygtMCkgaXMgdHJ1
ZQorUEFTUyBzZXQuaGFzKDApIGlzIHRydWUKK1BBU1Mgc2V0LmhhcyhJbmZpbml0eSkgaXMgdHJ1
ZQorUEFTUyBzZXQuaGFzKC1JbmZpbml0eSkgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKE5hTikgaXMg
dHJ1ZQorUEFTUyBzZXQuaGFzKCcwJykgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKDAuMSkgaXMgdHJ1
ZQorUEFTUyBzZXQuZGVsZXRlKC0wKSBpcyB0cnVlCitQQVNTIHNldC5kZWxldGUoMCkgaXMgdHJ1
ZQorUEFTUyBzZXQuZGVsZXRlKEluZmluaXR5KSBpcyB0cnVlCitQQVNTIHNldC5kZWxldGUoLUlu
ZmluaXR5KSBpcyB0cnVlCitQQVNTIHNldC5kZWxldGUoTmFOKSBpcyB0cnVlCitQQVNTIHNldC5k
ZWxldGUoJzAnKSBpcyB0cnVlCitQQVNTIHNldC5kZWxldGUoMC4xKSBpcyB0cnVlCitQQVNTIHNl
dC5kZWxldGUoLTApIGlzIGZhbHNlCitQQVNTIHNldC5kZWxldGUoMCkgaXMgZmFsc2UKK1BBU1Mg
c2V0LmRlbGV0ZShJbmZpbml0eSkgaXMgZmFsc2UKK1BBU1Mgc2V0LmRlbGV0ZSgtSW5maW5pdHkp
IGlzIGZhbHNlCitQQVNTIHNldC5kZWxldGUoTmFOKSBpcyBmYWxzZQorUEFTUyBzZXQuZGVsZXRl
KCcwJykgaXMgZmFsc2UKK1BBU1Mgc2V0LmRlbGV0ZSgwLjEpIGlzIGZhbHNlCitQQVNTIHNldC5o
YXMoc2ltcGxlU3RyaW5nKSBpcyB0cnVlCitQQVNTIHNldC5oYXMob3RoZXJTdHJpbmcpIGlzIHRy
dWUKK1BBU1Mgc2V0LmNsZWFyKCkgaXMgdW5kZWZpbmVkLgorUEFTUyBzZXQuc2l6ZSBpcyAwCitQ
QVNTIHNldC5hZGQoMCkgaXMgc2V0CitQQVNTIHNldC5hZGQoJzAnKSBpcyBzZXQKK1BBU1Mgc2V0
LmFkZCgxKSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCgnMScpIGlzIHNldAorUEFTUyBzZXQuYWRkKDIp
IGlzIHNldAorUEFTUyBzZXQuYWRkKCcyJykgaXMgc2V0CitQQVNTIHNldC5hZGQoMykgaXMgc2V0
CitQQVNTIHNldC5hZGQoJzMnKSBpcyBzZXQKK1BBU1Mgc2V0LmFkZCg0KSBpcyBzZXQKK1BBU1Mg
c2V0LmFkZCgnNCcpIGlzIHNldAorUEFTUyBzZXQuYWRkKDUpIGlzIHNldAorUEFTUyBzZXQuYWRk
KCc1JykgaXMgc2V0CitQQVNTIHNldC5hZGQoNikgaXMgc2V0CitQQVNTIHNldC5hZGQoJzYnKSBp
cyBzZXQKK1BBU1Mgc2V0LnNpemUgaXMgMTQKK2ZvckVhY2ggIzAKK1BBU1MgdGVzdFRoaXMgaXMg
dW5kZWZpbmVkLgorMAorZm9yRWFjaCAjMQorUEFTUyB0ZXN0VGhpcyBpcyB0aGlzVmFsdWUKKzEK
KzAKKzAKKzEKKzEKKzIKKzIKKzMKKzMKKzQKKzQKKzUKKzUKKzYKKzYKK1BBU1Mgc2V0LmZvckVh
Y2goZGVidWcpIGlzIHVuZGVmaW5lZC4KKzAgOiBudW1iZXIKKzAgOiBzdHJpbmcKKzEgOiBudW1i
ZXIKKzEgOiBzdHJpbmcKKzIgOiBudW1iZXIKKzIgOiBzdHJpbmcKKzMgOiBzdHJpbmcKKzQgOiBz
dHJpbmcKKzUgOiBudW1iZXIKKzUgOiBzdHJpbmcKKzYgOiBudW1iZXIKKzYgOiBzdHJpbmcKKzQg
OiBudW1iZXIKK1BBU1Mgc2V0LmhhcygwKSBpcyB0cnVlCitQQVNTIHNldC5oYXMoIjAiKSBpcyB0
cnVlCitQQVNTIHNldC5oYXMoMSkgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKCIxIikgaXMgdHJ1ZQor
UEFTUyBzZXQuaGFzKCIzIikgaXMgdHJ1ZQorUEFTUyBzZXQuaGFzKCI0IikgaXMgdHJ1ZQorUEFT
UyBzZXQuaGFzKDUpIGlzIHRydWUKK1BBU1Mgc2V0LmhhcygiNSIpIGlzIHRydWUKK1BBU1Mgc2V0
Lmhhcyg2KSBpcyB0cnVlCitQQVNTIHNldC5oYXMoIjYiKSBpcyB0cnVlCitQQVNTIHNldC5oYXMo
NCkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvYmFzaWMtc2V0Lmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiMDFiZDNlZGZm
YjQxNmVkZDM0YjI5NjVmZDE2Y2JlZjhlOWRjYmEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL2Jhc2ljLXNldC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2Jhc2lj
LXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvYmFzaWMtc2V0
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzE2YTBjZjJjOTFlNWMwZDRhOTRlM2NkZWEwODE5
ZWM2OTk3NzQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNz
L2Jhc2ljLXNldC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2Jhc2lj
LXNldAorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24g
dGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2Jhc2ljLXNldC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2Jhc2ljLXNldC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQzNmY2ZTc2ZjBkOWUzMWY3MWNkNjk2MzkwZDQyNjFlM2ZkNzQyZjgKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvYmFzaWMtc2V0Lmh0bWwKQEAgLTAsMCAr
MSwxMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jl
c3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYmFzaWMtc2V0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZWdyZXNzL3NjcmlwdC10ZXN0cy9iYXNpYy1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFlM2U1ODNiZjgw
ZWM4ZTc2NDRkNTVkNjBhZjBjNjRhNjcxNGM2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzCkBAIC0wLDAgKzEs
MjIgQEAKK3ZhciBzZXQgPSBuZXcgU2V0OworZm9yICh2YXIgaSA9IDA7IGkgPCA4MDAwOyArK2kp
IHsKKyAgICBzZXQuYWRkKGkpOworICAgIHNldC5hZGQoIiIgKyBpKQorICAgIHNldC5hZGQoe30p
CisgICAgc2V0LmFkZChpICsgLjUpCit9CisKK3ZhciByZXN1bHQgPSAwOworCitzZXQuZm9yRWFj
aChmdW5jdGlvbihrKXsgcmVzdWx0ICs9IHNldC5zaXplOyB9KQorZm9yICh2YXIgaSA9IDgwMDA7
IGkgPj0gMDsgLS1pKSB7CisgICAgc2V0LmRlbGV0ZShpKQorICAgIHNldC5oYXMoIiIgKyBpKQor
ICAgIHNldC5hZGQoaSArIC41KQorfQorc2V0LmZvckVhY2goZnVuY3Rpb24oayl7IHJlc3VsdCAr
PSBzZXQuc2l6ZTsgfSkKKworaWYgKHJlc3VsdCAhPSAxNjAwMDcyMDAyKQorICAgIHRocm93ICJC
YWQgcmVzdWx0OiAiICsgcmVzdWx0OworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvc2NyaXB0LXRlc3RzL2Jhc2ljLXNldC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0
LXRlc3RzL2Jhc2ljLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZGQxYzQ3ZjQ0ZjA0NzBhNTY3NDc5ZjNi
OGNlOGM1MzE3OGY3ZmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvYmFzaWMtc2V0LmpzCkBAIC0wLDAgKzEsMTIxIEBACitkZXNjcmlwdGlvbigi
VGVzdHMgYmFzaWMgY29ycmVjdG5lc3Mgb2YgRVMgU2V0IG9iamVjdCIpOworCisvLyBDdXJyZW50
bHkgd2UgZG9uJ3Qgc3VwcG9ydCBpdGVyYXRvcnMsIHNvIHdlIHRocm93CisvLyBvbiBhbnkgbm9u
LXRocm93aW5nIHBhcmFtZXRlcnMKK3Nob3VsZEJlRmFsc2UoIlNldCBpbnN0YW5jZW9mIFNldCIp
Oworc2hvdWxkQmVGYWxzZSgiU2V0LnByb3RvdHlwZSBpbnN0YW5jZW9mIFNldCIpOworc2hvdWxk
QmVUcnVlKCJTZXQoKSBpbnN0YW5jZW9mIFNldCIpOworc2hvdWxkQmVUcnVlKCJuZXcgU2V0KCkg
aW5zdGFuY2VvZiBTZXQiKTsKK3Nob3VsZEJlVHJ1ZSgiU2V0KG51bGwpIGluc3RhbmNlb2YgU2V0
Iik7CitzaG91bGRCZVRydWUoIlNldCh1bmRlZmluZWQpIGluc3RhbmNlb2YgU2V0Iik7CitzaG91
bGRCZVRydWUoIlNldCh1bmRlZmluZWQsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBTZXQiKTsKK3No
b3VsZEJlVHJ1ZSgiU2V0KG51bGwsIHVuZGVmaW5lZCkgaW5zdGFuY2VvZiBTZXQiKTsKKworc2hv
dWxkVGhyb3coIlNldCgxKSIpOworc2hvdWxkVGhyb3coIlNldCh0cnVlKSIpOworc2hvdWxkVGhy
b3coIlNldChbXSkiKTsKK3Nob3VsZFRocm93KCJTZXQoe30pIik7CitzaG91bGRUaHJvdygiU2V0
KHVuZGVmaW5lZCwgbnVsbCkiKTsKK3Nob3VsZFRocm93KCJTZXQodW5kZWZpbmVkLCB7fSkiKTsK
KworLy8gQmFzaWMgdGVzdCBmb3IgY29uc3RydWN0b3IKK3ZhciBzZXQgPSBuZXcgU2V0KDEsIHVu
ZGVmaW5lZCwgdHJ1ZSwgNiwgdHJ1ZSwgIjEiLCAwLCB7fSkKK3NldC5mb3JFYWNoKGRlYnVnKTsK
KwordmFyIHNldCA9IG5ldyBTZXQ7CitzaG91bGRCZUZhbHNlKCJPYmplY3QuaGFzT3duUHJvcGVy
dHkoc2V0LCAnc2l6ZScpIikKK3Nob3VsZEJlVHJ1ZSgiU2V0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eSgnc2l6ZScpIikKK3Nob3VsZFRocm93KCJNYXAucHJvdG90eXBlLnNpemUiKQorc2hvdWxk
QmUoInNldC5zaXplIiwgIjAiKQorc2hvdWxkQmUoInNldC5hZGQoLTApIiwgInNldCIpCitzaG91
bGRCZSgic2V0LmFkZCgwKSIsICJzZXQiKQorc2hvdWxkQmUoInNldC5hZGQoSW5maW5pdHkpIiwg
InNldCIpCitzaG91bGRCZSgic2V0LmFkZCgtSW5maW5pdHkpIiwgInNldCIpCitzaG91bGRCZSgi
c2V0LmFkZChOYU4pIiwgInNldCIpCitzaG91bGRCZSgic2V0LmFkZCgnMCcpIiwgInNldCIpCitz
aG91bGRCZSgic2V0LmFkZCgwLjEpIiwgInNldCIpCitzaG91bGRCZSgic2V0LnNpemUiLCAiNyIp
CisKK3Nob3VsZEJlVHJ1ZSgic2V0LmhhcygtMCkiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKDAp
IikKK3Nob3VsZEJlVHJ1ZSgic2V0LmhhcyhJbmZpbml0eSkiKQorc2hvdWxkQmVUcnVlKCJzZXQu
aGFzKC1JbmZpbml0eSkiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKE5hTikiKQorc2hvdWxkQmVU
cnVlKCJzZXQuaGFzKCcwJykiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKDAuMSkiKQorCitzaG91
bGRCZVRydWUoInNldC5kZWxldGUoLTApIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgwKSIp
CitzaG91bGRCZVRydWUoInNldC5kZWxldGUoSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1ZSgic2V0
LmRlbGV0ZSgtSW5maW5pdHkpIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZShOYU4pIikKK3No
b3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgnMCcpIikKK3Nob3VsZEJlVHJ1ZSgic2V0LmRlbGV0ZSgw
LjEpIikKKworc2hvdWxkQmVGYWxzZSgic2V0LmRlbGV0ZSgtMCkiKQorc2hvdWxkQmVGYWxzZSgi
c2V0LmRlbGV0ZSgwKSIpCitzaG91bGRCZUZhbHNlKCJzZXQuZGVsZXRlKEluZmluaXR5KSIpCitz
aG91bGRCZUZhbHNlKCJzZXQuZGVsZXRlKC1JbmZpbml0eSkiKQorc2hvdWxkQmVGYWxzZSgic2V0
LmRlbGV0ZShOYU4pIikKK3Nob3VsZEJlRmFsc2UoInNldC5kZWxldGUoJzAnKSIpCitzaG91bGRC
ZUZhbHNlKCJzZXQuZGVsZXRlKDAuMSkiKQorCit2YXIgc2ltcGxlU3RyaW5nID0gImFhYWFhIjsK
K3ZhciBvdGhlclN0cmluZyA9ICIiOworZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspCisJb3Ro
ZXJTdHJpbmcgKz0gImEiCitzZXQuYWRkKHNpbXBsZVN0cmluZywge30pOworc2hvdWxkQmVUcnVl
KCJzZXQuaGFzKHNpbXBsZVN0cmluZykiKQorc2hvdWxkQmVUcnVlKCJzZXQuaGFzKG90aGVyU3Ry
aW5nKSIpOworCisKKworc2hvdWxkQmVVbmRlZmluZWQoInNldC5jbGVhcigpIik7CitzaG91bGRC
ZSgic2V0LnNpemUiLCAiMCIpCit2YXIgY291bnQgPSA3OworZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7CisgICAgc2hvdWxkQmUoInNldC5hZGQoIiArIGkgKyAiKSIsICJzZXQiKQor
ICAgIHNob3VsZEJlKCJzZXQuYWRkKCciICsgaSArICInKSIsICJzZXQiKQorfQorCitzaG91bGRC
ZSgic2V0LnNpemUiLCAiMTQiKQorCit2YXIgdGhpc1ZhbHVlID0gMHhmMDAKK3ZhciB0ZXN0VGhp
czsKK3ZhciBjb3VudCA9IDA7CisKK3RyeSB7CisJc2V0LmZvckVhY2goZnVuY3Rpb24oKSB7ICJ1
c2Ugc3RyaWN0IjsgZGVidWcoImZvckVhY2ggIzAiKTsgdGVzdFRoaXMgPSB0aGlzOyBzaG91bGRC
ZVVuZGVmaW5lZCgidGVzdFRoaXMiKTsgdGhyb3cgY291bnQrKzsgIH0pCit9IGNhdGNoKGUpIHsK
KyAgICBkZWJ1ZyhlKQorfQordHJ5IHsKKyAgICBzZXQuZm9yRWFjaChmdW5jdGlvbigpIHsgInVz
ZSBzdHJpY3QiOyBkZWJ1ZygiZm9yRWFjaCAjMSIpOyB0ZXN0VGhpcyA9IHRoaXM7IHNob3VsZEJl
KCJ0ZXN0VGhpcyIsICJ0aGlzVmFsdWUiKTsgdGhyb3cgY291bnQrKzsgIH0sIHRoaXNWYWx1ZSkK
K30gY2F0Y2goZSkgeworICAgIGRlYnVnKGUpCit9CisKK3Nob3VsZEJlVW5kZWZpbmVkKCdzZXQu
Zm9yRWFjaChkZWJ1ZyknKQorCit2YXIga2V5cyA9IFtdOworc2V0LmZvckVhY2goZnVuY3Rpb24g
KGspIHsKKwlkZWJ1ZyhrICsgIiA6ICIgKyB0eXBlb2YgKGspKQorCisJaWYgKGsgPT0gMikgewor
CQlzZXQuZGVsZXRlKDMpCisJCXNldC5kZWxldGUoMikKKwl9IGVsc2UKKwlrZXlzLnB1c2goayk7
CisJaWYgKGsgPT0gIjMiKSB7CisJCXNldC5hZGQoIjMiKTsKKwkJc2V0LmRlbGV0ZSg0KQorCQlz
ZXQuYWRkKDQpCisJfQorCWdjKCkKK30pCisKK2djKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IGtl
eXMubGVuZ3RoOyBpKyspIHsKKwl2YXIgZXhwZWN0ZWRLZXkgPSBrZXlzW2ldCisJc2hvdWxkQmVU
cnVlKCJzZXQuaGFzKCIrSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRLZXkpKyIpIik7Cit9Cg==
</data>
<flag name="review"
          id="232267"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>