<?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>68409</bug_id>
          
          <creation_ts>2011-09-19 16:01:51 -0700</creation_ts>
          <short_desc>Refactor Heap allocation logic into separate AllocationSpace class</short_desc>
          <delta_ts>2011-09-20 11:31:55 -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>
          <dependson>68418</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469772</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-19 16:01:51 -0700</bug_when>
    <thetext>Refactor Heap allocation logic into separate AllocationSpace class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469777</commentid>
    <comment_count>1</comment_count>
      <attachid>107937</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-19 16:05:25 -0700</bug_when>
    <thetext>Created attachment 107937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469783</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-19 16:14:31 -0700</bug_when>
    <thetext>Committed r95493: &lt;http://trac.webkit.org/changeset/95493&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469803</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 16:44:00 -0700</bug_when>
    <thetext>It seems like this patch broke JSC on Windows:

2&gt;   Creating library C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.lib and object C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\lib\JavaScriptCore.exp
2&gt;JavaScriptCore.exp : error LNK2001: unresolved external symbol &quot;public: void * __thiscall JSC::Heap::allocate(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocate@Heap@JSC@@QAEPAXAAUSizeClass@MarkedSpace@2@@Z)
2&gt;JavaScriptCore.exp : error LNK2001: unresolved external symbol &quot;private: void * __thiscall JSC::Heap::allocateSlowCase(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocateSlowCase@Heap@JSC@@AAEPAXAAUSizeClass@MarkedSpace@2@@Z)
2&gt;C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\bin\JavaScriptCore.dll : fatal error LNK1120: 2 unresolved externals
2&gt;Build log was saved at &quot;file://C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\Release\obj\JavaScriptCore\BuildLog.htm&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469854</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-19 18:44:25 -0700</bug_when>
    <thetext>Thanks for http://trac.webkit.org/changeset/95496.

But it&apos;s still failing to build for whatever reason :(

http://build.webkit.org/builders/Windows%20Release%20%28Build%29/builds/21105/steps/compile-webkit/logs/stdio

2&gt;JavaScriptCore.exp : error LNK2001: unresolved external symbol &quot;public: void * __thiscall JSC::AllocationSpace::allocate(struct JSC::MarkedSpace::SizeClass &amp;)&quot; (?allocate@AllocationSpace@JSC@@QAEPAXAAUSizeCla

It seems like cl.exe is getting confused by two overloaded allocate functions.  I tried moving function definitions into the class definition but didn&apos;t help.

Per IRC discussion with gbarra, I&apos;m rolling out the patch for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470149</commentid>
    <comment_count>5</comment_count>
      <attachid>108019</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-20 10:24:56 -0700</bug_when>
    <thetext>Created attachment 108019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470153</commentid>
    <comment_count>6</comment_count>
      <attachid>108019</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-09-20 10:28:25 -0700</bug_when>
    <thetext>Comment on attachment 108019
Patch

It seems like you&apos;d have to modify JavaScriptCore.def as in http://trac.webkit.org/changeset/95496/trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470154</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-20 10:29:44 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 108019 [details])
&gt; It seems like you&apos;d have to modify JavaScriptCore.def as in http://trac.webkit.org/changeset/95496/trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def ?

I&apos;m waiting for the win ews to turn, then i&apos;ll remove the bogus export, then wait for it to turn again, and add the correct one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470156</commentid>
    <comment_count>8</comment_count>
      <attachid>108021</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-20 10:32:10 -0700</bug_when>
    <thetext>Created attachment 108021
Patch

Remove the known bad exports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470207</commentid>
    <comment_count>9</comment_count>
      <attachid>108031</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-20 11:28:08 -0700</bug_when>
    <thetext>Created attachment 108031
Patch

Add missing export</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470210</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-09-20 11:31:55 -0700</bug_when>
    <thetext>Committed r95559: &lt;http://trac.webkit.org/changeset/95559&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107937</attachid>
            <date>2011-09-19 16:05:25 -0700</date>
            <delta_ts>2011-09-20 10:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68409-20110919160524.patch</filename>
            <type>text/plain</type>
            <size>41303</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU0ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA0MGNiZTc2OGM2NWEzZjIwYTRjZDc3YjA2MDA0NjdkZTExOWEyMzJlLi5mYzUyNmI2
NDkwYjk4ODU5MmZhZGI2ZjczOGM4M2ZlOTUyYmJhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00NSw2ICs0NSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAgICBoZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKICAgICBo
ZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IYW5kbGVIZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAyOGY2NTk2NjBmMTU1NmQzMWIyMmU4
NDU4MmNlODA2ZTBhZTNlZDU3Li4wNWQyOGE4M2Y2NTIxM2M2Y2E2YzkxMDA0ODFkMTI2NTVlZGE2
MmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMS0wOS0x
OSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhl
YXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGhvaXN0cyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBNYXJrZWRTcGFjZSBhbmQgcmVsYXRl
ZAorICAgICAgICBkYXRhIG91dCBvZiBIZWFwIGFuZCBpbnRvIGEgc2VwYXJhdGUgY2xhc3MuICBU
aGlzIHdpbGwgYWxsb3cgdXMgdG8KKyAgICAgICAgaGF2ZSBtdWx0aXBsZSBhbGxvY2F0aW9uIHNw
YWNlcyBpbiBmdXR1cmUsIHNvIGVhc2luZyB0aGUgd2F5IHRvd2FyZHMKKyAgICAgICAgaGF2aW5n
IEdDJ2QgYmFja2luZyBzdG9yZXMgZm9yIG9iamVjdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIu
Y3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMpOgor
ICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkFsbG9jYXRpb25TcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9u
U3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6
OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OmZyZWVCbG9j
a3MpOgorICAgICAgICAoSlNDOjpUYWtlSWZFbXB0eTo6VGFrZUlmRW1wdHkpOgorICAgICAgICAo
SlNDOjpUYWtlSWZFbXB0eTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJZkVtcHR5
OjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2hyaW5rKToK
KyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
QWxsb2NhdGlvblNwYWNlOjpBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpBbGxvY2F0
aW9uU3BhY2U6OmJsb2Nrcyk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2l6ZUNs
YXNzRm9yKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpzZXRIaWdoV2F0ZXJNYXJr
KToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpoaWdoV2F0ZXJNYXJrKToKKyAgICAg
ICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpjYW5vbmljYWxpemVCbG9ja3MpOgorICAgICAgICAo
SlNDOjpBbGxvY2F0aW9uU3BhY2U6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6QWxs
b2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbCk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFj
ZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjphbGxvY2F0
ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6
CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKToKKyAg
ICAgICAgKEpTQzo6SGVhcDo6Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyk6CisgICAgICAg
IChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyTWFya3Mp
OgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcCk6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVj
dENvdW50KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZSk6CisgICAgICAgIChKU0M6OkhlYXA6
OmNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgorICAg
ICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNhbm9uaWNhbGl6ZUJsb2Nrcyk6CisgICAg
ICAgIChKU0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6ZnJl
ZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnNocmluayk6CisgICAgICAgICogaGVhcC9I
ZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVjdFNwYWNlKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6c2l6ZUNsYXNzRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2NhdGUp
OgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpyZWxlYXNlRXhlY3V0YWJsZU1lbW9y
eSk6CisKIDIwMTEtMDktMTkgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHI5NTMxMApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYWZlMzljMzk4Mzc0OWUyZDA1YmQ0ZGZiMmRjYjZm
OTIyODA0MjY2Li5iZTc0YzliMjMxODZmYTliYWIyMDAwNWFiZDY0ZDkxN2ZkODNiZGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMzLDYgKzEzMyw4
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU2NvcmVCb2FyZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3Bw
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IYW5kbGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAppbmRleCBjYTAyN2VlMmI5Mzk3MmI3MTJmMTAxMTYzYjk4ODcxNDc5NWVmMTU5Li41
MjhhNTE0OGNmNTc0ZTRiZWRhYmVjNWMyM2UzODYyNWYxNzIwOTNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTExOCw2ICsxMTgsNyBAQCBfX1pOM0pTQzEw
dGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxMUpTQnl0
ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVTdHJ1
Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1ZhbHVl
RVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0YXRl
RVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCitfX1pOM0pTQzE1QWxsb2NhdGlvblNw
YWNlMTZhbGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4z
SlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlFeGVj
U3RhdGVFUktOU18xMFNvdXJjZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0ZUVy
cm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0yMzMsNyArMjM0LDYgQEAgX19a
TjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xvYmFs
RGF0YUUKIF9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRDaGVj
a0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVSS05TXzdBcmdMaXN0RVJLTlNf
MTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291bnRF
dgogX19aTjNKU0M0SGVhcDE2YWN0aXZpdHlDYWxsYmFja0V2Ci1fX1pOM0pTQzRIZWFwMTZhbGxv
Y2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4zSlNDNEhlYXAx
Nm9iamVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VFdgog
X19aTjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA2ODFhZDYzM2RhY2ZhNTM5ODdhMWJmZmFlMDNiMjVk
YmRjZmI0NDg5Li5hZDYzNjFiM2IxOGMwZGRlOTdiYzAzNTUzM2NiYTYxYjMzZjFjMmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNiArMjcsNyBA
QAogICAgICAgICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2RlL09w
Y29kZS5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAgICAg
ICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxl
LmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKQEAgLTMyNCw2ICszMjUsNyBA
QAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAgICAg
J2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwJywKICAgICAgICAgICAgICdieXRlY29tcGls
ZXIvUmVnaXN0ZXJJRC5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAn
LAogICAgICAgICAgICAgJ2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwJywKICAgICAgICAgICAg
ICdoZWFwL0hhbmRsZUhlYXAuY3BwJywKICAgICAgICAgICAgICdoZWFwL0hhbmRsZVN0YWNrLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJv
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBiYTgyN2I4
MTdlMWRkMTUzNjA2ZWI3MGM4YzlmYzgxNjcyYTJhZjYwLi5jMDZlMmY5N2Q0ODRjY2NiNWY3MTRm
YzU5MDJkYmM5ZmZhMzc1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcm8KQEAgLTcyLDYgKzcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvVmFsdWVQ
cm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBcCiAg
ICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAorICAgIGhlYXAvQWxsb2NhdGlvblNw
YWNlLmNwcCBcCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAvSGFu
ZGxlSGVhcC5jcHAgXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXggMDky
NWQzM2NmOTU1YjJmMzJkZDA3ZGU4NDVlMGMyOGY4ODZlODMyNy4uM2IzMDgzNGUyZGQ3ZGI1ZWM1
M2VkYTBlN2M0NzA1MzZjYTA5YWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTE4OTAsNiArMTg5MCwxNCBAQAog
CQkJTmFtZT0iaGVhcCIKIAkJCT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxo
ZWFwXEFsbG9jYXRpb25TcGFjZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQ29uc2VydmF0
aXZlUm9vdHMuY3BwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggZjc0MjFkNzE0Mzc2YTc1YzBjNWUwNDExZjU1ZTYxMGVkZTZhZWM0NC4uZGMwYjc2
MjE1NzA1YTZjZWVkMmI4ZmM4OTBhZDA4ZTVhOWMxNGJkMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTQwNiw2ICs0MDYsOCBAQAogCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUzMTUg
LyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzEyQjQxMTFDN0Iy
MzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUQ3NjQ1
MjEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25t
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
QTcwNDU2QjAxNDI3RkI5MTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDU2QUYxNDI3RkIxNTAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3MDQ1NkIxMTQyN0ZCOTUwMDM3REE2OCAvKiBBbGxvY2F0aW9u
U3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcwNDU2QUUxNDI3RkIwMzAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi87IH07CiAJ
CUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMzQzAw
QkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CiAJCUE3MjcwMDkwMERBQzZCQkMw
MEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFuT2Jq
ZWN0LmNwcCAqLzsgfTsKIAkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhl
bHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi87IH07CkBAIC0x
MTgyLDYgKzExODQsOCBAQAogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhwQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJl
Z0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFENzY0NTExMzU0NDQ4QjAwQzVDN0MwIC8q
IEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwNDU2QUUxNDI3RkIwMzAwMzdEQTY4
IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBbGxvY2F0aW9uU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzA0NTZBRjE0MjdGQjE1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEwMDI0
NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThG
ODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IGZp
bGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTYxNyw2ICsxNjIxLDggQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAw
QUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCUE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCAqLywK
KwkJCQlBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLywK
IAkJCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
ICovLAogCQkJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5oICov
LAogCQkJCTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAgKi8s
CkBAIC0yNzkzLDYgKzI3OTksNyBAQAogCQkJCUE3QkMwQzgyMTQwNjA4QjAwMEIxQkI3MSAvKiBD
aGVja2VkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4MUUzNTkxNDE5NzBDNzAw
MDk0RDkwIC8qIFN0b3JhZ2VCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA4Mjc3QTE0
MjE2OEQ3MDA5MENDQUMgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
NzA0NTZCMDE0MjdGQjkxMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTMyOTgsNiArMzMwNSw3IEBACiAJCQkJQzIyQzUyRkUxM0ZBRjZFRjAwQjdEQzBEIC8q
IGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDMjJDNTMxMzEzRkFGNkVGMDBCN0RD
MEQgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwODI3NzkxNDIxNjhENzAwOTBD
Q0FDIC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzA0NTZCMTE0
MjdGQjk1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggNjEwNDRhODlj
NzllZTZiMTNmNjg4OWYyODMzNzhmZGU1ZjJmODM0Mi4uMTNkNmFkOGYzMDhkZDdjNmU2MzUwODZl
MDhiZWU5OTI0MmM3NGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICAgICByZXR1cm47CiAK
ICAgICBSZWNvbXBpbGVyIHJlY29tcGlsZXIodGhpcyk7Ci0gICAgZ2xvYmFsRGF0YS0+aGVhcC5m
b3JFYWNoQ2VsbChyZWNvbXBpbGVyKTsKKyAgICBnbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNwYWNl
KCkuZm9yRWFjaENlbGwocmVjb21waWxlcik7CiB9CiAKIEpTVmFsdWUgZXZhbHVhdGVJbkdsb2Jh
bENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMWNiZTE0MDY1YzIwNmY2MGZjMDZh
NjI4YjY4ZWU1ODEwZThlZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisK
KyNpbmNsdWRlICJIZWFwLmgiCisKKyNkZWZpbmUgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9O
IDAKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OnRy
eUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAgICBtX2hl
YXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgdm9pZCogcmVzdWx0
ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIG1faGVhcC0+bV9vcGVy
YXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
dm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmIHNpemVDbGFzcykKK3sKKyNpZiBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04KKyAg
ICBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CisjZW5kaWYKKyAgICAKKyAgICB2b2lkKiByZXN1bHQg
PSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIAorICAgIGlmIChMSUtFTFkocmVzdWx0ICE9
IDApKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIEFsbG9jYXRpb25FZmZvcnQg
YWxsb2NhdGlvbkVmZm9ydDsKKyAgICAKKyAgICBpZiAobV9tYXJrZWRTcGFjZS53YXRlck1hcmso
KSA8IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpIHx8ICFtX2hlYXAtPm1faXNTYWZlVG9D
b2xsZWN0KQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbk11c3RTdWNjZWVk
OworICAgIGVsc2UKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25DYW5GYWls
OworICAgIAorICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNz
LmNlbGxTaXplLCBhbGxvY2F0aW9uRWZmb3J0KTsKKyAgICBpZiAoYmxvY2spIHsKKyAgICAgICAg
bV9tYXJrZWRTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGJsb2NrKTsKKyAgICAgICAgdm9pZCog
cmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIG1faGVhcC0+Y29sbGVj
dChIZWFwOjpEb05vdFN3ZWVwKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXpl
Q2xhc3MpOworICAgIAorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgCisgICAgQVNTRVJUKG1fbWFya2VkU3BhY2Uud2F0ZXJNYXJrKCkgPCBtX21hcmtlZFNwYWNl
LmhpZ2hXYXRlck1hcmsoKSk7CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9jayhzaXpl
Q2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxvY2F0aW9uTXVzdFN1
Y2NlZWQpKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAg
IEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01hcmtlZEJsb2NrKiBB
bGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9u
U3BhY2U6OkFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCkKK3sKKyAgICBNYXJrZWRC
bG9jayogYmxvY2s7CisgICAgCisjaWYgIUVOQUJMRShMQVpZX0JMT0NLX0ZSRUVJTkcpCisgICAg
aWYgKGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbkNhbkZhaWwpCisgICAgICAgIHJldHVy
biAwOworICAgIAorICAgIGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxT
aXplKTsKKyNlbHNlCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9oZWFwLT5t
X2ZyZWVCbG9ja0xvY2spOworICAgICAgICBpZiAobV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2Nr
cykgeworICAgICAgICAgICAgYmxvY2sgPSBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5yZW1vdmVIZWFk
KCk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICAgICAgbV9oZWFwLT5tX251
bWJlck9mRnJlZUJsb2Nrcy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJsb2NrID0g
MDsKKyAgICB9CisgICAgaWYgKGJsb2NrKQorICAgICAgICBibG9jay0+aW5pdEZvckNlbGxTaXpl
KGNlbGxTaXplKTsKKyAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFsbG9jYXRpb25D
YW5GYWlsKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAgIGJsb2NrID0gTWFy
a2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsKKyNlbmRpZgorICAgIAorICAgIG1f
YmxvY2tzLmFkZChibG9jayk7CisgICAgCisgICAgcmV0dXJuIGJsb2NrOworfQorCit2b2lkIEFs
bG9jYXRpb25TcGFjZTo6ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKK3sKKyAgICBNYXJr
ZWRCbG9jayogbmV4dDsKKyAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IGhlYWQ7IGJsb2Nr
OyBibG9jayA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7CisgICAgICAg
IAorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBibG9jay0+cmVzZXQo
KTsKKyNpZiAhRU5BQkxFKExBWllfQkxPQ0tfRlJFRUlORykKKyAgICAgICAgTWFya2VkQmxvY2s6
OmRlc3Ryb3koYmxvY2spOworI2Vsc2UKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVh
cC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5k
KGJsb2NrKTsKKyAgICAgICAgbV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOworI2VuZGlm
CisgICAgfQorfQorCitjbGFzcyBUYWtlSWZFbXB0eSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBN
YXJrZWRCbG9jayogUmV0dXJuVHlwZTsKKyAgICAKKyAgICBUYWtlSWZFbXB0eShNYXJrZWRTcGFj
ZSopOworICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOworICAgIFJldHVyblR5cGUg
cmV0dXJuVmFsdWUoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgTWFya2VkU3BhY2UqIG1fbWFya2Vk
U3BhY2U7CisgICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVzOworfTsK
KworaW5saW5lIFRha2VJZkVtcHR5OjpUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSogbmV3U3BhY2Up
CisgICAgOiBtX21hcmtlZFNwYWNlKG5ld1NwYWNlKQoreworfQorCitpbmxpbmUgdm9pZCBUYWtl
SWZFbXB0eTo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAgaWYgKCFibG9j
ay0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+
cmVtb3ZlQmxvY2soYmxvY2spOworICAgIG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOworfQorCitp
bmxpbmUgVGFrZUlmRW1wdHk6OlJldHVyblR5cGUgVGFrZUlmRW1wdHk6OnJldHVyblZhbHVlKCkK
K3sKKyAgICByZXR1cm4gbV9lbXB0aWVzLmhlYWQoKTsKK30KKwordm9pZCBBbGxvY2F0aW9uU3Bh
Y2U6OnNocmluaygpCit7CisgICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1w
dGllcyB0byBhdm9pZCBtb2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgorICAg
IFRha2VJZkVtcHR5IHRha2VJZkVtcHR5KCZtX21hcmtlZFNwYWNlKTsKKyAgICBmcmVlQmxvY2tz
KGZvckVhY2hCbG9jayh0YWtlSWZFbXB0eSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Yjk1ZTM1YzkwMTY1MDk5
N2RkYTljMTU3NzIzZjlmYjBkODRhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQWxsb2NhdGlvblNwYWNlX2gKKyNkZWZpbmUgQWxsb2NhdGlvblNwYWNl
X2gKKworI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2Uu
aCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBIZWFwOworY2xhc3MgTWFya2VkQmxvY2s7CisKK2NsYXNzIEFsbG9jYXRpb25TcGFjZSB7Citw
dWJsaWM6CisgICAgQWxsb2NhdGlvblNwYWNlKEhlYXAqIGhlYXApCisgICAgICAgIDogbV9oZWFw
KGhlYXApCisgICAgICAgICwgbV9tYXJrZWRTcGFjZShoZWFwKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0
b3I7CisgICAgCisgICAgTWFya2VkQmxvY2tTZXQmIGJsb2NrcygpIHsgcmV0dXJuIG1fYmxvY2tz
OyB9CisgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCBieXRl
cykgeyByZXR1cm4gbV9tYXJrZWRTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOyB9CisgICAgdm9p
ZCBzZXRIaWdoV2F0ZXJNYXJrKHNpemVfdCBieXRlcykgeyBtX21hcmtlZFNwYWNlLnNldEhpZ2hX
YXRlck1hcmsoYnl0ZXMpOyB9CisgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBt
X21hcmtlZFNwYWNlLmhpZ2hXYXRlck1hcmsoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoRnVu
Y3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6
OlJldHVyblR5cGUgZm9yRWFjaENlbGwoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoQmxvY2soKTsKKyAgICAKKyAgICB2b2lkIGNhbm9uaWNhbGl6ZUJsb2NrcygpIHsg
bV9tYXJrZWRTcGFjZS5jYW5vbmljYWxpemVCbG9ja3MoKTsgfQorICAgIHZvaWQgcmVzZXRBbGxv
Y2F0b3IoKSB7IG1fbWFya2VkU3BhY2UucmVzZXRBbGxvY2F0b3IoKTsgfQorICAgIAorICAgIHZv
aWQqIGFsbG9jYXRlKHNpemVfdCk7CisgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7
CisgICAgdm9pZCBzaHJpbmsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZW51bSBBbGxvY2F0aW9u
RWZmb3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9OworICAg
IAorICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKKyAgICB2b2lk
KiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgTWFya2VkQmxvY2sqIGFs
bG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0KTsKKyAgICAKKyAg
ICBIZWFwKiBtX2hlYXA7CisgICAgTWFya2VkU3BhY2UgbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJr
ZWRCbG9ja1NldCBtX2Jsb2NrczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlu
bGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFj
aENlbGwoRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBjYW5vbmljYWxpemVCbG9ja3MoKTsKKyAg
ICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxv
Y2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkK
KyAgICAgICAgKCppdCktPmZvckVhY2hDZWxsKGZ1bmN0b3IpOworICAgIHJldHVybiBmdW5jdG9y
LnJldHVyblZhbHVlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaENlbGwo
KQoreworICAgIEZ1bmN0b3IgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaENlbGwoZnVuY3Rv
cik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5j
dG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1
bmN0b3IpCit7CisgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7CisgICAgQmxvY2tJdGVyYXRvciBl
bmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBt
X2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGZ1bmN0b3Io
Kml0KTsKKyAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxv
Y2F0aW9uU3BhY2U6OmZvckVhY2hCbG9jaygpCit7CisgICAgRnVuY3RvciBmdW5jdG9yOworICAg
IHJldHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7Cit9CisKK2lubGluZSB2b2lkKiBBbGxvY2F0
aW9uU3BhY2U6OmFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sK
KyAgICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9z
dCBjb21tb24gY2FzZS4KKyAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwg
PSBzaXplQ2xhc3MuZmlyc3RGcmVlQ2VsbDsKKyAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNl
bGwpKQorICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3MpOworICAgIAor
ICAgIHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKKyAgICBy
ZXR1cm4gZmlyc3RGcmVlQ2VsbDsKK30KKworaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6
YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQoreworICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNp
emVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVD
bGFzcyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmlu
ZGV4IDhhOTVjYjcyZTlmOGY4YzMxMjk1NGQzYjM1NzVhYjYzYzFjOTFmYmYuLmIzYWMyMDBhYTg1
OWJjYjMzYzFiMzM2N2QzMjVmNzg0YWFmODkzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2luZy5oIgogI2luY2x1ZGUg
PGFsZ29yaXRobT4KIAotI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04gMAogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTE3NSwzOCArMTc0
LDYgQEAgaW5saW5lIHZvaWQgQ291bnRJZkdsb2JhbE9iamVjdDo6b3BlcmF0b3IoKShKU0NlbGwq
IGNlbGwpCiAgICAgY291bnQoMSk7CiB9CiAKLWNsYXNzIFRha2VJZkVtcHR5IHsKLXB1YmxpYzoK
LSAgICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOwotCi0gICAgVGFrZUlmRW1wdHko
TWFya2VkU3BhY2UqKTsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKLSAgICBS
ZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7Ci0KLXByaXZhdGU6Ci0gICAgTWFya2VkU3BhY2UqIG1f
bWFya2VkU3BhY2U7Ci0gICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVz
OwotfTsKLQotaW5saW5lIFRha2VJZkVtcHR5OjpUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSogbmV3
U3BhY2UpCi0gICAgOiBtX21hcmtlZFNwYWNlKG5ld1NwYWNlKQotewotfQotCi1pbmxpbmUgdm9p
ZCBUYWtlSWZFbXB0eTo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi17Ci0gICAgaWYg
KCFibG9jay0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21hcmtlZFNwYWNl
LT5yZW1vdmVCbG9jayhibG9jayk7Ci0gICAgbV9lbXB0aWVzLmFwcGVuZChibG9jayk7Ci19Ci0K
LWlubGluZSBUYWtlSWZFbXB0eTo6UmV0dXJuVHlwZSBUYWtlSWZFbXB0eTo6cmV0dXJuVmFsdWUo
KQotewotICAgIHJldHVybiBtX2VtcHRpZXMuaGVhZCgpOwotfQotCiBjbGFzcyBSZWNvcmRUeXBl
IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5U
eXBlOwpAQCAtMjQ5LDcgKzIxNiw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICA6IG1faGVhcFNpemUoaGVhcFNpemUpCiAgICAg
LCBtX21pbkJ5dGVzUGVyQ3ljbGUoaGVhcFNpemVGb3JIaW50KGhlYXBTaXplKSkKICAgICAsIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKLSAgICAsIG1fbWFya2VkU3BhY2UodGhp
cykKKyAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fZXh0cmFDb3N0KDApCiAgICAg
LCBtX21hcmtMaXN0U2V0KDApCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0
aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQpAQCAtMjU5LDcgKzIyNiw3IEBAIEhlYXA6Okhl
YXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICAsIG1f
aXNTYWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiB7
Ci0gICAgbV9tYXJrZWRTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1fbWluQnl0ZXNQZXJDeWNsZSk7
CisgICAgbV9vYmplY3RTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1fbWluQnl0ZXNQZXJDeWNsZSk7
CiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiAjaWYgRU5BQkxFKExBWllfQkxPQ0tfRlJF
RUlORykKICAgICBtX251bWJlck9mRnJlZUJsb2NrcyA9IDA7CkBAIC00MDEsNjIgKzM2OCwxMSBA
QCB2b2lkIEhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCBjb3N0KQog
ICAgIC8vIGlmIGEgbGFyZ2UgdmFsdWUgc3Vydml2ZXMgb25lIGdhcmJhZ2UgY29sbGVjdGlvbiwg
dGhlcmUgaXMgbm90IG11Y2ggcG9pbnQgdG8KICAgICAvLyBjb2xsZWN0aW5nIG1vcmUgZnJlcXVl
bnRseSBhcyBsb25nIGFzIGl0IHN0YXlzIGFsaXZlLgogCi0gICAgaWYgKG1fZXh0cmFDb3N0ID4g
bWF4RXh0cmFDb3N0ICYmIG1fZXh0cmFDb3N0ID4gbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJr
KCkgLyAyKQorICAgIGlmIChtX2V4dHJhQ29zdCA+IG1heEV4dHJhQ29zdCAmJiBtX2V4dHJhQ29z
dCA+IG1fb2JqZWN0U3BhY2UuaGlnaFdhdGVyTWFyaygpIC8gMikKICAgICAgICAgY29sbGVjdEFs
bEdhcmJhZ2UoKTsKICAgICBtX2V4dHJhQ29zdCArPSBjb3N0OwogfQogCi1pbmxpbmUgdm9pZCog
SGVhcDo6dHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewot
ICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247Ci0gICAgdm9pZCogcmVzdWx0
ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIG1fb3BlcmF0aW9uSW5Q
cm9ncmVzcyA9IE5vT3BlcmF0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQqIEhl
YXA6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQot
ewotI2lmIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTgotICAgIGNvbGxlY3RBbGxHYXJiYWdl
KCk7Ci0gICAgQVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7Ci0j
ZW5kaWYKLQotICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0KLSAg
ICBpZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAg
IEFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydDsKLSAgICAKLSAgICBpZiAobV9tYXJr
ZWRTcGFjZS53YXRlck1hcmsoKSA8IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpIHx8ICFt
X2lzU2FmZVRvQ29sbGVjdCkKLSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25N
dXN0U3VjY2VlZDsKLSAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0
aW9uQ2FuRmFpbDsKLSAgICAKLSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2Nr
KHNpemVDbGFzcy5jZWxsU2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgaWYgKGJsb2NrKSB7
Ci0gICAgICAgIG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBibG9jayk7Ci0gICAg
ICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgICAgIEFTU0VS
VChyZXN1bHQpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGNvbGxlY3Qo
RG9Ob3RTd2VlcCk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsK
LSAgICAKLSAgICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAotICAg
IEFTU0VSVChtX21hcmtlZFNwYWNlLndhdGVyTWFyaygpIDwgbV9tYXJrZWRTcGFjZS5oaWdoV2F0
ZXJNYXJrKCkpOwotICAgIAotICAgIG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBh
bGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5jZWxsU2l6ZSwgQWxsb2NhdGlvbk11c3RTdWNjZWVkKSk7
Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBBU1NFUlQo
cmVzdWx0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNW
YWx1ZSBrKQogewogICAgIEFTU0VSVChrKTsKQEAgLTUyOSw3ICs0NDUsNyBAQCB2b2lkIEhlYXA6
OmdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpCiAg
ICAgaWYgKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKICAgICAgICAgQ1JB
U0goKTsKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBDb2xsZWN0aW9uOwotICAgIENvbnNl
cnZhdGl2ZVJvb3RzIHJlZ2lzdGVyRmlsZVJvb3RzKCZtX2Jsb2Nrcyk7CisgICAgQ29uc2VydmF0
aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCkpOwogICAg
IHJlZ2lzdGVyRmlsZSgpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJlZ2lzdGVyRmlsZVJvb3Rz
KTsKICAgICBzaXplX3QgcmVnaXN0ZXJGaWxlUm9vdENvdW50ID0gcmVnaXN0ZXJGaWxlUm9vdHMu
c2l6ZSgpOwogICAgIEpTQ2VsbCoqIHJlZ2lzdGVyUm9vdHMgPSByZWdpc3RlckZpbGVSb290cy5y
b290cygpOwpAQCAtNTUxLDEwICs0NjcsMTAgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogCiAg
ICAgLy8gV2UgZ2F0aGVyIGNvbnNlcnZhdGl2ZSByb290cyBiZWZvcmUgY2xlYXJpbmcgbWFyayBi
aXRzIGJlY2F1c2UgY29uc2VydmF0aXZlCiAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1hcmsg
Yml0cyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICBDb25z
ZXJ2YXRpdmVSb290cyBtYWNoaW5lVGhyZWFkUm9vdHMoJm1fYmxvY2tzKTsKKyAgICBDb25zZXJ2
YXRpdmVSb290cyBtYWNoaW5lVGhyZWFkUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCkpOwog
ICAgIG1fbWFjaGluZVRocmVhZHMuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMobWFjaGluZVRocmVh
ZFJvb3RzLCAmZHVtbXkpOwogCi0gICAgQ29uc2VydmF0aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9v
dHMoJm1fYmxvY2tzKTsKKyAgICBDb25zZXJ2YXRpdmVSb290cyByZWdpc3RlckZpbGVSb290cygm
bV9vYmplY3RTcGFjZS5ibG9ja3MoKSk7CiAgICAgcmVnaXN0ZXJGaWxlKCkuZ2F0aGVyQ29uc2Vy
dmF0aXZlUm9vdHMocmVnaXN0ZXJGaWxlUm9vdHMpOwogCiAgICAgY2xlYXJNYXJrcygpOwpAQCAt
NjA3LDI3ICs1MjMsMjcgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogCiB2b2lkIEhlYXA6OmNs
ZWFyTWFya3MoKQogewotICAgIGZvckVhY2hCbG9jazxDbGVhck1hcmtzPigpOworICAgIG1fb2Jq
ZWN0U3BhY2UuZm9yRWFjaEJsb2NrPENsZWFyTWFya3M+KCk7CiB9CiAKIHZvaWQgSGVhcDo6c3dl
ZXAoKQogewotICAgIGZvckVhY2hCbG9jazxTd2VlcD4oKTsKKyAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hCbG9jazxTd2VlcD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKIHsK
LSAgICByZXR1cm4gZm9yRWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKKyAgICByZXR1cm4gbV9vYmpl
Y3RTcGFjZS5mb3JFYWNoQmxvY2s8TWFya0NvdW50PigpOwogfQogCiBzaXplX3QgSGVhcDo6c2l6
ZSgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxTaXplPigpOworICAgIHJldHVybiBtX29i
amVjdFNwYWNlLmZvckVhY2hCbG9jazxTaXplPigpOwogfQogCiBzaXplX3QgSGVhcDo6Y2FwYWNp
dHkoKQogewotICAgIHJldHVybiBmb3JFYWNoQmxvY2s8Q2FwYWNpdHk+KCk7CisgICAgcmV0dXJu
IG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrPENhcGFjaXR5PigpOwogfQogCiBzaXplX3QgSGVh
cDo6cHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKQpAQCAtNjM3LDcgKzU1Myw3IEBAIHNpemVf
dCBIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCiAKIHNpemVfdCBIZWFwOjpnbG9i
YWxPYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hDZWxsPENvdW50SWZHbG9iYWxP
YmplY3Q+KCk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaENlbGw8Q291bnRJZkds
b2JhbE9iamVjdD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkK
QEAgLTY1Miw3ICs1NjgsNyBAQCBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVj
dGVkT2JqZWN0VHlwZUNvdW50cygpCiAKIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpv
YmplY3RUeXBlQ291bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaENlbGw8UmVjb3JkVHlwZT4o
KTsKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5mb3JFYWNoQ2VsbDxSZWNvcmRUeXBlPigpOwog
fQogCiB2b2lkIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKQEAgLTY5MSw3ICs2MDcsNyBAQCB2
b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnbGUpCiAgICAgLy8gcHJvcG9y
dGlvbiBpcyBhIGJpdCBhcmJpdHJhcnkuIEEgMlggbXVsdGlwbGllciBnaXZlcyBhIDE6MSAoaGVh
cCBzaXplIDoKICAgICAvLyBuZXcgYnl0ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2Vl
bXMgdG8gd29yayB3ZWxsIGluIGJlbmNobWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5
dGVzID0gMiAqIHNpemUoKTsKLSAgICBtX21hcmtlZFNwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4
KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKKyAgICBtX29iamVjdFNw
YWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVy
Q3ljbGUpKTsKICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKIAogICAgICgqbV9hY3Rpdml0
eUNhbGxiYWNrKSgpOwpAQCAtNjk5LDEzICs2MTUsMTMgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3
ZWVwVG9nZ2xlIHN3ZWVwVG9nZ2xlKQogCiB2b2lkIEhlYXA6OmNhbm9uaWNhbGl6ZUJsb2Nrcygp
CiB7Ci0gICAgbV9tYXJrZWRTcGFjZS5jYW5vbmljYWxpemVCbG9ja3MoKTsKKyAgICBtX29iamVj
dFNwYWNlLmNhbm9uaWNhbGl6ZUJsb2NrcygpOwogfQogCiB2b2lkIEhlYXA6OnJlc2V0QWxsb2Nh
dG9yKCkKIHsKICAgICBtX2V4dHJhQ29zdCA9IDA7Ci0gICAgbV9tYXJrZWRTcGFjZS5yZXNldEFs
bG9jYXRvcigpOworICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3IoKTsKIH0KIAogdm9p
ZCBIZWFwOjpzZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNr
PiBhY3Rpdml0eUNhbGxiYWNrKQpAQCAtNzMyLDYxICs2NDgsMTQgQEAgYm9vbCBIZWFwOjppc1Zh
bGlkQWxsb2NhdGlvbihzaXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1hcmtl
ZEJsb2NrKiBIZWFwOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgSGVhcDo6QWxsb2Nh
dGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0KQotewotICAgIE1hcmtlZEJsb2NrKiBibG9jazsK
LSAgICAKLSNpZiAhRU5BQkxFKExBWllfQkxPQ0tfRlJFRUlORykKLSAgICBpZiAoYWxsb2NhdGlv
bkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKHRoaXMsIGNlbGxTaXplKTsKLSNlbHNlCi0g
ICAgewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tMb2NrKTsKLSAgICAg
ICAgaWYgKG1fbnVtYmVyT2ZGcmVlQmxvY2tzKSB7Ci0gICAgICAgICAgICBibG9jayA9IG1fZnJl
ZUJsb2Nrcy5yZW1vdmVIZWFkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2spOwotICAgICAg
ICAgICAgbV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBibG9jayA9IDA7Ci0gICAgfQotICAgIGlmIChibG9jaykKLSAgICAgICAgYmxvY2stPmluaXRG
b3JDZWxsU2l6ZShjZWxsU2l6ZSk7Ci0gICAgZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBB
bGxvY2F0aW9uQ2FuRmFpbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZQotICAgICAgICBi
bG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgY2VsbFNpemUpOwotI2VuZGlmCi0gICAg
Ci0gICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKLQotICAgIHJldHVybiBibG9jazsKLX0KLQogdm9p
ZCBIZWFwOjpmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKQogewotICAgIE1hcmtlZEJsb2Nr
KiBuZXh0OwotICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2NrID0gaGVhZDsgYmxvY2s7IGJsb2Nr
ID0gbmV4dCkgewotICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKLQotICAgICAgICBtX2Js
b2Nrcy5yZW1vdmUoYmxvY2spOwotICAgICAgICBibG9jay0+cmVzZXQoKTsKLSNpZiAhRU5BQkxF
KExBWllfQkxPQ0tfRlJFRUlORykKLSAgICAgICAgTWFya2VkQmxvY2s6OmRlc3Ryb3koYmxvY2sp
OwotI2Vsc2UKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fZnJlZUJsb2NrTG9jayk7Ci0g
ICAgICAgIG1fZnJlZUJsb2Nrcy5hcHBlbmQoYmxvY2spOwotICAgICAgICBtX251bWJlck9mRnJl
ZUJsb2NrcysrOwotI2VuZGlmCi0gICAgfQorICAgIG1fb2JqZWN0U3BhY2UuZnJlZUJsb2Nrcyho
ZWFkKTsKIH0KIAogdm9pZCBIZWFwOjpzaHJpbmsoKQogewotICAgIC8vIFdlIHJlY29yZCBhIHRl
bXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG1fYmxvY2tzIHdoaWxl
IGl0ZXJhdGluZyBpdC4KLSAgICBUYWtlSWZFbXB0eSB0YWtlSWZFbXB0eSgmbV9tYXJrZWRTcGFj
ZSk7Ci0gICAgZnJlZUJsb2Nrcyhmb3JFYWNoQmxvY2sodGFrZUlmRW1wdHkpKTsKKyAgICBtX29i
amVjdFNwYWNlLnNocmluaygpOwogfQogCiAjaWYgRU5BQkxFKExBWllfQkxPQ0tfRlJFRUlORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAppbmRleCAzZDMwOGIzNmFiZGExMTdkN2Y0N2QyNDBm
Yzk5ZTc0OGYxZWFlZmZhLi5kNjI3NzNmZGU0YWM1ZTc2MzAyNGIyZjgwMzAwYjFmN2MzZGExN2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVm
IEhlYXBfaAogI2RlZmluZSBIZWFwX2gKIAorI2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgog
I2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgogI2luY2x1
ZGUgIk1hcmtlZEJsb2NrLmgiCkBAIC0zNyw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgR0NBY3Rpdml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsK
KyAgICBjbGFzcyBIZWFwOwogICAgIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKICAgICBjbGFzcyBK
U0NlbGw7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwpAQCAtNTYsMTAgKzU4LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIAogICAgIC8vIEhlYXAgc2l6ZSBoaW50LgogICAgIGVudW0gSGVhcFNp
emUgeyBTbWFsbEhlYXAsIExhcmdlSGVhcCB9OwotICAgIAorCiAgICAgY2xhc3MgSGVhcCB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhlYXApOwogICAgIHB1YmxpYzoKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1ZSk7IC8v
IDAgZm9yIGltbWVkaWF0ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNDZWxs
Kik7CiAKQEAgLTc2LDcgKzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGVz
dHJveSgpOyAvLyBKU0dsb2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAo
KS4KIAogICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBt
X2dsb2JhbERhdGE7IH0KLSAgICAgICAgTWFya2VkU3BhY2UmIG1hcmtlZFNwYWNlKCkgeyByZXR1
cm4gbV9tYXJrZWRTcGFjZTsgfQorICAgICAgICBBbGxvY2F0aW9uU3BhY2UmIG9iamVjdFNwYWNl
KCkgeyByZXR1cm4gbV9vYmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFj
aGluZVRocmVhZHMoKSB7IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKICAgICAgICAgR0NB
Y3Rpdml0eUNhbGxiYWNrKiBhY3Rpdml0eUNhbGxiYWNrKCk7CkBAIC04NCwxMCArODcsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNv
bGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7Ci0K
KyAgICAgICAgCisgICAgICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0Zvck9i
amVjdChzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5
dGVzKTsgfQogICAgICAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwotICAgICAgICBNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxs
b2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOworCiAgICAgICAgIHZvaWQgbm90aWZ5SXNT
YWZlVG9Db2xsZWN0KCkgeyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0KICAgICAgICAgdm9p
ZCBjb2xsZWN0QWxsR2FyYmFnZSgpOwogCkBAIC0xMTIsMTAgKzExNSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5jdG9yJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9y
Jik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6
OlJldHVyblR5cGUgZm9yRWFjaENlbGwoKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soRnVuY3RvciYp
OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogICAgICAgICAKICAgICAgICAgSGFuZGxlU2xvdCBh
bGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlSGVhcC5hbGxvY2F0ZSgpOyB9
CiAgICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVMb2NhbEhhbmRsZSgpIHsgcmV0dXJuIG1faGFu
ZGxlU3RhY2sucHVzaCgpOyB9CkBAIC0xMjUsMTQgKzEyNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAgICAg
ICAgCi0gICAgICAgIHR5cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9j
a0l0ZXJhdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwogCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwogICAgICAgICAKLSAg
ICAgICAgZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxv
Y2F0aW9uQ2FuRmFpbCB9OwotICAgICAgICAKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICBzdGF0
aWMgdm9pZCB3cml0ZUJhcnJpZXJGYXN0Q2FzZShjb25zdCBKU0NlbGwqIG93bmVyLCBKU0NlbGwq
KTsKICNlbmRpZgpAQCAtMTQyLDcgKzEzOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGNhbm9uaWNhbGl6ZUJsb2NrcygpOwogICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7
CiAKLSAgICAgICAgTWFya2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBB
bGxvY2F0aW9uRWZmb3J0KTsKICAgICAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7
CiAKICAgICAgICAgdm9pZCBjbGVhck1hcmtzKCk7CkBAIC0xNTAsOSArMTQ1LDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNp
dG9yJik7CiAgICAgICAgIHZvaWQgbWFya1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3Im
KTsKICAgICAgICAgdm9pZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKLQotICAgICAgICB2b2lk
KiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Ci0gICAgICAgIHZvaWQqIGFs
bG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgICAgICAKICAgICAg
ICAgZW51bSBTd2VlcFRvZ2dsZSB7IERvTm90U3dlZXAsIERvU3dlZXAgfTsKICAgICAgICAgdm9p
ZCBjb2xsZWN0KFN3ZWVwVG9nZ2xlKTsKQEAgLTE3NSw4ICsxNjcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKICAgICAgICAgCiAg
ICAgICAgIE9wZXJhdGlvbkluUHJvZ3Jlc3MgbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgICAg
ICBNYXJrZWRTcGFjZSBtX21hcmtlZFNwYWNlOwotICAgICAgICBNYXJrZWRCbG9ja1NldCBtX2Js
b2NrczsKKyAgICAgICAgQWxsb2NhdGlvblNwYWNlIG1fb2JqZWN0U3BhY2U7CiAKICNpZiBFTkFC
TEUoTEFaWV9CTE9DS19GUkVFSU5HKQogICAgICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJs
b2NrPiBtX2ZyZWVCbG9ja3M7CkBAIC0zMDYsNTcgKzI5NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgcmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRDZWxsKGZ1bmN0b3IpOwogICAgIH0KIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi0gICAgewotICAg
ICAgICBjYW5vbmljYWxpemVCbG9ja3MoKTsKLSAgICAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBt
X2Jsb2Nrcy5zZXQoKS5lbmQoKTsKLSAgICAgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9i
bG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCkt
PmZvckVhY2hDZWxsKGZ1bmN0b3IpOwotICAgICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1
ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hDZWxsKCkKLSAgICB7Ci0gICAg
ICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICAgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3Ip
OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9y
KQotICAgIHsKLSAgICAgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7Ci0gICAgICAgIEJsb2NrSXRl
cmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgICAgIGZvciAoQmxvY2tJdGVy
YXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAg
ICAgICAgIGZ1bmN0b3IoKml0KTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUo
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQmxvY2soKQotICAgIHsKLSAgICAg
ICAgRnVuY3RvciBmdW5jdG9yOwotICAgICAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3Ip
OwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgSGVhcDo6
c2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcmtl
ZFNwYWNlLnNpemVDbGFzc0ZvcihieXRlcyk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSB2b2lk
KiBIZWFwOjphbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi0gICAg
ewotICAgICAgICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0
aGUgbW9zdCBjb21tb24gY2FzZS4KLSAgICAgICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJz
dEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0gICAgICAgIGlmIChVTkxJS0VM
WSghZmlyc3RGcmVlQ2VsbCkpCi0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShz
aXplQ2xhc3MpOwotICAgICAgICAKLSAgICAgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBm
aXJzdEZyZWVDZWxsLT5uZXh0OwotICAgICAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKLSAgICB9
Ci0KICAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgICAgIE1hcmtl
ZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7Ci0gICAg
ICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOworICAgICAgICByZXR1cm4gbV9vYmplY3RT
cGFjZS5hbGxvY2F0ZShieXRlcyk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKaW5kZXggMzhhZjBjNzQ0
MzdmNTc1OGUwOTc1OTg4MmE5NzQ1NWJmNTIxNzI3MC4uN2VmNmIyOWE3OWExMzdjMTU3ZTNiNWU2
ZTBmNjJhNTg3YjE2MTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVNZXRob2RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxp
bmVNZXRob2RzLmgKQEAgLTM5NCw3ICszOTQsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjpp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIodW5zaWduZWQgc3JjKQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBK
SVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIHZv
aWQqIHZ0YWJsZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsK
LSAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5o
ZWFwLnNpemVDbGFzc0ZvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgTWFya2VkU3BhY2U6OlNp
emVDbGFzcyogc2l6ZUNsYXNzID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5zaXplQ2xhc3NGb3JPYmpl
Y3Qoc2l6ZW9mKENsYXNzVHlwZSkpOwogICAgIGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVl
Q2VsbCwgcmVzdWx0KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlc3Vs
dCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAppbmRleCBjYjU2YTAwYTVjOTg0ZDcwMzNiMmZmMTBjZGVlYTU5ZDExZDEyYmJiLi4xNjQ0Yzg3
YmY1MjUyOWUwNTdhM2M5NWNmNTkyNGE2Mjg0NWYyNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTQ1NCw3ICs0NTQsNyBAQCB2b2lk
IEpTR2xvYmFsRGF0YTo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKQogICAgIC8vIHVwIHRocm93
aW5nIGF3YXkgY29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgogICAgIEFTU0VSVCghZHlu
YW1pY0dsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgaGVhcC5mb3JFYWNoQ2VsbDxSZWNvbXBpbGVy
PigpOworICAgIGhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoQ2VsbDxSZWNvbXBpbGVyPigpOwog
fQogCiBzdHJ1Y3QgU3RhY2tQcmVzZXJ2aW5nUmVjb21waWxlciA6IHB1YmxpYyBNYXJrZWRCbG9j
azo6Vm9pZEZ1bmN0b3IgewpAQCAtNDk1LDcgKzQ5NSw3IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpy
ZWxlYXNlRXhlY3V0YWJsZU1lbW9yeSgpCiAgICAgICAgICAgICAgICAgcmVjb21waWxlci5jdXJy
ZW50bHlFeGVjdXRpbmdGdW5jdGlvbnMuYWRkKHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWN1dGFibGUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgfQotICAgICAgICBo
ZWFwLmZvckVhY2hDZWxsPFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXI+KHJlY29tcGlsZXIpOwor
ICAgICAgICBoZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaENlbGw8U3RhY2tQcmVzZXJ2aW5nUmVj
b21waWxlcj4ocmVjb21waWxlcik7CiAgICAgfQogICAgIG1fcmVnRXhwQ2FjaGUtPmludmFsaWRh
dGVDb2RlKCk7CiAgICAgaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE2
MTNiMWNjZDFjM2YxYzIyZWZmMWZiNWQyNDZjY2Y3ZDA2MzJkNWEuLmI5MWFjZmZiNjE3MDEwZDZm
ODQ3ZDExM2FjZDJmYjQ3YjFlNDI2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
MS0wOS0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFj
dG9yIEhlYXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBj
bGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0
MDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRp
bmcgYSBmb3J3YXJkaW5nIGhlYWRlci4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2hl
YXAvQWxsb2NhdGlvblNwYWNlLmg6IEFkZGVkLgorCiAyMDExLTA5LTE5ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1Y4XSBkb2N1bWVudC5hbGwgZ2V0cyBjb25m
dXNlZCBhYm91dCBpdHMgcHJvdG90eXBlIGNoYWluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0FsbG9jYXRpb25TcGFjZS5oIGIvU291cmNlL1dlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ZTRmNWY0YTAzNGE3NjY5Nzk0Y2VlNzBkY2M4Zjk5ZTI3ZDI1OTE5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
aApAQCAtMCwwICsxLDQgQEAKKyNpZm5kZWYgV2ViQ29yZV9GV0RfQWxsb2NhdGlvblNwYWNlX2gK
KyNkZWZpbmUgV2ViQ29yZV9GV0RfQWxsb2NhdGlvblNwYWNlX2gKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9BbGxvY2F0aW9uU3BhY2UuaD4KKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108019</attachid>
            <date>2011-09-20 10:24:56 -0700</date>
            <delta_ts>2011-09-20 10:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68409-20110920102455.patch</filename>
            <type>text/plain</type>
            <size>40858</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA0MGNiZTc2OGM2NWEzZjIwYTRjZDc3YjA2MDA0NjdkZTExOWEyMzJlLi5mYzUyNmI2
NDkwYjk4ODU5MmZhZGI2ZjczOGM4M2ZlOTUyYmJhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00NSw2ICs0NSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAgICBoZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKICAgICBo
ZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IYW5kbGVIZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNDY3YTZiZTFmOGJiYWVjNzJjYWE5
Y2FjNDg3YzdiNjU3YWEzNmIzLi5iYWNkODMzZjQwYzk2YTFjMWIyOGFlZDRmOTg1Y2IzZmNlMzJi
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMS0wOS0x
OSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhl
YXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBUaGlzIHBh
dGNoIGhvaXN0cyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBNYXJrZWRTcGFjZSBhbmQgcmVs
YXRlZAorICAgICAgICBkYXRhIG91dCBvZiBIZWFwIGFuZCBpbnRvIGEgc2VwYXJhdGUgY2xhc3Mu
ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KKyAgICAgICAgaGF2ZSBtdWx0aXBsZSBhbGxvY2F0aW9u
IHNwYWNlcyBpbiBmdXR1cmUsIHNvIGVhc2luZyB0aGUgd2F5IHRvd2FyZHMKKyAgICAgICAgaGF2
aW5nIEdDJ2QgYmFja2luZyBzdG9yZXMgZm9yIG9iamVjdHMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkFsbG9jYXRpb25TcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0
aW9uU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3Bh
Y2U6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OmZyZWVC
bG9ja3MpOgorICAgICAgICAoSlNDOjpUYWtlSWZFbXB0eTo6VGFrZUlmRW1wdHkpOgorICAgICAg
ICAoSlNDOjpUYWtlSWZFbXB0eTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJZkVt
cHR5OjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2hyaW5r
KToKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6QWxsb2NhdGlvblNwYWNlOjpBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpBbGxv
Y2F0aW9uU3BhY2U6OmJsb2Nrcyk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2l6
ZUNsYXNzRm9yKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpzZXRIaWdoV2F0ZXJN
YXJrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpoaWdoV2F0ZXJNYXJrKToKKyAg
ICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpjYW5vbmljYWxpemVCbG9ja3MpOgorICAgICAg
ICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
QWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbCk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25T
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjphbGxv
Y2F0ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVh
cCk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyTWFy
a3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcCk6CisgICAgICAgIChKU0M6OkhlYXA6Om9i
amVjdENvdW50KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNhbm9uaWNhbGl6ZUJsb2Nrcyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
ZnJlZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnNocmluayk6CisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVjdFNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUNsYXNzRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2Nh
dGUpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpyZWxlYXNlRXhlY3V0YWJsZU1l
bW9yeSk6CisKIDIwMTEtMDktMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHI5NTUyMwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYWZlMzljMzk4Mzc0OWUyZDA1YmQ0ZGZiMmRj
YjZmOTIyODA0MjY2Li5iZTc0YzliMjMxODZmYTliYWIyMDAwNWFiZDY0ZDkxN2ZkODNiZGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMzLDYgKzEz
Myw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAppbmRleCBjYTAyN2VlMmI5Mzk3MmI3MTJmMTAxMTYzYjk4ODcxNDc5NWVmMTU5
Li41MjhhNTE0OGNmNTc0ZTRiZWRhYmVjNWMyM2UzODYyNWYxNzIwOTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTExOCw2ICsxMTgsNyBAQCBfX1pOM0pT
QzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxMUpT
Qnl0ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVT
dHJ1Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1Zh
bHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0
YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCitfX1pOM0pTQzE1QWxsb2NhdGlv
blNwYWNlMTZhbGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9f
Wk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlF
eGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0
ZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0yMzMsNyArMjM0LDYgQEAg
X19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xv
YmFsRGF0YUUKIF9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRD
aGVja0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVSS05TXzdBcmdMaXN0RVJL
TlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291
bnRFdgogX19aTjNKU0M0SGVhcDE2YWN0aXZpdHlDYWxsYmFja0V2Ci1fX1pOM0pTQzRIZWFwMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4zSlNDNEhl
YXAxNm9iamVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VF
dgogX19aTjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA2ODFhZDYzM2RhY2ZhNTM5ODdhMWJmZmFlMDNi
MjVkYmRjZmI0NDg5Li5hZDYzNjFiM2IxOGMwZGRlOTdiYzAzNTUzM2NiYTYxYjMzZjFjMmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNiArMjcs
NyBAQAogICAgICAgICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2Rl
L09wY29kZS5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAg
ICAgICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFu
ZGxlLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKQEAgLTMyNCw2ICszMjUs
NyBAQAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAg
ICAgJ2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwJywKICAgICAgICAgICAgICdieXRlY29t
cGlsZXIvUmVnaXN0ZXJJRC5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwJywKICAgICAgICAg
ICAgICdoZWFwL0hhbmRsZUhlYXAuY3BwJywKICAgICAgICAgICAgICdoZWFwL0hhbmRsZVN0YWNr
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBiYTgy
N2I4MTdlMWRkMTUzNjA2ZWI3MGM4YzlmYzgxNjcyYTJhZjYwLi5jMDZlMmY5N2Q0ODRjY2NiNWY3
MTRmYzU5MDJkYmM5ZmZhMzc1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8KQEAgLTcyLDYgKzcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBc
CiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAorICAgIGhlYXAvQWxsb2NhdGlv
blNwYWNlLmNwcCBcCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAv
SGFuZGxlSGVhcC5jcHAgXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKaW5kZXgg
MDkyNWQzM2NmOTU1YjJmMzJkZDA3ZGU4NDVlMGMyOGY4ODZlODMyNy4uM2IzMDgzNGUyZGQ3ZGI1
ZWM1M2VkYTBlN2M0NzA1MzZjYTA5YWE3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKQEAgLTE4OTAsNiArMTg5MCwxNCBA
QAogCQkJTmFtZT0iaGVhcCIKIAkJCT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Rmls
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwu
LlxoZWFwXEFsbG9jYXRpb25TcGFjZS5jcHAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQWxsb2NhdGlvblNwYWNlLmgiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPC9GaWxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGaWxlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcQ29uc2Vy
dmF0aXZlUm9vdHMuY3BwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZjc0MjFkNzE0Mzc2YTc1YzBjNWUwNDExZjU1ZTYxMGVkZTZhZWM0NC4uZGMw
Yjc2MjE1NzA1YTZjZWVkMmI4ZmM4OTBhZDA4ZTVhOWMxNGJkMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTQwNiw2ICs0MDYsOCBAQAogCQlBMTcxMkIzRjExQzdCMjI4MDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdFeHBDYWNoZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExNzEyQjQxMTFD
N0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExNzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXku
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUQ3
NjQ1MjEzNTQ0NDhCMDBDNUM3QzAgLyogQWxpZ25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3QzAgLyogQWxp
Z25tZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQTcwNDU2QjAxNDI3RkI5MTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcwNDU2QUYxNDI3RkIxNTAw
MzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCUE3MDQ1NkIxMTQyN0ZCOTUwMDM3REE2OCAvKiBBbGxvY2F0
aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcwNDU2QUUxNDI3RkIwMzAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi87IH07
CiAJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi87IH07CiAJCUE3MjcwMDkwMERBQzZC
QkMwMEU1NDhENyAvKiBKU05vdEFuT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MjcwMDc4MERBQzYwNTYwMEU1NDhENyAvKiBKU05vdEFu
T2JqZWN0LmNwcCAqLzsgfTsKIAkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlv
bkhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggKi87IH07CkBA
IC0xMTgyLDYgKzExODQsOCBAQAogCQlBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwQ2FjaGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8q
IFJlZ0V4cEtleS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBLZXku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFENzY0NTExMzU0NDQ4QjAwQzVDN0Mw
IC8qIEFsaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGlnbm1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwNDU2QUUxNDI3RkIwMzAwMzdE
QTY4IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBbGxvY2F0aW9uU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzA0NTZBRjE0MjdGQjE1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsbG9jYXRpb25TcGFjZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzEyMzZFNDExOTVGMzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMy
XzY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wY29kZXMz
Ml82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3MThGNjFBMTE3NTRBMjEw
MDI0NjVBNyAvKiBSZWdFeHBKaXRUYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUmVnRXhwSml0VGFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MThGODIxMTE3OEVCNEIwMDI0NjVBNyAvKiBjcmVhdGVfcmVnZXhfdGFibGVzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBjcmVhdGVfcmVnZXhfdGFibGVzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTYxNyw2ICsxNjIxLDggQEAKIAkJMTQyRTMxMkExMzRGRjBB
NjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCAq
LywKKwkJCQlBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAq
LywKIAkJCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovLAogCQkJCTBGQzgxNTE0MTQwNTExOEQwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5o
ICovLAogCQkJCTBGQzgxNTEyMTQwNTExODYwMENGQTYwMyAvKiBWVGFibGVTcGVjdHJ1bS5jcHAg
Ki8sCkBAIC0yNzkzLDYgKzI3OTksNyBAQAogCQkJCUE3QkMwQzgyMTQwNjA4QjAwMEIxQkI3MSAv
KiBDaGVja2VkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTc4MUUzNTkxNDE5NzBD
NzAwMDk0RDkwIC8qIFN0b3JhZ2VCYXJyaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTA4Mjc3
QTE0MjE2OEQ3MDA5MENDQUMgLyogQmluYXJ5U2VtYXBob3JlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBNzA0NTZCMDE0MjdGQjkxMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTMyOTgsNiArMzMwNSw3IEBACiAJCQkJQzIyQzUyRkUxM0ZBRjZFRjAwQjdEQzBE
IC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQlDMjJDNTMxMzEzRkFGNkVGMDBC
N0RDMEQgLyogc3RydG9kLmNjIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEwODI3NzkxNDIxNjhENzAw
OTBDQ0FDIC8qIEJpbmFyeVNlbWFwaG9yZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNzA0NTZC
MTE0MjdGQjk1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggNjEwNDRh
ODljNzllZTZiMTNmNjg4OWYyODMzNzhmZGU1ZjJmODM0Mi4uMTNkNmFkOGYzMDhkZDdjNmU2MzUw
ODZlMDhiZWU5OTI0MmM3NGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVjb21waWxl
QWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICAgICByZXR1cm47
CiAKICAgICBSZWNvbXBpbGVyIHJlY29tcGlsZXIodGhpcyk7Ci0gICAgZ2xvYmFsRGF0YS0+aGVh
cC5mb3JFYWNoQ2VsbChyZWNvbXBpbGVyKTsKKyAgICBnbG9iYWxEYXRhLT5oZWFwLm9iamVjdFNw
YWNlKCkuZm9yRWFjaENlbGwocmVjb21waWxlcik7CiB9CiAKIEpTVmFsdWUgZXZhbHVhdGVJbkds
b2JhbENhbGxGcmFtZShjb25zdCBVU3RyaW5nJiBzY3JpcHQsIEpTVmFsdWUmIGV4Y2VwdGlvbiwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQxYzEyN2JiMDdkZWM2NDY0OWNl
NDQ0OTc0NzJlOTNkODdiNmY0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgi
CisKKyNpbmNsdWRlICJIZWFwLmgiCisKKyNkZWZpbmUgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FU
SU9OIDAKKworbmFtZXNwYWNlIEpTQyB7CisKK2lubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6
OnRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAgICBt
X2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247CisgICAgdm9pZCogcmVz
dWx0ID0gbV9tYXJrZWRTcGFjZS5hbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIG1faGVhcC0+bV9v
cGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
Kwordm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyNpZiBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04K
KyAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOworICAgIEFTU0VSVChtX2hlYXAtPm1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7CisjZW5kaWYKKyAgICAKKyAgICB2b2lkKiByZXN1
bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAgIAorICAgIGlmIChMSUtFTFkocmVzdWx0
ICE9IDApKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIEFsbG9jYXRpb25FZmZv
cnQgYWxsb2NhdGlvbkVmZm9ydDsKKyAgICAKKyAgICBpZiAobV9tYXJrZWRTcGFjZS53YXRlck1h
cmsoKSA8IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpIHx8ICFtX2hlYXAtPm1faXNTYWZl
VG9Db2xsZWN0KQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbk11c3RTdWNj
ZWVkOworICAgIGVsc2UKKyAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25DYW5G
YWlsOworICAgIAorICAgIE1hcmtlZEJsb2NrKiBibG9jayA9IGFsbG9jYXRlQmxvY2soc2l6ZUNs
YXNzLmNlbGxTaXplLCBhbGxvY2F0aW9uRWZmb3J0KTsKKyAgICBpZiAoYmxvY2spIHsKKyAgICAg
ICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3MsIGJsb2NrKTsKKyAgICAgICAgdm9p
ZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAgICAgQVNTRVJUKHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIG1faGVhcC0+Y29s
bGVjdChIZWFwOjpEb05vdFN3ZWVwKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShz
aXplQ2xhc3MpOworICAgIAorICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgCisgICAgQVNTRVJUKG1fbWFya2VkU3BhY2Uud2F0ZXJNYXJrKCkgPCBtX21hcmtlZFNw
YWNlLmhpZ2hXYXRlck1hcmsoKSk7CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9jayhz
aXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxvY2F0aW9uTXVz
dFN1Y2NlZWQpKTsKKyAgICAKKyAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwor
ICAgIEFTU0VSVChyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK01hcmtlZEJsb2Nr
KiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0
aW9uU3BhY2U6OkFsbG9jYXRpb25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydCkKK3sKKyAgICBNYXJr
ZWRCbG9jayogYmxvY2s7CisgICAgCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOworICAgICAgICBpZiAobV9oZWFwLT5tX251bWJlck9m
RnJlZUJsb2NrcykgeworICAgICAgICAgICAgYmxvY2sgPSBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5y
ZW1vdmVIZWFkKCk7CisgICAgICAgICAgICBBU1NFUlQoYmxvY2spOworICAgICAgICAgICAgbV9o
ZWFwLT5tX251bWJlck9mRnJlZUJsb2Nrcy0tOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGJsb2NrID0gMDsKKyAgICB9CisgICAgaWYgKGJsb2NrKQorICAgICAgICBibG9jay0+aW5pdEZv
ckNlbGxTaXplKGNlbGxTaXplKTsKKyAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFs
bG9jYXRpb25DYW5GYWlsKQorICAgICAgICByZXR1cm4gMDsKKyAgICBlbHNlCisgICAgICAgIGJs
b2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAsIGNlbGxTaXplKTsKKyAgICAKKyAgICBt
X2Jsb2Nrcy5hZGQoYmxvY2spOworICAgIAorICAgIHJldHVybiBibG9jazsKK30KKwordm9pZCBB
bGxvY2F0aW9uU3BhY2U6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpCit7CisgICAgTWFy
a2VkQmxvY2sqIG5leHQ7CisgICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sgPSBoZWFkOyBibG9j
azsgYmxvY2sgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOworICAgICAg
ICAKKyAgICAgICAgbV9ibG9ja3MucmVtb3ZlKGJsb2NrKTsKKyAgICAgICAgYmxvY2stPnJlc2V0
KCk7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7
CisgICAgICAgIG1faGVhcC0+bV9mcmVlQmxvY2tzLmFwcGVuZChibG9jayk7CisgICAgICAgIG1f
aGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MrKzsKKyAgICB9Cit9CisKK2NsYXNzIFRha2VJZkVt
cHR5IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOworICAg
IAorICAgIFRha2VJZkVtcHR5KE1hcmtlZFNwYWNlKik7CisgICAgdm9pZCBvcGVyYXRvcigpKE1h
cmtlZEJsb2NrKik7CisgICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOworICAgIAorcHJpdmF0
ZToKKyAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKKyAgICBEb3VibHlMaW5rZWRMaXN0
PE1hcmtlZEJsb2NrPiBtX2VtcHRpZXM7Cit9OworCitpbmxpbmUgVGFrZUlmRW1wdHk6OlRha2VJ
ZkVtcHR5KE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKKyAgICA6IG1fbWFya2VkU3BhY2UobmV3U3Bh
Y2UpCit7Cit9CisKK2lubGluZSB2b2lkIFRha2VJZkVtcHR5OjpvcGVyYXRvcigpKE1hcmtlZEJs
b2NrKiBibG9jaykKK3sKKyAgICBpZiAoIWJsb2NrLT5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLT5yZW1vdmVCbG9jayhibG9jayk7CisgICAgbV9l
bXB0aWVzLmFwcGVuZChibG9jayk7Cit9CisKK2lubGluZSBUYWtlSWZFbXB0eTo6UmV0dXJuVHlw
ZSBUYWtlSWZFbXB0eTo6cmV0dXJuVmFsdWUoKQoreworICAgIHJldHVybiBtX2VtcHRpZXMuaGVh
ZCgpOworfQorCit2b2lkIEFsbG9jYXRpb25TcGFjZTo6c2hyaW5rKCkKK3sKKyAgICAvLyBXZSBy
ZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlmeWluZyBtX2Js
b2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCisgICAgVGFrZUlmRW1wdHkgdGFrZUlmRW1wdHkoJm1f
bWFya2VkU3BhY2UpOworICAgIGZyZWVCbG9ja3MoZm9yRWFjaEJsb2NrKHRha2VJZkVtcHR5KSk7
Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRp
b25TcGFjZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMjViOTVlMzVjOTAxNjUwOTk3ZGRhOWMxNTc3MjNmOWZiMGQ4NGE0OQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFj
ZS5oCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBBbGxvY2F0aW9uU3Bh
Y2VfaAorI2RlZmluZSBBbGxvY2F0aW9uU3BhY2VfaAorCisjaW5jbHVkZSAiTWFya2VkQmxvY2tT
ZXQuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7CitjbGFzcyBNYXJrZWRCbG9jazsK
KworY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKK3B1YmxpYzoKKyAgICBBbGxvY2F0aW9uU3BhY2Uo
SGVhcCogaGVhcCkKKyAgICAgICAgOiBtX2hlYXAoaGVhcCkKKyAgICAgICAgLCBtX21hcmtlZFNw
YWNlKGhlYXApCisgICAgeworICAgIH0KKyAgICAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8TWFya2Vk
QmxvY2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKKyAgICAKKyAgICBNYXJrZWRCbG9ja1Nl
dCYgYmxvY2tzKCkgeyByZXR1cm4gbV9ibG9ja3M7IH0KKyAgICBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJiBzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX21hcmtlZFNwYWNlLnNp
emVDbGFzc0ZvcihieXRlcyk7IH0KKyAgICB2b2lkIHNldEhpZ2hXYXRlck1hcmsoc2l6ZV90IGJ5
dGVzKSB7IG1fbWFya2VkU3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhieXRlcyk7IH0KKyAgICBzaXpl
X3QgaGlnaFdhdGVyTWFyaygpIHsgcmV0dXJuIG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygp
OyB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbCgpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5
cGUgZm9yRWFjaEJsb2NrKEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOworICAgIAorICAg
IHZvaWQgY2Fub25pY2FsaXplQmxvY2tzKCkgeyBtX21hcmtlZFNwYWNlLmNhbm9uaWNhbGl6ZUJs
b2NrcygpOyB9CisgICAgdm9pZCByZXNldEFsbG9jYXRvcigpIHsgbV9tYXJrZWRTcGFjZS5yZXNl
dEFsbG9jYXRvcigpOyB9CisgICAgCisgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90KTsKKyAgICB2
b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqKTsKKyAgICB2b2lkIHNocmluaygpOworICAgIAor
cHJpdmF0ZToKKyAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2Nl
ZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07CisgICAgCisgICAgdm9pZCogYWxsb2NhdGUoTWFya2Vk
U3BhY2U6OlNpemVDbGFzcyYpOworICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmKTsKKyAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmKTsKKyAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUs
IEFsbG9jYXRpb25FZmZvcnQpOworICAgIAorICAgIEhlYXAqIG1faGVhcDsKKyAgICBNYXJrZWRT
cGFjZSBtX21hcmtlZFNwYWNlOworICAgIE1hcmtlZEJsb2NrU2V0IG1fYmxvY2tzOworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVy
blR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQorewor
ICAgIGNhbm9uaWNhbGl6ZUJsb2NrcygpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9j
a3Muc2V0KCkuZW5kKCk7CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0
KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+Zm9yRWFjaENlbGwo
ZnVuY3Rvcik7CisgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
QWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbCgpCit7CisgICAgRnVuY3RvciBmdW5jdG9yOwor
ICAgIHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNw
YWNlOjpmb3JFYWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBjYW5vbmljYWxpemVC
bG9ja3MoKTsKKyAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwor
ICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKKyAgICAgICAgZnVuY3RvcigqaXQpOworICAgIHJldHVybiBmdW5jdG9yLnJl
dHVyblZhbHVlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaEJsb2NrKCkK
K3sKKyAgICBGdW5jdG9yIGZ1bmN0b3I7CisgICAgcmV0dXJuIGZvckVhY2hCbG9jayhmdW5jdG9y
KTsKK30KKworaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6YWxsb2NhdGUoTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQoreworICAgIC8vIFRoaXMgaXMgYSBsaWdodC13ZWln
aHQgZmFzdCBwYXRoIHRvIGNvdmVyIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgorICAgIE1hcmtlZEJs
b2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsOwor
ICAgIGlmIChVTkxJS0VMWSghZmlyc3RGcmVlQ2VsbCkpCisgICAgICAgIHJldHVybiBhbGxvY2F0
ZVNsb3dDYXNlKHNpemVDbGFzcyk7CisgICAgCisgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwg
PSBmaXJzdEZyZWVDZWxsLT5uZXh0OworICAgIHJldHVybiBmaXJzdEZyZWVDZWxsOworfQorCitp
bmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZShzaXplX3QgYnl0ZXMpCit7Cisg
ICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6ZUNsYXNzRm9yKGJ5dGVz
KTsKKyAgICByZXR1cm4gYWxsb2NhdGUoc2l6ZUNsYXNzKTsKK30KKworfQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMjZlNGVmNDdmYmQ1ZTA5YWU5YTU0YWM5
MTNlNjk4ZjU2NmQ0YzBhNy4uOWI0ZWQ2YWUwMjVlNDIxNzBhMGI5NTFiOWYxYTc5MGI2MjU5ZGI0
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJUcmFjaW5nLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCi0jZGVmaW5lIENPTExF
Q1RfT05fRVZFUllfQUxMT0NBVElPTiAwCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBu
YW1lc3BhY2UgSlNDOwpAQCAtMTc1LDM4ICsxNzQsNiBAQCBpbmxpbmUgdm9pZCBDb3VudElmR2xv
YmFsT2JqZWN0OjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKICAgICBjb3VudCgxKTsKIH0KIAot
Y2xhc3MgVGFrZUlmRW1wdHkgewotcHVibGljOgotICAgIHR5cGVkZWYgTWFya2VkQmxvY2sqIFJl
dHVyblR5cGU7Ci0KLSAgICBUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSopOwotICAgIHZvaWQgb3Bl
cmF0b3IoKShNYXJrZWRCbG9jayopOwotICAgIFJldHVyblR5cGUgcmV0dXJuVmFsdWUoKTsKLQot
cHJpdmF0ZToKLSAgICBNYXJrZWRTcGFjZSogbV9tYXJrZWRTcGFjZTsKLSAgICBEb3VibHlMaW5r
ZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2VtcHRpZXM7Ci19OwotCi1pbmxpbmUgVGFrZUlmRW1wdHk6
OlRha2VJZkVtcHR5KE1hcmtlZFNwYWNlKiBuZXdTcGFjZSkKLSAgICA6IG1fbWFya2VkU3BhY2Uo
bmV3U3BhY2UpCi17Ci19Ci0KLWlubGluZSB2b2lkIFRha2VJZkVtcHR5OjpvcGVyYXRvcigpKE1h
cmtlZEJsb2NrKiBibG9jaykKLXsKLSAgICBpZiAoIWJsb2NrLT5pc0VtcHR5KCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJsb2NrKGJsb2NrKTsKLSAgICBt
X2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKLX0KLQotaW5saW5lIFRha2VJZkVtcHR5OjpSZXR1cm5U
eXBlIFRha2VJZkVtcHR5OjpyZXR1cm5WYWx1ZSgpCi17Ci0gICAgcmV0dXJuIG1fZW1wdGllcy5o
ZWFkKCk7Ci19Ci0KIGNsYXNzIFJlY29yZFR5cGUgewogcHVibGljOgogICAgIHR5cGVkZWYgUGFz
c093blB0cjxUeXBlQ291bnRTZXQ+IFJldHVyblR5cGU7CkBAIC0yNDksNyArMjE2LDcgQEAgSGVh
cDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEhlYXBTaXplIGhlYXBTaXplKQogICAg
IDogbV9oZWFwU2l6ZShoZWFwU2l6ZSkKICAgICAsIG1fbWluQnl0ZXNQZXJDeWNsZShoZWFwU2l6
ZUZvckhpbnQoaGVhcFNpemUpKQogICAgICwgbV9vcGVyYXRpb25JblByb2dyZXNzKE5vT3BlcmF0
aW9uKQotICAgICwgbV9tYXJrZWRTcGFjZSh0aGlzKQorICAgICwgbV9vYmplY3RTcGFjZSh0aGlz
KQogICAgICwgbV9leHRyYUNvc3QoMCkKICAgICAsIG1fbWFya0xpc3RTZXQoMCkKICAgICAsIG1f
YWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNhbGxiYWNrOjpjcmVhdGUodGhpcykp
CkBAIC0yNTksNyArMjI2LDcgQEAgSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEhlYXBTaXplIGhlYXBTaXplKQogICAgICwgbV9pc1NhZmVUb0NvbGxlY3QoZmFsc2UpCiAgICAg
LCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKIHsKLSAgICBtX21hcmtlZFNwYWNlLnNldEhpZ2hX
YXRlck1hcmsobV9taW5CeXRlc1BlckN5Y2xlKTsKKyAgICBtX29iamVjdFNwYWNlLnNldEhpZ2hX
YXRlck1hcmsobV9taW5CeXRlc1BlckN5Y2xlKTsKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjayko
KTsKICAgICBtX251bWJlck9mRnJlZUJsb2NrcyA9IDA7CiAgICAgbV9ibG9ja0ZyZWVpbmdUaHJl
YWQgPSBjcmVhdGVUaHJlYWQoYmxvY2tGcmVlaW5nVGhyZWFkU3RhcnRGdW5jLCB0aGlzLCAiSmF2
YVNjcmlwdENvcmU6OkJsb2NrRnJlZSIpOwpAQCAtMzkzLDYyICszNjAsMTEgQEAgdm9pZCBIZWFw
OjpyZXBvcnRFeHRyYU1lbW9yeUNvc3RTbG93Q2FzZShzaXplX3QgY29zdCkKICAgICAvLyBpZiBh
IGxhcmdlIHZhbHVlIHN1cnZpdmVzIG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24sIHRoZXJlIGlzIG5v
dCBtdWNoIHBvaW50IHRvCiAgICAgLy8gY29sbGVjdGluZyBtb3JlIGZyZXF1ZW50bHkgYXMgbG9u
ZyBhcyBpdCBzdGF5cyBhbGl2ZS4KIAotICAgIGlmIChtX2V4dHJhQ29zdCA+IG1heEV4dHJhQ29z
dCAmJiBtX2V4dHJhQ29zdCA+IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpIC8gMikKKyAg
ICBpZiAobV9leHRyYUNvc3QgPiBtYXhFeHRyYUNvc3QgJiYgbV9leHRyYUNvc3QgPiBtX29iamVj
dFNwYWNlLmhpZ2hXYXRlck1hcmsoKSAvIDIpCiAgICAgICAgIGNvbGxlY3RBbGxHYXJiYWdlKCk7
CiAgICAgbV9leHRyYUNvc3QgKz0gY29zdDsKIH0KIAotaW5saW5lIHZvaWQqIEhlYXA6OnRyeUFs
bG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSAgICBtX29wZXJh
dGlvbkluUHJvZ3Jlc3MgPSBBbGxvY2F0aW9uOwotICAgIHZvaWQqIHJlc3VsdCA9IG1fbWFya2Vk
U3BhY2UuYWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBO
b09wZXJhdGlvbjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lkKiBIZWFwOjphbGxvY2F0
ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKLXsKLSNpZiBDT0xM
RUNUX09OX0VWRVJZX0FMTE9DQVRJT04KLSAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOwotICAgIEFT
U0VSVChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOwotI2VuZGlmCi0KLSAg
ICB2b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotCi0gICAgaWYgKExJS0VM
WShyZXN1bHQgIT0gMCkpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICBBbGxvY2F0aW9u
RWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7Ci0gICAgCi0gICAgaWYgKG1fbWFya2VkU3BhY2Uud2F0
ZXJNYXJrKCkgPCBtX21hcmtlZFNwYWNlLmhpZ2hXYXRlck1hcmsoKSB8fCAhbV9pc1NhZmVUb0Nv
bGxlY3QpCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQ7
Ci0gICAgZWxzZQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNhbkZhaWw7
Ci0gICAgCi0gICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhzaXplQ2xhc3Mu
Y2VsbFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOwotICAgIGlmIChibG9jaykgewotICAgICAgICBt
X21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOwotICAgICAgICB2b2lkKiBy
ZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgICAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBjb2xsZWN0KERvTm90U3dlZXAp
OwotICAgIAotICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgCi0gICAg
aWYgKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAKLSAgICBBU1NFUlQobV9t
YXJrZWRTcGFjZS53YXRlck1hcmsoKSA8IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpKTsK
LSAgICAKLSAgICBtX21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYWxsb2NhdGVCbG9j
ayhzaXplQ2xhc3MuY2VsbFNpemUsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCkpOwotICAgIAotICAg
IHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgQVNTRVJUKHJlc3VsdCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogdm9pZCBIZWFwOjpwcm90ZWN0KEpTVmFsdWUgaykKIHsK
ICAgICBBU1NFUlQoayk7CkBAIC01MjEsNyArNDM3LDcgQEAgdm9pZCBIZWFwOjpnZXRDb25zZXJ2
YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKQogICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgIT0gTm9PcGVyYXRpb24pCiAgICAgICAgIENSQVNIKCk7CiAgICAg
bV9vcGVyYXRpb25JblByb2dyZXNzID0gQ29sbGVjdGlvbjsKLSAgICBDb25zZXJ2YXRpdmVSb290
cyByZWdpc3RlckZpbGVSb290cygmbV9ibG9ja3MpOworICAgIENvbnNlcnZhdGl2ZVJvb3RzIHJl
Z2lzdGVyRmlsZVJvb3RzKCZtX29iamVjdFNwYWNlLmJsb2NrcygpKTsKICAgICByZWdpc3RlckZp
bGUoKS5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhyZWdpc3RlckZpbGVSb290cyk7CiAgICAgc2l6
ZV90IHJlZ2lzdGVyRmlsZVJvb3RDb3VudCA9IHJlZ2lzdGVyRmlsZVJvb3RzLnNpemUoKTsKICAg
ICBKU0NlbGwqKiByZWdpc3RlclJvb3RzID0gcmVnaXN0ZXJGaWxlUm9vdHMucm9vdHMoKTsKQEAg
LTU0MywxMCArNDU5LDEwIEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKIAogICAgIC8vIFdlIGdh
dGhlciBjb25zZXJ2YXRpdmUgcm9vdHMgYmVmb3JlIGNsZWFyaW5nIG1hcmsgYml0cyBiZWNhdXNl
IGNvbnNlcnZhdGl2ZQogICAgIC8vIGdhdGhlcmluZyB1c2VzIHRoZSBtYXJrIGJpdHMgdG8gZGV0
ZXJtaW5lIHdoZXRoZXIgYSByZWZlcmVuY2UgaXMgdmFsaWQuCi0gICAgQ29uc2VydmF0aXZlUm9v
dHMgbWFjaGluZVRocmVhZFJvb3RzKCZtX2Jsb2Nrcyk7CisgICAgQ29uc2VydmF0aXZlUm9vdHMg
bWFjaGluZVRocmVhZFJvb3RzKCZtX29iamVjdFNwYWNlLmJsb2NrcygpKTsKICAgICBtX21hY2hp
bmVUaHJlYWRzLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKG1hY2hpbmVUaHJlYWRSb290cywgJmR1
bW15KTsKIAotICAgIENvbnNlcnZhdGl2ZVJvb3RzIHJlZ2lzdGVyRmlsZVJvb3RzKCZtX2Jsb2Nr
cyk7CisgICAgQ29uc2VydmF0aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fb2JqZWN0U3Bh
Y2UuYmxvY2tzKCkpOwogICAgIHJlZ2lzdGVyRmlsZSgpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3Rz
KHJlZ2lzdGVyRmlsZVJvb3RzKTsKIAogICAgIGNsZWFyTWFya3MoKTsKQEAgLTU5OSwyNyArNTE1
LDI3IEBAIHZvaWQgSGVhcDo6bWFya1Jvb3RzKCkKIAogdm9pZCBIZWFwOjpjbGVhck1hcmtzKCkK
IHsKLSAgICBmb3JFYWNoQmxvY2s8Q2xlYXJNYXJrcz4oKTsKKyAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hCbG9jazxDbGVhck1hcmtzPigpOwogfQogCiB2b2lkIEhlYXA6OnN3ZWVwKCkKIHsKLSAg
ICBmb3JFYWNoQmxvY2s8U3dlZXA+KCk7CisgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2s8
U3dlZXA+KCk7CiB9CiAKIHNpemVfdCBIZWFwOjpvYmplY3RDb3VudCgpCiB7Ci0gICAgcmV0dXJu
IGZvckVhY2hCbG9jazxNYXJrQ291bnQ+KCk7CisgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9y
RWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OnNpemUoKQogewotICAg
IHJldHVybiBmb3JFYWNoQmxvY2s8U2l6ZT4oKTsKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoQmxvY2s8U2l6ZT4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OmNhcGFjaXR5KCkKIHsKLSAg
ICByZXR1cm4gZm9yRWFjaEJsb2NrPENhcGFjaXR5PigpOworICAgIHJldHVybiBtX29iamVjdFNw
YWNlLmZvckVhY2hCbG9jazxDYXBhY2l0eT4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3RlY3Rl
ZEdsb2JhbE9iamVjdENvdW50KCkKQEAgLTYyOSw3ICs1NDUsNyBAQCBzaXplX3QgSGVhcDo6cHJv
dGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKQogCiBzaXplX3QgSGVhcDo6Z2xvYmFsT2JqZWN0Q291
bnQoKQogewotICAgIHJldHVybiBmb3JFYWNoQ2VsbDxDb3VudElmR2xvYmFsT2JqZWN0PigpOwor
ICAgIHJldHVybiBtX29iamVjdFNwYWNlLmZvckVhY2hDZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+
KCk7CiB9CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRPYmplY3RDb3VudCgpCkBAIC02NDQsNyAr
NTYwLDcgQEAgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IEhlYXA6OnByb3RlY3RlZE9iamVjdFR5
cGVDb3VudHMoKQogCiBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gSGVhcDo6b2JqZWN0VHlwZUNv
dW50cygpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hDZWxsPFJlY29yZFR5cGU+KCk7CisgICAgcmV0
dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaENlbGw8UmVjb3JkVHlwZT4oKTsKIH0KIAogdm9pZCBI
ZWFwOjpjb2xsZWN0QWxsR2FyYmFnZSgpCkBAIC02ODMsNyArNTk5LDcgQEAgdm9pZCBIZWFwOjpj
b2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZ2xlKQogICAgIC8vIHByb3BvcnRpb24gaXMgYSBi
aXQgYXJiaXRyYXJ5LiBBIDJYIG11bHRpcGxpZXIgZ2l2ZXMgYSAxOjEgKGhlYXAgc2l6ZSA6CiAg
ICAgLy8gbmV3IGJ5dGVzIGFsbG9jYXRlZCkgcHJvcG9ydGlvbiwgYW5kIHNlZW1zIHRvIHdvcmsg
d2VsbCBpbiBiZW5jaG1hcmtzLgogICAgIHNpemVfdCBwcm9wb3J0aW9uYWxCeXRlcyA9IDIgKiBz
aXplKCk7Ci0gICAgbV9tYXJrZWRTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9u
YWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CisgICAgbV9vYmplY3RTcGFjZS5zZXRIaWdo
V2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CiAg
ICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7CiAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjayko
KTsKQEAgLTY5MSwxMyArNjA3LDEzIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBz
d2VlcFRvZ2dsZSkKIAogdm9pZCBIZWFwOjpjYW5vbmljYWxpemVCbG9ja3MoKQogewotICAgIG1f
bWFya2VkU3BhY2UuY2Fub25pY2FsaXplQmxvY2tzKCk7CisgICAgbV9vYmplY3RTcGFjZS5jYW5v
bmljYWxpemVCbG9ja3MoKTsKIH0KIAogdm9pZCBIZWFwOjpyZXNldEFsbG9jYXRvcigpCiB7CiAg
ICAgbV9leHRyYUNvc3QgPSAwOwotICAgIG1fbWFya2VkU3BhY2UucmVzZXRBbGxvY2F0b3IoKTsK
KyAgICBtX29iamVjdFNwYWNlLnJlc2V0QWxsb2NhdG9yKCk7CiB9CiAKIHZvaWQgSGVhcDo6c2V0
QWN0aXZpdHlDYWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4gYWN0aXZpdHlD
YWxsYmFjaykKQEAgLTcyNCw1MCArNjQwLDE0IEBAIGJvb2wgSGVhcDo6aXNWYWxpZEFsbG9jYXRp
b24oc2l6ZV90IGJ5dGVzKQogICAgIHJldHVybiB0cnVlOwogfQogCi1NYXJrZWRCbG9jayogSGVh
cDo6YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUsIEhlYXA6OkFsbG9jYXRpb25FZmZvcnQg
YWxsb2NhdGlvbkVmZm9ydCkKLXsKLSAgICBNYXJrZWRCbG9jayogYmxvY2s7Ci0gICAgCi0gICAg
ewotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAg
aWYgKG1fbnVtYmVyT2ZGcmVlQmxvY2tzKSB7Ci0gICAgICAgICAgICBibG9jayA9IG1fZnJlZUJs
b2Nrcy5yZW1vdmVIZWFkKCk7Ci0gICAgICAgICAgICBBU1NFUlQoYmxvY2spOwotICAgICAgICAg
ICAgbV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBi
bG9jayA9IDA7Ci0gICAgfQotICAgIGlmIChibG9jaykKLSAgICAgICAgYmxvY2stPmluaXRGb3JD
ZWxsU2l6ZShjZWxsU2l6ZSk7Ci0gICAgZWxzZSBpZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxv
Y2F0aW9uQ2FuRmFpbCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZQotICAgICAgICBibG9j
ayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUodGhpcywgY2VsbFNpemUpOwotICAgIAotICAgIG1fYmxv
Y2tzLmFkZChibG9jayk7Ci0KLSAgICByZXR1cm4gYmxvY2s7Ci19Ci0KIHZvaWQgSGVhcDo6ZnJl
ZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKIHsKLSAgICBNYXJrZWRCbG9jayogbmV4dDsKLSAg
ICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IGhlYWQ7IGJsb2NrOyBibG9jayA9IG5leHQpIHsK
LSAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7Ci0KLSAgICAgICAgbV9ibG9ja3MucmVtb3Zl
KGJsb2NrKTsKLSAgICAgICAgYmxvY2stPnJlc2V0KCk7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxv
Y2tlcihtX2ZyZWVCbG9ja0xvY2spOwotICAgICAgICBtX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2Nr
KTsKLSAgICAgICAgbV9udW1iZXJPZkZyZWVCbG9ja3MrKzsKLSAgICB9CisgICAgbV9vYmplY3RT
cGFjZS5mcmVlQmxvY2tzKGhlYWQpOwogfQogCiB2b2lkIEhlYXA6OnNocmluaygpCiB7Ci0gICAg
Ly8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGllcyB0byBhdm9pZCBtb2RpZnlp
bmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgotICAgIFRha2VJZkVtcHR5IHRha2VJZkVt
cHR5KCZtX21hcmtlZFNwYWNlKTsKLSAgICBmcmVlQmxvY2tzKGZvckVhY2hCbG9jayh0YWtlSWZF
bXB0eSkpOworICAgIG1fb2JqZWN0U3BhY2Uuc2hyaW5rKCk7CiB9CiAKIHZvaWQgSGVhcDo6cmVs
ZWFzZUZyZWVCbG9ja3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCmluZGV4IDNkNTkyNTk2
MTJmNWM1NzhkZjYyN2U4MDNiNzFiMjRhYjI4ZmU4NjcuLjRmZjI2MDNiZDBkNTJlNmFmMjY1NGMz
MDAwZjllODFjNjU1MmYxMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKQEAgLTIyLDYg
KzIyLDcgQEAKICNpZm5kZWYgSGVhcF9oCiAjZGVmaW5lIEhlYXBfaAogCisjaW5jbHVkZSAiQWxs
b2NhdGlvblNwYWNlLmgiCiAjaW5jbHVkZSAiSGFuZGxlSGVhcC5oIgogI2luY2x1ZGUgIkhhbmRs
ZVN0YWNrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKQEAgLTM3LDYgKzM4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBHQ0FjdGl2aXR5Q2FsbGJhY2s7CiAgICAgY2xhc3Mg
R2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIEhlYXA7CiAgICAgY2xhc3MgSGVhcFJvb3RWaXNp
dG9yOwogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CkBAIC01Niwx
MCArNTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgLy8gSGVhcCBzaXplIGhpbnQu
CiAgICAgZW51bSBIZWFwU2l6ZSB7IFNtYWxsSGVhcCwgTGFyZ2VIZWFwIH07Ci0gICAgCisKICAg
ICBjbGFzcyBIZWFwIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGVhcCk7CiAgICAg
cHVibGljOgorICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBzdGF0aWMgSGVhcCog
aGVhcChKU1ZhbHVlKTsgLy8gMCBmb3IgaW1tZWRpYXRlIHZhbHVlcwogICAgICAgICBzdGF0aWMg
SGVhcCogaGVhcChKU0NlbGwqKTsKIApAQCAtNzYsNyArNzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBkZXN0cm95KCk7IC8vIEpTR2xvYmFsRGF0YSBtdXN0IGNhbGwgZGVzdHJv
eSgpIGJlZm9yZSB+SGVhcCgpLgogCiAgICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsRGF0YTsgfQotICAgICAgICBNYXJrZWRTcGFjZSYgbWFy
a2VkU3BhY2UoKSB7IHJldHVybiBtX21hcmtlZFNwYWNlOyB9CisgICAgICAgIEFsbG9jYXRpb25T
cGFjZSYgb2JqZWN0U3BhY2UoKSB7IHJldHVybiBtX29iamVjdFNwYWNlOyB9CiAgICAgICAgIE1h
Y2hpbmVUaHJlYWRzJiBtYWNoaW5lVGhyZWFkcygpIHsgcmV0dXJuIG1fbWFjaGluZVRocmVhZHM7
IH0KIAogICAgICAgICBHQ0FjdGl2aXR5Q2FsbGJhY2sqIGFjdGl2aXR5Q2FsbGJhY2soKTsKQEAg
LTg0LDEwICs4NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyB0cnVlIGlmIGFu
IGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBwcm9ncmVzcwogICAgICAgICBpbmxpbmUg
Ym9vbCBpc0J1c3koKTsKLQorICAgICAgICAKKyAgICAgICAgTWFya2VkU3BhY2U6OlNpemVDbGFz
cyYgc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOyB9CiAgICAgICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdCk7
Ci0gICAgICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QpOwot
ICAgICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisKICAgICAg
ICAgdm9pZCBub3RpZnlJc1NhZmVUb0NvbGxlY3QoKSB7IG1faXNTYWZlVG9Db2xsZWN0ID0gdHJ1
ZTsgfQogICAgICAgICB2b2lkIGNvbGxlY3RBbGxHYXJiYWdlKCk7CiAKQEAgLTExMiwxMCArMTE1
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hQcm90ZWN0ZWRD
ZWxsKEZ1bmN0b3ImKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbCgpOwotICAgICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZv
ckVhY2hDZWxsKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbCgpOwotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jayhGdW5jdG9yJik7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5
cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAgICAgICAgIAogICAg
ICAgICBIYW5kbGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGVI
ZWFwLmFsbG9jYXRlKCk7IH0KICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUxvY2FsSGFuZGxl
KCkgeyByZXR1cm4gbV9oYW5kbGVTdGFjay5wdXNoKCk7IH0KQEAgLTEyNSwxNCArMTI0LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIE1h
cmtlZEJsb2NrOwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2Nr
Kj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0
aW9uU3BhY2U7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAy
NTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEw
MjQ7CiAgICAgICAgIAotICAgICAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9u
TXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07Ci0gICAgICAgIAogI2lmIEVOQUJMRShH
R0MpCiAgICAgICAgIHN0YXRpYyB2b2lkIHdyaXRlQmFycmllckZhc3RDYXNlKGNvbnN0IEpTQ2Vs
bCogb3duZXIsIEpTQ2VsbCopOwogI2VuZGlmCkBAIC0xNDIsNyArMTM4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgY2Fub25pY2FsaXplQmxvY2tzKCk7CiAgICAgICAgIHZvaWQg
cmVzZXRBbGxvY2F0b3IoKTsKIAotICAgICAgICBNYXJrZWRCbG9jayogYWxsb2NhdGVCbG9jayhz
aXplX3QgY2VsbFNpemUsIEFsbG9jYXRpb25FZmZvcnQpOwogICAgICAgICB2b2lkIGZyZWVCbG9j
a3MoTWFya2VkQmxvY2sqKTsKIAogICAgICAgICB2b2lkIGNsZWFyTWFya3MoKTsKQEAgLTE1MCw5
ICsxNDUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBtYXJrUHJvdGVjdGVkT2Jq
ZWN0cyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICAgICAgdm9pZCBtYXJrVGVtcFNvcnRWZWN0b3Jz
KEhlYXBSb290VmlzaXRvciYpOwogICAgICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygp
OwotCi0gICAgICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsK
LSAgICAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CiAgICAgICAgIAogICAgICAgICBlbnVtIFN3ZWVwVG9nZ2xlIHsgRG9Ob3RTd2VlcCwgRG9Td2Vl
cCB9OwogICAgICAgICB2b2lkIGNvbGxlY3QoU3dlZXBUb2dnbGUpOwpAQCAtMTczLDggKzE2NSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBzaXplX3QgbV9taW5CeXRlc1BlckN5
Y2xlOwogICAgICAgICAKICAgICAgICAgT3BlcmF0aW9uSW5Qcm9ncmVzcyBtX29wZXJhdGlvbklu
UHJvZ3Jlc3M7Ci0gICAgICAgIE1hcmtlZFNwYWNlIG1fbWFya2VkU3BhY2U7Ci0gICAgICAgIE1h
cmtlZEJsb2NrU2V0IG1fYmxvY2tzOworICAgICAgICBBbGxvY2F0aW9uU3BhY2UgbV9vYmplY3RT
cGFjZTsKIAogICAgICAgICBEb3VibHlMaW5rZWRMaXN0PE1hcmtlZEJsb2NrPiBtX2ZyZWVCbG9j
a3M7CiAgICAgICAgIHNpemVfdCBtX251bWJlck9mRnJlZUJsb2NrczsKQEAgLTMwMiw1NyArMjkz
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICByZXR1cm4gZm9yRWFjaFByb3RlY3RlZENl
bGwoZnVuY3Rvcik7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5s
aW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFjaENlbGwoRnVuY3Rv
ciYgZnVuY3RvcikKLSAgICB7Ci0gICAgICAgIGNhbm9uaWNhbGl6ZUJsb2NrcygpOwotICAgICAg
ICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOwotICAgICAgICBmb3Ig
KEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgICAgICAoKml0KS0+Zm9yRWFjaENlbGwoZnVuY3Rvcik7Ci0gICAgICAgIHJl
dHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9y
RWFjaENlbGwoKQotICAgIHsKLSAgICAgICAgRnVuY3RvciBmdW5jdG9yOwotICAgICAgICByZXR1
cm4gZm9yRWFjaENlbGwoZnVuY3Rvcik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9yRWFj
aEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCi0gICAgewotICAgICAgICBjYW5vbmljYWxpemVCbG9j
a3MoKTsKLSAgICAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsK
LSAgICAgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZnVuY3RvcigqaXQpOwotICAgICAgICByZXR1
cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVh
Y2hCbG9jaygpCi0gICAgewotICAgICAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgICAgIHJldHVy
biBmb3JFYWNoQmxvY2soZnVuY3Rvcik7Ci0gICAgfQotICAgIAotICAgIGlubGluZSBNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzJiBIZWFwOjpzaXplQ2xhc3NGb3Ioc2l6ZV90IGJ5dGVzKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fbWFya2VkU3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5dGVzKTsKLSAgICB9
Ci0gICAgCi0gICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmIHNpemVDbGFzcykKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgaXMgYSBsaWdodC13ZWln
aHQgZmFzdCBwYXRoIHRvIGNvdmVyIHRoZSBtb3N0IGNvbW1vbiBjYXNlLgotICAgICAgICBNYXJr
ZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBzaXplQ2xhc3MuZmlyc3RGcmVlQ2Vs
bDsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKLSAgICAgICAgICAgIHJl
dHVybiBhbGxvY2F0ZVNsb3dDYXNlKHNpemVDbGFzcyk7Ci0gICAgICAgIAotICAgICAgICBzaXpl
Q2xhc3MuZmlyc3RGcmVlQ2VsbCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7Ci0gICAgICAgIHJldHVy
biBmaXJzdEZyZWVDZWxsOwotICAgIH0KLQogICAgIGlubGluZSB2b2lkKiBIZWFwOjphbGxvY2F0
ZShzaXplX3QgYnl0ZXMpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNWYWxpZEFsbG9jYXRpb24o
Ynl0ZXMpKTsKLSAgICAgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzID0gc2l6
ZUNsYXNzRm9yKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFzcyk7Cisg
ICAgICAgIHJldHVybiBtX29iamVjdFNwYWNlLmFsbG9jYXRlKGJ5dGVzKTsKICAgICB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRJbmxpbmVNZXRob2RzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1l
dGhvZHMuaAppbmRleCAzOGFmMGM3NDQzN2Y1NzU4ZTA5NzU5ODgyYTk3NDU1YmY1MjE3MjcwLi43
ZWY2YjI5YTc5YTEzN2MxNTdlM2I1ZTZlMGY2MmE1ODdiMTYxMzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaApAQCAtMzk0LDcgKzM5NCw3IEBAIEFM
V0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcih1bnNp
Z25lZCBzcmMpCiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIHR5cGVuYW1lIFN0cnVj
dHVyZVR5cGU+IGlubGluZSB2b2lkIEpJVDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1
Y3R1cmVUeXBlIHN0cnVjdHVyZSwgdm9pZCogdnRhYmxlLCBSZWdpc3RlcklEIHJlc3VsdCwgUmVn
aXN0ZXJJRCBzdG9yYWdlUHRyKQogewotICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNpemVD
bGFzcyA9ICZtX2dsb2JhbERhdGEtPmhlYXAuc2l6ZUNsYXNzRm9yKHNpemVvZihDbGFzc1R5cGUp
KTsKKyAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRh
LT5oZWFwLnNpemVDbGFzc0Zvck9iamVjdChzaXplb2YoQ2xhc3NUeXBlKSk7CiAgICAgbG9hZFB0
cigmc2l6ZUNsYXNzLT5maXJzdEZyZWVDZWxsLCByZXN1bHQpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgcmVzdWx0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCmluZGV4IDBhNGM5ZGU4ZDAyODA3NmQ3Njg0YzFmM2Fk
Njk3MzhhNzI1MjY3YjMuLjQ5YTBkYjcwM2ZjNDllZjFjYmVhZTBkNTBkNjJlOGI3YjhjZjFlZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApA
QCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpyZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucygpCiAgICAgLy8gdXAgdGhyb3dpbmcgYXdheSBjb2RlIHRoYXQgaXMgbGl2ZSBvbiB0aGUg
c3RhY2suCiAgICAgQVNTRVJUKCFkeW5hbWljR2xvYmFsT2JqZWN0KTsKICAgICAKLSAgICBoZWFw
LmZvckVhY2hDZWxsPFJlY29tcGlsZXI+KCk7CisgICAgaGVhcC5vYmplY3RTcGFjZSgpLmZvckVh
Y2hDZWxsPFJlY29tcGlsZXI+KCk7CiB9CiAKIHN0cnVjdCBTdGFja1ByZXNlcnZpbmdSZWNvbXBp
bGVyIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7CkBAIC00ODgsNyArNDg4LDcg
QEAgdm9pZCBKU0dsb2JhbERhdGE6OnJlbGVhc2VFeGVjdXRhYmxlTWVtb3J5KCkKICAgICAgICAg
ICAgICAgICByZWNvbXBpbGVyLmN1cnJlbnRseUV4ZWN1dGluZ0Z1bmN0aW9ucy5hZGQoc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSkpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICB9Ci0gICAgICAgIGhlYXAuZm9yRWFjaENlbGw8U3RhY2tQcmVzZXJ2aW5nUmVj
b21waWxlcj4ocmVjb21waWxlcik7CisgICAgICAgIGhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNo
Q2VsbDxTdGFja1ByZXNlcnZpbmdSZWNvbXBpbGVyPihyZWNvbXBpbGVyKTsKICAgICB9CiAgICAg
bV9yZWdFeHBDYWNoZS0+aW52YWxpZGF0ZUNvZGUoKTsKICAgICBoZWFwLmNvbGxlY3RBbGxHYXJi
YWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggODMyMjFjZTQ0N2FmNWQwMjBlNjhmYjBlNGQwNjkzMDI0Yzdk
MjM2YS4uOGM3YmU1ZjlhYzUzOTMwNGIwYzVmZWE1NDliNzVjNGI3NGVkMWJkNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDExLTA5LTE5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgSGVhcCBhbGxvY2F0aW9uIGxvZ2ljIGludG8gc2Vw
YXJhdGUgQWxsb2NhdGlvblNwYWNlIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODQwOQorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJh
cnJhY2xvdWdoLgorCisgICAgICAgIEFkZGluZyBhIGZvcndhcmRpbmcgaGVhZGVyLgorCisgICAg
ICAgICogRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDogQWRkZWQuCisK
IDIwMTEtMDktMjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI5NTUwOS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvQWxsb2NhdGlvblNwYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVlNGY1ZjRhMDM0YTc2Njk3OTRjZWU3MGRjYzhmOTllMjdkMjU5MTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9oZWFwL0FsbG9j
YXRpb25TcGFjZS5oCkBAIC0wLDAgKzEsNCBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9BbGxvY2F0
aW9uU3BhY2VfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9BbGxvY2F0aW9uU3BhY2VfaAorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FsbG9jYXRpb25TcGFjZS5oPgorI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108021</attachid>
            <date>2011-09-20 10:32:10 -0700</date>
            <delta_ts>2011-09-20 11:28:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68409-20110920103209.patch</filename>
            <type>text/plain</type>
            <size>41943</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA0MGNiZTc2OGM2NWEzZjIwYTRjZDc3YjA2MDA0NjdkZTExOWEyMzJlLi5mYzUyNmI2
NDkwYjk4ODU5MmZhZGI2ZjczOGM4M2ZlOTUyYmJhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00NSw2ICs0NSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAgICBoZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKICAgICBo
ZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IYW5kbGVIZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNDY3YTZiZTFmOGJiYWVjNzJjYWE5
Y2FjNDg3YzdiNjU3YWEzNmIzLi5iYWNkODMzZjQwYzk2YTFjMWIyOGFlZDRmOTg1Y2IzZmNlMzJi
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMS0wOS0x
OSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhl
YXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBUaGlzIHBh
dGNoIGhvaXN0cyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBNYXJrZWRTcGFjZSBhbmQgcmVs
YXRlZAorICAgICAgICBkYXRhIG91dCBvZiBIZWFwIGFuZCBpbnRvIGEgc2VwYXJhdGUgY2xhc3Mu
ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KKyAgICAgICAgaGF2ZSBtdWx0aXBsZSBhbGxvY2F0aW9u
IHNwYWNlcyBpbiBmdXR1cmUsIHNvIGVhc2luZyB0aGUgd2F5IHRvd2FyZHMKKyAgICAgICAgaGF2
aW5nIEdDJ2QgYmFja2luZyBzdG9yZXMgZm9yIG9iamVjdHMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkFsbG9jYXRpb25TcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0
aW9uU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3Bh
Y2U6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OmZyZWVC
bG9ja3MpOgorICAgICAgICAoSlNDOjpUYWtlSWZFbXB0eTo6VGFrZUlmRW1wdHkpOgorICAgICAg
ICAoSlNDOjpUYWtlSWZFbXB0eTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJZkVt
cHR5OjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2hyaW5r
KToKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6QWxsb2NhdGlvblNwYWNlOjpBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpBbGxv
Y2F0aW9uU3BhY2U6OmJsb2Nrcyk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2l6
ZUNsYXNzRm9yKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpzZXRIaWdoV2F0ZXJN
YXJrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpoaWdoV2F0ZXJNYXJrKToKKyAg
ICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpjYW5vbmljYWxpemVCbG9ja3MpOgorICAgICAg
ICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
QWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbCk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25T
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjphbGxv
Y2F0ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVh
cCk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyTWFy
a3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcCk6CisgICAgICAgIChKU0M6OkhlYXA6Om9i
amVjdENvdW50KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNhbm9uaWNhbGl6ZUJsb2Nrcyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
ZnJlZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnNocmluayk6CisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVjdFNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUNsYXNzRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2Nh
dGUpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpyZWxlYXNlRXhlY3V0YWJsZU1l
bW9yeSk6CisKIDIwMTEtMDktMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHI5NTUyMwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYWZlMzljMzk4Mzc0OWUyZDA1YmQ0ZGZiMmRj
YjZmOTIyODA0MjY2Li5iZTc0YzliMjMxODZmYTliYWIyMDAwNWFiZDY0ZDkxN2ZkODNiZGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMzLDYgKzEz
Myw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAppbmRleCBjYTAyN2VlMmI5Mzk3MmI3MTJmMTAxMTYzYjk4ODcxNDc5NWVmMTU5
Li41MjhhNTE0OGNmNTc0ZTRiZWRhYmVjNWMyM2UzODYyNWYxNzIwOTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTExOCw2ICsxMTgsNyBAQCBfX1pOM0pT
QzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxMUpT
Qnl0ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVT
dHJ1Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1Zh
bHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0
YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCitfX1pOM0pTQzE1QWxsb2NhdGlv
blNwYWNlMTZhbGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9f
Wk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlF
eGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0
ZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0yMzMsNyArMjM0LDYgQEAg
X19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xv
YmFsRGF0YUUKIF9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRD
aGVja0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVSS05TXzdBcmdMaXN0RVJL
TlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291
bnRFdgogX19aTjNKU0M0SGVhcDE2YWN0aXZpdHlDYWxsYmFja0V2Ci1fX1pOM0pTQzRIZWFwMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4zSlNDNEhl
YXAxNm9iamVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VF
dgogX19aTjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA2ODFhZDYzM2RhY2ZhNTM5ODdhMWJmZmFlMDNi
MjVkYmRjZmI0NDg5Li5hZDYzNjFiM2IxOGMwZGRlOTdiYzAzNTUzM2NiYTYxYjMzZjFjMmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNiArMjcs
NyBAQAogICAgICAgICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2Rl
L09wY29kZS5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAg
ICAgICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFu
ZGxlLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKQEAgLTMyNCw2ICszMjUs
NyBAQAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAg
ICAgJ2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwJywKICAgICAgICAgICAgICdieXRlY29t
cGlsZXIvUmVnaXN0ZXJJRC5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwJywKICAgICAgICAg
ICAgICdoZWFwL0hhbmRsZUhlYXAuY3BwJywKICAgICAgICAgICAgICdoZWFwL0hhbmRsZVN0YWNr
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBiYTgy
N2I4MTdlMWRkMTUzNjA2ZWI3MGM4YzlmYzgxNjcyYTJhZjYwLi5jMDZlMmY5N2Q0ODRjY2NiNWY3
MTRmYzU5MDJkYmM5ZmZhMzc1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8KQEAgLTcyLDYgKzcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBc
CiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAorICAgIGhlYXAvQWxsb2NhdGlv
blNwYWNlLmNwcCBcCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAv
SGFuZGxlSGVhcC5jcHAgXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNzYzZGQw
MDlkMDUzY2Q5OTIxNTU1NmRmNzdiYWY5NWMzNjQwYWJlYi4uNjc0ZjY2MGI1MjIzZDc5ODVhNjFl
N2ZmZjE4OWJkNzFmYWNkNjk2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTU5LDkgKzU5LDcgQEAgRVhQT1JUUwogICAgID9h
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2Jh
bERhdGFAMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2FkZFNsb3dDYXNl
QElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZA
QFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxz
QEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKLSAg
ICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWEFBVVNpemVDbGFzc0BNYXJrZWRTcGFjZUAyQEBa
CiAgICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFWEFBVkpTR2xv
YmFsRGF0YUAyQElJQFoKLSAgICA/YWxsb2NhdGVTbG93Q2FzZUBIZWFwQEpTQ0BAQUFFUEFYQUFV
U2l6ZUNsYXNzQE1hcmtlZFNwYWNlQDJAQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1aWxkZXJAV1RG
QEBRQUVYUEJESUBaCiAgICAgP2FwcGVuZEBTdHJpbmdCdWlsZGVyQFdURkBAUUFFWFBCX1dJQFoK
ICAgICA/YXNjaWlAVVN0cmluZ0BKU0NAQFFCRT9BVkNTdHJpbmdAV1RGQEBYWgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagppbmRl
eCAwOTI1ZDMzY2Y5NTViMmYzMmRkMDdkZTg0NWUwYzI4Zjg4NmU4MzI3Li4zYjMwODM0ZTJkZDdk
YjVlYzUzZWRhMGU3YzQ3MDUzNmNhMDlhYTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagpAQCAtMTg5MCw2ICsxODkwLDE0
IEBACiAJCQlOYW1lPSJoZWFwIgogCQkJPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxG
aWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGhlYXBcQWxsb2NhdGlvblNwYWNlLmNwcCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxBbGxvY2F0aW9uU3BhY2UuaCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8L0ZpbGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEZpbGUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxDb25z
ZXJ2YXRpdmVSb290cy5jcHAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBmNzQyMWQ3MTQzNzZhNzVjMGM1ZTA0MTFmNTVlNjEwZWRlNmFlYzQ0Li5k
YzBiNzYyMTU3MDVhNmNlZWQyYjhmYzg5MGFkMDhlNWE5YzE0YmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNDA2LDYgKzQwNiw4IEBACiAJCUExNzEyQjNGMTFDN0IyMjgwMDdB
NTMxNSAvKiBSZWdFeHBDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3MTJCM0UxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTE3MTJCNDEx
MUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJCNDAxMUM3QjIzNTAwN0E1MzE1IC8qIFJlZ0V4cEtl
eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
RDc2NDUyMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRDc2NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBB
bGlnbm1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBNzA0NTZCMDE0MjdGQjkxMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzA0NTZBRjE0MjdGQjE1
MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTcwNDU2QjExNDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9j
YXRpb25TcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzA0NTZBRTE0MjdGQjAzMDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLzsg
fTsKIAkJQTcxMjM2RTUxMTk1RjMzQzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzEyMzZFNDExOTVG
MzNDMDBCRDIxNzQgLyogSklUT3Bjb2RlczMyXzY0LmNwcCAqLzsgfTsKIAkJQTcyNzAwOTAwREFD
NkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90
QW5PYmplY3QuY3BwICovOyB9OwogCQlBNzI3MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0
aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsK
QEAgLTExODIsNiArMTE4NCw4IEBACiAJCUExNzEyQjNFMTFDN0IyMjgwMDdBNTMxNSAvKiBSZWdF
eHBDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWdFeHBDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEtl
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUQ3NjQ1MTEzNTQ0NDhCMDBDNUM3
QzAgLyogQWxpZ25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFsaWdu
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzA0NTZBRTE0MjdGQjAzMDAz
N0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFsbG9jYXRpb25TcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxsb2NhdGlvblNwYWNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVz
MzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUT3Bjb2Rl
czMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxOEY2MUExMTc1NEEy
MTAwMjQ2NUE3IC8qIFJlZ0V4cEppdFRhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZWdFeHBKaXRUYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTcxOEY4MjExMTc4RUI0QjAwMjQ2NUE3IC8qIGNyZWF0ZV9yZWdleF90YWJsZXMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhv
bjsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IGNyZWF0ZV9yZWdleF90YWJsZXM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjE3LDYgKzE2MjEsOCBAQAogCQkxNDJFMzEyQTEzNEZG
MEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQTcwNDU2QUYxNDI3RkIxNTAwMzdEQTY4IC8qIEFsbG9jYXRpb25TcGFjZS5o
ICovLAorCQkJCUE3MDQ1NkFFMTQyN0ZCMDMwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuY3Bw
ICovLAogCQkJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmggKi8sCiAJCQkJMEZDODE1MTQxNDA1MTE4RDAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVt
LmggKi8sCiAJCQkJMEZDODE1MTIxNDA1MTE4NjAwQ0ZBNjAzIC8qIFZUYWJsZVNwZWN0cnVtLmNw
cCAqLywKQEAgLTI3OTMsNiArMjc5OSw3IEBACiAJCQkJQTdCQzBDODIxNDA2MDhCMDAwQjFCQjcx
IC8qIENoZWNrZWRBcml0aG1ldGljLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzgxRTM1OTE0MTk3
MEM3MDAwOTREOTAgLyogU3RvcmFnZUJhcnJpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMDgy
NzdBMTQyMTY4RDcwMDkwQ0NBQyAvKiBCaW5hcnlTZW1hcGhvcmUuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMzI5OCw2ICszMzA1LDcgQEAKIAkJCQlDMjJDNTJGRTEzRkFGNkVGMDBCN0RD
MEQgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCUMyMkM1MzEzMTNGQUY2RUYw
MEI3REMwRCAvKiBzdHJ0b2QuY2MgaW4gU291cmNlcyAqLywKIAkJCQkxQTA4Mjc3OTE0MjE2OEQ3
MDA5MENDQUMgLyogQmluYXJ5U2VtYXBob3JlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3MDQ1
NkIxMTQyN0ZCOTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCA2MTA0
NGE4OWM3OWVlNmIxM2Y2ODg5ZjI4MzM3OGZkZTVmMmY4MzQyLi4xM2Q2YWQ4ZjMwOGRkN2M2ZTYz
NTA4NmUwOGJlZTk5MjQyYzc0ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIERlYnVnZ2VyOjpyZWNvbXBp
bGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFJlY29tcGlsZXIgcmVjb21waWxlcih0aGlzKTsKLSAgICBnbG9iYWxEYXRhLT5o
ZWFwLmZvckVhY2hDZWxsKHJlY29tcGlsZXIpOworICAgIGdsb2JhbERhdGEtPmhlYXAub2JqZWN0
U3BhY2UoKS5mb3JFYWNoQ2VsbChyZWNvbXBpbGVyKTsKIH0KIAogSlNWYWx1ZSBldmFsdWF0ZUlu
R2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9u
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFjMTI3YmIwN2RlYzY0NjQ5
Y2U0NDQ5NzQ3MmU5M2Q4N2I2ZjRlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2Uu
aCIKKworI2luY2x1ZGUgIkhlYXAuaCIKKworI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZX0FMTE9D
QVRJT04gMAorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFj
ZTo6dHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQoreworICAg
IG1faGVhcC0+bV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKKyAgICB2b2lkKiBy
ZXN1bHQgPSBtX21hcmtlZFNwYWNlLmFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgbV9oZWFwLT5t
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6
OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQoreworI2lmIENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElP
TgorICAgIGNvbGxlY3RBbGxHYXJiYWdlKCk7CisgICAgQVNTRVJUKG1faGVhcC0+bV9vcGVyYXRp
b25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uKTsKKyNlbmRpZgorICAgIAorICAgIHZvaWQqIHJl
c3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7CisgICAgCisgICAgaWYgKExJS0VMWShyZXN1
bHQgIT0gMCkpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgCisgICAgQWxsb2NhdGlvbkVm
Zm9ydCBhbGxvY2F0aW9uRWZmb3J0OworICAgIAorICAgIGlmIChtX21hcmtlZFNwYWNlLndhdGVy
TWFyaygpIDwgbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJrKCkgfHwgIW1faGVhcC0+bV9pc1Nh
ZmVUb0NvbGxlY3QpCisgICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uTXVzdFN1
Y2NlZWQ7CisgICAgZWxzZQorICAgICAgICBhbGxvY2F0aW9uRWZmb3J0ID0gQWxsb2NhdGlvbkNh
bkZhaWw7CisgICAgCisgICAgTWFya2VkQmxvY2sqIGJsb2NrID0gYWxsb2NhdGVCbG9jayhzaXpl
Q2xhc3MuY2VsbFNpemUsIGFsbG9jYXRpb25FZmZvcnQpOworICAgIGlmIChibG9jaykgeworICAg
ICAgICBtX21hcmtlZFNwYWNlLmFkZEJsb2NrKHNpemVDbGFzcywgYmxvY2spOworICAgICAgICB2
b2lkKiByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3MpOworICAgICAgICBBU1NFUlQocmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgbV9oZWFwLT5j
b2xsZWN0KEhlYXA6OkRvTm90U3dlZXApOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRl
KHNpemVDbGFzcyk7CisgICAgCisgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICAKKyAgICBBU1NFUlQobV9tYXJrZWRTcGFjZS53YXRlck1hcmsoKSA8IG1fbWFya2Vk
U3BhY2UuaGlnaFdhdGVyTWFyaygpKTsKKyAgICAKKyAgICBtX21hcmtlZFNwYWNlLmFkZEJsb2Nr
KHNpemVDbGFzcywgYWxsb2NhdGVCbG9jayhzaXplQ2xhc3MuY2VsbFNpemUsIEFsbG9jYXRpb25N
dXN0U3VjY2VlZCkpOworICAgIAorICAgIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7
CisgICAgQVNTRVJUKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworTWFya2VkQmxv
Y2sqIEFsbG9jYXRpb25TcGFjZTo6YWxsb2NhdGVCbG9jayhzaXplX3QgY2VsbFNpemUsIEFsbG9j
YXRpb25TcGFjZTo6QWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0KQoreworICAgIE1h
cmtlZEJsb2NrKiBibG9jazsKKyAgICAKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2hlYXAtPm1fZnJlZUJsb2NrTG9jayk7CisgICAgICAgIGlmIChtX2hlYXAtPm1fbnVtYmVy
T2ZGcmVlQmxvY2tzKSB7CisgICAgICAgICAgICBibG9jayA9IG1faGVhcC0+bV9mcmVlQmxvY2tz
LnJlbW92ZUhlYWQoKTsKKyAgICAgICAgICAgIEFTU0VSVChibG9jayk7CisgICAgICAgICAgICBt
X2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzLS07CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYmxvY2sgPSAwOworICAgIH0KKyAgICBpZiAoYmxvY2spCisgICAgICAgIGJsb2NrLT5pbml0
Rm9yQ2VsbFNpemUoY2VsbFNpemUpOworICAgIGVsc2UgaWYgKGFsbG9jYXRpb25FZmZvcnQgPT0g
QWxsb2NhdGlvbkNhbkZhaWwpCisgICAgICAgIHJldHVybiAwOworICAgIGVsc2UKKyAgICAgICAg
YmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcCwgY2VsbFNpemUpOworICAgIAorICAg
IG1fYmxvY2tzLmFkZChibG9jayk7CisgICAgCisgICAgcmV0dXJuIGJsb2NrOworfQorCit2b2lk
IEFsbG9jYXRpb25TcGFjZTo6ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCkKK3sKKyAgICBN
YXJrZWRCbG9jayogbmV4dDsKKyAgICBmb3IgKE1hcmtlZEJsb2NrKiBibG9jayA9IGhlYWQ7IGJs
b2NrOyBibG9jayA9IG5leHQpIHsKKyAgICAgICAgbmV4dCA9IGJsb2NrLT5uZXh0KCk7CisgICAg
ICAgIAorICAgICAgICBtX2Jsb2Nrcy5yZW1vdmUoYmxvY2spOworICAgICAgICBibG9jay0+cmVz
ZXQoKTsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2Nr
KTsKKyAgICAgICAgbV9oZWFwLT5tX2ZyZWVCbG9ja3MuYXBwZW5kKGJsb2NrKTsKKyAgICAgICAg
bV9oZWFwLT5tX251bWJlck9mRnJlZUJsb2NrcysrOworICAgIH0KK30KKworY2xhc3MgVGFrZUlm
RW1wdHkgeworcHVibGljOgorICAgIHR5cGVkZWYgTWFya2VkQmxvY2sqIFJldHVyblR5cGU7Cisg
ICAgCisgICAgVGFrZUlmRW1wdHkoTWFya2VkU3BhY2UqKTsKKyAgICB2b2lkIG9wZXJhdG9yKCko
TWFya2VkQmxvY2sqKTsKKyAgICBSZXR1cm5UeXBlIHJldHVyblZhbHVlKCk7CisgICAgCitwcml2
YXRlOgorICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOworICAgIERvdWJseUxpbmtlZExp
c3Q8TWFya2VkQmxvY2s+IG1fZW1wdGllczsKK307CisKK2lubGluZSBUYWtlSWZFbXB0eTo6VGFr
ZUlmRW1wdHkoTWFya2VkU3BhY2UqIG5ld1NwYWNlKQorICAgIDogbV9tYXJrZWRTcGFjZShuZXdT
cGFjZSkKK3sKK30KKworaW5saW5lIHZvaWQgVGFrZUlmRW1wdHk6Om9wZXJhdG9yKCkoTWFya2Vk
QmxvY2sqIGJsb2NrKQoreworICAgIGlmICghYmxvY2stPmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIG1fbWFya2VkU3BhY2UtPnJlbW92ZUJsb2NrKGJsb2NrKTsKKyAgICBt
X2VtcHRpZXMuYXBwZW5kKGJsb2NrKTsKK30KKworaW5saW5lIFRha2VJZkVtcHR5OjpSZXR1cm5U
eXBlIFRha2VJZkVtcHR5OjpyZXR1cm5WYWx1ZSgpCit7CisgICAgcmV0dXJuIG1fZW1wdGllcy5o
ZWFkKCk7Cit9CisKK3ZvaWQgQWxsb2NhdGlvblNwYWNlOjpzaHJpbmsoKQoreworICAgIC8vIFdl
IHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9mIGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG1f
YmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4KKyAgICBUYWtlSWZFbXB0eSB0YWtlSWZFbXB0eSgm
bV9tYXJrZWRTcGFjZSk7CisgICAgZnJlZUJsb2Nrcyhmb3JFYWNoQmxvY2sodGFrZUlmRW1wdHkp
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dGlvblNwYWNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yNWI5NWUzNWM5MDE2NTA5OTdkZGE5YzE1NzcyM2Y5ZmIwZDg0YTQ5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNw
YWNlLmgKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFsbG9jYXRpb25T
cGFjZV9oCisjZGVmaW5lIEFsbG9jYXRpb25TcGFjZV9oCisKKyNpbmNsdWRlICJNYXJrZWRCbG9j
a1NldC5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisKKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSGVhcDsKK2NsYXNzIE1hcmtlZEJsb2Nr
OworCitjbGFzcyBBbGxvY2F0aW9uU3BhY2UgeworcHVibGljOgorICAgIEFsbG9jYXRpb25TcGFj
ZShIZWFwKiBoZWFwKQorICAgICAgICA6IG1faGVhcChoZWFwKQorICAgICAgICAsIG1fbWFya2Vk
U3BhY2UoaGVhcCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHR5cGVkZWYgSGFzaFNldDxNYXJr
ZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOworICAgIAorICAgIE1hcmtlZEJsb2Nr
U2V0JiBibG9ja3MoKSB7IHJldHVybiBtX2Jsb2NrczsgfQorICAgIE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmIHNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1fbWFya2VkU3BhY2Uu
c2l6ZUNsYXNzRm9yKGJ5dGVzKTsgfQorICAgIHZvaWQgc2V0SGlnaFdhdGVyTWFyayhzaXplX3Qg
Ynl0ZXMpIHsgbV9tYXJrZWRTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKGJ5dGVzKTsgfQorICAgIHNp
emVfdCBoaWdoV2F0ZXJNYXJrKCkgeyByZXR1cm4gbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJr
KCk7IH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5j
dG9yOjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKEZ1bmN0b3ImKTsKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKCk7
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJu
VHlwZSBmb3JFYWNoQmxvY2soRnVuY3RvciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CisgICAgCisg
ICAgdm9pZCBjYW5vbmljYWxpemVCbG9ja3MoKSB7IG1fbWFya2VkU3BhY2UuY2Fub25pY2FsaXpl
QmxvY2tzKCk7IH0KKyAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCkgeyBtX21hcmtlZFNwYWNlLnJl
c2V0QWxsb2NhdG9yKCk7IH0KKyAgICAKKyAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOworICAg
IHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayopOworICAgIHZvaWQgc2hyaW5rKCk7CisgICAg
Citwcml2YXRlOgorICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3Vj
Y2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKKyAgICAKKyAgICB2b2lkKiBhbGxvY2F0ZShNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6
OlNpemVDbGFzcyYpOworICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYpOworICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6
ZSwgQWxsb2NhdGlvbkVmZm9ydCk7CisgICAgCisgICAgSGVhcCogbV9oZWFwOworICAgIE1hcmtl
ZFNwYWNlIG1fbWFya2VkU3BhY2U7CisgICAgTWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7Cit9Owor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCit7
CisgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Js
b2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5z
ZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5mb3JFYWNoQ2Vs
bChmdW5jdG9yKTsKKyAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBBbGxvY2F0aW9uU3BhY2U6OmZvckVhY2hDZWxsKCkKK3sKKyAgICBGdW5jdG9yIGZ1bmN0b3I7
CisgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0aW9u
U3BhY2U6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQoreworICAgIGNhbm9uaWNhbGl6
ZUJsb2NrcygpOworICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7
CisgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0KCkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBmdW5jdG9yKCppdCk7CisgICAgcmV0dXJuIGZ1bmN0b3Iu
cmV0dXJuVmFsdWUoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5
cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgQWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQmxvY2so
KQoreworICAgIEZ1bmN0b3IgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0
b3IpOworfQorCitpbmxpbmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZShNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCit7CisgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdl
aWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCisgICAgTWFya2Vk
QmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxsID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7
CisgICAgaWYgKFVOTElLRUxZKCFmaXJzdEZyZWVDZWxsKSkKKyAgICAgICAgcmV0dXJuIGFsbG9j
YXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKKyAgICAKKyAgICBzaXplQ2xhc3MuZmlyc3RGcmVlQ2Vs
bCA9IGZpcnN0RnJlZUNlbGwtPm5leHQ7CisgICAgcmV0dXJuIGZpcnN0RnJlZUNlbGw7Cit9CisK
K2lubGluZSB2b2lkKiBBbGxvY2F0aW9uU3BhY2U6OmFsbG9jYXRlKHNpemVfdCBieXRlcykKK3sK
KyAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBzaXplQ2xhc3NGb3IoYnl0
ZXMpOworICAgIHJldHVybiBhbGxvY2F0ZShzaXplQ2xhc3MpOworfQorCit9CisKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCAyNmU0ZWY0N2ZiZDVlMDlhZTlhNTRh
YzkxM2U2OThmNTY2ZDRjMGE3Li45YjRlZDZhZTAyNWU0MjE3MGEwYjk1MWI5ZjFhNzkwYjYyNTlk
YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzMsNyArMzMsNiBAQAog
I2luY2x1ZGUgIlRyYWNpbmcuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLSNkZWZpbmUgQ09M
TEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OIDAKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CkBAIC0xNzUsMzggKzE3NCw2IEBAIGlubGluZSB2b2lkIENvdW50SWZH
bG9iYWxPYmplY3Q6Om9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQogICAgIGNvdW50KDEpOwogfQog
Ci1jbGFzcyBUYWtlSWZFbXB0eSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBNYXJrZWRCbG9jayog
UmV0dXJuVHlwZTsKLQotICAgIFRha2VJZkVtcHR5KE1hcmtlZFNwYWNlKik7Ci0gICAgdm9pZCBv
cGVyYXRvcigpKE1hcmtlZEJsb2NrKik7Ci0gICAgUmV0dXJuVHlwZSByZXR1cm5WYWx1ZSgpOwot
Ci1wcml2YXRlOgotICAgIE1hcmtlZFNwYWNlKiBtX21hcmtlZFNwYWNlOwotICAgIERvdWJseUxp
bmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fZW1wdGllczsKLX07Ci0KLWlubGluZSBUYWtlSWZFbXB0
eTo6VGFrZUlmRW1wdHkoTWFya2VkU3BhY2UqIG5ld1NwYWNlKQotICAgIDogbV9tYXJrZWRTcGFj
ZShuZXdTcGFjZSkKLXsKLX0KLQotaW5saW5lIHZvaWQgVGFrZUlmRW1wdHk6Om9wZXJhdG9yKCko
TWFya2VkQmxvY2sqIGJsb2NrKQotewotICAgIGlmICghYmxvY2stPmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgbV9tYXJrZWRTcGFjZS0+cmVtb3ZlQmxvY2soYmxvY2spOwotICAg
IG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOwotfQotCi1pbmxpbmUgVGFrZUlmRW1wdHk6OlJldHVy
blR5cGUgVGFrZUlmRW1wdHk6OnJldHVyblZhbHVlKCkKLXsKLSAgICByZXR1cm4gbV9lbXB0aWVz
LmhlYWQoKTsKLX0KLQogY2xhc3MgUmVjb3JkVHlwZSB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBQ
YXNzT3duUHRyPFR5cGVDb3VudFNldD4gUmV0dXJuVHlwZTsKQEAgLTI0OSw3ICsyMTYsNyBAQCBI
ZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhcFNpemUgaGVhcFNpemUpCiAg
ICAgOiBtX2hlYXBTaXplKGhlYXBTaXplKQogICAgICwgbV9taW5CeXRlc1BlckN5Y2xlKGhlYXBT
aXplRm9ySGludChoZWFwU2l6ZSkpCiAgICAgLCBtX29wZXJhdGlvbkluUHJvZ3Jlc3MoTm9PcGVy
YXRpb24pCi0gICAgLCBtX21hcmtlZFNwYWNlKHRoaXMpCisgICAgLCBtX29iamVjdFNwYWNlKHRo
aXMpCiAgICAgLCBtX2V4dHJhQ29zdCgwKQogICAgICwgbV9tYXJrTGlzdFNldCgwKQogICAgICwg
bV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6OmNyZWF0ZSh0aGlz
KSkKQEAgLTI1OSw3ICsyMjYsNyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSGVhcFNpemUgaGVhcFNpemUpCiAgICAgLCBtX2lzU2FmZVRvQ29sbGVjdChmYWxzZSkKICAg
ICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogewotICAgIG1fbWFya2VkU3BhY2Uuc2V0SGln
aFdhdGVyTWFyayhtX21pbkJ5dGVzUGVyQ3ljbGUpOworICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGln
aFdhdGVyTWFyayhtX21pbkJ5dGVzUGVyQ3ljbGUpOwogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNr
KSgpOwogICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tzID0gMDsKICAgICBtX2Jsb2NrRnJlZWluZ1Ro
cmVhZCA9IGNyZWF0ZVRocmVhZChibG9ja0ZyZWVpbmdUaHJlYWRTdGFydEZ1bmMsIHRoaXMsICJK
YXZhU2NyaXB0Q29yZTo6QmxvY2tGcmVlIik7CkBAIC0zOTMsNjIgKzM2MCwxMSBAQCB2b2lkIEhl
YXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKHNpemVfdCBjb3N0KQogICAgIC8vIGlm
IGEgbGFyZ2UgdmFsdWUgc3Vydml2ZXMgb25lIGdhcmJhZ2UgY29sbGVjdGlvbiwgdGhlcmUgaXMg
bm90IG11Y2ggcG9pbnQgdG8KICAgICAvLyBjb2xsZWN0aW5nIG1vcmUgZnJlcXVlbnRseSBhcyBs
b25nIGFzIGl0IHN0YXlzIGFsaXZlLgogCi0gICAgaWYgKG1fZXh0cmFDb3N0ID4gbWF4RXh0cmFD
b3N0ICYmIG1fZXh0cmFDb3N0ID4gbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJrKCkgLyAyKQor
ICAgIGlmIChtX2V4dHJhQ29zdCA+IG1heEV4dHJhQ29zdCAmJiBtX2V4dHJhQ29zdCA+IG1fb2Jq
ZWN0U3BhY2UuaGlnaFdhdGVyTWFyaygpIC8gMikKICAgICAgICAgY29sbGVjdEFsbEdhcmJhZ2Uo
KTsKICAgICBtX2V4dHJhQ29zdCArPSBjb3N0OwogfQogCi1pbmxpbmUgdm9pZCogSGVhcDo6dHJ5
QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotICAgIG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyA9IEFsbG9jYXRpb247Ci0gICAgdm9pZCogcmVzdWx0ID0gbV9tYXJr
ZWRTcGFjZS5hbGxvY2F0ZShzaXplQ2xhc3MpOwotICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9
IE5vT3BlcmF0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQqIEhlYXA6OmFsbG9j
YXRlU2xvd0Nhc2UoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzKQotewotI2lmIENP
TExFQ1RfT05fRVZFUllfQUxMT0NBVElPTgotICAgIGNvbGxlY3RBbGxHYXJiYWdlKCk7Ci0gICAg
QVNTRVJUKG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbik7Ci0jZW5kaWYKLQot
ICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0KLSAgICBpZiAoTElL
RUxZKHJlc3VsdCAhPSAwKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIEFsbG9jYXRp
b25FZmZvcnQgYWxsb2NhdGlvbkVmZm9ydDsKLSAgICAKLSAgICBpZiAobV9tYXJrZWRTcGFjZS53
YXRlck1hcmsoKSA8IG1fbWFya2VkU3BhY2UuaGlnaFdhdGVyTWFyaygpIHx8ICFtX2lzU2FmZVRv
Q29sbGVjdCkKLSAgICAgICAgYWxsb2NhdGlvbkVmZm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2Vl
ZDsKLSAgICBlbHNlCi0gICAgICAgIGFsbG9jYXRpb25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFp
bDsKLSAgICAKLSAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBhbGxvY2F0ZUJsb2NrKHNpemVDbGFz
cy5jZWxsU2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7Ci0gICAgaWYgKGJsb2NrKSB7Ci0gICAgICAg
IG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBibG9jayk7Ci0gICAgICAgIHZvaWQq
IHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAgICAgIEFTU0VSVChyZXN1bHQp
OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIGNvbGxlY3QoRG9Ob3RTd2Vl
cCk7Ci0gICAgCi0gICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICAKLSAg
ICBpZiAocmVzdWx0KQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAotICAgIEFTU0VSVCht
X21hcmtlZFNwYWNlLndhdGVyTWFyaygpIDwgbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJrKCkp
OwotICAgIAotICAgIG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBhbGxvY2F0ZUJs
b2NrKHNpemVDbGFzcy5jZWxsU2l6ZSwgQWxsb2NhdGlvbk11c3RTdWNjZWVkKSk7Ci0gICAgCi0g
ICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKLSAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkIEhlYXA6OnByb3RlY3QoSlNWYWx1ZSBrKQog
ewogICAgIEFTU0VSVChrKTsKQEAgLTUyMSw3ICs0MzcsNyBAQCB2b2lkIEhlYXA6OmdldENvbnNl
cnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpCiAgICAgaWYgKG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyAhPSBOb09wZXJhdGlvbikKICAgICAgICAgQ1JBU0goKTsKICAg
ICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBDb2xsZWN0aW9uOwotICAgIENvbnNlcnZhdGl2ZVJv
b3RzIHJlZ2lzdGVyRmlsZVJvb3RzKCZtX2Jsb2Nrcyk7CisgICAgQ29uc2VydmF0aXZlUm9vdHMg
cmVnaXN0ZXJGaWxlUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCkpOwogICAgIHJlZ2lzdGVy
RmlsZSgpLmdhdGhlckNvbnNlcnZhdGl2ZVJvb3RzKHJlZ2lzdGVyRmlsZVJvb3RzKTsKICAgICBz
aXplX3QgcmVnaXN0ZXJGaWxlUm9vdENvdW50ID0gcmVnaXN0ZXJGaWxlUm9vdHMuc2l6ZSgpOwog
ICAgIEpTQ2VsbCoqIHJlZ2lzdGVyUm9vdHMgPSByZWdpc3RlckZpbGVSb290cy5yb290cygpOwpA
QCAtNTQzLDEwICs0NTksMTAgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogCiAgICAgLy8gV2Ug
Z2F0aGVyIGNvbnNlcnZhdGl2ZSByb290cyBiZWZvcmUgY2xlYXJpbmcgbWFyayBiaXRzIGJlY2F1
c2UgY29uc2VydmF0aXZlCiAgICAgLy8gZ2F0aGVyaW5nIHVzZXMgdGhlIG1hcmsgYml0cyB0byBk
ZXRlcm1pbmUgd2hldGhlciBhIHJlZmVyZW5jZSBpcyB2YWxpZC4KLSAgICBDb25zZXJ2YXRpdmVS
b290cyBtYWNoaW5lVGhyZWFkUm9vdHMoJm1fYmxvY2tzKTsKKyAgICBDb25zZXJ2YXRpdmVSb290
cyBtYWNoaW5lVGhyZWFkUm9vdHMoJm1fb2JqZWN0U3BhY2UuYmxvY2tzKCkpOwogICAgIG1fbWFj
aGluZVRocmVhZHMuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMobWFjaGluZVRocmVhZFJvb3RzLCAm
ZHVtbXkpOwogCi0gICAgQ29uc2VydmF0aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fYmxv
Y2tzKTsKKyAgICBDb25zZXJ2YXRpdmVSb290cyByZWdpc3RlckZpbGVSb290cygmbV9vYmplY3RT
cGFjZS5ibG9ja3MoKSk7CiAgICAgcmVnaXN0ZXJGaWxlKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9v
dHMocmVnaXN0ZXJGaWxlUm9vdHMpOwogCiAgICAgY2xlYXJNYXJrcygpOwpAQCAtNTk5LDI3ICs1
MTUsMjcgQEAgdm9pZCBIZWFwOjptYXJrUm9vdHMoKQogCiB2b2lkIEhlYXA6OmNsZWFyTWFya3Mo
KQogewotICAgIGZvckVhY2hCbG9jazxDbGVhck1hcmtzPigpOworICAgIG1fb2JqZWN0U3BhY2Uu
Zm9yRWFjaEJsb2NrPENsZWFyTWFya3M+KCk7CiB9CiAKIHZvaWQgSGVhcDo6c3dlZXAoKQogewot
ICAgIGZvckVhY2hCbG9jazxTd2VlcD4oKTsKKyAgICBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9j
azxTd2VlcD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6Om9iamVjdENvdW50KCkKIHsKLSAgICByZXR1
cm4gZm9yRWFjaEJsb2NrPE1hcmtDb3VudD4oKTsKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5m
b3JFYWNoQmxvY2s8TWFya0NvdW50PigpOwogfQogCiBzaXplX3QgSGVhcDo6c2l6ZSgpCiB7Ci0g
ICAgcmV0dXJuIGZvckVhY2hCbG9jazxTaXplPigpOworICAgIHJldHVybiBtX29iamVjdFNwYWNl
LmZvckVhY2hCbG9jazxTaXplPigpOwogfQogCiBzaXplX3QgSGVhcDo6Y2FwYWNpdHkoKQogewot
ICAgIHJldHVybiBmb3JFYWNoQmxvY2s8Q2FwYWNpdHk+KCk7CisgICAgcmV0dXJuIG1fb2JqZWN0
U3BhY2UuZm9yRWFjaEJsb2NrPENhcGFjaXR5PigpOwogfQogCiBzaXplX3QgSGVhcDo6cHJvdGVj
dGVkR2xvYmFsT2JqZWN0Q291bnQoKQpAQCAtNjI5LDcgKzU0NSw3IEBAIHNpemVfdCBIZWFwOjpw
cm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCiAKIHNpemVfdCBIZWFwOjpnbG9iYWxPYmplY3RD
b3VudCgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hDZWxsPENvdW50SWZHbG9iYWxPYmplY3Q+KCk7
CisgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaENlbGw8Q291bnRJZkdsb2JhbE9iamVj
dD4oKTsKIH0KIAogc2l6ZV90IEhlYXA6OnByb3RlY3RlZE9iamVjdENvdW50KCkKQEAgLTY0NCw3
ICs1NjAsNyBAQCBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gSGVhcDo6cHJvdGVjdGVkT2JqZWN0
VHlwZUNvdW50cygpCiAKIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBIZWFwOjpvYmplY3RUeXBl
Q291bnRzKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaENlbGw8UmVjb3JkVHlwZT4oKTsKKyAgICBy
ZXR1cm4gbV9vYmplY3RTcGFjZS5mb3JFYWNoQ2VsbDxSZWNvcmRUeXBlPigpOwogfQogCiB2b2lk
IEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkKQEAgLTY4Myw3ICs1OTksNyBAQCB2b2lkIEhlYXA6
OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnbGUpCiAgICAgLy8gcHJvcG9ydGlvbiBpcyBh
IGJpdCBhcmJpdHJhcnkuIEEgMlggbXVsdGlwbGllciBnaXZlcyBhIDE6MSAoaGVhcCBzaXplIDoK
ICAgICAvLyBuZXcgYnl0ZXMgYWxsb2NhdGVkKSBwcm9wb3J0aW9uLCBhbmQgc2VlbXMgdG8gd29y
ayB3ZWxsIGluIGJlbmNobWFya3MuCiAgICAgc2l6ZV90IHByb3BvcnRpb25hbEJ5dGVzID0gMiAq
IHNpemUoKTsKLSAgICBtX21hcmtlZFNwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRp
b25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKKyAgICBtX29iamVjdFNwYWNlLnNldEhp
Z2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsK
ICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNr
KSgpOwpAQCAtNjkxLDEzICs2MDcsMTMgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xl
IHN3ZWVwVG9nZ2xlKQogCiB2b2lkIEhlYXA6OmNhbm9uaWNhbGl6ZUJsb2NrcygpCiB7Ci0gICAg
bV9tYXJrZWRTcGFjZS5jYW5vbmljYWxpemVCbG9ja3MoKTsKKyAgICBtX29iamVjdFNwYWNlLmNh
bm9uaWNhbGl6ZUJsb2NrcygpOwogfQogCiB2b2lkIEhlYXA6OnJlc2V0QWxsb2NhdG9yKCkKIHsK
ICAgICBtX2V4dHJhQ29zdCA9IDA7Ci0gICAgbV9tYXJrZWRTcGFjZS5yZXNldEFsbG9jYXRvcigp
OworICAgIG1fb2JqZWN0U3BhY2UucmVzZXRBbGxvY2F0b3IoKTsKIH0KIAogdm9pZCBIZWFwOjpz
ZXRBY3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBhY3Rpdml0
eUNhbGxiYWNrKQpAQCAtNzI0LDUwICs2NDAsMTQgQEAgYm9vbCBIZWFwOjppc1ZhbGlkQWxsb2Nh
dGlvbihzaXplX3QgYnl0ZXMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLU1hcmtlZEJsb2NrKiBI
ZWFwOjphbGxvY2F0ZUJsb2NrKHNpemVfdCBjZWxsU2l6ZSwgSGVhcDo6QWxsb2NhdGlvbkVmZm9y
dCBhbGxvY2F0aW9uRWZmb3J0KQotewotICAgIE1hcmtlZEJsb2NrKiBibG9jazsKLSAgICAKLSAg
ICB7Ci0gICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2ZyZWVCbG9ja0xvY2spOwotICAgICAg
ICBpZiAobV9udW1iZXJPZkZyZWVCbG9ja3MpIHsKLSAgICAgICAgICAgIGJsb2NrID0gbV9mcmVl
QmxvY2tzLnJlbW92ZUhlYWQoKTsKLSAgICAgICAgICAgIEFTU0VSVChibG9jayk7Ci0gICAgICAg
ICAgICBtX251bWJlck9mRnJlZUJsb2Nrcy0tOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGJsb2NrID0gMDsKLSAgICB9Ci0gICAgaWYgKGJsb2NrKQotICAgICAgICBibG9jay0+aW5pdEZv
ckNlbGxTaXplKGNlbGxTaXplKTsKLSAgICBlbHNlIGlmIChhbGxvY2F0aW9uRWZmb3J0ID09IEFs
bG9jYXRpb25DYW5GYWlsKQotICAgICAgICByZXR1cm4gMDsKLSAgICBlbHNlCi0gICAgICAgIGJs
b2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZSh0aGlzLCBjZWxsU2l6ZSk7Ci0gICAgCi0gICAgbV9i
bG9ja3MuYWRkKGJsb2NrKTsKLQotICAgIHJldHVybiBibG9jazsKLX0KLQogdm9pZCBIZWFwOjpm
cmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKQogewotICAgIE1hcmtlZEJsb2NrKiBuZXh0Owot
ICAgIGZvciAoTWFya2VkQmxvY2sqIGJsb2NrID0gaGVhZDsgYmxvY2s7IGJsb2NrID0gbmV4dCkg
ewotICAgICAgICBuZXh0ID0gYmxvY2stPm5leHQoKTsKLQotICAgICAgICBtX2Jsb2Nrcy5yZW1v
dmUoYmxvY2spOwotICAgICAgICBibG9jay0+cmVzZXQoKTsKLSAgICAgICAgTXV0ZXhMb2NrZXIg
bG9ja2VyKG1fZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIG1fZnJlZUJsb2Nrcy5hcHBlbmQoYmxv
Y2spOwotICAgICAgICBtX251bWJlck9mRnJlZUJsb2NrcysrOwotICAgIH0KKyAgICBtX29iamVj
dFNwYWNlLmZyZWVCbG9ja3MoaGVhZCk7CiB9CiAKIHZvaWQgSGVhcDo6c2hyaW5rKCkKIHsKLSAg
ICAvLyBXZSByZWNvcmQgYSB0ZW1wb3JhcnkgbGlzdCBvZiBlbXB0aWVzIHRvIGF2b2lkIG1vZGlm
eWluZyBtX2Jsb2NrcyB3aGlsZSBpdGVyYXRpbmcgaXQuCi0gICAgVGFrZUlmRW1wdHkgdGFrZUlm
RW1wdHkoJm1fbWFya2VkU3BhY2UpOwotICAgIGZyZWVCbG9ja3MoZm9yRWFjaEJsb2NrKHRha2VJ
ZkVtcHR5KSk7CisgICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsKIH0KIAogdm9pZCBIZWFwOjpy
ZWxlYXNlRnJlZUJsb2NrcygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggM2Q1OTI1
OTYxMmY1YzU3OGRmNjI3ZTgwM2I3MWIyNGFiMjhmZTg2Ny4uNGZmMjYwM2JkMGQ1MmU2YWYyNjU0
YzMwMDBmOWU4MWM2NTUyZjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtMjIs
NiArMjIsNyBAQAogI2lmbmRlZiBIZWFwX2gKICNkZWZpbmUgSGVhcF9oCiAKKyNpbmNsdWRlICJB
bGxvY2F0aW9uU3BhY2UuaCIKICNpbmNsdWRlICJIYW5kbGVIZWFwLmgiCiAjaW5jbHVkZSAiSGFu
ZGxlU3RhY2suaCIKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgpAQCAtMzcsNiArMzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEdDQWN0aXZpdHlDYWxsYmFjazsKICAgICBjbGFz
cyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgSGVhcDsKICAgICBjbGFzcyBIZWFwUm9vdFZp
c2l0b3I7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKQEAgLTU2
LDEwICs1OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICAvLyBIZWFwIHNpemUgaGlu
dC4KICAgICBlbnVtIEhlYXBTaXplIHsgU21hbGxIZWFwLCBMYXJnZUhlYXAgfTsKLSAgICAKKwog
ICAgIGNsYXNzIEhlYXAgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIZWFwKTsKICAg
ICBwdWJsaWM6CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIHN0YXRpYyBIZWFw
KiBoZWFwKEpTVmFsdWUpOyAvLyAwIGZvciBpbW1lZGlhdGUgdmFsdWVzCiAgICAgICAgIHN0YXRp
YyBIZWFwKiBoZWFwKEpTQ2VsbCopOwogCkBAIC03Niw3ICs3OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGRlc3Ryb3koKTsgLy8gSlNHbG9iYWxEYXRhIG11c3QgY2FsbCBkZXN0
cm95KCkgYmVmb3JlIH5IZWFwKCkuCiAKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxEYXRhOyB9Ci0gICAgICAgIE1hcmtlZFNwYWNlJiBt
YXJrZWRTcGFjZSgpIHsgcmV0dXJuIG1fbWFya2VkU3BhY2U7IH0KKyAgICAgICAgQWxsb2NhdGlv
blNwYWNlJiBvYmplY3RTcGFjZSgpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2U7IH0KICAgICAgICAg
TWFjaGluZVRocmVhZHMmIG1hY2hpbmVUaHJlYWRzKCkgeyByZXR1cm4gbV9tYWNoaW5lVGhyZWFk
czsgfQogCiAgICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjayogYWN0aXZpdHlDYWxsYmFjaygpOwpA
QCAtODQsMTAgKzg3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIC8vIHRydWUgaWYg
YW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIGlubGlu
ZSBib29sIGlzQnVzeSgpOwotCisgICAgICAgIAorICAgICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJiBzaXplQ2xhc3NGb3JPYmplY3Qoc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNw
YWNlLnNpemVDbGFzc0ZvcihieXRlcyk7IH0KICAgICAgICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90
KTsKLSAgICAgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCk7
Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKKwogICAg
ICAgICB2b2lkIG5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpIHsgbV9pc1NhZmVUb0NvbGxlY3QgPSB0
cnVlOyB9CiAgICAgICAgIHZvaWQgY29sbGVjdEFsbEdhcmJhZ2UoKTsKIApAQCAtMTEyLDEwICsx
MTUsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3Rl
ZENlbGwoRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hQcm90ZWN0ZWRDZWxsKCk7Ci0gICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaENlbGwoRnVuY3RvciYpOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
PiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hDZWxsKCk7Ci0gICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9y
RWFjaEJsb2NrKEZ1bmN0b3ImKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKICAgICAgICAgCiAg
ICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBtX2hhbmRs
ZUhlYXAuYWxsb2NhdGUoKTsgfQogICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlTG9jYWxIYW5k
bGUoKSB7IHJldHVybiBtX2hhbmRsZVN0YWNrLnB1c2goKTsgfQpAQCAtMTI1LDE0ICsxMjQsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3Mg
TWFya2VkQmxvY2s7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIEhhc2hTZXQ8TWFya2VkQmxv
Y2sqPjo6aXRlcmF0b3IgQmxvY2tJdGVyYXRvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9j
YXRpb25TcGFjZTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9
IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICog
MTAyNDsKICAgICAgICAgCi0gICAgICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRp
b25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKLSAgICAgICAgCiAjaWYgRU5BQkxF
KEdHQykKICAgICAgICAgc3RhdGljIHZvaWQgd3JpdGVCYXJyaWVyRmFzdENhc2UoY29uc3QgSlND
ZWxsKiBvd25lciwgSlNDZWxsKik7CiAjZW5kaWYKQEAgLTE0Miw3ICsxMzgsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBjYW5vbmljYWxpemVCbG9ja3MoKTsKICAgICAgICAgdm9p
ZCByZXNldEFsbG9jYXRvcigpOwogCi0gICAgICAgIE1hcmtlZEJsb2NrKiBhbGxvY2F0ZUJsb2Nr
KHNpemVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvbkVmZm9ydCk7CiAgICAgICAgIHZvaWQgZnJlZUJs
b2NrcyhNYXJrZWRCbG9jayopOwogCiAgICAgICAgIHZvaWQgY2xlYXJNYXJrcygpOwpAQCAtMTUw
LDkgKzE0NSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIG1hcmtQcm90ZWN0ZWRP
YmplY3RzKEhlYXBSb290VmlzaXRvciYpOwogICAgICAgICB2b2lkIG1hcmtUZW1wU29ydFZlY3Rv
cnMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgICAgIHZvaWQgaGFydmVzdFdlYWtSZWZlcmVuY2Vz
KCk7Ci0KLSAgICAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYp
OwotICAgICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3Mm
KTsKICAgICAgICAgCiAgICAgICAgIGVudW0gU3dlZXBUb2dnbGUgeyBEb05vdFN3ZWVwLCBEb1N3
ZWVwIH07CiAgICAgICAgIHZvaWQgY29sbGVjdChTd2VlcFRvZ2dsZSk7CkBAIC0xNzMsOCArMTY1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IHNpemVfdCBtX21pbkJ5dGVzUGVy
Q3ljbGU7CiAgICAgICAgIAogICAgICAgICBPcGVyYXRpb25JblByb2dyZXNzIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzczsKLSAgICAgICAgTWFya2VkU3BhY2UgbV9tYXJrZWRTcGFjZTsKLSAgICAgICAg
TWFya2VkQmxvY2tTZXQgbV9ibG9ja3M7CisgICAgICAgIEFsbG9jYXRpb25TcGFjZSBtX29iamVj
dFNwYWNlOwogCiAgICAgICAgIERvdWJseUxpbmtlZExpc3Q8TWFya2VkQmxvY2s+IG1fZnJlZUJs
b2NrczsKICAgICAgICAgc2l6ZV90IG1fbnVtYmVyT2ZGcmVlQmxvY2tzOwpAQCAtMzAyLDU3ICsy
OTMsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBmb3JFYWNoUHJvdGVjdGVk
Q2VsbChmdW5jdG9yKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQ2VsbChGdW5j
dG9yJiBmdW5jdG9yKQotICAgIHsKLSAgICAgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7Ci0gICAg
ICAgIEJsb2NrSXRlcmF0b3IgZW5kID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgICAgIGZv
ciAoQmxvY2tJdGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgICAgICgqaXQpLT5mb3JFYWNoQ2VsbChmdW5jdG9yKTsKLSAgICAgICAg
cmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpm
b3JFYWNoQ2VsbCgpCi0gICAgewotICAgICAgICBGdW5jdG9yIGZ1bmN0b3I7Ci0gICAgICAgIHJl
dHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JF
YWNoQmxvY2soRnVuY3RvciYgZnVuY3RvcikKLSAgICB7Ci0gICAgICAgIGNhbm9uaWNhbGl6ZUJs
b2NrcygpOwotICAgICAgICBCbG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgp
OwotICAgICAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Jsb2Nrcy5zZXQoKS5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICBmdW5jdG9yKCppdCk7Ci0gICAgICAgIHJl
dHVybiBmdW5jdG9yLnJldHVyblZhbHVlKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgSGVhcDo6Zm9y
RWFjaEJsb2NrKCkKLSAgICB7Ci0gICAgICAgIEZ1bmN0b3IgZnVuY3RvcjsKLSAgICAgICAgcmV0
dXJuIGZvckVhY2hCbG9jayhmdW5jdG9yKTsKLSAgICB9Ci0gICAgCi0gICAgaW5saW5lIE1hcmtl
ZFNwYWNlOjpTaXplQ2xhc3MmIEhlYXA6OnNpemVDbGFzc0ZvcihzaXplX3QgYnl0ZXMpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9tYXJrZWRTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOwotICAg
IH0KLSAgICAKLSAgICBpbmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoTWFya2VkU3BhY2U6OlNp
emVDbGFzcyYgc2l6ZUNsYXNzKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBpcyBhIGxpZ2h0LXdl
aWdodCBmYXN0IHBhdGggdG8gY292ZXIgdGhlIG1vc3QgY29tbW9uIGNhc2UuCi0gICAgICAgIE1h
cmtlZEJsb2NrOjpGcmVlQ2VsbCogZmlyc3RGcmVlQ2VsbCA9IHNpemVDbGFzcy5maXJzdEZyZWVD
ZWxsOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwpKQotICAgICAgICAgICAg
cmV0dXJuIGFsbG9jYXRlU2xvd0Nhc2Uoc2l6ZUNsYXNzKTsKLSAgICAgICAgCi0gICAgICAgIHNp
emVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKLSAgICAgICAgcmV0
dXJuIGZpcnN0RnJlZUNlbGw7Ci0gICAgfQotCiAgICAgaW5saW5lIHZvaWQqIEhlYXA6OmFsbG9j
YXRlKHNpemVfdCBieXRlcykKICAgICB7CiAgICAgICAgIEFTU0VSVChpc1ZhbGlkQWxsb2NhdGlv
bihieXRlcykpOwotICAgICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MgPSBz
aXplQ2xhc3NGb3IoYnl0ZXMpOwotICAgICAgICByZXR1cm4gYWxsb2NhdGUoc2l6ZUNsYXNzKTsK
KyAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGUoYnl0ZXMpOwogICAgIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVElubGluZU1ldGhvZHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5l
TWV0aG9kcy5oCmluZGV4IDM4YWYwYzc0NDM3ZjU3NThlMDk3NTk4ODJhOTc0NTViZjUyMTcyNzAu
LjdlZjZiMjlhNzlhMTM3YzE1N2UzYjVlNmUwZjYyYTU4N2IxNjEzM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCkBAIC0zOTQsNyArMzk0LDcgQEAg
QUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKHVu
c2lnbmVkIHNyYykKIAogdGVtcGxhdGUgPHR5cGVuYW1lIENsYXNzVHlwZSwgdHlwZW5hbWUgU3Ry
dWN0dXJlVHlwZT4gaW5saW5lIHZvaWQgSklUOjplbWl0QWxsb2NhdGVCYXNpY0pTT2JqZWN0KFN0
cnVjdHVyZVR5cGUgc3RydWN0dXJlLCB2b2lkKiB2dGFibGUsIFJlZ2lzdGVySUQgcmVzdWx0LCBS
ZWdpc3RlcklEIHN0b3JhZ2VQdHIpCiB7Ci0gICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyogc2l6
ZUNsYXNzID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5zaXplQ2xhc3NGb3Ioc2l6ZW9mKENsYXNzVHlw
ZSkpOworICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MqIHNpemVDbGFzcyA9ICZtX2dsb2JhbERh
dGEtPmhlYXAuc2l6ZUNsYXNzRm9yT2JqZWN0KHNpemVvZihDbGFzc1R5cGUpKTsKICAgICBsb2Fk
UHRyKCZzaXplQ2xhc3MtPmZpcnN0RnJlZUNlbGwsIHJlc3VsdCk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdFB0cihaZXJvLCByZXN1bHQpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggMGE0YzlkZThkMDI4MDc2ZDc2ODRjMWYz
YWQ2OTczOGE3MjUyNjdiMy4uNDlhMGRiNzAzZmM0OWVmMWNiZWFlMGQ1MGQ2MmU4YjdiOGNmMWVl
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKCkKICAgICAvLyB1cCB0aHJvd2luZyBhd2F5IGNvZGUgdGhhdCBpcyBsaXZlIG9uIHRo
ZSBzdGFjay4KICAgICBBU1NFUlQoIWR5bmFtaWNHbG9iYWxPYmplY3QpOwogICAgIAotICAgIGhl
YXAuZm9yRWFjaENlbGw8UmVjb21waWxlcj4oKTsKKyAgICBoZWFwLm9iamVjdFNwYWNlKCkuZm9y
RWFjaENlbGw8UmVjb21waWxlcj4oKTsKIH0KIAogc3RydWN0IFN0YWNrUHJlc2VydmluZ1JlY29t
cGlsZXIgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKQEAgLTQ4OCw3ICs0ODgs
NyBAQCB2b2lkIEpTR2xvYmFsRGF0YTo6cmVsZWFzZUV4ZWN1dGFibGVNZW1vcnkoKQogICAgICAg
ICAgICAgICAgIHJlY29tcGlsZXIuY3VycmVudGx5RXhlY3V0aW5nRnVuY3Rpb25zLmFkZChzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKSk7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgIH0KLSAgICAgICAgaGVhcC5mb3JFYWNoQ2VsbDxTdGFja1ByZXNlcnZpbmdS
ZWNvbXBpbGVyPihyZWNvbXBpbGVyKTsKKyAgICAgICAgaGVhcC5vYmplY3RTcGFjZSgpLmZvckVh
Y2hDZWxsPFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXI+KHJlY29tcGlsZXIpOwogICAgIH0KICAg
ICBtX3JlZ0V4cENhY2hlLT5pbnZhbGlkYXRlQ29kZSgpOwogICAgIGhlYXAuY29sbGVjdEFsbEdh
cmJhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MzIyMWNlNDQ3YWY1ZDAyMGU2OGZiMGU0ZDA2OTMwMjRj
N2QyMzZhLi44YzdiZTVmOWFjNTM5MzA0YjBjNWZlYTU0OWI3NWM0Yjc0ZWQxYmQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFw
cGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBIZWFwIGFsbG9jYXRpb24gbG9naWMgaW50byBz
ZXBhcmF0ZSBBbGxvY2F0aW9uU3BhY2UgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4g
QmFycmFjbG91Z2guCisKKyAgICAgICAgQWRkaW5nIGEgZm9yd2FyZGluZyBoZWFkZXIuCisKKyAg
ICAgICAgKiBGb3J3YXJkaW5nSGVhZGVycy9oZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBBZGRlZC4K
KwogMjAxMS0wOS0yMCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjk1NTA5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWU0ZjVmNGEwMzRhNzY2OTc5NGNlZTcwZGNjOGY5OWUyN2QyNTkxOQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2hlYXAvQWxs
b2NhdGlvblNwYWNlLmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0FsbG9j
YXRpb25TcGFjZV9oCisjZGVmaW5lIFdlYkNvcmVfRldEX0FsbG9jYXRpb25TcGFjZV9oCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvQWxsb2NhdGlvblNwYWNlLmg+CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108031</attachid>
            <date>2011-09-20 11:28:08 -0700</date>
            <delta_ts>2011-09-20 11:31:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68409-20110920112807.patch</filename>
            <type>text/plain</type>
            <size>42023</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU1NTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA0MGNiZTc2OGM2NWEzZjIwYTRjZDc3YjA2MDA0NjdkZTExOWEyMzJlLi5mYzUyNmI2
NDkwYjk4ODU5MmZhZGI2ZjczOGM4M2ZlOTUyYmJhNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00NSw2ICs0NSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VT
CiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogICAgIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCiAKKyAgICBoZWFwL0FsbG9jYXRpb25TcGFjZS5jcHAKICAgICBo
ZWFwL0hlYXAuY3BwCiAgICAgaGVhcC9IYW5kbGVIZWFwLmNwcAogICAgIGhlYXAvSGFuZGxlU3Rh
Y2suY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwNDY3YTZiZTFmOGJiYWVjNzJjYWE5
Y2FjNDg3YzdiNjU3YWEzNmIzLi5iYWNkODMzZjQwYzk2YTFjMWIyOGFlZDRmOTg1Y2IzZmNlMzJi
NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMS0wOS0x
OSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhl
YXAgYWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBUaGlzIHBh
dGNoIGhvaXN0cyBkaXJlY3QgbWFuaXB1bGF0aW9uIG9mIHRoZSBNYXJrZWRTcGFjZSBhbmQgcmVs
YXRlZAorICAgICAgICBkYXRhIG91dCBvZiBIZWFwIGFuZCBpbnRvIGEgc2VwYXJhdGUgY2xhc3Mu
ICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8KKyAgICAgICAgaGF2ZSBtdWx0aXBsZSBhbGxvY2F0aW9u
IHNwYWNlcyBpbiBmdXR1cmUsIHNvIGVhc2luZyB0aGUgd2F5IHRvd2FyZHMKKyAgICAgICAgaGF2
aW5nIEdDJ2QgYmFja2luZyBzdG9yZXMgZm9yIG9iamVjdHMuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnBybzoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMp
OgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkFsbG9jYXRpb25TcGFjZTo6dHJ5QWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpBbGxvY2F0
aW9uU3BhY2U6OmFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3Bh
Y2U6OmFsbG9jYXRlQmxvY2spOgorICAgICAgICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OmZyZWVC
bG9ja3MpOgorICAgICAgICAoSlNDOjpUYWtlSWZFbXB0eTo6VGFrZUlmRW1wdHkpOgorICAgICAg
ICAoSlNDOjpUYWtlSWZFbXB0eTo6b3BlcmF0b3IoKSk6CisgICAgICAgIChKU0M6OlRha2VJZkVt
cHR5OjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2hyaW5r
KToKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6QWxsb2NhdGlvblNwYWNlOjpBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoSlNDOjpBbGxv
Y2F0aW9uU3BhY2U6OmJsb2Nrcyk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25TcGFjZTo6c2l6
ZUNsYXNzRm9yKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpzZXRIaWdoV2F0ZXJN
YXJrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpoaWdoV2F0ZXJNYXJrKToKKyAg
ICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjpjYW5vbmljYWxpemVCbG9ja3MpOgorICAgICAg
ICAoSlNDOjpBbGxvY2F0aW9uU3BhY2U6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6
QWxsb2NhdGlvblNwYWNlOjpmb3JFYWNoQ2VsbCk6CisgICAgICAgIChKU0M6OkFsbG9jYXRpb25T
cGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKEpTQzo6QWxsb2NhdGlvblNwYWNlOjphbGxv
Y2F0ZSk6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVh
cCk6CisgICAgICAgIChKU0M6OkhlYXA6OnJlcG9ydEV4dHJhTWVtb3J5Q29zdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6SGVhcDo6Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyk6CisgICAg
ICAgIChKU0M6OkhlYXA6Om1hcmtSb290cyk6CisgICAgICAgIChKU0M6OkhlYXA6OmNsZWFyTWFy
a3MpOgorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcCk6CisgICAgICAgIChKU0M6OkhlYXA6Om9i
amVjdENvdW50KToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2l6ZSk6CisgICAgICAgIChKU0M6Okhl
YXA6OmNhcGFjaXR5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6Z2xvYmFsT2JqZWN0Q291bnQpOgor
ICAgICAgICAoSlNDOjpIZWFwOjpvYmplY3RUeXBlQ291bnRzKToKKyAgICAgICAgKEpTQzo6SGVh
cDo6Y29sbGVjdCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNhbm9uaWNhbGl6ZUJsb2Nrcyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OnJlc2V0QWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6SGVhcDo6
ZnJlZUJsb2Nrcyk6CisgICAgICAgIChKU0M6OkhlYXA6OnNocmluayk6CisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgIChKU0M6OkhlYXA6Om9iamVjdFNwYWNlKToKKyAgICAgICAgKEpT
Qzo6SGVhcDo6c2l6ZUNsYXNzRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6SGVhcDo6YWxsb2Nh
dGUpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnJlY29tcGlsZUFsbEpTRnVu
Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpyZWxlYXNlRXhlY3V0YWJsZU1l
bW9yeSk6CisKIDIwMTEtMDktMjAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHI5NTUyMwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYWZlMzljMzk4Mzc0OWUyZDA1YmQ0ZGZiMmRj
YjZmOTIyODA0MjY2Li5iZTc0YzliMjMxODZmYTliYWIyMDAwNWFiZDY0ZDkxN2ZkODNiZGEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTMzLDYgKzEz
Myw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2NvcmVCb2FyZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
Y3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290cy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGUuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmV4cAppbmRleCBjYTAyN2VlMmI5Mzk3MmI3MTJmMTAxMTYzYjk4ODcxNDc5NWVmMTU5
Li41MjhhNTE0OGNmNTc0ZTRiZWRhYmVjNWMyM2UzODYyNWYxNzIwOTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTExOCw2ICsxMTgsNyBAQCBfX1pOM0pT
QzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVQTlNfOEpTT2JqZWN0RQogX19aTjNKU0MxMUpT
Qnl0ZUFycmF5MTNzX2RlZmF1bHRJbmZvRQogX19aTjNKU0MxMUpTQnl0ZUFycmF5MTVjcmVhdGVT
dHJ1Y3R1cmVFUk5TXzEySlNHbG9iYWxEYXRhRVBOU18xNEpTR2xvYmFsT2JqZWN0RU5TXzdKU1Zh
bHVlRVBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDMTFKU0J5dGVBcnJheUMxRVBOU185RXhlY1N0
YXRlRVBOU185U3RydWN0dXJlRVBOM1dURjlCeXRlQXJyYXlFCitfX1pOM0pTQzE1QWxsb2NhdGlv
blNwYWNlMTZhbGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9f
Wk4zSlNDMTFQYXJzZXJBcmVuYTVyZXNldEV2CiBfX1pOM0pTQzExY2hlY2tTeW50YXhFUE5TXzlF
eGVjU3RhdGVFUktOU18xMFNvdXJjZUNvZGVFUE5TXzdKU1ZhbHVlRQogX19aTjNKU0MxMWNyZWF0
ZUVycm9yRVBOU185RXhlY1N0YXRlRVJLTlNfN1VTdHJpbmdFCkBAIC0yMzMsNyArMjM0LDYgQEAg
X19aTjNKU0MzNWNyZWF0ZUludGVycnVwdGVkRXhlY3V0aW9uRXhjZXB0aW9uRVBOU18xMkpTR2xv
YmFsRGF0YUUKIF9fWk4zSlNDNDFjb25zdHJ1Y3RGdW5jdGlvblNraXBwaW5nRXZhbEVuYWJsZWRD
aGVja0VQTlNfOUV4ZWNTdGF0ZUVQTlNfMTRKU0dsb2JhbE9iamVjdEVSS05TXzdBcmdMaXN0RVJL
TlNfMTBJZGVudGlmaWVyRVJLTlNfN1VTdHJpbmdFaQogX19aTjNKU0M0SGVhcDExb2JqZWN0Q291
bnRFdgogX19aTjNKU0M0SGVhcDE2YWN0aXZpdHlDYWxsYmFja0V2Ci1fX1pOM0pTQzRIZWFwMTZh
bGxvY2F0ZVNsb3dDYXNlRVJOU18xMU1hcmtlZFNwYWNlOVNpemVDbGFzc0UKIF9fWk4zSlNDNEhl
YXAxNm9iamVjdFR5cGVDb3VudHNFdgogX19aTjNKU0M0SGVhcDE3Y29sbGVjdEFsbEdhcmJhZ2VF
dgogX19aTjNKU0M0SGVhcDE3Z2xvYmFsT2JqZWN0Q291bnRFdgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZ3lwaQppbmRleCA2ODFhZDYzM2RhY2ZhNTM5ODdhMWJmZmFlMDNi
MjVkYmRjZmI0NDg5Li5hZDYzNjFiM2IxOGMwZGRlOTdiYzAzNTUzM2NiYTYxYjMzZjFjMmNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQpAQCAtMjcsNiArMjcs
NyBAQAogICAgICAgICAgICAgJ0FQSS9PcGFxdWVKU1N0cmluZy5oJywKICAgICAgICAgICAgICdh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgnLAogICAgICAgICAgICAgJ2J5dGVjb2Rl
L09wY29kZS5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5oJywKICAgICAg
ICAgICAgICdoZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFu
ZGxlLmgnLAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlSGVhcC5oJywKQEAgLTMyNCw2ICszMjUs
NyBAQAogICAgICAgICAgICAgJ2J5dGVjb21waWxlci9MYWJlbFNjb3BlLmgnLAogICAgICAgICAg
ICAgJ2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwJywKICAgICAgICAgICAgICdieXRlY29t
cGlsZXIvUmVnaXN0ZXJJRC5oJywKKyAgICAgICAgICAgICdoZWFwL0FsbG9jYXRpb25TcGFjZS5j
cHAnLAogICAgICAgICAgICAgJ2hlYXAvQ29uc2VydmF0aXZlUm9vdHMuY3BwJywKICAgICAgICAg
ICAgICdoZWFwL0hhbmRsZUhlYXAuY3BwJywKICAgICAgICAgICAgICdoZWFwL0hhbmRsZVN0YWNr
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJvIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBybwppbmRleCBiYTgy
N2I4MTdlMWRkMTUzNjA2ZWI3MGM4YzlmYzgxNjcyYTJhZjYwLi5jMDZlMmY5N2Q0ODRjY2NiNWY3
MTRmYzU5MDJkYmM5ZmZhMzc1MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJvCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcm8KQEAgLTcyLDYgKzcyLDcgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmNwcCBcCiAgICAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBc
CiAgICAgYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgXAorICAgIGhlYXAvQWxsb2NhdGlv
blNwYWNlLmNwcCBcCiAgICAgaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHAgXAogICAgIGhlYXAv
SGFuZGxlSGVhcC5jcHAgXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXggNzYzZGQw
MDlkMDUzY2Q5OTIxNTU1NmRmNzdiYWY5NWMzNjQwYWJlYi4uYTBkNTQ2ODA2ODhhOWE0ZTg0MDRm
OWQ2NWQ2ZjZiYzM3ZTA5NjY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTU5LDkgKzU5LDggQEAgRVhQT1JUUwogICAgID9h
ZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2Jh
bERhdGFAMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEBaCiAgICAgP2FkZFNsb3dDYXNl
QElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZA
QFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0ltcGxANEBAWgogICAgID9hZGRTdGF0aWNHbG9iYWxz
QEpTR2xvYmFsT2JqZWN0QEpTQ0BASUFFWFBBVUdsb2JhbFByb3BlcnR5SW5mb0AxMkBIQFoKLSAg
ICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWEFBVVNpemVDbGFzc0BNYXJrZWRTcGFjZUAyQEBa
CiAgICAgP2FsbG9jYXRlUHJvcGVydHlTdG9yYWdlQEpTT2JqZWN0QEpTQ0BAUUFFWEFBVkpTR2xv
YmFsRGF0YUAyQElJQFoKLSAgICA/YWxsb2NhdGVTbG93Q2FzZUBIZWFwQEpTQ0BAQUFFUEFYQUFV
U2l6ZUNsYXNzQE1hcmtlZFNwYWNlQDJAQFoKKyAgICA/YWxsb2NhdGVTbG93Q2FzZUBBbGxvY2F0
aW9uU3BhY2VASlNDQEBBQUVQQVhBQVVTaXplQ2xhc3NATWFya2VkU3BhY2VAMkBAWgogICAgID9h
cHBlbmRAU3RyaW5nQnVpbGRlckBXVEZAQFFBRVhQQkRJQFoKICAgICA/YXBwZW5kQFN0cmluZ0J1
aWxkZXJAV1RGQEBRQUVYUEJfV0lAWgogICAgID9hc2NpaUBVU3RyaW5nQEpTQ0BAUUJFP0FWQ1N0
cmluZ0BXVEZAQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvaiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCmluZGV4IDA5MjVkMzNjZjk1NWIyZjMyZGQwN2RlODQ1ZTBjMjhm
ODg2ZTgzMjcuLjNiMzA4MzRlMmRkN2RiNWVjNTNlZGEwZTdjNDcwNTM2Y2EwOWFhNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCkBAIC0xODkwLDYgKzE4OTAsMTQgQEAKIAkJCU5hbWU9ImhlYXAiCiAJCQk+CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxBbGxvY2F0aW9uU3BhY2UuY3BwIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmlsZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEFs
bG9jYXRpb25TcGFjZS5oIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA8RmlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsYXRp
dmVQYXRoPSIuLlwuLlxoZWFwXENvbnNlcnZhdGl2ZVJvb3RzLmNwcCIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0Zp
bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY3NDIxZDcxNDM3NmE3NWMwYzVl
MDQxMWY1NWU2MTBlZGU2YWVjNDQuLmRjMGI3NjIxNTcwNWE2Y2VlZDJiOGZjODkwYWQwOGU1YTlj
MTRiZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDYsNiArNDA2LDggQEAK
IAkJQTE3MTJCM0YxMUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUz
MTUgLyogUmVnRXhwQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdC
MjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFENzY0NTIxMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFENzY0
NTExMzU0NDQ4QjAwQzVDN0MwIC8qIEFsaWdubWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3MDQ1NkIwMTQyN0ZCOTEwMDM3REE2OCAvKiBB
bGxvY2F0aW9uU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3MDQ1NkFGMTQyN0ZCMTUwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzA0NTZCMTE0
MjdGQjk1MDAzN0RBNjggLyogQWxsb2NhdGlvblNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3MDQ1NkFFMTQyN0ZCMDMwMDM3REE2OCAvKiBB
bGxvY2F0aW9uU3BhY2UuY3BwICovOyB9OwogCQlBNzEyMzZFNTExOTVGMzNDMDBCRDIxNzQgLyog
SklUT3Bjb2RlczMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MTIzNkU0MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3Bw
ICovOyB9OwogCQlBNzI3MDA5MDBEQUM2QkJDMDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDA3ODBE
QUM2MDU2MDBFNTQ4RDcgLyogSlNOb3RBbk9iamVjdC5jcHAgKi87IH07CiAJCUE3MjcwMUI5MERB
REU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzI3MDFCMzBEQURFOTQ5MDBFNTQ4RDcgLyogRXhj
ZXB0aW9uSGVscGVycy5oICovOyB9OwpAQCAtMTE4Miw2ICsxMTg0LDggQEAKIAkJQTE3MTJCM0Ux
MUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlZ0V4cENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
NzEyQjQwMTFDN0IyMzUwMDdBNTMxNSAvKiBSZWdFeHBLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVnRXhwS2V5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExRDc2NDUxMTM1NDQ0OEIwMEM1QzdDMCAvKiBBbGlnbm1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUE3MDQ1NkFFMTQyN0ZCMDMwMDM3REE2OCAvKiBBbGxvY2F0aW9uU3BhY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWxsb2NhdGlvblNwYWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTcwNDU2QUYxNDI3RkIxNTAwMzdEQTY4IC8qIEFs
bG9jYXRpb25TcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBbGxvY2F0
aW9uU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTcxMjM2RTQxMTk1RjMz
QzAwQkQyMTc0IC8qIEpJVE9wY29kZXMzMl82NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRPcGNvZGVzMzJfNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzE4RjYxQTExNzU0QTIxMDAyNDY1QTcgLyogUmVnRXhwSml0VGFibGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ0V4cEppdFRhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzE4RjgyMTExNzhFQjRCMDAyNDY1QTcgLyogY3JlYXRl
X3JlZ2V4X3RhYmxlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gY3JlYXRl
X3JlZ2V4X3RhYmxlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MTcsNiArMTYy
MSw4IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBNzA0NTZBRjE0MjdGQjE1MDAzN0RB
NjggLyogQWxsb2NhdGlvblNwYWNlLmggKi8sCisJCQkJQTcwNDU2QUUxNDI3RkIwMzAwMzdEQTY4
IC8qIEFsbG9jYXRpb25TcGFjZS5jcHAgKi8sCiAJCQkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRD
IC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLywKIAkJCQkwRkM4MTUxNDE0MDUxMThEMDBD
RkE2MDMgLyogVlRhYmxlU3BlY3RydW0uaCAqLywKIAkJCQkwRkM4MTUxMjE0MDUxMTg2MDBDRkE2
MDMgLyogVlRhYmxlU3BlY3RydW0uY3BwICovLApAQCAtMjc5Myw2ICsyNzk5LDcgQEAKIAkJCQlB
N0JDMEM4MjE0MDYwOEIwMDBCMUJCNzEgLyogQ2hlY2tlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE3ODFFMzU5MTQxOTcwQzcwMDA5NEQ5MCAvKiBTdG9yYWdlQmFycmllci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEwODI3N0ExNDIxNjhENzAwOTBDQ0FDIC8qIEJpbmFyeVNlbWFw
aG9yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTcwNDU2QjAxNDI3RkI5MTAwMzdEQTY4IC8qIEFs
bG9jYXRpb25TcGFjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMjk4LDYgKzMzMDUsNyBAQAogCQkJ
CUMyMkM1MkZFMTNGQUY2RUYwMEI3REMwRCAvKiBmaXhlZC1kdG9hLmNjIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzIyQzUzMTMxM0ZBRjZFRjAwQjdEQzBEIC8qIHN0cnRvZC5jYyBpbiBTb3VyY2VzICov
LAogCQkJCTFBMDgyNzc5MTQyMTY4RDcwMDkwQ0NBQyAvKiBCaW5hcnlTZW1hcGhvcmUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTcwNDU2QjExNDI3RkI5NTAwMzdEQTY4IC8qIEFsbG9jYXRpb25T
cGFjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCmluZGV4IDYxMDQ0YTg5Yzc5ZWU2YjEzZjY4ODlmMjgzMzc4ZmRlNWYyZjgz
NDIuLjEzZDZhZDhmMzA4ZGQ3YzZlNjM1MDg2ZTA4YmVlOTkyNDJjNzRkMTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBA
IHZvaWQgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVjb21waWxlciByZWNvbXBpbGVyKHRo
aXMpOwotICAgIGdsb2JhbERhdGEtPmhlYXAuZm9yRWFjaENlbGwocmVjb21waWxlcik7CisgICAg
Z2xvYmFsRGF0YS0+aGVhcC5vYmplY3RTcGFjZSgpLmZvckVhY2hDZWxsKHJlY29tcGlsZXIpOwog
fQogCiBKU1ZhbHVlIGV2YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYgc2Ny
aXB0LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MWMxMjdiYjA3ZGVjNjQ2NDljZTQ0NDk3NDcyZTkzZDg3YjZmNGU2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmNwcApA
QCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgorCisjaW5jbHVkZSAiSGVhcC5oIgorCisjZGVmaW5l
IENPTExFQ1RfT05fRVZFUllfQUxMT0NBVElPTiAwCisKK25hbWVzcGFjZSBKU0MgeworCitpbmxp
bmUgdm9pZCogQWxsb2NhdGlvblNwYWNlOjp0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJiBzaXplQ2xhc3MpCit7CisgICAgbV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBB
bGxvY2F0aW9uOworICAgIHZvaWQqIHJlc3VsdCA9IG1fbWFya2VkU3BhY2UuYWxsb2NhdGUoc2l6
ZUNsYXNzKTsKKyAgICBtX2hlYXAtPm1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9u
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQqIEFsbG9jYXRpb25TcGFjZTo6YWxsb2Nh
dGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCit7CisjaWYgQ09M
TEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCisgICAgY29sbGVjdEFsbEdhcmJhZ2UoKTsKKyAgICBB
U1NFUlQobV9oZWFwLT5tX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb24pOworI2Vu
ZGlmCisgICAgCisgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAg
ICAKKyAgICBpZiAoTElLRUxZKHJlc3VsdCAhPSAwKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAKKyAgICBBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQ7CisgICAgCisgICAg
aWYgKG1fbWFya2VkU3BhY2Uud2F0ZXJNYXJrKCkgPCBtX21hcmtlZFNwYWNlLmhpZ2hXYXRlck1h
cmsoKSB8fCAhbV9oZWFwLT5tX2lzU2FmZVRvQ29sbGVjdCkKKyAgICAgICAgYWxsb2NhdGlvbkVm
Zm9ydCA9IEFsbG9jYXRpb25NdXN0U3VjY2VlZDsKKyAgICBlbHNlCisgICAgICAgIGFsbG9jYXRp
b25FZmZvcnQgPSBBbGxvY2F0aW9uQ2FuRmFpbDsKKyAgICAKKyAgICBNYXJrZWRCbG9jayogYmxv
Y2sgPSBhbGxvY2F0ZUJsb2NrKHNpemVDbGFzcy5jZWxsU2l6ZSwgYWxsb2NhdGlvbkVmZm9ydCk7
CisgICAgaWYgKGJsb2NrKSB7CisgICAgICAgIG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNs
YXNzLCBibG9jayk7CisgICAgICAgIHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlKHNpemVDbGFz
cyk7CisgICAgICAgIEFTU0VSVChyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBtX2hlYXAtPmNvbGxlY3QoSGVhcDo6RG9Ob3RTd2VlcCk7CisgICAgCisg
ICAgcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICAKKyAgICBpZiAocmVzdWx0
KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIEFTU0VSVChtX21hcmtlZFNwYWNl
LndhdGVyTWFyaygpIDwgbV9tYXJrZWRTcGFjZS5oaWdoV2F0ZXJNYXJrKCkpOworICAgIAorICAg
IG1fbWFya2VkU3BhY2UuYWRkQmxvY2soc2l6ZUNsYXNzLCBhbGxvY2F0ZUJsb2NrKHNpemVDbGFz
cy5jZWxsU2l6ZSwgQWxsb2NhdGlvbk11c3RTdWNjZWVkKSk7CisgICAgCisgICAgcmVzdWx0ID0g
dHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsKKyAgICBBU1NFUlQocmVzdWx0KTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitNYXJrZWRCbG9jayogQWxsb2NhdGlvblNwYWNlOjphbGxvY2F0ZUJsb2Nr
KHNpemVfdCBjZWxsU2l6ZSwgQWxsb2NhdGlvblNwYWNlOjpBbGxvY2F0aW9uRWZmb3J0IGFsbG9j
YXRpb25FZmZvcnQpCit7CisgICAgTWFya2VkQmxvY2sqIGJsb2NrOworICAgIAorICAgIHsKKyAg
ICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1faGVhcC0+bV9mcmVlQmxvY2tMb2NrKTsKKyAgICAg
ICAgaWYgKG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MpIHsKKyAgICAgICAgICAgIGJsb2Nr
ID0gbV9oZWFwLT5tX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpOworICAgICAgICAgICAgQVNTRVJU
KGJsb2NrKTsKKyAgICAgICAgICAgIG1faGVhcC0+bV9udW1iZXJPZkZyZWVCbG9ja3MtLTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICBibG9jayA9IDA7CisgICAgfQorICAgIGlmIChibG9j
aykKKyAgICAgICAgYmxvY2stPmluaXRGb3JDZWxsU2l6ZShjZWxsU2l6ZSk7CisgICAgZWxzZSBp
ZiAoYWxsb2NhdGlvbkVmZm9ydCA9PSBBbGxvY2F0aW9uQ2FuRmFpbCkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgZWxzZQorICAgICAgICBibG9jayA9IE1hcmtlZEJsb2NrOjpjcmVhdGUobV9oZWFw
LCBjZWxsU2l6ZSk7CisgICAgCisgICAgbV9ibG9ja3MuYWRkKGJsb2NrKTsKKyAgICAKKyAgICBy
ZXR1cm4gYmxvY2s7Cit9CisKK3ZvaWQgQWxsb2NhdGlvblNwYWNlOjpmcmVlQmxvY2tzKE1hcmtl
ZEJsb2NrKiBoZWFkKQoreworICAgIE1hcmtlZEJsb2NrKiBuZXh0OworICAgIGZvciAoTWFya2Vk
QmxvY2sqIGJsb2NrID0gaGVhZDsgYmxvY2s7IGJsb2NrID0gbmV4dCkgeworICAgICAgICBuZXh0
ID0gYmxvY2stPm5leHQoKTsKKyAgICAgICAgCisgICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9j
ayk7CisgICAgICAgIGJsb2NrLT5yZXNldCgpOworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9oZWFwLT5tX2ZyZWVCbG9ja0xvY2spOworICAgICAgICBtX2hlYXAtPm1fZnJlZUJsb2Nrcy5h
cHBlbmQoYmxvY2spOworICAgICAgICBtX2hlYXAtPm1fbnVtYmVyT2ZGcmVlQmxvY2tzKys7Cisg
ICAgfQorfQorCitjbGFzcyBUYWtlSWZFbXB0eSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBNYXJr
ZWRCbG9jayogUmV0dXJuVHlwZTsKKyAgICAKKyAgICBUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSop
OworICAgIHZvaWQgb3BlcmF0b3IoKShNYXJrZWRCbG9jayopOworICAgIFJldHVyblR5cGUgcmV0
dXJuVmFsdWUoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgTWFya2VkU3BhY2UqIG1fbWFya2VkU3Bh
Y2U7CisgICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVzOworfTsKKwor
aW5saW5lIFRha2VJZkVtcHR5OjpUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSogbmV3U3BhY2UpCisg
ICAgOiBtX21hcmtlZFNwYWNlKG5ld1NwYWNlKQoreworfQorCitpbmxpbmUgdm9pZCBUYWtlSWZF
bXB0eTo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCit7CisgICAgaWYgKCFibG9jay0+
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9tYXJrZWRTcGFjZS0+cmVt
b3ZlQmxvY2soYmxvY2spOworICAgIG1fZW1wdGllcy5hcHBlbmQoYmxvY2spOworfQorCitpbmxp
bmUgVGFrZUlmRW1wdHk6OlJldHVyblR5cGUgVGFrZUlmRW1wdHk6OnJldHVyblZhbHVlKCkKK3sK
KyAgICByZXR1cm4gbV9lbXB0aWVzLmhlYWQoKTsKK30KKwordm9pZCBBbGxvY2F0aW9uU3BhY2U6
OnNocmluaygpCit7CisgICAgLy8gV2UgcmVjb3JkIGEgdGVtcG9yYXJ5IGxpc3Qgb2YgZW1wdGll
cyB0byBhdm9pZCBtb2RpZnlpbmcgbV9ibG9ja3Mgd2hpbGUgaXRlcmF0aW5nIGl0LgorICAgIFRh
a2VJZkVtcHR5IHRha2VJZkVtcHR5KCZtX21hcmtlZFNwYWNlKTsKKyAgICBmcmVlQmxvY2tzKGZv
ckVhY2hCbG9jayh0YWtlSWZFbXB0eSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1Yjk1ZTM1YzkwMTY1MDk5N2Rk
YTljMTU3NzIzZjlmYjBkODRhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgQWxsb2NhdGlvblNwYWNlX2gKKyNkZWZpbmUgQWxsb2NhdGlvblNwYWNlX2gK
KworI2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIK
KworI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBI
ZWFwOworY2xhc3MgTWFya2VkQmxvY2s7CisKK2NsYXNzIEFsbG9jYXRpb25TcGFjZSB7CitwdWJs
aWM6CisgICAgQWxsb2NhdGlvblNwYWNlKEhlYXAqIGhlYXApCisgICAgICAgIDogbV9oZWFwKGhl
YXApCisgICAgICAgICwgbV9tYXJrZWRTcGFjZShoZWFwKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgdHlwZWRlZiBIYXNoU2V0PE1hcmtlZEJsb2NrKj46Oml0ZXJhdG9yIEJsb2NrSXRlcmF0b3I7
CisgICAgCisgICAgTWFya2VkQmxvY2tTZXQmIGJsb2NrcygpIHsgcmV0dXJuIG1fYmxvY2tzOyB9
CisgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgc2l6ZUNsYXNzRm9yKHNpemVfdCBieXRlcykg
eyByZXR1cm4gbV9tYXJrZWRTcGFjZS5zaXplQ2xhc3NGb3IoYnl0ZXMpOyB9CisgICAgdm9pZCBz
ZXRIaWdoV2F0ZXJNYXJrKHNpemVfdCBieXRlcykgeyBtX21hcmtlZFNwYWNlLnNldEhpZ2hXYXRl
ck1hcmsoYnl0ZXMpOyB9CisgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKSB7IHJldHVybiBtX21h
cmtlZFNwYWNlLmhpZ2hXYXRlck1hcmsoKTsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaENlbGwoRnVuY3Rv
ciYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJl
dHVyblR5cGUgZm9yRWFjaENlbGwoKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jayhGdW5jdG9yJik7CisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBm
b3JFYWNoQmxvY2soKTsKKyAgICAKKyAgICB2b2lkIGNhbm9uaWNhbGl6ZUJsb2NrcygpIHsgbV9t
YXJrZWRTcGFjZS5jYW5vbmljYWxpemVCbG9ja3MoKTsgfQorICAgIHZvaWQgcmVzZXRBbGxvY2F0
b3IoKSB7IG1fbWFya2VkU3BhY2UucmVzZXRBbGxvY2F0b3IoKTsgfQorICAgIAorICAgIHZvaWQq
IGFsbG9jYXRlKHNpemVfdCk7CisgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7Cisg
ICAgdm9pZCBzaHJpbmsoKTsKKyAgICAKK3ByaXZhdGU6CisgICAgZW51bSBBbGxvY2F0aW9uRWZm
b3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9OworICAgIAor
ICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKKyAgICB2b2lkKiB0
cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgdm9pZCogYWxsb2NhdGVT
bG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CisgICAgTWFya2VkQmxvY2sqIGFsbG9j
YXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0KTsKKyAgICAKKyAgICBI
ZWFwKiBtX2hlYXA7CisgICAgTWFya2VkU3BhY2UgbV9tYXJrZWRTcGFjZTsKKyAgICBNYXJrZWRC
bG9ja1NldCBtX2Jsb2NrczsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGlu
ZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaENl
bGwoRnVuY3RvciYgZnVuY3RvcikKK3sKKyAgICBjYW5vbmljYWxpemVCbG9ja3MoKTsKKyAgICBC
bG9ja0l0ZXJhdG9yIGVuZCA9IG1fYmxvY2tzLnNldCgpLmVuZCgpOworICAgIGZvciAoQmxvY2tJ
dGVyYXRvciBpdCA9IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgKCppdCktPmZvckVhY2hDZWxsKGZ1bmN0b3IpOworICAgIHJldHVybiBmdW5jdG9yLnJl
dHVyblZhbHVlKCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaENlbGwoKQor
eworICAgIEZ1bmN0b3IgZnVuY3RvcjsKKyAgICByZXR1cm4gZm9yRWFjaENlbGwoZnVuY3Rvcik7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9y
OjpSZXR1cm5UeXBlIEFsbG9jYXRpb25TcGFjZTo6Zm9yRWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0
b3IpCit7CisgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7CisgICAgQmxvY2tJdGVyYXRvciBlbmQg
PSBtX2Jsb2Nrcy5zZXQoKS5lbmQoKTsKKyAgICBmb3IgKEJsb2NrSXRlcmF0b3IgaXQgPSBtX2Js
b2Nrcy5zZXQoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGZ1bmN0b3IoKml0
KTsKKyAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOworfQorCit0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBBbGxvY2F0
aW9uU3BhY2U6OmZvckVhY2hCbG9jaygpCit7CisgICAgRnVuY3RvciBmdW5jdG9yOworICAgIHJl
dHVybiBmb3JFYWNoQmxvY2soZnVuY3Rvcik7Cit9CisKK2lubGluZSB2b2lkKiBBbGxvY2F0aW9u
U3BhY2U6OmFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzcykKK3sKKyAg
ICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9zdCBj
b21tb24gY2FzZS4KKyAgICBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIGZpcnN0RnJlZUNlbGwgPSBz
aXplQ2xhc3MuZmlyc3RGcmVlQ2VsbDsKKyAgICBpZiAoVU5MSUtFTFkoIWZpcnN0RnJlZUNlbGwp
KQorICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3MpOworICAgIAorICAg
IHNpemVDbGFzcy5maXJzdEZyZWVDZWxsID0gZmlyc3RGcmVlQ2VsbC0+bmV4dDsKKyAgICByZXR1
cm4gZmlyc3RGcmVlQ2VsbDsKK30KKworaW5saW5lIHZvaWQqIEFsbG9jYXRpb25TcGFjZTo6YWxs
b2NhdGUoc2l6ZV90IGJ5dGVzKQoreworICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVD
bGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7CisgICAgcmV0dXJuIGFsbG9jYXRlKHNpemVDbGFz
cyk7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4
IDI2ZTRlZjQ3ZmJkNWUwOWFlOWE1NGFjOTEzZTY5OGY1NjZkNGMwYTcuLjliNGVkNmFlMDI1ZTQy
MTcwYTBiOTUxYjlmMWE3OTBiNjI1OWRiNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiVHJhY2luZy5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIAotI2RlZmluZSBDT0xMRUNUX09OX0VWRVJZX0FMTE9DQVRJT04gMAogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTE3NSwzOCArMTc0LDYg
QEAgaW5saW5lIHZvaWQgQ291bnRJZkdsb2JhbE9iamVjdDo6b3BlcmF0b3IoKShKU0NlbGwqIGNl
bGwpCiAgICAgY291bnQoMSk7CiB9CiAKLWNsYXNzIFRha2VJZkVtcHR5IHsKLXB1YmxpYzoKLSAg
ICB0eXBlZGVmIE1hcmtlZEJsb2NrKiBSZXR1cm5UeXBlOwotCi0gICAgVGFrZUlmRW1wdHkoTWFy
a2VkU3BhY2UqKTsKLSAgICB2b2lkIG9wZXJhdG9yKCkoTWFya2VkQmxvY2sqKTsKLSAgICBSZXR1
cm5UeXBlIHJldHVyblZhbHVlKCk7Ci0KLXByaXZhdGU6Ci0gICAgTWFya2VkU3BhY2UqIG1fbWFy
a2VkU3BhY2U7Ci0gICAgRG91Ymx5TGlua2VkTGlzdDxNYXJrZWRCbG9jaz4gbV9lbXB0aWVzOwot
fTsKLQotaW5saW5lIFRha2VJZkVtcHR5OjpUYWtlSWZFbXB0eShNYXJrZWRTcGFjZSogbmV3U3Bh
Y2UpCi0gICAgOiBtX21hcmtlZFNwYWNlKG5ld1NwYWNlKQotewotfQotCi1pbmxpbmUgdm9pZCBU
YWtlSWZFbXB0eTo6b3BlcmF0b3IoKShNYXJrZWRCbG9jayogYmxvY2spCi17Ci0gICAgaWYgKCFi
bG9jay0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX21hcmtlZFNwYWNlLT5y
ZW1vdmVCbG9jayhibG9jayk7Ci0gICAgbV9lbXB0aWVzLmFwcGVuZChibG9jayk7Ci19Ci0KLWlu
bGluZSBUYWtlSWZFbXB0eTo6UmV0dXJuVHlwZSBUYWtlSWZFbXB0eTo6cmV0dXJuVmFsdWUoKQot
ewotICAgIHJldHVybiBtX2VtcHRpZXMuaGVhZCgpOwotfQotCiBjbGFzcyBSZWNvcmRUeXBlIHsK
IHB1YmxpYzoKICAgICB0eXBlZGVmIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0PiBSZXR1cm5UeXBl
OwpAQCAtMjQ5LDcgKzIxNiw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBIZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICA6IG1faGVhcFNpemUoaGVhcFNpemUpCiAgICAgLCBt
X21pbkJ5dGVzUGVyQ3ljbGUoaGVhcFNpemVGb3JIaW50KGhlYXBTaXplKSkKICAgICAsIG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKLSAgICAsIG1fbWFya2VkU3BhY2UodGhpcykK
KyAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fZXh0cmFDb3N0KDApCiAgICAgLCBt
X21hcmtMaXN0U2V0KDApCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZp
dHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQpAQCAtMjU5LDcgKzIyNiw3IEBAIEhlYXA6OkhlYXAo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwU2l6ZSBoZWFwU2l6ZSkKICAgICAsIG1faXNT
YWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiB7Ci0g
ICAgbV9tYXJrZWRTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1fbWluQnl0ZXNQZXJDeWNsZSk7Cisg
ICAgbV9vYmplY3RTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1fbWluQnl0ZXNQZXJDeWNsZSk7CiAg
ICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiAgICAgbV9udW1iZXJPZkZyZWVCbG9ja3MgPSAw
OwogICAgIG1fYmxvY2tGcmVlaW5nVGhyZWFkID0gY3JlYXRlVGhyZWFkKGJsb2NrRnJlZWluZ1Ro
cmVhZFN0YXJ0RnVuYywgdGhpcywgIkphdmFTY3JpcHRDb3JlOjpCbG9ja0ZyZWUiKTsKQEAgLTM5
Myw2MiArMzYwLDExIEBAIHZvaWQgSGVhcDo6cmVwb3J0RXh0cmFNZW1vcnlDb3N0U2xvd0Nhc2Uo
c2l6ZV90IGNvc3QpCiAgICAgLy8gaWYgYSBsYXJnZSB2YWx1ZSBzdXJ2aXZlcyBvbmUgZ2FyYmFn
ZSBjb2xsZWN0aW9uLCB0aGVyZSBpcyBub3QgbXVjaCBwb2ludCB0bwogICAgIC8vIGNvbGxlY3Rp
bmcgbW9yZSBmcmVxdWVudGx5IGFzIGxvbmcgYXMgaXQgc3RheXMgYWxpdmUuCiAKLSAgICBpZiAo
bV9leHRyYUNvc3QgPiBtYXhFeHRyYUNvc3QgJiYgbV9leHRyYUNvc3QgPiBtX21hcmtlZFNwYWNl
LmhpZ2hXYXRlck1hcmsoKSAvIDIpCisgICAgaWYgKG1fZXh0cmFDb3N0ID4gbWF4RXh0cmFDb3N0
ICYmIG1fZXh0cmFDb3N0ID4gbV9vYmplY3RTcGFjZS5oaWdoV2F0ZXJNYXJrKCkgLyAyKQogICAg
ICAgICBjb2xsZWN0QWxsR2FyYmFnZSgpOwogICAgIG1fZXh0cmFDb3N0ICs9IGNvc3Q7CiB9CiAK
LWlubGluZSB2b2lkKiBIZWFwOjp0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBz
aXplQ2xhc3MpCi17Ci0gICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gQWxsb2NhdGlvbjsKLSAg
ICB2b2lkKiByZXN1bHQgPSBtX21hcmtlZFNwYWNlLmFsbG9jYXRlKHNpemVDbGFzcyk7Ci0gICAg
bV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247Ci0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLQotdm9pZCogSGVhcDo6YWxsb2NhdGVTbG93Q2FzZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3MpCi17Ci0jaWYgQ09MTEVDVF9PTl9FVkVSWV9BTExPQ0FUSU9OCi0gICAgY29s
bGVjdEFsbEdhcmJhZ2UoKTsKLSAgICBBU1NFUlQobV9vcGVyYXRpb25JblByb2dyZXNzID09IE5v
T3BlcmF0aW9uKTsKLSNlbmRpZgotCi0gICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6
ZUNsYXNzKTsKLQotICAgIGlmIChMSUtFTFkocmVzdWx0ICE9IDApKQotICAgICAgICByZXR1cm4g
cmVzdWx0OwotCi0gICAgQWxsb2NhdGlvbkVmZm9ydCBhbGxvY2F0aW9uRWZmb3J0OwotICAgIAot
ICAgIGlmIChtX21hcmtlZFNwYWNlLndhdGVyTWFyaygpIDwgbV9tYXJrZWRTcGFjZS5oaWdoV2F0
ZXJNYXJrKCkgfHwgIW1faXNTYWZlVG9Db2xsZWN0KQotICAgICAgICBhbGxvY2F0aW9uRWZmb3J0
ID0gQWxsb2NhdGlvbk11c3RTdWNjZWVkOwotICAgIGVsc2UKLSAgICAgICAgYWxsb2NhdGlvbkVm
Zm9ydCA9IEFsbG9jYXRpb25DYW5GYWlsOwotICAgIAotICAgIE1hcmtlZEJsb2NrKiBibG9jayA9
IGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBhbGxvY2F0aW9uRWZmb3J0KTsKLSAg
ICBpZiAoYmxvY2spIHsKLSAgICAgICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9jayhzaXplQ2xhc3Ms
IGJsb2NrKTsKLSAgICAgICAgdm9pZCogcmVzdWx0ID0gdHJ5QWxsb2NhdGUoc2l6ZUNsYXNzKTsK
LSAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQot
Ci0gICAgY29sbGVjdChEb05vdFN3ZWVwKTsKLSAgICAKLSAgICByZXN1bHQgPSB0cnlBbGxvY2F0
ZShzaXplQ2xhc3MpOwotICAgIAotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgCi0gICAgQVNTRVJUKG1fbWFya2VkU3BhY2Uud2F0ZXJNYXJrKCkgPCBtX21hcmtl
ZFNwYWNlLmhpZ2hXYXRlck1hcmsoKSk7Ci0gICAgCi0gICAgbV9tYXJrZWRTcGFjZS5hZGRCbG9j
ayhzaXplQ2xhc3MsIGFsbG9jYXRlQmxvY2soc2l6ZUNsYXNzLmNlbGxTaXplLCBBbGxvY2F0aW9u
TXVzdFN1Y2NlZWQpKTsKLSAgICAKLSAgICByZXN1bHQgPSB0cnlBbGxvY2F0ZShzaXplQ2xhc3Mp
OwotICAgIEFTU0VSVChyZXN1bHQpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIHZvaWQgSGVh
cDo6cHJvdGVjdChKU1ZhbHVlIGspCiB7CiAgICAgQVNTRVJUKGspOwpAQCAtNTIxLDcgKzQzNyw3
IEBAIHZvaWQgSGVhcDo6Z2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2Vs
bCo+JiByb290cykKICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IE5vT3BlcmF0aW9u
KQogICAgICAgICBDUkFTSCgpOwogICAgIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9IENvbGxlY3Rp
b247Ci0gICAgQ29uc2VydmF0aXZlUm9vdHMgcmVnaXN0ZXJGaWxlUm9vdHMoJm1fYmxvY2tzKTsK
KyAgICBDb25zZXJ2YXRpdmVSb290cyByZWdpc3RlckZpbGVSb290cygmbV9vYmplY3RTcGFjZS5i
bG9ja3MoKSk7CiAgICAgcmVnaXN0ZXJGaWxlKCkuZ2F0aGVyQ29uc2VydmF0aXZlUm9vdHMocmVn
aXN0ZXJGaWxlUm9vdHMpOwogICAgIHNpemVfdCByZWdpc3RlckZpbGVSb290Q291bnQgPSByZWdp
c3RlckZpbGVSb290cy5zaXplKCk7CiAgICAgSlNDZWxsKiogcmVnaXN0ZXJSb290cyA9IHJlZ2lz
dGVyRmlsZVJvb3RzLnJvb3RzKCk7CkBAIC01NDMsMTAgKzQ1OSwxMCBAQCB2b2lkIEhlYXA6Om1h
cmtSb290cygpCiAKICAgICAvLyBXZSBnYXRoZXIgY29uc2VydmF0aXZlIHJvb3RzIGJlZm9yZSBj
bGVhcmluZyBtYXJrIGJpdHMgYmVjYXVzZSBjb25zZXJ2YXRpdmUKICAgICAvLyBnYXRoZXJpbmcg
dXNlcyB0aGUgbWFyayBiaXRzIHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmVmZXJlbmNlIGlzIHZh
bGlkLgotICAgIENvbnNlcnZhdGl2ZVJvb3RzIG1hY2hpbmVUaHJlYWRSb290cygmbV9ibG9ja3Mp
OworICAgIENvbnNlcnZhdGl2ZVJvb3RzIG1hY2hpbmVUaHJlYWRSb290cygmbV9vYmplY3RTcGFj
ZS5ibG9ja3MoKSk7CiAgICAgbV9tYWNoaW5lVGhyZWFkcy5nYXRoZXJDb25zZXJ2YXRpdmVSb290
cyhtYWNoaW5lVGhyZWFkUm9vdHMsICZkdW1teSk7CiAKLSAgICBDb25zZXJ2YXRpdmVSb290cyBy
ZWdpc3RlckZpbGVSb290cygmbV9ibG9ja3MpOworICAgIENvbnNlcnZhdGl2ZVJvb3RzIHJlZ2lz
dGVyRmlsZVJvb3RzKCZtX29iamVjdFNwYWNlLmJsb2NrcygpKTsKICAgICByZWdpc3RlckZpbGUo
KS5nYXRoZXJDb25zZXJ2YXRpdmVSb290cyhyZWdpc3RlckZpbGVSb290cyk7CiAKICAgICBjbGVh
ck1hcmtzKCk7CkBAIC01OTksMjcgKzUxNSwyNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAK
IHZvaWQgSGVhcDo6Y2xlYXJNYXJrcygpCiB7Ci0gICAgZm9yRWFjaEJsb2NrPENsZWFyTWFya3M+
KCk7CisgICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2s8Q2xlYXJNYXJrcz4oKTsKIH0KIAog
dm9pZCBIZWFwOjpzd2VlcCgpCiB7Ci0gICAgZm9yRWFjaEJsb2NrPFN3ZWVwPigpOworICAgIG1f
b2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrPFN3ZWVwPigpOwogfQogCiBzaXplX3QgSGVhcDo6b2Jq
ZWN0Q291bnQoKQogewotICAgIHJldHVybiBmb3JFYWNoQmxvY2s8TWFya0NvdW50PigpOworICAg
IHJldHVybiBtX29iamVjdFNwYWNlLmZvckVhY2hCbG9jazxNYXJrQ291bnQ+KCk7CiB9CiAKIHNp
emVfdCBIZWFwOjpzaXplKCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaEJsb2NrPFNpemU+KCk7Cisg
ICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZm9yRWFjaEJsb2NrPFNpemU+KCk7CiB9CiAKIHNpemVf
dCBIZWFwOjpjYXBhY2l0eSgpCiB7Ci0gICAgcmV0dXJuIGZvckVhY2hCbG9jazxDYXBhY2l0eT4o
KTsKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5mb3JFYWNoQmxvY2s8Q2FwYWNpdHk+KCk7CiB9
CiAKIHNpemVfdCBIZWFwOjpwcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgpCkBAIC02MjksNyAr
NTQ1LDcgQEAgc2l6ZV90IEhlYXA6OnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCkKIAogc2l6
ZV90IEhlYXA6Omdsb2JhbE9iamVjdENvdW50KCkKIHsKLSAgICByZXR1cm4gZm9yRWFjaENlbGw8
Q291bnRJZkdsb2JhbE9iamVjdD4oKTsKKyAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5mb3JFYWNo
Q2VsbDxDb3VudElmR2xvYmFsT2JqZWN0PigpOwogfQogCiBzaXplX3QgSGVhcDo6cHJvdGVjdGVk
T2JqZWN0Q291bnQoKQpAQCAtNjQ0LDcgKzU2MCw3IEBAIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0
PiBIZWFwOjpwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCkKIAogUGFzc093blB0cjxUeXBlQ291
bnRTZXQ+IEhlYXA6Om9iamVjdFR5cGVDb3VudHMoKQogewotICAgIHJldHVybiBmb3JFYWNoQ2Vs
bDxSZWNvcmRUeXBlPigpOworICAgIHJldHVybiBtX29iamVjdFNwYWNlLmZvckVhY2hDZWxsPFJl
Y29yZFR5cGU+KCk7CiB9CiAKIHZvaWQgSGVhcDo6Y29sbGVjdEFsbEdhcmJhZ2UoKQpAQCAtNjgz
LDcgKzU5OSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2dsZSkK
ICAgICAvLyBwcm9wb3J0aW9uIGlzIGEgYml0IGFyYml0cmFyeS4gQSAyWCBtdWx0aXBsaWVyIGdp
dmVzIGEgMToxIChoZWFwIHNpemUgOgogICAgIC8vIG5ldyBieXRlcyBhbGxvY2F0ZWQpIHByb3Bv
cnRpb24sIGFuZCBzZWVtcyB0byB3b3JrIHdlbGwgaW4gYmVuY2htYXJrcy4KICAgICBzaXplX3Qg
cHJvcG9ydGlvbmFsQnl0ZXMgPSAyICogc2l6ZSgpOwotICAgIG1fbWFya2VkU3BhY2Uuc2V0SGln
aFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwor
ICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMs
IG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwogCiAg
ICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CkBAIC02OTEsMTMgKzYwNywxMyBAQCB2b2lkIEhl
YXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnbGUpCiAKIHZvaWQgSGVhcDo6Y2Fub25p
Y2FsaXplQmxvY2tzKCkKIHsKLSAgICBtX21hcmtlZFNwYWNlLmNhbm9uaWNhbGl6ZUJsb2Nrcygp
OworICAgIG1fb2JqZWN0U3BhY2UuY2Fub25pY2FsaXplQmxvY2tzKCk7CiB9CiAKIHZvaWQgSGVh
cDo6cmVzZXRBbGxvY2F0b3IoKQogewogICAgIG1fZXh0cmFDb3N0ID0gMDsKLSAgICBtX21hcmtl
ZFNwYWNlLnJlc2V0QWxsb2NhdG9yKCk7CisgICAgbV9vYmplY3RTcGFjZS5yZXNldEFsbG9jYXRv
cigpOwogfQogCiB2b2lkIEhlYXA6OnNldEFjdGl2aXR5Q2FsbGJhY2soUGFzc093blB0cjxHQ0Fj
dGl2aXR5Q2FsbGJhY2s+IGFjdGl2aXR5Q2FsbGJhY2spCkBAIC03MjQsNTAgKzY0MCwxNCBAQCBi
b29sIEhlYXA6OmlzVmFsaWRBbGxvY2F0aW9uKHNpemVfdCBieXRlcykKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotTWFya2VkQmxvY2sqIEhlYXA6OmFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXpl
LCBIZWFwOjpBbGxvY2F0aW9uRWZmb3J0IGFsbG9jYXRpb25FZmZvcnQpCi17Ci0gICAgTWFya2Vk
QmxvY2sqIGJsb2NrOwotICAgIAotICAgIHsKLSAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
ZnJlZUJsb2NrTG9jayk7Ci0gICAgICAgIGlmIChtX251bWJlck9mRnJlZUJsb2NrcykgewotICAg
ICAgICAgICAgYmxvY2sgPSBtX2ZyZWVCbG9ja3MucmVtb3ZlSGVhZCgpOwotICAgICAgICAgICAg
QVNTRVJUKGJsb2NrKTsKLSAgICAgICAgICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tzLS07Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgYmxvY2sgPSAwOwotICAgIH0KLSAgICBpZiAoYmxvY2sp
Ci0gICAgICAgIGJsb2NrLT5pbml0Rm9yQ2VsbFNpemUoY2VsbFNpemUpOwotICAgIGVsc2UgaWYg
KGFsbG9jYXRpb25FZmZvcnQgPT0gQWxsb2NhdGlvbkNhbkZhaWwpCi0gICAgICAgIHJldHVybiAw
OwotICAgIGVsc2UKLSAgICAgICAgYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKHRoaXMsIGNl
bGxTaXplKTsKLSAgICAKLSAgICBtX2Jsb2Nrcy5hZGQoYmxvY2spOwotCi0gICAgcmV0dXJuIGJs
b2NrOwotfQotCiB2b2lkIEhlYXA6OmZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpCiB7Ci0g
ICAgTWFya2VkQmxvY2sqIG5leHQ7Ci0gICAgZm9yIChNYXJrZWRCbG9jayogYmxvY2sgPSBoZWFk
OyBibG9jazsgYmxvY2sgPSBuZXh0KSB7Ci0gICAgICAgIG5leHQgPSBibG9jay0+bmV4dCgpOwot
Ci0gICAgICAgIG1fYmxvY2tzLnJlbW92ZShibG9jayk7Ci0gICAgICAgIGJsb2NrLT5yZXNldCgp
OwotICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9mcmVlQmxvY2tMb2NrKTsKLSAgICAgICAg
bV9mcmVlQmxvY2tzLmFwcGVuZChibG9jayk7Ci0gICAgICAgIG1fbnVtYmVyT2ZGcmVlQmxvY2tz
Kys7Ci0gICAgfQorICAgIG1fb2JqZWN0U3BhY2UuZnJlZUJsb2NrcyhoZWFkKTsKIH0KIAogdm9p
ZCBIZWFwOjpzaHJpbmsoKQogewotICAgIC8vIFdlIHJlY29yZCBhIHRlbXBvcmFyeSBsaXN0IG9m
IGVtcHRpZXMgdG8gYXZvaWQgbW9kaWZ5aW5nIG1fYmxvY2tzIHdoaWxlIGl0ZXJhdGluZyBpdC4K
LSAgICBUYWtlSWZFbXB0eSB0YWtlSWZFbXB0eSgmbV9tYXJrZWRTcGFjZSk7Ci0gICAgZnJlZUJs
b2Nrcyhmb3JFYWNoQmxvY2sodGFrZUlmRW1wdHkpKTsKKyAgICBtX29iamVjdFNwYWNlLnNocmlu
aygpOwogfQogCiB2b2lkIEhlYXA6OnJlbGVhc2VGcmVlQmxvY2tzKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAppbmRleCAzZDU5MjU5NjEyZjVjNTc4ZGY2MjdlODAzYjcxYjI0YWIyOGZlODY3
Li40ZmYyNjAzYmQwZDUyZTZhZjI2NTRjMzAwMGY5ZTgxYzY1NTJmMTBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjaWZuZGVmIEhlYXBfaAogI2RlZmlu
ZSBIZWFwX2gKIAorI2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgogI2luY2x1ZGUgIkhhbmRs
ZUhlYXAuaCIKICNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2Nr
LmgiCkBAIC0zNyw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgR0NBY3Rp
dml0eUNhbGxiYWNrOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBIZWFw
OwogICAgIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwpAQCAtNTYsMTAgKzU4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IAogICAgIC8vIEhlYXAgc2l6ZSBoaW50LgogICAgIGVudW0gSGVhcFNpemUgeyBTbWFsbEhlYXAs
IExhcmdlSGVhcCB9OwotICAgIAorCiAgICAgY2xhc3MgSGVhcCB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEhlYXApOwogICAgIHB1YmxpYzoKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNWYWx1ZSk7IC8vIDAgZm9yIGltbWVkaWF0
ZSB2YWx1ZXMKICAgICAgICAgc3RhdGljIEhlYXAqIGhlYXAoSlNDZWxsKik7CiAKQEAgLTc2LDcg
Kzc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZGVzdHJveSgpOyAvLyBKU0ds
b2JhbERhdGEgbXVzdCBjYWxsIGRlc3Ryb3koKSBiZWZvcmUgfkhlYXAoKS4KIAogICAgICAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0K
LSAgICAgICAgTWFya2VkU3BhY2UmIG1hcmtlZFNwYWNlKCkgeyByZXR1cm4gbV9tYXJrZWRTcGFj
ZTsgfQorICAgICAgICBBbGxvY2F0aW9uU3BhY2UmIG9iamVjdFNwYWNlKCkgeyByZXR1cm4gbV9v
YmplY3RTcGFjZTsgfQogICAgICAgICBNYWNoaW5lVGhyZWFkcyYgbWFjaGluZVRocmVhZHMoKSB7
IHJldHVybiBtX21hY2hpbmVUaHJlYWRzOyB9CiAKICAgICAgICAgR0NBY3Rpdml0eUNhbGxiYWNr
KiBhY3Rpdml0eUNhbGxiYWNrKCk7CkBAIC04NCwxMCArODcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4g
cHJvZ3Jlc3MKICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7Ci0KKyAgICAgICAgCisgICAg
ICAgIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmIHNpemVDbGFzc0Zvck9iamVjdChzaXplX3QgYnl0
ZXMpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2Uuc2l6ZUNsYXNzRm9yKGJ5dGVzKTsgfQogICAgICAg
ICB2b2lkKiBhbGxvY2F0ZShzaXplX3QpOwotICAgICAgICBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
JiBzaXplQ2xhc3NGb3Ioc2l6ZV90KTsKLSAgICAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcyYpOworCiAgICAgICAgIHZvaWQgbm90aWZ5SXNTYWZlVG9Db2xsZWN0KCkg
eyBtX2lzU2FmZVRvQ29sbGVjdCA9IHRydWU7IH0KICAgICAgICAgdm9pZCBjb2xsZWN0QWxsR2Fy
YmFnZSgpOwogCkBAIC0xMTIsMTAgKzExNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBmb3JFYWNoUHJvdGVjdGVkQ2VsbChGdW5jdG9yJik7CiAgICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFBy
b3RlY3RlZENlbGwoKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5h
bWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQ2VsbChGdW5jdG9yJik7Ci0gICAgICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9y
RWFjaENlbGwoKTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUg
RnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soRnVuY3RvciYpOwotICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jaygpOwogICAgICAgICAKICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhh
bmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlSGVhcC5hbGxvY2F0ZSgpOyB9CiAgICAgICAgIEhhbmRs
ZVNsb3QgYWxsb2NhdGVMb2NhbEhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlU3RhY2sucHVzaCgp
OyB9CkBAIC0xMjUsMTQgKzEyNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAgICAgICAgCi0gICAgICAgIHR5
cGVkZWYgSGFzaFNldDxNYXJrZWRCbG9jayo+OjppdGVyYXRvciBCbG9ja0l0ZXJhdG9yOworICAg
ICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwogICAgICAgICAKLSAgICAgICAgZW51bSBBbGxv
Y2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9
OwotICAgICAgICAKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICBzdGF0aWMgdm9pZCB3cml0ZUJh
cnJpZXJGYXN0Q2FzZShjb25zdCBKU0NlbGwqIG93bmVyLCBKU0NlbGwqKTsKICNlbmRpZgpAQCAt
MTQyLDcgKzEzOCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNhbm9uaWNhbGl6
ZUJsb2NrcygpOwogICAgICAgICB2b2lkIHJlc2V0QWxsb2NhdG9yKCk7CiAKLSAgICAgICAgTWFy
a2VkQmxvY2sqIGFsbG9jYXRlQmxvY2soc2l6ZV90IGNlbGxTaXplLCBBbGxvY2F0aW9uRWZmb3J0
KTsKICAgICAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKik7CiAKICAgICAgICAgdm9p
ZCBjbGVhck1hcmtzKCk7CkBAIC0xNTAsOSArMTQ1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgbWFya1Byb3RlY3RlZE9iamVjdHMoSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgICAg
IHZvaWQgbWFya1RlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0b3ImKTsKICAgICAgICAgdm9p
ZCBoYXJ2ZXN0V2Vha1JlZmVyZW5jZXMoKTsKLQotICAgICAgICB2b2lkKiB0cnlBbGxvY2F0ZShN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Ci0gICAgICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2Uo
TWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgICAgICAKICAgICAgICAgZW51bSBTd2VlcFRv
Z2dsZSB7IERvTm90U3dlZXAsIERvU3dlZXAgfTsKICAgICAgICAgdm9pZCBjb2xsZWN0KFN3ZWVw
VG9nZ2xlKTsKQEAgLTE3Myw4ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29u
c3Qgc2l6ZV90IG1fbWluQnl0ZXNQZXJDeWNsZTsKICAgICAgICAgCiAgICAgICAgIE9wZXJhdGlv
bkluUHJvZ3Jlc3MgbV9vcGVyYXRpb25JblByb2dyZXNzOwotICAgICAgICBNYXJrZWRTcGFjZSBt
X21hcmtlZFNwYWNlOwotICAgICAgICBNYXJrZWRCbG9ja1NldCBtX2Jsb2NrczsKKyAgICAgICAg
QWxsb2NhdGlvblNwYWNlIG1fb2JqZWN0U3BhY2U7CiAKICAgICAgICAgRG91Ymx5TGlua2VkTGlz
dDxNYXJrZWRCbG9jaz4gbV9mcmVlQmxvY2tzOwogICAgICAgICBzaXplX3QgbV9udW1iZXJPZkZy
ZWVCbG9ja3M7CkBAIC0zMDIsNTcgKzI5MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
cmV0dXJuIGZvckVhY2hQcm90ZWN0ZWRDZWxsKGZ1bmN0b3IpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBl
IEhlYXA6OmZvckVhY2hDZWxsKEZ1bmN0b3ImIGZ1bmN0b3IpCi0gICAgewotICAgICAgICBjYW5v
bmljYWxpemVCbG9ja3MoKTsKLSAgICAgICAgQmxvY2tJdGVyYXRvciBlbmQgPSBtX2Jsb2Nrcy5z
ZXQoKS5lbmQoKTsKLSAgICAgICAgZm9yIChCbG9ja0l0ZXJhdG9yIGl0ID0gbV9ibG9ja3Muc2V0
KCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgKCppdCktPmZvckVhY2hD
ZWxsKGZ1bmN0b3IpOwotICAgICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5j
dG9yOjpSZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hDZWxsKCkKLSAgICB7Ci0gICAgICAgIEZ1bmN0
b3IgZnVuY3RvcjsKLSAgICAgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9y
OjpSZXR1cm5UeXBlIEhlYXA6OmZvckVhY2hCbG9jayhGdW5jdG9yJiBmdW5jdG9yKQotICAgIHsK
LSAgICAgICAgY2Fub25pY2FsaXplQmxvY2tzKCk7Ci0gICAgICAgIEJsb2NrSXRlcmF0b3IgZW5k
ID0gbV9ibG9ja3Muc2V0KCkuZW5kKCk7Ci0gICAgICAgIGZvciAoQmxvY2tJdGVyYXRvciBpdCA9
IG1fYmxvY2tzLnNldCgpLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIGZ1
bmN0b3IoKml0KTsKLSAgICAgICAgcmV0dXJuIGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rv
cjo6UmV0dXJuVHlwZSBIZWFwOjpmb3JFYWNoQmxvY2soKQotICAgIHsKLSAgICAgICAgRnVuY3Rv
ciBmdW5jdG9yOwotICAgICAgICByZXR1cm4gZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOwotICAgIH0K
LSAgICAKLSAgICBpbmxpbmUgTWFya2VkU3BhY2U6OlNpemVDbGFzcyYgSGVhcDo6c2l6ZUNsYXNz
Rm9yKHNpemVfdCBieXRlcykKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21hcmtlZFNwYWNlLnNp
emVDbGFzc0ZvcihieXRlcyk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSB2b2lkKiBIZWFwOjph
bGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJiBzaXplQ2xhc3MpCi0gICAgewotICAgICAg
ICAvLyBUaGlzIGlzIGEgbGlnaHQtd2VpZ2h0IGZhc3QgcGF0aCB0byBjb3ZlciB0aGUgbW9zdCBj
b21tb24gY2FzZS4KLSAgICAgICAgTWFya2VkQmxvY2s6OkZyZWVDZWxsKiBmaXJzdEZyZWVDZWxs
ID0gc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGw7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghZmlyc3RG
cmVlQ2VsbCkpCi0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdGVTbG93Q2FzZShzaXplQ2xhc3Mp
OwotICAgICAgICAKLSAgICAgICAgc2l6ZUNsYXNzLmZpcnN0RnJlZUNlbGwgPSBmaXJzdEZyZWVD
ZWxsLT5uZXh0OwotICAgICAgICByZXR1cm4gZmlyc3RGcmVlQ2VsbDsKLSAgICB9Ci0KICAgICBp
bmxpbmUgdm9pZCogSGVhcDo6YWxsb2NhdGUoc2l6ZV90IGJ5dGVzKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGlzVmFsaWRBbGxvY2F0aW9uKGJ5dGVzKSk7Ci0gICAgICAgIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmIHNpemVDbGFzcyA9IHNpemVDbGFzc0ZvcihieXRlcyk7Ci0gICAgICAgIHJldHVy
biBhbGxvY2F0ZShzaXplQ2xhc3MpOworICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxv
Y2F0ZShieXRlcyk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKaW5kZXggMzhhZjBjNzQ0MzdmNTc1OGUw
OTc1OTg4MmE5NzQ1NWJmNTIxNzI3MC4uN2VmNmIyOWE3OWExMzdjMTU3ZTNiNWU2ZTBmNjJhNTg3
YjE2MTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVN
ZXRob2RzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2Rz
LmgKQEAgLTM5NCw3ICszOTQsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUNoYXIodW5zaWduZWQgc3JjKQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q2xhc3NUeXBlLCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRB
bGxvY2F0ZUJhc2ljSlNPYmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIHZvaWQqIHZ0YWJs
ZSwgUmVnaXN0ZXJJRCByZXN1bHQsIFJlZ2lzdGVySUQgc3RvcmFnZVB0cikKIHsKLSAgICBNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzKiBzaXplQ2xhc3MgPSAmbV9nbG9iYWxEYXRhLT5oZWFwLnNpemVD
bGFzc0ZvcihzaXplb2YoQ2xhc3NUeXBlKSk7CisgICAgTWFya2VkU3BhY2U6OlNpemVDbGFzcyog
c2l6ZUNsYXNzID0gJm1fZ2xvYmFsRGF0YS0+aGVhcC5zaXplQ2xhc3NGb3JPYmplY3Qoc2l6ZW9m
KENsYXNzVHlwZSkpOwogICAgIGxvYWRQdHIoJnNpemVDbGFzcy0+Zmlyc3RGcmVlQ2VsbCwgcmVz
dWx0KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJlc3VsdCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAppbmRleCAw
YTRjOWRlOGQwMjgwNzZkNzY4NGMxZjNhZDY5NzM4YTcyNTI2N2IzLi40OWEwZGI3MDNmYzQ5ZWYx
Y2JlYWUwZDUwZDYyZThiN2I4Y2YxZWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCB2b2lkIEpTR2xvYmFs
RGF0YTo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKQogICAgIC8vIHVwIHRocm93aW5nIGF3YXkg
Y29kZSB0aGF0IGlzIGxpdmUgb24gdGhlIHN0YWNrLgogICAgIEFTU0VSVCghZHluYW1pY0dsb2Jh
bE9iamVjdCk7CiAgICAgCi0gICAgaGVhcC5mb3JFYWNoQ2VsbDxSZWNvbXBpbGVyPigpOworICAg
IGhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoQ2VsbDxSZWNvbXBpbGVyPigpOwogfQogCiBzdHJ1
Y3QgU3RhY2tQcmVzZXJ2aW5nUmVjb21waWxlciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1
bmN0b3IgewpAQCAtNDg4LDcgKzQ4OCw3IEBAIHZvaWQgSlNHbG9iYWxEYXRhOjpyZWxlYXNlRXhl
Y3V0YWJsZU1lbW9yeSgpCiAgICAgICAgICAgICAgICAgcmVjb21waWxlci5jdXJyZW50bHlFeGVj
dXRpbmdGdW5jdGlvbnMuYWRkKHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1
dGFibGUpKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgfQotICAgICAgICBoZWFwLmZvckVh
Y2hDZWxsPFN0YWNrUHJlc2VydmluZ1JlY29tcGlsZXI+KHJlY29tcGlsZXIpOworICAgICAgICBo
ZWFwLm9iamVjdFNwYWNlKCkuZm9yRWFjaENlbGw8U3RhY2tQcmVzZXJ2aW5nUmVjb21waWxlcj4o
cmVjb21waWxlcik7CiAgICAgfQogICAgIG1fcmVnRXhwQ2FjaGUtPmludmFsaWRhdGVDb2RlKCk7
CiAgICAgaGVhcC5jb2xsZWN0QWxsR2FyYmFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDgzMjIxY2U0NDdh
ZjVkMDIwZTY4ZmIwZTRkMDY5MzAyNGM3ZDIzNmEuLjhjN2JlNWY5YWM1MzkzMDRiMGM1ZmVhNTQ5
Yjc1YzRiNzRlZDFiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wOS0xOSAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIEhlYXAg
YWxsb2NhdGlvbiBsb2dpYyBpbnRvIHNlcGFyYXRlIEFsbG9jYXRpb25TcGFjZSBjbGFzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0MDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBBZGRpbmcgYSBm
b3J3YXJkaW5nIGhlYWRlci4KKworICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2hlYXAvQWxs
b2NhdGlvblNwYWNlLmg6IEFkZGVkLgorCiAyMDExLTA5LTIwICBTaGVyaWZmIEJvdCAgPHdlYmtp
dC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByOTU1MDkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9o
ZWFwL0FsbG9jYXRpb25TcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMv
aGVhcC9BbGxvY2F0aW9uU3BhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTRmNWY0YTAzNGE3NjY5Nzk0Y2Vl
NzBkY2M4Zjk5ZTI3ZDI1OTE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvRm9y
d2FyZGluZ0hlYWRlcnMvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfQWxsb2NhdGlvblNwYWNlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0Rf
QWxsb2NhdGlvblNwYWNlX2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BbGxvY2F0aW9uU3Bh
Y2UuaD4KKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>