<?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>57261</bug_id>
          
          <creation_ts>2011-03-28 12:46:14 -0700</creation_ts>
          <short_desc>[Qt] Migrate to GraphicsContext3DOpenGL.cpp</short_desc>
          <delta_ts>2012-10-24 06:32:20 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>57154</dependson>
    
    <dependson>60617</dependson>
    
    <dependson>64877</dependson>
    
    <dependson>64878</dependson>
    
    <dependson>64879</dependson>
    
    <dependson>87718</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jarkko Sakkinen">jarkko.j.sakkinen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achicu</cc>
    
    <cc>benjamin</cc>
    
    <cc>noam</cc>
    
    <cc>rectalogic</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>374690</commentid>
    <comment_count>0</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 12:46:14 -0700</bug_when>
    <thetext>Adapt to GraphicsContext3DOpenGL.cpp for handling GraphicsContext3D calls. GraphicsContext3DQt.cpp should be limited symbol resolving and context handling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375001</commentid>
    <comment_count>1</comment_count>
      <attachid>87259</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-28 22:27:30 -0700</bug_when>
    <thetext>Created attachment 87259
Compilation of ANGLE shader compiler.

This is what it takes to get ANGLE shader compiler to compile. I guess there should be a separate .pro file for ANGLE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375271</commentid>
    <comment_count>2</comment_count>
      <attachid>87309</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-29 07:03:59 -0700</bug_when>
    <thetext>Created attachment 87309
GraphicsContext3DOpenGL.cpp experimental patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375273</commentid>
    <comment_count>3</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-29 07:04:51 -0700</bug_when>
    <thetext>Note with experimental patch some of the layout tests start to fail. This is because those layout tests are invalid since their shaders do not apply to WebGL 1.0 standard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>375515</commentid>
    <comment_count>4</comment_count>
      <attachid>87364</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-29 10:47:12 -0700</bug_when>
    <thetext>Created attachment 87364
clean up and compilation fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376134</commentid>
    <comment_count>5</comment_count>
      <attachid>87483</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 02:09:37 -0700</bug_when>
    <thetext>Created attachment 87483
clean up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376186</commentid>
    <comment_count>6</comment_count>
      <attachid>87500</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 04:21:01 -0700</bug_when>
    <thetext>Created attachment 87500
Adapted to symbol resolver changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376208</commentid>
    <comment_count>7</comment_count>
      <attachid>87507</attachid>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 05:14:52 -0700</bug_when>
    <thetext>Created attachment 87507
compilation fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376219</commentid>
    <comment_count>8</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 05:34:02 -0700</bug_when>
    <thetext>There are two questions to be answered before this patch can be finalized:

Problem 1.

GraphicsContext3DOpenGL.cpp excepts strict ES 2.0 shaders that always must have precisions defined. This also what the WebGL 1.0 standard states. This, however, cause most currently available WebGL pages to fail misserably because GC3DOGL validates pages with ANGLE. Most of the browsers support also these pages that do not apply to the standard. It is easy also to make our code to support that by appending default precisions to the shader code. Do we want to do this?


Problem 2.

See ANGLE import in WebCore.pro. I had to adjust compiler settings in order to get generated code to compile. Should this be in a separate binary blob with own pro file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376650</commentid>
    <comment_count>9</comment_count>
    <who name="Jarkko Sakkinen">jarkko.j.sakkinen</who>
    <bug_when>2011-03-30 13:58:13 -0700</bug_when>
    <thetext>Shaders might have another issue that causes failure and this has to be fixed before making any conclusions on problem 1 and see how well SH_WEBGL (shader compiler mode in ANGLE, other is SH_ES2) GC3DOGL handles layout tests after that.

The problem is that with some pages ShConstructCompiler() called by ANGLEWebKitBridge::validateShaderSource() returns NULL. This is the reason that seems to cause part of layout tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433616</commentid>
    <comment_count>10</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-07 11:27:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; The problem is that with some pages ShConstructCompiler() called by 
&gt; ANGLEWebKitBridge::validateShaderSource() returns NULL.
&gt; This is the reason that seems to cause part of layout tests fail.

This is because the builtin ANGLE resources are not being initialized on the ANGLEWebKitBridge - so they contain garbage which occasionally makes the builtin resources fail to parse. I&apos;m working on updating the patch to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433746</commentid>
    <comment_count>11</comment_count>
      <attachid>100040</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-07 15:34:47 -0700</bug_when>
    <thetext>Created attachment 100040
fix ANGLE initialization

Fix ANGLE resource initialization so ShConstructCompiler() doesn&apos;t fail.
Adapt to TextureMapper changes. Adapt to ANGLE changes.
This patch should be applied on top of the patch from attachment 98541 to bug 57154

Also, I think we should use Extensions3DOpenGL instead of Extensions3DQt, because Extensions3DQt is mostly stubs. I&apos;ll see if I can add that to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437803</commentid>
    <comment_count>12</comment_count>
      <attachid>100997</attachid>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-15 09:50:12 -0700</bug_when>
    <thetext>Created attachment 100997
implement antialiasing

Update for latest resolver patch on bug 57154.
Use Extensions3DOpenGL for desktop instead of Extensions3DQt.
Implement support for WebGL antialiasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439868</commentid>
    <comment_count>13</comment_count>
    <who name="Andrew Wason">rectalogic</who>
    <bug_when>2011-07-20 10:17:27 -0700</bug_when>
    <thetext>I&apos;m splitting this migration into 3 dependent parts.

Part 1, bug 64877, will move GraphicsContext3DInternal members into GraphicsContext3D where they will be needed when we adopt GraphicsContext3DOpenGL.cpp

Part 2, bug 64878, will adopt GraphicsContext3DOpenGL.cpp and ANGLE shader compiler.

Part 3, bug 64879, will implement WebGL antialiasing using GraphicsContext3DOpenGL.cpp and Extensions3DOpenGL.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749608</commentid>
    <comment_count>14</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-24 06:32:20 -0700</bug_when>
    <thetext>This was fixed in a series of other bugs.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87259</attachid>
            <date>2011-03-28 22:27:30 -0700</date>
            <delta_ts>2011-03-29 07:03:59 -0700</delta_ts>
            <desc>Compilation of ANGLE shader compiler.</desc>
            <filename>ANGLE.diff</filename>
            <type>text/plain</type>
            <size>6009</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggYWQ4NThiZS4uOTFmNTQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0
MjIsNiArMzQyMiw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIFNPVVJDRVMgKz0gXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHRDdXN0b20uY3BwCiAgICAgfQorCiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGh0
bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2Fu
dmFzL1dlYkdMT2JqZWN0LmNwcCBcCkBAIC0zNDQ5LDggKzM0NTAsMTA1IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNEUXQuY3BwCiAKICAgICAgICAgSU5DTFVERVBBVEggKz0gJCRQV0QvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1CisKKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLXVudXNlZC12
YXJpYWJsZQorICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tbWlzc2luZy1ub3JldHVybgorICAg
IFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdW51c2VkLWZ1bmN0aW9uCisgICAgUU1BS0VfQ1hYRkxB
R1MgKz0gLVduby1wYXJlbnRoZXNlcworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdHlwZS1s
aW1pdHMKKworICAgIERFRklORVMgKz0gWVlFTkFCTEVfTkxTPTAgWVlMVFlQRV9JU19UUklWSUFM
PTAKKworICAgIElOQ0xVREVQQVRIICs9IFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMgXAorCisgICAgSEVBREVS
UyArPSBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBl
cy5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tbW9uLmgg
XAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9u
LmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZWJ1Zy5oIFwK
KyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZp
b3IuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcu
aCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFi
LmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5o
IFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURs
bC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW5pdGlhbGl6
ZUdsb2JhbHMuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemUuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemVQYXJzZUNvbnRleHQuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL01NYXAuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL29zaW5jbHVkZS5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jb21waWxlLmggXAorICAgICAgICAuLi9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3BwLmggXAorICAgICAg
ICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbWVtb3J5Lmgg
XAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
cGFyc2VyLmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvcHJlcHJvY2Vzcy5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zbGdsb2JhbHMuaCBcCisgICAgICAgIC4u
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xzLmggXAor
ICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9r
ZW5zLmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9RdWFsaWZp
ZXJBbGl2ZS5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUmVt
b3ZlVHJlZS5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2Vh
cmNoU3ltYm9sLmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9T
aEhhbmRsZS5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3lt
Ym9sVGFibGUuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1Ry
YW5zbGF0b3JHTFNMLmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9UcmFuc2xhdG9ySExTTC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVHlwZXMuaCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L1VuZm9sZFNlbGVjdC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdXRpbC5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFs
aWRhdGVMaW1pdGF0aW9ucy5oIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvVmFyaWFibGVJbmZvLmggXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9WZXJzaW9uR0xTTC5oIFwKKworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICAuLi9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXAorICAgICAgICAu
Li9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5jcHAgXAorICAgICAg
ICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db21waWxlci5jcHAgXAorICAgICAg
ICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9kZWJ1Zy5jcHAgXAorICAgICAgICAu
Li9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAgXAorICAgICAg
ICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAgXAorICAg
ICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbmZvU2luay5jcHAgXAorICAg
ICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmNwcCBcCisg
ICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVEbGwuY3Bw
IFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRl
LmNwcCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2ludGVybU91
dC5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1U
cmF2ZXJzZS5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9v
c3NvdXJjZV9wb3NpeC5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9PdXRwdXRHTFNMLmNwcCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL091dHB1dEhMU0wuY3BwIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcGFyc2VDb25zdC5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYyBcCisgICAgICAgIC4uL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jcHAuYyBcCisgICAgICAgIC4uL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jcHBzdHJ1Y3QuYyBcCisg
ICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9tZW1v
cnkuYyBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9zY2FubmVyLmMgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3Ivc3ltYm9scy5jIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuY3BwIFwKKyAgICAgICAgLi4vVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUmVtb3ZlVHJlZS5jcHAgXAorICAgICAgICAuLi9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuY3BwIFwKKyAgICAgICAg
Li4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hhZGVyTGFuZy5jcHAgXAorICAgICAg
ICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAgXAorICAg
ICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAg
XAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExT
TC5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9VbmZvbGRT
ZWxlY3QuY3BwIFwKKyAgICAgICAgLi4vVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdXRp
bC5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9WYWxpZGF0
ZUxpbWl0YXRpb25zLmNwcCBcCisgICAgICAgIC4uL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL1ZhcmlhYmxlSW5mby5jcHAgXAorICAgICAgICAuLi9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9WZXJzaW9uR0xTTC5jcHAgXAogfQogCisKIHdpbjMyOiF3aW4zMi1nKysqOmNvbnRh
aW5zKFFNQUtFX0hPU1QuYXJjaCwgeDg2XzY0KTp7CiAgICAgYXNtX2NvbXBpbGVyLmNvbW1hbmRz
ID0gbWw2NCAvYwogICAgIGFzbV9jb21waWxlci5jb21tYW5kcyArPSAgL0ZvICR7UU1BS0VfRklM
RV9PVVR9ICR7UU1BS0VfRklMRV9JTn0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87309</attachid>
            <date>2011-03-29 07:03:59 -0700</date>
            <delta_ts>2011-03-29 10:47:12 -0700</delta_ts>
            <desc>GraphicsContext3DOpenGL.cpp experimental patch</desc>
            <filename>57261.diff</filename>
            <type>text/plain</type>
            <size>87252</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggYWQ4NThiZS4uOWUwMjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMz
OTAsNiArMzM5MCwxMyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkg
ewogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgeworICAgIGNvbnRhaW5z
KERFRklORVMsIFFUX09QRU5HTF9FU18yKSB7CisgICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUzJRdC5oCisgICAgfSBlbHNlIHsK
KyAgICAgICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTFF0LmgKKyAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisgICAgfQorCiAgICAgSEVBREVSUyArPSBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIFwKQEAgLTM0MTEsMTcgKzM0MTgsMTggQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xV
bmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAor
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
REludGVybmFsUXQuaCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMUXQuaAogCiAgICAgIXY4IHsKICAgICAgICAgU09VUkNFUyArPSBcCiAgICAg
ICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKICAg
ICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIFwK
QEAgLTM0NDIsNiArMzQ1MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIFwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdC
dWZmZXJRdC5jcHAgXApAQCAtMzQ0OSw2ICszNDU4LDEwMCBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCR0w9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcAogCiAgICAgICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdQorCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtdmFyaWFibGUK
KyAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLW1pc3Npbmctbm9yZXR1cm4KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXVudXNlZC1mdW5jdGlvbgorICAgIFFNQUtFX0NYWEZMQUdTICs9IC1X
bm8tcGFyZW50aGVzZXMKKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLXR5cGUtbGltaXRzCisK
KyAgICBERUZJTkVTICs9IFlZRU5BQkxFX05MUz0wIFlZTFRZUEVfSVNfVFJJVklBTD0wCisKKyAg
ICBBTkdMRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAiV2ViQ29yZSIsICJUaGlyZFBhcnR5L0FOR0xF
IikKKworICAgIEhFQURFUlMgKz0gXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
QmFzZVR5cGVzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29tbW9uLmgg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2RlYnVnLmggXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvRXh0ZW5zaW9uQmVoYXZpb3IuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9nbHNsYW5nLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvZ2xzbGFuZ190YWIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9J
bmZvU2luay5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVE
bGwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplR2xvYmFs
cy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0Lmgg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmggXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9NTWFwLmggXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvb3NpbmNsdWRlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvT3V0cHV0R0xTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL091
dHB1dEhMU0wuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9QYXJzZUhlbHBl
ci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9hdG9tLmggXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NvbXBpbGUuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3BwLmggXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wYXJzZXIuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcHJlcHJvY2Vzcy5o
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVy
LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3NsZ2xv
YmFscy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9z
eW1ib2xzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L3Rva2Vucy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1F1YWxpZmllckFs
aXZlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUmVtb3ZlVHJlZS5oIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1NlYXJjaFN5bWJvbC5oIFwKKyAgICAg
ICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmggXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL1RyYW5zbGF0b3JITFNMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvVHlwZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9VbmZvbGRTZWxl
Y3QuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci91dGlsLmggXAorICAgICAg
ICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIFwKKyAgICAg
ICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5oIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmggXAorCisgICAgU09VUkNFUyArPSBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db2RlR2VuR0xTTC5jcHAgXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29kZUdlbkhMU0wuY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9kZWJ1Zy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvZ2xzbGFuZ19sZXguY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVy
L2dsc2xhbmdfdGFiLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbmZv
U2luay5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZS5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZURsbC5jcHAg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9pbnRlcm1PdXQuY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0ludGVybVRyYXZlcnNlLmNwcCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9vc3NvdXJjZV9wb3NpeC5jcHAgXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcGFyc2VDb25zdC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvUGFyc2VIZWxwZXIuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1Bv
b2xBbGxvYy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL2F0b20uYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvY3BwLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L2NwcHN0cnVjdC5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9tZW1vcnkuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3Ivc2Nhbm5lci5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9zeW1ib2xzLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL3Rva2Vucy5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1F1
YWxpZmllckFsaXZlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9SZW1v
dmVUcmVlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TZWFyY2hTeW1i
b2wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1NoYWRlckxhbmcuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9yR0xTTC5jcHAgXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuY3BwIFwKKyAgICAg
ICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1VuZm9sZFNlbGVjdC5jcHAgXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvdXRpbC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9WZXJzaW9uR0xTTC5jcHAgXAogfQogCiB3aW4zMjohd2luMzItZysrKjpjb250
YWlucyhRTUFLRV9IT1NULmFyY2gsIHg4Nl82NCk6ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKaW5kZXggN2JkZGJmNC4uYzg3
NWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVX
ZWJLaXRCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdM
RVdlYktpdEJyaWRnZS5oCkBAIC0yNiw3ICsyNiwxMSBAQAogI2lmbmRlZiBBTkdMRVdlYktpdEJy
aWRnZV9oCiAjZGVmaW5lIEFOR0xFV2ViS2l0QnJpZGdlX2gKIAorI2lmIFBMQVRGT1JNKFFUKQor
I2luY2x1ZGUgIkFOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgiCisjZWxzZQogI2lu
Y2x1ZGUgIkFOR0xFL1NoYWRlckxhbmcuaCIKKyNlbmRpZgogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAppbmRleCAxMTcw
NzdjLi5iNjExOGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgQ0FMYXllcjsK
IGNsYXNzIFdlYkdMTGF5ZXI7CiAjZW5kaWYKICNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
IkFOR0xFV2ViS2l0QnJpZGdlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5h
bFF0LmgiCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFQYWludGVyOwpAQCAtNDc3LDcgKzQ3
OCw3IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8RHJhd2luZ0J1ZmZlcj4gY3JlYXRlRHJh
d2luZ0J1ZmZlcihjb25zdCBJbnRTaXplJiA9IEludFNpemUoKSk7CiAgICAgCi0jaWYgUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKENIUk9NSVVNKSB8fCBQTEFURk9STShRVCkKICAgICAvLyBXaXRoIG11bHRpc2FtcGxpbmcg
b24sIGJsaXQgZnJvbSBtdWx0aXNhbXBsZUZCTyB0byByZWd1bGFyIEZCTy4KICAgICB2b2lkIHBy
ZXBhcmVUZXh0dXJlKCk7CiAjZW5kaWYKQEAgLTg2MCw3ICs4NjEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgIEFscGhhT3AgYWxwaGFPcCwKICAgICAgICAgICAgICAgICAgICAgdm9p
ZCogZGVzdGluYXRpb25EYXRhKTsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShN
QUMpIHx8IFBMQVRGT1JNKFFUKQogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3Mg
cmVxdWVzdGVkIGNvbnRleHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1
bGFyIHN0ZW5jaWwgYW5kIGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgog
ICAgIC8vIGNvdWxkIG5vdCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2Yg
dGhlIE9wZW5HTApAQCAtODc0LDcgKzg3NSw3IEBAIHB1YmxpYzoKIAogICAgIGludCBtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0OwogCi0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCiAgICAgdHlwZWRlZiBzdHJ1Y3QgewogICAgICAgICBT
dHJpbmcgc291cmNlOwogICAgICAgICBTdHJpbmcgbG9nOwpAQCAtODgyLDE2ICs4ODMsMjIgQEAg
cHVibGljOgogICAgIH0gU2hhZGVyU291cmNlRW50cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNE
T2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAKLSAgICBmcmll
bmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwogICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29t
cGlsZXI7Ci0KKyNpZiBQTEFURk9STShRVCkKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNE
UXQ7CisgICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7CisjZWxzZQorICAg
IGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7CiAgICAgT3duUHRyPEV4dGVuc2lvbnMz
RE9wZW5HTD4gbV9leHRlbnNpb25zOworI2VuZGlmCiAKICAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7
CiAgICAgVmVjdG9yPFZlY3RvcjxmbG9hdD4gPiBtX3ZlcnRleEFycmF5OwogCisjaWYgUExBVEZP
Uk0oTUFDKQogICAgIENHTENvbnRleHRPYmogbV9jb250ZXh0T2JqOwogICAgIFJldGFpblB0cjxX
ZWJHTExheWVyPiBtX3dlYkdMTGF5ZXI7CisjZW5kaWYKICAgICBHQzNEdWludCBtX3RleHR1cmUs
IG1fY29tcG9zaXRvclRleHR1cmU7CiAgICAgR0MzRHVpbnQgbV9mYm87CiAgICAgR0MzRHVpbnQg
bV9kZXB0aFN0ZW5jaWxCdWZmZXI7CkBAIC05MTMsMTEgKzkyMCwxNCBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKFFUKQotICAgIEF0dHJpYnV0ZXMgbV9hdHRyczsKICNkZWZpbmUg
R0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBcCiAgICAgdHlwZWRlZiBSZXR1cm5W
YWx1ZSAoQVBJRU5UUlkqIFByb2MjI1R5cGUpIFBhcmFtczsgXAogICAgIFByb2MjI1R5cGUgUHJv
YzsKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMyUXQuaCIKKyNlbHNlCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xRdC5oIgorI2VuZGlmCiAjdW5kZWYgR0xfUFJPQwogI2VuZGlmCiAgICAgLy8gRklYTUU6IGlk
ZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFsbCBwbGF0Zm9ybXMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RP
cGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBjMTI1ZTk0Li5jMzU5YjY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTMzLDcgKzMzLDExIEBACiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRl
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAi
RXh0ZW5zaW9uczNEUXQuaCIKKyNlbHNlCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgi
CisjZW5kaWYKICNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgpAQCAtNDMsNiArNDcsMTAg
QEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIK
IAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgPGNzdHJpbmc+CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbmRpZgpAQCAtNTQsNyArNjIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlk
YXRlQXR0cmlidXRlcygpCiB7Ci0gICAgY29uc3QgY2hhciogZXh0ZW5zaW9ucyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KDo6Z2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpOworICAg
IGNvbnN0IGNoYXIqIGV4dGVuc2lvbnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihn
bEdldFN0cmluZyhHTF9FWFRFTlNJT05TKSk7CiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewog
ICAgICAgICBpZiAoc3RkOjpzdHJzdHIoZXh0ZW5zaW9ucywgIkdMX0VYVF9wYWNrZWRfZGVwdGhf
c3RlbmNpbCIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fYXR0cnMuZGVwdGgpCkBAIC02NSw3ICs3
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlQXR0cmlidXRlcygpCiAgICAg
aWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7CiAgICAgICAgIGJvb2wgaXNWYWxpZFZlbmRvciA9IHRy
dWU7CiAgICAgICAgIC8vIEN1cnJlbnRseSBpbiBNYWMgd2Ugb25seSB0dXJuIG9uIGFudGlhbGlh
cyBpZiB2ZW5kb3IgaXMgTlZJRElBLgotICAgICAgICBjb25zdCBjaGFyKiB2ZW5kb3IgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPig6OmdsR2V0U3RyaW5nKEdMX1ZFTkRPUikpOworICAg
ICAgICBjb25zdCBjaGFyKiB2ZW5kb3IgPSByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihn
bEdldFN0cmluZyhHTF9WRU5ET1IpKTsKICAgICAgICAgaWYgKCFzdGQ6OnN0cnN0cih2ZW5kb3Is
ICJOVklESUEiKSkKICAgICAgICAgICAgIGlzVmFsaWRWZW5kb3IgPSBmYWxzZTsKICAgICAgICAg
aWYgKCFpc1ZhbGlkVmVuZG9yIHx8ICFzdGQ6OnN0cnN0cihleHRlbnNpb25zLCAiR0xfRVhUX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikpCkBAIC04MiwzNSArOTAsMzYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBp
bnQgcGl4ZWxzU2kKIAogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICBpZiAo
bV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9S
RUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAgICAgICAg
OjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVp
Z2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZG
RVJfQklULCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9S
RUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGds
QmxpdEZyYW1lYnVmZmVyRVhUKDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQs
IDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9C
SVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVG
RkVSX0VYVCwgbV9mYm8pOwogICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAgICAgIG11
c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAgICAgICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQo
R0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
ckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAgfQogICAgIH0KIAogICAg
IEdMaW50IHBhY2tBbGlnbm1lbnQgPSA0OwogICAgIGJvb2wgbXVzdFJlc3RvcmVQYWNrQWxpZ25t
ZW50ID0gZmFsc2U7Ci0gICAgOjpnbEdldEludGVnZXJ2KEdMX1BBQ0tfQUxJR05NRU5ULCAmcGFj
a0FsaWdubWVudCk7CisgICAgZ2xHZXRJbnRlZ2VydihHTF9QQUNLX0FMSUdOTUVOVCwgJnBhY2tB
bGlnbm1lbnQpOwogICAgIGlmIChwYWNrQWxpZ25tZW50ID4gNCkgewotICAgICAgICA6OmdsUGl4
ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOworICAgICAgICBnbFBpeGVsU3RvcmVpKEdM
X1BBQ0tfQUxJR05NRU5ULCA0KTsKICAgICAgICAgbXVzdFJlc3RvcmVQYWNrQWxpZ25tZW50ID0g
dHJ1ZTsKICAgICB9CiAKLSAgICA6OmdsUmVhZFBpeGVscygwLCAwLCBtX2N1cnJlbnRXaWR0aCwg
bV9jdXJyZW50SGVpZ2h0LCBHTF9CR1JBLCBHTF9VTlNJR05FRF9JTlRfOF84XzhfOF9SRVYsIHBp
eGVscyk7CisgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRI
ZWlnaHQsIEdMX0JHUkEsIEdMX1VOU0lHTkVEX0lOVF84XzhfOF84X1JFViwgcGl4ZWxzKTsKIAog
ICAgIGlmIChtdXN0UmVzdG9yZVBhY2tBbGlnbm1lbnQpCi0gICAgICAgIDo6Z2xQaXhlbFN0b3Jl
aShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVudCk7CisgICAgICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1lbnQpOwogCiAgICAgaWYgKG11c3RSZXN0
b3JlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgbV9ib3VuZEZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVG
RkVSX0VYVCwgbV9ib3VuZEZCTyk7CiB9CiAKKyNpZiBQTEFURk9STShNQUMpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0KQogewogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBj
b250ZXh0LT5jYW52YXMoKTsKQEAgLTEzNyw2ICsxNDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0
KiBjbwogICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgpLCBtX2N1cnJlbnRXaWR0aCwgbV9j
dXJyZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgY2FudmFzLT53aWR0aCgpLCBjYW52YXMt
PmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKSk7CiB9
CisjZW5kaWYKIAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWlu
dFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CkBAIC0xNjAsOCArMTcwLDEzIEBAIFBh
c3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9JbWFnZURhdGEoKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKIHsKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAoIW1faW50ZXJu
YWwpCisgICAgICAgIHJldHVybjsKKyNlbHNlCiAgICAgaWYgKCFtX2NvbnRleHRPYmopCiAgICAg
ICAgIHJldHVybjsKKyNlbmRpZgogCiAgICAgaWYgKHdpZHRoID09IG1fY3VycmVudFdpZHRoICYm
IGhlaWdodCA9PSBtX2N1cnJlbnRIZWlnaHQpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MywyNiAr
MjA4LDI2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogICAgIC8vIHJlc2l6ZSBtdWx0aXNhbXBsZSBGQk8KICAgICBpZiAobV9hdHRycy5h
bnRpYWxpYXMpIHsKICAgICAgICAgR0xpbnQgbWF4U2FtcGxlQ291bnQ7Ci0gICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFU19FWFQsICZtYXhTYW1wbGVDb3VudCk7CisgICAgICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVNfRVhULCAmbWF4U2FtcGxlQ291bnQpOwogICAg
ICAgICBHTGludCBzYW1wbGVDb3VudCA9IHN0ZDo6bWluKDgsIG1heFNhbXBsZUNvdW50KTsKICAg
ICAgICAgaWYgKHNhbXBsZUNvdW50ID4gbWF4U2FtcGxlQ291bnQpCiAgICAgICAgICAgICBzYW1w
bGVDb3VudCA9IG1heFNhbXBsZUNvdW50OwogICAgICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX211
bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAg
ICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIDo6Z2xCaW5k
UmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1
ZmZlcik7Ci0gICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xf
UkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7Ci0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfUkVOREVSQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Cisg
ICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZF
Ul9FWFQsIHNhbXBsZUNvdW50LCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRp
c2FtcGxlQ29sb3JCdWZmZXIpOwogICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0
cnMuZGVwdGgpIHsKLSAgICAgICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRF
UkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAg
ICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJf
RVhULCBzYW1wbGVDb3VudCwgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWln
aHQpOworICAgICAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxl
Q291bnQsIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAg
ICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hN
RU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1
ZmZlcik7CisgICAgICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgaWYg
KG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfREVQVEhfQVRUQUNITUVOVF9FWFQsIEdMX1JF
TkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAg
ICAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNh
bXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIH0KLSAgICAgICAgOjpnbEJpbmRSZW5k
ZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgMCk7CisgICAgICAgIGdsQmluZFJlbmRl
cmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsKICAgICAgICAgaWYgKGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1c0VYVChHTF9GUkFNRUJVRkZFUl9FWFQpICE9IEdMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFX0VYVCkgewogICAgICAgICAgICAgLy8gRklYTUU6IGNsZWFudXAuCiAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMjIyLDIyICsyMzcsMjIgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgLy8gcmVzaXpl
IHJlZ3VsYXIgRkJPCiAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAgbXVz
dFJlc3RvcmVGQk8gPSB0cnVlOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9Ci0gICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1fdGV4dHVyZSk7Ci0gICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwg
R0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJE
LCBtX3RleHR1cmUsIDApOwotICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKLSAgICA6OmdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBt
X2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9V
TlNJR05FRF9CWVRFLCAwKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7
CisgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOworICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVO
VDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwg
Y29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgMCk7CiAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAmJiAobV9hdHRycy5z
dGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpKSB7Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVy
RVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAg
OjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgaW50ZXJuYWxE
ZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBnbEJpbmRSZW5kZXJi
dWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAg
ICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgaW50ZXJu
YWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBpZiAobV9hdHRy
cy5zdGVuY2lsKQotICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVG
RkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVO
VF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAg
ICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCwgR0xf
UkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICA6OmdsQmlu
ZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsKKyAgICAgICAgICAgIGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9B
VFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIp
OworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgMCk7
CiAgICAgfQogICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQoR0xfRlJBTUVCVUZG
RVJfRVhUKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURV9FWFQpIHsKICAgICAgICAgLy8gRklY
TUU6IGNsZWFudXAKQEAgLTI0NSw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB9CiAKICAgICBpZiAobV9hdHRycy5h
bnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAgICBpZiAobV9ib3Vu
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSBm
YWxzZTsKICAgICB9CkBAIC0yNTgsNTQgKzI3Myw1NCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICBHTGJvb2xlYW4gaXNTY2lzc29y
RW5hYmxlZCA9IEdMX0ZBTFNFOwogICAgIEdMYm9vbGVhbiBpc0RpdGhlckVuYWJsZWQgPSBHTF9G
QUxTRTsKICAgICBHTGJpdGZpZWxkIGNsZWFyTWFzayA9IEdMX0NPTE9SX0JVRkZFUl9CSVQ7Ci0g
ICAgOjpnbEdldEZsb2F0dihHTF9DT0xPUl9DTEVBUl9WQUxVRSwgY2xlYXJDb2xvcik7Ci0gICAg
OjpnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgOjpnbEdldEJvb2xlYW52KEdMX0NPTE9S
X1dSSVRFTUFTSywgY29sb3JNYXNrKTsKLSAgICA6OmdsQ29sb3JNYXNrKEdMX1RSVUUsIEdMX1RS
VUUsIEdMX1RSVUUsIEdMX1RSVUUpOworICAgIGdsR2V0RmxvYXR2KEdMX0NPTE9SX0NMRUFSX1ZB
TFVFLCBjbGVhckNvbG9yKTsKKyAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7CisgICAgZ2xH
ZXRCb29sZWFudihHTF9DT0xPUl9XUklURU1BU0ssIGNvbG9yTWFzayk7CisgICAgZ2xDb2xvck1h
c2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7CiAgICAgaWYgKG1fYXR0cnMu
ZGVwdGgpIHsKLSAgICAgICAgOjpnbEdldEZsb2F0dihHTF9ERVBUSF9DTEVBUl9WQUxVRSwgJmNs
ZWFyRGVwdGgpOwotICAgICAgICA6OmdsQ2xlYXJEZXB0aCgxKTsKLSAgICAgICAgOjpnbEdldEJv
b2xlYW52KEdMX0RFUFRIX1dSSVRFTUFTSywgJmRlcHRoTWFzayk7Ci0gICAgICAgIDo6Z2xEZXB0
aE1hc2soR0xfVFJVRSk7CisgICAgICAgIGdsR2V0RmxvYXR2KEdMX0RFUFRIX0NMRUFSX1ZBTFVF
LCAmY2xlYXJEZXB0aCk7CisgICAgICAgIGdsQ2xlYXJEZXB0aCgxKTsKKyAgICAgICAgZ2xHZXRC
b29sZWFudihHTF9ERVBUSF9XUklURU1BU0ssICZkZXB0aE1hc2spOworICAgICAgICBnbERlcHRo
TWFzayhHTF9UUlVFKTsKICAgICAgICAgY2xlYXJNYXNrIHw9IEdMX0RFUFRIX0JVRkZFUl9CSVQ7
CiAgICAgfQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgOjpnbEdldEludGVn
ZXJ2KEdMX1NURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOwotICAgICAgICA6Omds
Q2xlYXJTdGVuY2lsKDApOwotICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfU1RFTkNJTF9XUklU
RU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsKLSAgICAgICAg
OjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOworICAgICAgICBn
bEdldEludGVnZXJ2KEdMX1NURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOworICAg
ICAgICBnbENsZWFyU3RlbmNpbCgwKTsKKyAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lM
X1dSSVRFTUFTSywgcmVpbnRlcnByZXRfY2FzdDxHTGludCo+KCZzdGVuY2lsTWFzaykpOworICAg
ICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwogICAgICAg
ICBjbGVhck1hc2sgfD0gR0xfU1RFTkNJTF9CVUZGRVJfQklUOwogICAgIH0KLSAgICBpc1NjaXNz
b3JFbmFibGVkID0gOjpnbElzRW5hYmxlZChHTF9TQ0lTU09SX1RFU1QpOwotICAgIDo6Z2xEaXNh
YmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgaXNEaXRoZXJFbmFibGVkID0gOjpnbElzRW5hYmxl
ZChHTF9ESVRIRVIpOwotICAgIDo6Z2xEaXNhYmxlKEdMX0RJVEhFUik7CisgICAgaXNTY2lzc29y
RW5hYmxlZCA9IGdsSXNFbmFibGVkKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgZ2xEaXNhYmxlKEdM
X1NDSVNTT1JfVEVTVCk7CisgICAgaXNEaXRoZXJFbmFibGVkID0gZ2xJc0VuYWJsZWQoR0xfRElU
SEVSKTsKKyAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKIAotICAgIDo6Z2xDbGVhcihjbGVhck1h
c2spOworICAgIGdsQ2xlYXIoY2xlYXJNYXNrKTsKIAotICAgIDo6Z2xDbGVhckNvbG9yKGNsZWFy
Q29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFyQ29sb3JbM10pOwot
ICAgIDo6Z2xDb2xvck1hc2soY29sb3JNYXNrWzBdLCBjb2xvck1hc2tbMV0sIGNvbG9yTWFza1sy
XSwgY29sb3JNYXNrWzNdKTsKKyAgICBnbENsZWFyQ29sb3IoY2xlYXJDb2xvclswXSwgY2xlYXJD
b2xvclsxXSwgY2xlYXJDb2xvclsyXSwgY2xlYXJDb2xvclszXSk7CisgICAgZ2xDb2xvck1hc2so
Y29sb3JNYXNrWzBdLCBjb2xvck1hc2tbMV0sIGNvbG9yTWFza1syXSwgY29sb3JNYXNrWzNdKTsK
ICAgICBpZiAobV9hdHRycy5kZXB0aCkgewotICAgICAgICA6OmdsQ2xlYXJEZXB0aChjbGVhckRl
cHRoKTsKLSAgICAgICAgOjpnbERlcHRoTWFzayhkZXB0aE1hc2spOworICAgICAgICBnbENsZWFy
RGVwdGgoY2xlYXJEZXB0aCk7CisgICAgICAgIGdsRGVwdGhNYXNrKGRlcHRoTWFzayk7CiAgICAg
fQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpIHsKLSAgICAgICAgOjpnbENsZWFyU3RlbmNpbChj
bGVhclN0ZW5jaWwpOwotICAgICAgICA6OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShHTF9GUk9OVCwg
c3RlbmNpbE1hc2spOworICAgICAgICBnbENsZWFyU3RlbmNpbChjbGVhclN0ZW5jaWwpOworICAg
ICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIHN0ZW5jaWxNYXNrKTsKICAgICB9
CiAgICAgaWYgKGlzU2Npc3NvckVuYWJsZWQpCi0gICAgICAgIDo6Z2xFbmFibGUoR0xfU0NJU1NP
Ul9URVNUKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKICAgICBlbHNlCi0g
ICAgICAgIDo6Z2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgICAgIGdsRGlzYWJsZShH
TF9TQ0lTU09SX1RFU1QpOwogICAgIGlmIChpc0RpdGhlckVuYWJsZWQpCi0gICAgICAgIDo6Z2xF
bmFibGUoR0xfRElUSEVSKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfRElUSEVSKTsKICAgICBlbHNl
Ci0gICAgICAgIDo6Z2xEaXNhYmxlKEdMX0RJVEhFUik7CisgICAgICAgIGdsRGlzYWJsZShHTF9E
SVRIRVIpOwogCiAgICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CisgICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CiAKLSAgICA6
OmdsRmx1c2goKTsKKyAgICBnbEZsdXNoKCk7CiB9CiAKIEludFNpemUgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkKQEAgLTMxOSwxOCArMzM0LDE4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewot
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBt
X211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFX
X0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhU
KDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY3VycmVudFdp
ZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Cisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211
bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFN
RUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwg
bV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKICAgICB9Ci0g
ICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAg
ICA6OmdsQWN0aXZlVGV4dHVyZSgwKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgOjpnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCwgMCk7Ci0gICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1f
Ym91bmRUZXh0dXJlMCk7Ci0gICAgOjpnbEFjdGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlKTsK
LSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZC
Tyk7Ci0gICAgOjpnbEZpbmlzaCgpOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1F
QlVGRkVSX0VYVCwgbV9mYm8pOworICAgIGdsQWN0aXZlVGV4dHVyZSgwKTsKKyAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsQ29weVRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCAwLCAwLCBt
X2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKG1fYWN0
aXZlVGV4dHVyZSk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBtX2JvdW5kRkJPKTsKKyAgICBnbEZpbmlzaCgpOwogICAgIG1fbGF5ZXJDb21wb3NpdGVkID0g
dHJ1ZTsKIH0KIApAQCAtMzM4LDcgKzM1Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmFj
dGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICBtX2FjdGl2ZVRleHR1cmUgPSB0ZXh0dXJlOwotICAgIDo6Z2xBY3RpdmVUZXh0dXJl
KHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxh
dGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0zNDYsMjAgKzM2MSwyMCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFTU0VSVChzaGFkZXIpOwogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChw
cm9ncmFtKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmluZEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGdsQmluZEF0
dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZv
cm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQsIGJ1
ZmZlcik7CiB9CiAKIApAQCAtMzcyLDcgKzM4Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
CiAgICAgZWxzZQogICAgICAgICBmYm8gPSAobV9hdHRycy5hbnRpYWxpYXMgPyBtX211bHRpc2Ft
cGxlRkJPIDogbV9mYm8pOwogICAgIGlmIChmYm8gIT0gbV9ib3VuZEZCTykgewotICAgICAgICA6
OmdsQmluZEZyYW1lYnVmZmVyRVhUKHRhcmdldCwgZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQodGFyZ2V0LCBmYm8pOwogICAgICAgICBtX2JvdW5kRkJPID0gZmJvOwogICAgIH0K
IH0KQEAgLTM4MCw3ICszOTUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJhbWVi
dWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcgogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICBnbEJp
bmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIpOwogfQogCiAKQEAgLTM4OSw5
MiArNDA0LDkyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRUZXh0dXJlKEdDM0RlbnVt
IHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGlmIChtX2FjdGl2ZVRleHR1cmUgJiYgdGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQp
CiAgICAgICAgIG1fYm91bmRUZXh0dXJlMCA9IHRleHR1cmU7Ci0gICAgOjpnbEJpbmRUZXh0dXJl
KHRhcmdldCwgdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZENvbG9yKEdDM0RjbGFtcGYgcmVkLCBH
QzNEY2xhbXBmIGdyZWVuLCBHQzNEY2xhbXBmIGJsdWUsIEdDM0RjbGFtcGYgYWxwaGEpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kQ29sb3IocmVkLCBncmVlbiwg
Ymx1ZSwgYWxwaGEpOworICAgIGdsQmxlbmRDb2xvcihyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9k
ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmxlbmRFcXVhdGlvbiht
b2RlKTsKKyAgICBnbEJsZW5kRXF1YXRpb24obW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51bSBtb2RlUkdCLCBHQzNEZW51bSBt
b2RlQWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kRXF1
YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOworICAgIGdsQmxlbmRFcXVhdGlvblNl
cGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6YmxlbmRGdW5jKEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9y
KTsKKyAgICBnbEJsZW5kRnVuYyhzZmFjdG9yLCBkZmFjdG9yKTsKIH0gICAgICAgCiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0Mz
RGVudW0gZHN0UkdCLCBHQzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JH
QiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUo
c3JjUkdCLCBkc3RSR0IsIHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwg
R0MzRGVudW0gdXNhZ2UpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1
ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAwLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgMCwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEs
IEdDM0RlbnVtIHVzYWdlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xC
dWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyU3ViRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6
ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsQnVmZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7Cisg
ICAgZ2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0Mz
RGVudW0gR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0g
dGFyZ2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsQ2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1c0VYVCh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVi
dWZmZXJTdGF0dXNFWFQodGFyZ2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xl
YXJDb2xvcihHQzNEY2xhbXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xh
bXBmIGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbENsZWFyQ29sb3Io
ciwgZywgYiwgYSk7CisgICAgZ2xDbGVhckNvbG9yKHIsIGcsIGIsIGEpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpjbGVhcihHQzNEYml0ZmllbGQgbWFzaykKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQ2xlYXIobWFzayk7CisgICAgZ2xDbGVhcihtYXNrKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRo
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xDbGVhckRlcHRoKGRlcHRo
KTsKKyAgICBnbENsZWFyRGVwdGgoZGVwdGgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpjbGVhclN0ZW5jaWwoR0MzRGludCBzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIDo6Z2xDbGVhclN0ZW5jaWwocyk7CisgICAgZ2xDbGVhclN0ZW5jaWwocyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbG9yTWFzayhHQzNEYm9vbGVhbiByZWQsIEdDM0Rib29s
ZWFuIGdyZWVuLCBHQzNEYm9vbGVhbiBibHVlLCBHQzNEYm9vbGVhbiBhbHBoYSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQ29sb3JNYXNrKHJlZCwgZ3JlZW4sIGJsdWUs
IGFscGhhKTsKKyAgICBnbENvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIpCkBAIC01MTcsMTMgKzUzMiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21w
aWxlU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIGNvbnN0IENTdHJpbmcmIHRy
YW5zbGF0ZWRTaGFkZXJDU3RyaW5nID0gdHJhbnNsYXRlZFNoYWRlclNvdXJjZS51dGY4KCk7CiAg
ICAgY29uc3QgY2hhciogdHJhbnNsYXRlZFNoYWRlclB0ciA9IHRyYW5zbGF0ZWRTaGFkZXJDU3Ry
aW5nLmRhdGEoKTsKICAgICAKLSAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5z
bGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKKyAgICBnbFNoYWRlclNv
dXJjZShzaGFkZXIsIDEsICZ0cmFuc2xhdGVkU2hhZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxl
bmd0aCk7CiAgICAgCi0gICAgOjpnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbENvbXBp
bGVTaGFkZXIoc2hhZGVyKTsKICAgICAKICAgICBpbnQgR0xDb21waWxlU3VjY2VzczsKICAgICAK
LSAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1
Y2Nlc3MpOworICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29t
cGlsZVN1Y2Nlc3MpOwogICAgIAogICAgIC8vIEFTU0VSVCB0aGF0IEFOR0xFIGdlbmVyYXRlZCBH
TFNMIHdpbGwgYmUgYWNjZXB0ZWQgYnkgT3BlbkdMCiAgICAgQVNTRVJUKEdMQ29tcGlsZVN1Y2Nl
c3MgPT0gR0xfVFJVRSk7CkBAIC01MzMsNTIgKzU0OCw1MiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4SW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0Rl
bnVtCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFs
aWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJP
KTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VY
VCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0
aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZG
RVJfQklULCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9S
RUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGds
QmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCAr
IHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAg
ICB9Ci0gICAgOjpnbENvcHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpOworICAgIGdsQ29weVRleEltYWdlMkQodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlcik7
CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNhbXBs
ZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQs
IG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFN
RUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdD
M0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09IG1fbXVsdGlz
YW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1F
QlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAgICAgICAgOjpnbEJsaXRG
cmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0
aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKLSAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVG
RkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsg
d2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1Jf
QlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgfQotICAgIDo6Z2xDb3B5VGV4U3ViSW1hZ2Uy
RCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsK
KyAgICBnbENvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQs
IHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2Jv
dW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQ3VsbEZhY2UobW9kZSk7CisgICAgZ2xD
dWxsRmFjZShtb2RlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhGdW5jKEdD
M0RlbnVtIGZ1bmMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERlcHRo
RnVuYyhmdW5jKTsKKyAgICBnbERlcHRoRnVuYyhmdW5jKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZGVwdGhNYXNrKEdDM0Rib29sZWFuIGZsYWcpCiB7CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgOjpnbERlcHRoTWFzayhmbGFnKTsKKyAgICBnbERlcHRoTWFzayhmbGFn
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVwdGhSYW5nZShHQzNEY2xhbXBmIHpO
ZWFyLCBHQzNEY2xhbXBmIHpGYXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbERlcHRoUmFuZ2Uoek5lYXIsIHpGYXIpOworICAgIGdsRGVwdGhSYW5nZSh6TmVhciwgekZh
cik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtNTg2LDc5ICs2MDEs
NzkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBB
U1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRGV0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3JhbSwgc2hh
ZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51bSBjYXAp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERpc2FibGUoY2FwKTsKKyAg
ICBnbERpc2FibGUoY2FwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIDo6Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlz
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6ZHJhd0FycmF5cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291
bnQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERyYXdBcnJheXMobW9k
ZSwgZmlyc3QsIGNvdW50KTsKKyAgICBnbERyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0VsZW1lbnRzKEdDM0RlbnVtIG1vZGUs
IEdDM0RzaXplaSBjb3VudCwgR0MzRGVudW0gdHlwZSwgR0MzRGludHB0ciBvZmZzZXQpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERyYXdFbGVtZW50cyhtb2RlLCBjb3Vu
dCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
b2Zmc2V0KSkpOworICAgIGdsRHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEVuYWJsZShjYXApOworICAgIGdsRW5hYmxlKGNh
cCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KEdDM0R1aW50IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZpbmlzaCgpOworICAgIGdsRmluaXNo
KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRmx1c2goKTsKKyAgICBnbEZsdXNoKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQ
bGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5k
ZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVY
VCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFy
Z2V0LCBHQzNEZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RP
YmplY3QgdGV4dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQodGFyZ2V0LCBhdHRhY2htZW50LCB0
ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhU
KHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcm9udEZhY2UobW9kZSk7CisgICAgZ2xGcm9u
dEZhY2UobW9kZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFw
KEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
R2VuZXJhdGVNaXBtYXBFWFQodGFyZ2V0KTsKKyAgICBnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdl
dCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAt
NjY5LDEyICs2ODQsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmli
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZXgKICAgICB9CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4QXR0cmlidXRlU2l6ZSA9IDA7Ci0gICAg
OjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgs
ICZtYXhBdHRyaWJ1dGVTaXplKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJ
VkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKICAgICBHTGNoYXIg
bmFtZVttYXhBdHRyaWJ1dGVTaXplXTsgLy8gR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RI
IGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwog
ICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0
aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwg
JnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRl
eCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAg
ICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW5mby5uYW1l
ID0gU3RyaW5nKG5hbWUsIG5hbWVMZW5ndGgpOwpAQCAtNjkxLDEyICs3MDYsMTIgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5pZm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50IGluZGUKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
R0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwg
R0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKKyAgICBnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5p
Zm9ybVNpemUpOwogICAgIEdMY2hhciBuYW1lW21heFVuaWZvcm1TaXplXTsgLy8gR0xfQUNUSVZF
X1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uCiAgICAgR0xzaXpl
aSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9
IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1T
aXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUs
ICZ0eXBlLCBuYW1lKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFtZSwgbmFtZUxlbmd0aCk7CkBAIC03MTIsNyAr
NzI3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRm
b3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVpIG0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHBy
b2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVycyk7CisgICAgZ2xHZXRBdHRhY2hlZFNoYWRl
cnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBzaGFkZXJzKTsKIH0KIAogaW50IEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNv
bnN0IFN0cmluZyYgbmFtZSkKQEAgLTcyMSw3ICs3MzYsNyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3Ry
aW5nJgogICAgICAgICByZXR1cm4gLTE7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICByZXR1cm4gOjpnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEo
KSk7CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCku
ZGF0YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkKQEAgLTczOSwxOSArNzU0LDE5IEBAIEdDM0Rl
bnVtIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiAgICAgfQogCiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xHZXRFcnJvcigpOworICAgIHJldHVybiBnbEdl
dEVycm9yKCk7CiB9CiAKIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U3RyaW5nKEdDM0Rl
bnVtIG5hbWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIFN0cmlu
ZygoY29uc3QgY2hhciopIDo6Z2xHZXRTdHJpbmcobmFtZSkpOworICAgIHJldHVybiBTdHJpbmco
KGNvbnN0IGNoYXIqKSBnbEdldFN0cmluZyhuYW1lKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmhpbnQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBtb2RlKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xIaW50KHRhcmdldCwgbW9kZSk7CisgICAgZ2xIaW50
KHRhcmdldCwgbW9kZSk7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1
ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKQEAgLTc2MCwxMyArNzc1LDEzIEBAIEdDM0Ri
b29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgcmV0dXJuIDo6Z2xJc0J1ZmZlcihidWZmZXIpOworICAgIHJldHVybiBnbElzQnVmZmVy
KGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQo
R0MzRGVudW0gY2FwKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6
OmdsSXNFbmFibGVkKGNhcCk7CisgICAgcmV0dXJuIGdsSXNFbmFibGVkKGNhcCk7CiB9CiAKIEdD
M0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRmb3JtM0RPYmpl
Y3QgZnJhbWVidWZmZXIpCkBAIC03NzUsNyArNzkwLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9iamVjdCBmcmFtZWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
cmV0dXJuIDo6Z2xJc0ZyYW1lYnVmZmVyRVhUKGZyYW1lYnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJ
c0ZyYW1lYnVmZmVyRVhUKGZyYW1lYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC03ODQsNyAr
Nzk5LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNQcm9ncmFtKHByb2dyYW0pOworICAg
IHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhpY3ND
b250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQpA
QCAtNzkzLDcgKzgwOCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRl
cmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdM
X0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1Jl
bmRlcmJ1ZmZlckVYVChyZW5kZXJidWZmZXIpOworICAgIHJldHVybiBnbElzUmVuZGVyYnVmZmVy
RVhUKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTgwMiw3ICs4MTcsNyBAQCBHQzNE
Ym9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIHJldHVybiA6OmdsSXNTaGFkZXIoc2hhZGVyKTsKKyAgICByZXR1cm4gZ2xJc1NoYWRl
cihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNUZXh0dXJl
KFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTgxMSwzMiArODI2LDMyIEBAIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
KQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICByZXR1cm4gOjpnbElzVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICByZXR1cm4gZ2xJc1RleHR1
cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmVXaWR0aChHQzNE
ZmxvYXQgd2lkdGgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbExpbmVX
aWR0aCh3aWR0aCk7CisgICAgZ2xMaW5lV2lkdGgod2lkdGgpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAg
QVNTRVJUKHByb2dyYW0pOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xMaW5r
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBw
YXJhbSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsUGl4ZWxTdG9yZWko
cG5hbWUsIHBhcmFtKTsKKyAgICBnbFBpeGVsU3RvcmVpKHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBvbHlnb25PZmZzZXQoR0MzRGZsb2F0IGZhY3RvciwgR0Mz
RGZsb2F0IHVuaXRzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xQb2x5
Z29uT2Zmc2V0KGZhY3RvciwgdW5pdHMpOworICAgIGdsUG9seWdvbk9mZnNldChmYWN0b3IsIHVu
aXRzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgs
IEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBm
b3JtYXQsIEdDM0RlbnVtIHR5cGUsIHZvaWQqIGRhdGEpCkBAIC04NDQsMjQgKzg1OSwyNCBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaQogICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZs
dXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4ZWQsIGkuZS4sCiAgICAgLy8gYWxs
IHByZXZpb3VzIHJlbmRlcmluZyBjYWxscyBzaG91bGQgYmUgZG9uZSBiZWZvcmUgcmVhZGluZyBw
aXhlbHMuCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZsdXNoKCk7CisgICAg
Z2xGbHVzaCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFE
X0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAgICAgICAgOjpn
bEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHgg
KyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKLSAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsK
LSAgICAgICAgOjpnbEZsdXNoKCk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JF
QURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xC
bGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsg
d2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAg
ICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAg
ICAgICBnbEZsdXNoKCk7CiAgICAgfQotICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBo
ZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgZ2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRo
LCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFz
ICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVG
Qk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIo
KQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBkZXNrdG9wIE9w
ZW5HTC4gV2UgbmVlZCB0byBoYXZlIGlmZGVmcyBmb3IgdGhlIGRpZmZlcmVudCBHTCB2YXJpYW50
cwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIC8vOjpnbFJlbGVhc2VTaGFkZXJDb21w
aWxlcigpOworICAgIC8vZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQsIEdDM0Rl
bnVtIGludGVybmFsZm9ybWF0LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCkBA
IC04ODIsMTkgKzg5NywxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJT
dG9yYWdlKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBpbnRl
cm5hbGZvcm1hdCA9IEdMX1JHQjsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIDo6Z2xSZW5k
ZXJidWZmZXJTdG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQp
OworICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJh
Z2UoR0MzRGNsYW1wZiB2YWx1ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTYW1wbGVDb3ZlcmFnZSh2YWx1ZSwgaW52ZXJ0KTsKKyAg
ICBnbFNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzY2lzc29yKEdDM0RpbnQgeCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFNj
aXNzb3IoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xTY2lzc29yKHgsIHksIHdpZHRoLCBo
ZWlnaHQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtOTEzLDE3OCArOTI4
LDE3OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzaGFkZXJTb3VyY2UoUGxhdGZvcm0zRE9i
amVjdCBzaGFkZXIsIGNvbnN0IFN0cmluZyYgc3RyaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxGdW5jKGZ1bmMsIHJl
ZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuYyhmdW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdD
M0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJl
ZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJlZiwgbWFz
ayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1h
c2spCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxNYXNrKG1h
c2spOworICAgIGdsU3RlbmNpbE1hc2sobWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShm
YWNlLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51
bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbFN0ZW5jaWxPcChmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wKGZh
aWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxP
cFNlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3Rl
bmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxP
cFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnRleFBhcmFtZXRlcmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwg
R0MzRGZsb2F0IHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xU
ZXhQYXJhbWV0ZXJmKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYo
dGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQ
YXJhbWV0ZXJpKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgdmFsdWUp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFRleFBhcmFtZXRlcmkodGFy
Z2V0LCBwbmFtZSwgdmFsdWUpOworICAgIGdsVGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgdjApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2
MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
KyAgICBnbFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlm
b3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2
MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6
IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtM2YoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxv
YXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2Nh
dGlvbiwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0z
ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7
CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwg
YXJyYXkpOworICAgIGdsVW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2
MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZv
cm00ZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTFpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGds
VW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm0xaXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIDo6Z2xVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmko
bG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0y
aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewog
ICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFy
cmF5KTsKKyAgICBnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQg
djAsIEdDM0RpbnQgdjEsIEdDM0RpbnQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlmb3Jt
M2kobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1
bmlmb3JtM2l2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6
ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBz
aXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwg
djIsIHYzKTsKKyAgICBnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IDo6Z2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm1NYXRyaXgyZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBH
QzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3Ro
IG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIDo6Z2xVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5
KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0Rp
bnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0Mz
RHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRp
cGxlIG9mIDkKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0
cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9v
bGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAg
IC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXpl
LCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNp
emUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQ
cm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMDkyLDg1ICsxMTA3LDg1IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAg
ICAgQVNTRVJUKHByb2dyYW0pOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFt
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4
LCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNE
dWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIxZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRl
eCwgdjAsIHYxKTsKKyAgICBnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdD
M0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZl
cnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4
LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdD
M0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRl
eCwgdjAsIHYxLCB2Mik7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBp
bmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIz
ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0
cmliNGYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxv
YXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFZlcnRleEF0
dHJpYjRmKGluZGV4LCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnZlcnRleEF0dHJpYjRmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4
LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwg
R0MzRGludCBzaXplLCBHQzNEZW51bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNE
c2l6ZWkgc3RyaWRlLCBHQzNEaW50cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9y
bWFsaXplZCwgc3RyaWRlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGlu
dHB0cl90PihvZmZzZXQpKSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXpl
LCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmlld3BvcnQoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNp
emVpIGhlaWdodCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmlld3Bv
cnQoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xWaWV3cG9ydCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0g
cG5hbWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICA6OmdsR2V0Qm9vbGVhbnYocG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJvb2xlYW52KHBu
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBhcmFt
ZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZsb2F0
dihHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1
cnJlbnQoKTsKLSAgICA6OmdsR2V0RmxvYXR2KHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRGbG9h
dHYocG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBhdHRh
Y2htZW50LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xMTc4LDcgKzExOTMs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAgICAgICAg
YXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNITUVOVCwg
ZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJp
dkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2
YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVt
IHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTExOTAsMjYgKzEyMDUsMjYgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIHN3aXRjaCAocG5hbWUpIHsKICAgICBj
YXNlIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6Ci0gICAgICAgIDo6Z2xHZXRJbnRlZ2Vy
dihHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIGds
R2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUywgdmFsdWUpOwog
ICAgICAgICAqdmFsdWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNQVhfVkVSVEVY
X1VOSUZPUk1fVkVDVE9SUzoKLSAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhf
VU5JRk9STV9DT01QT05FTlRTLCB2YWx1ZSk7CisgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFY
X1ZFUlRFWF9VTklGT1JNX0NPTVBPTkVOVFMsIHZhbHVlKTsKICAgICAgICAgKnZhbHVlIC89IDQ7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTUFYX1ZBUllJTkdfVkVDVE9SUzoKLSAgICAgICAg
OjpnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywgdmFsdWUpOworICAgICAgICBn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX0ZMT0FUUywgdmFsdWUpOwogICAgICAgICAqdmFs
dWUgLz0gNDsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgOjpnbEdldElu
dGVnZXJ2KHBuYW1lLCB2YWx1ZSk7CisgICAgICAgIGdsR2V0SW50ZWdlcnYocG5hbWUsIHZhbHVl
KTsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCkBAIC0xMjE4LDE0ICsxMjMzLDE0IEBAIFN0cmluZyBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
KQogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbGVuZ3RoOwotICAgIDo6
Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAg
ICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwog
ICAgIGlmICghbGVuZ3RoKQogICAgICAgICByZXR1cm4gIiI7CiAKICAgICBHTHNpemVpIHNpemU7
CiAgICAgR0xjaGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKIAotICAg
IDo6Z2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAg
ICBnbEdldFByb2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOwogICAg
IFN0cmluZyBzKGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwogICAgIHJldHVybiBzOwpAQCAt
MTIzNCw3ICsxMjQ5LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5m
b0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1l
LCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAg
IGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0
IHNoYWRlciwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTI1MCw3ICsxMjY1
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVj
dCBzaGFkZXIsIEdDM0RlbnVtIHBuYW1lLCBHQzMKICAgICAgICAgY2FzZSBTSEFERVJfVFlQRToK
ICAgICAgICAgICAgIC8vIExldCBPcGVuR0wgaGFuZGxlIHRoZXNlLgogICAgICAgICAKLSAgICAg
ICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAg
ICBnbEdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAKICAgICAgICAgY2FzZSBDT01QSUxFX1NUQVRVUzoKQEAgLTEyOTUsMTQgKzEz
MTAsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogCiAgICAgIGlmIChlbnRyeS5pc1ZhbGlkKSB7CiAgICAgICAg
ICBHTGludCBsZW5ndGg7Ci0gICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZP
X0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgICAgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdM
X0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgICAgICByZXR1cm4gIiI7CiAKICAgICAgICAgIEdMc2l6ZWkgc2l6ZTsKICAgICAgICAgIEdM
Y2hhciogaW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAKLSAgICAgICAgIDo6
Z2xHZXRTaGFkZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgICAg
ICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAg
ICAgICAgU3RyaW5nIHMoaW5mbyk7CiAgICAgICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTEzMjks
MjUgKzEzNDQsMjUgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJTb3VyY2Uo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQ
YXJhbWV0ZXJmdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0
ZXJmdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJmdih0YXJn
ZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRUZXhQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdih0YXJnZXQs
IHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZvcm1m
dihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCog
dmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFVuaWZvcm1m
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2KHByb2dyYW0s
IGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFVuaWZv
cm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQq
IHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRVbmlmb3Jt
aXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1pdihwcm9ncmFt
LCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRV
bmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5h
bWUpCkBAIC0xMzU1LDE5ICsxMzcwLDE5IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0CiAgICAg
QVNTRVJUKHByb2dyYW0pOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJu
IDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgp
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUs
IHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihHQzNEdWludCBp
bmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUpOwogfQogCiBH
QzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpCkBAIC0xMzc1LDcgKzEzOTAsNyBAQCBHQzNEc2l6
ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChHQzNEdWludCBp
bmRleCwgR0MzRGVudW0gcAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAgICAgR0x2b2lk
KiBwb2ludGVyID0gMDsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBu
YW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwgcG5h
bWUsICZwb2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVpcHRyPihyZWlu
dGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTEzOTQsNyArMTQwOSw3
IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnRleEltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEZW51bSBpbnRlCiAgICAgICAgICAgICBvcGVuR0xJbnRlcm5hbEZv
cm1hdCA9IEdMX1JHQjMyRl9BUkI7CiAgICAgfQogCi0gICAgOjpnbFRleEltYWdlMkQodGFyZ2V0
LCBsZXZlbCwgb3BlbkdMSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpOworICAgIGdsVGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBvcGVu
R0xJbnRlcm5hbEZvcm1hdCwgd2lkdGgsIGhlaWdodCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBp
eGVscyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTE0MDMsNyArMTQxOCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50
IGxldmVsLCBHQzNEaW50IHhvCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICAvLyBG
SVhNRTogd2Ugd2lsbCBuZWVkIHRvIGRlYWwgd2l0aCBQaXhlbFN0b3JlIHBhcmFtcyB3aGVuIGRl
YWxpbmcgd2l0aCBpbWFnZSBidWZmZXJzIHRoYXQgZGlmZmVyIGZyb20gdGhlIHN1YmltYWdlIHNp
emUKLSAgICA6OmdsVGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2ZmLCB5b2ZmLCB3aWR0
aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CisgICAgZ2xUZXhTdWJJbWFnZTJEKHRh
cmdldCwgbGV2ZWwsIHhvZmYsIHlvZmYsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4
ZWxzKTsKIH0KIAogUGxhdGZvcm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlQnVm
ZmVyKCkKQEAgLTE1MDksNyArMTUyNCwxMSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXll
ckNvbXBvc2l0ZWQoKSBjb25zdAogRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCisjaWYgUExBVEZPUk0oUVQp
CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCh0aGlz
KSk7CisjZWxzZQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9u
czNET3BlbkdMKHRoaXMpKTsKKyNlbmRpZgogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4
dGVuc2lvbnMzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4
dGVuc2lvbnMzRFF0LmNwcAppbmRleCAzYWRjOTNmLi43OTA4YjUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwCkBA
IC0zNCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRXh0ZW5zaW9uczNEUXQ6
OkV4dGVuc2lvbnMzRFF0KCkKK0V4dGVuc2lvbnMzRFF0OjpFeHRlbnNpb25zM0RRdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25z
M0RRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNE
UXQuaAppbmRleCBjNjdmYmVkLi5hN2M4NjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKQEAgLTQ4LDcgKzQ4LDEwIEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBvbmx5IG5lZWRzIHRvIGJlIGlu
c3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHQzRCBpbXBsZW1lbnRhdGlvbnMuCiAgICAgZnJp
ZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotICAgIEV4dGVuc2lvbnMzRFF0KCk7CisgICAg
RXh0ZW5zaW9uczNEUXQoY2xhc3MgR3JhcGhpY3NDb250ZXh0M0QqKTsKKworICAgIC8vIFdlYWsg
cG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dDNECisgICAgY2xhc3MgR3JhcGhpY3NDb250
ZXh0M0QqIG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
SW50ZXJuYWxRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKaW5kZXggY2FkNDQ3Zi4uZDExZDZjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RJ
bnRlcm5hbFF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbFF0LmgKQEAgLTYxLDE0ICs2MSw3IEBAIHB1YmxpYzoKICAg
ICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CiAgICAgUUdMV2lkZ2V0KiBtX2dsV2lkZ2V0Owog
ICAgIFFHTFdpZGdldCogbV92aWV3cG9ydEdMV2lkZ2V0OwotICAgIEdMdWludCBtX3RleHR1cmU7
Ci0gICAgR0x1aW50IG1fY2FudmFzRmJvOwotICAgIEdMdWludCBtX2N1cnJlbnRGYm87Ci0gICAg
R0x1aW50IG1fZGVwdGhCdWZmZXI7Ci0gICAgYm9vbCBtX2xheWVyQ29tcG9zaXRlZDsKICAgICBp
bnQgbV9wcm9jc0FyZVZhbGlkOwotICAgIExpc3RIYXNoU2V0PHVuc2lnbmVkIGludD4gbV9zeW50
aGV0aWNFcnJvcnM7Ci0gICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0PiBtX2V4dGVuc2lvbnM7CiAK
ICAgICB2b2lkKiBnZXRQcm9jQWRkcmVzcyhjb25zdCBTdHJpbmcmIHByb2MpOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMRVMyUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMRVMyUXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5mMDIwNDI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUzJRdC5oCkBAIC0wLDAgKzEs
OTAgQEAKK0dMX1BST0Modm9pZCwgZ2xBY3RpdmVUZXh0dXJlLCAoR0xlbnVtKSkKK0dMX1BST0Mo
dm9pZCwgZ2xBdHRhY2hTaGFkZXIsIChHTHVpbnQsIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGds
QmluZEF0dHJpYkxvY2F0aW9uLCAoR0x1aW50LCBHTHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BS
T0Modm9pZCwgZ2xCaW5kQnVmZmVyLCAoR0xlbnVtLCBHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBn
bEJpbmRGcmFtZWJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5k
UmVuZGVyYnVmZmVyLCAoR0xlbnVtLCBHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kQ29s
b3IsIChHTGNsYW1wZiwgR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZikpCitHTF9QUk9DKHZv
aWQsIGdsQmxlbmRFcXVhdGlvbiwgKEdMZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxlbmRFcXVh
dGlvblNlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRnVu
Y1NlcGFyYXRlLCAoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhh
LCBHTGVudW0gZHN0QWxwaGEpKQorR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlckRhdGEsIChHTGVudW0s
IEdMc2l6ZWlwdHIsIGNvbnN0IEdMdm9pZCosIEdMZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQnVm
ZmVyU3ViRGF0YSwgKEdMZW51bSwgR0xpbnRwdHIsIEdMc2l6ZWlwdHIsIGNvbnN0IEdMdm9pZCop
KQorR0xfUFJPQyhHTGVudW0sIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cywgKEdMZW51bSkpCitH
TF9QUk9DKHZvaWQsIGdsQ29tcGlsZVNoYWRlciwgKEdMdWludCkpCitHTF9QUk9DKEdMdWludCwg
Z2xDcmVhdGVQcm9ncmFtLCAoKSkKK0dMX1BST0MoR0x1aW50LCBnbENyZWF0ZVNoYWRlciwgKEdM
ZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlQnVmZmVycywgKEdMc2l6ZWksIGNvbnN0IEdM
dWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUZyYW1lYnVmZmVycywgKEdMc2l6ZWkgbiwg
Y29uc3QgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlUHJvZ3JhbSwgKEdMdWludCkp
CitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgKEdMc2l6ZWkgbiwgY29uc3Qg
R0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlU2hhZGVyLCAoR0x1aW50KSkKK0dMX1BS
T0Modm9pZCwgZ2xEZXRhY2hTaGFkZXIsIChHTHVpbnQsIEdMdWludCkpCitHTF9QUk9DKHZvaWQs
IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXIsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyVGV4dHVyZTJELCAoR0xlbnVtLCBHTGVudW0sIEdMZW51
bSwgR0x1aW50LCBHTGludCkpCitHTF9QUk9DKHZvaWQsIGdsR2VuQnVmZmVycywgKEdMc2l6ZWks
IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwLCAoR0xlbnVtIHRhcmdl
dCkpCitHTF9QUk9DKHZvaWQsIGdsR2VuRnJhbWVidWZmZXJzLCAoR0xzaXplaSwgR0x1aW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsR2VuUmVuZGVyYnVmZmVycywgKEdMc2l6ZWksIEdMdWludCopKQor
R0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZUF0dHJpYiwgKEdMdWludCwgR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xH
ZXRBY3RpdmVVbmlmb3JtLCAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGlu
dCosIEdMZW51bSosIEdMY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldEF0dGFjaGVkU2hhZGVy
cywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMdWludCopKQorR0xfUFJPQyhHTGludCwg
Z2xHZXRBdHRyaWJMb2NhdGlvbiwgKEdMdWludCwgY29uc3QgY2hhciopKQorR0xfUFJPQyh2b2lk
LCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCAoR0xlbnVtLCBHTGVudW0sIEdMaW50KikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYsIChHTGVudW0s
IEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRQcm9n
cmFtSW5mb0xvZywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRQcm9ncmFtaXYsIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBHTGlu
dCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRlckluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWks
IEdMc2l6ZWkqLCBjaGFyKikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVyaXYsIChHTHVpbnQs
IEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJTb3VyY2UsIChHTHVp
bnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKikpCitHTF9QUk9DKEdMaW50LCBnbEdldFVuaWZv
cm1Mb2NhdGlvbiwgKEdMdWludCwgY29uc3QgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFVu
aWZvcm1mdiwgKEdMdWludCwgR0xpbnQsIEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRV
bmlmb3JtaXYsIChHTHVpbnQsIEdMaW50LCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFZl
cnRleEF0dHJpYmZ2LCAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwg
Z2xHZXRWZXJ0ZXhBdHRyaWJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2
b2lkLCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2LCAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoq
KSkKK0dMX1BST0MoR0xib29sZWFuLCBnbElzQnVmZmVyLCAoR0x1aW50KSkKK0dMX1BST0MoR0xi
b29sZWFuLCBnbElzRnJhbWVidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGds
SXNQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0MoR0xib29sZWFuLCBnbElzUmVuZGVyYnVmZmVy
LCAoR0x1aW50KSkKK0dMX1BST0MoR0xib29sZWFuLCBnbElzU2hhZGVyLCAoR0x1aW50KSkKK0dM
X1BST0Modm9pZCwgZ2xMaW5rUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZSwgKEdMZW51bSwgR0xlbnVtLCBHTHNpemVpLCBHTHNpemVpKSkKK0dM
X1BST0Modm9pZCwgZ2xTYW1wbGVDb3ZlcmFnZSwgKEdMY2xhbXBmLCBHTGJvb2xlYW4pKQorR0xf
UFJPQyh2b2lkLCBnbFNoYWRlclNvdXJjZSwgKEdMdWludCwgR0xzaXplaSwgY29uc3QgY2hhcioq
LCBjb25zdCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUsIChH
TGVudW0sIEdMZW51bSwgR0xpbnQsIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsU3RlbmNpbE1h
c2tTZXBhcmF0ZSwgKEdMZW51bSwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsT3BT
ZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMZW51bSkpCitHTF9QUk9DKHZvaWQs
IGdsVW5pZm9ybTFmLCAoR0xpbnQsIEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0x
ZnYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVu
aWZvcm0xaSwgKEdMaW50LCBHTGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTFpdiwgKEdM
aW50LCBHTHNpemVpLCBjb25zdCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0yZiwg
KEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMmZ2LCAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3Jt
MmksIChHTGludCwgR0xpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtMml2LCAo
R0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNm
LCAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVu
aWZvcm0zZnYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lk
LCBnbFVuaWZvcm0zaSwgKEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50KSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtM2l2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMaW50KikpCitHTF9QUk9D
KHZvaWQsIGdsVW5pZm9ybTRmLCAoR0xpbnQsIEdMZmxvYXQsIEdMZmxvYXQsIEdMZmxvYXQsIEdM
ZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00ZnYsIChHTGludCwgR0xzaXplaSwgY29u
c3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00aSwgKEdMaW50LCBHTGludCwg
R0xpbnQsIEdMaW50LCBHTGludCkpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTRpdiwgKEdMaW50
LCBHTHNpemVpLCBjb25zdCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgy
ZnYsIChHTGludCwgR0xzaXplaSwgR0xib29sZWFuLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9D
KHZvaWQsIGdsVW5pZm9ybU1hdHJpeDNmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNv
bnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtTWF0cml4NGZ2LCAoR0xpbnQs
IEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFVz
ZVByb2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFZhbGlkYXRlUHJvZ3JhbSwgKEdM
dWludCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliMWYsIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmdiwgKEdMdWludCwgY29uc3Qg
R0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjJmLCAoR0x1aW50LCBjb25z
dCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIy
ZnYsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRy
aWIzZiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9h
dCkpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliM2Z2LCAoR0x1aW50LCBjb25zdCBHTGZs
b2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVmVydGV4QXR0cmliNGYsIChHTHVpbnQsIGNvbnN0IEdM
ZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQpKQorR0xf
UFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjRmdiwgKEdMdWludCwgY29uc3QgR0xmbG9hdCopKQor
R0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYlBvaW50ZXIsIChHTHVpbnQsIEdMaW50LCBHTGVu
dW0sIEdMYm9vbGVhbiwgR0xzaXplaSwgY29uc3QgR0x2b2lkKikpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTFF0LmgKaW5kZXggZjAyMDQyNi4uMDk4ZWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMUXQuaApAQCAtMiw0MSArMiw0MiBAQCBHTF9QUk9DKHZvaWQsIGdsQWN0aXZlVGV4dHVy
ZSwgKEdMZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsQXR0YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVp
bnQpKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgKEdMdWludCwgR0x1aW50
LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsQmluZEJ1ZmZlciwgKEdMZW51bSwgR0x1
aW50KSkKLUdMX1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIChHTGVudW0sIEdMdWludCkp
Ci1HTF9QUk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkKK0dM
X1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXJFWFQsIChHTGVudW0sIEdMdWludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1ZmZlckVYVCwgKEdMZW51bSwgR0x1aW50KSkKIEdMX1BS
T0Modm9pZCwgZ2xCbGVuZENvbG9yLCAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xj
bGFtcGYpKQogR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRpb24sIChHTGVudW0pKQogR0xfUFJP
Qyh2b2lkLCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtKSkKIEdMX1BS
T0Modm9pZCwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RS
R0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKSkKK0dMX1BST0Modm9pZCwgZ2xC
bGl0RnJhbWVidWZmZXJFWFQsIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCwgR0xpbnQsIEdMYml0ZmllbGQsIEdMZW51bSkpOwogR0xfUFJPQyh2b2lkLCBn
bEJ1ZmZlckRhdGEsIChHTGVudW0sIEdMc2l6ZWlwdHIsIGNvbnN0IEdMdm9pZCosIEdMZW51bSkp
CiBHTF9QUk9DKHZvaWQsIGdsQnVmZmVyU3ViRGF0YSwgKEdMZW51bSwgR0xpbnRwdHIsIEdMc2l6
ZWlwdHIsIGNvbnN0IEdMdm9pZCopKQotR0xfUFJPQyhHTGVudW0sIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cywgKEdMZW51bSkpCitHTF9QUk9DKEdMZW51bSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzRVhULCAoR0xlbnVtKSkKIEdMX1BST0Modm9pZCwgZ2xDb21waWxlU2hhZGVyLCAoR0x1aW50
KSkKIEdMX1BST0MoR0x1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQogR0xfUFJPQyhHTHVpbnQs
IGdsQ3JlYXRlU2hhZGVyLCAoR0xlbnVtKSkKIEdMX1BST0Modm9pZCwgZ2xEZWxldGVCdWZmZXJz
LCAoR0xzaXplaSwgY29uc3QgR0x1aW50KikpCi1HTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVi
dWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnNFWFQsIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopKQogR0xfUFJPQyh2
b2lkLCBnbERlbGV0ZVByb2dyYW0sIChHTHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVJl
bmRlcmJ1ZmZlcnMsIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBn
bERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQsIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopKQogR0xf
UFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwgKEdMdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsRGV0
YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbERpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheSwgKEdMdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXksIChHTHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVm
ZmVyLCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRCwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xp
bnQpKQorR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhULCAoR0xlbnVt
LCBHTGVudW0sIEdMZW51bSwgR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyREVYVCwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpKQogR0xf
UFJPQyh2b2lkLCBnbEdlbkJ1ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKLUdMX1BST0Modm9p
ZCwgZ2xHZW5lcmF0ZU1pcG1hcCwgKEdMZW51bSB0YXJnZXQpKQotR0xfUFJPQyh2b2lkLCBnbEdl
bkZyYW1lYnVmZmVycywgKEdMc2l6ZWksIEdMdWludCopKQotR0xfUFJPQyh2b2lkLCBnbEdlblJl
bmRlcmJ1ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5lcmF0
ZU1pcG1hcEVYVCwgKEdMZW51bSB0YXJnZXQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVm
ZmVyc0VYVCwgKEdMc2l6ZWksIEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdlblJlbmRlcmJ1
ZmZlcnNFWFQsIChHTHNpemVpLCBHTHVpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRBY3RpdmVB
dHRyaWIsIChHTHVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVt
KiwgR0xjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdMdWludCwg
R0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKSkKIEdM
X1BST0Modm9pZCwgZ2xHZXRBdHRhY2hlZFNoYWRlcnMsIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6
ZWkqLCBHTHVpbnQqKSkKIEdMX1BST0MoR0xpbnQsIGdsR2V0QXR0cmliTG9jYXRpb24sIChHTHVp
bnQsIGNvbnN0IGNoYXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiwg
KEdMZW51bSwgR0xlbnVtLCBHTGludCopKQotR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2LCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBh
cmFtcykpCitHTF9QUk9DKHZvaWQsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZFWFQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGludCogcGFyYW1zKSkKIEdMX1BST0Mo
dm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNo
YXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtaXYsIChHTHVpbnQsIEdMZW51bSwgR0xp
bnQqKSkKLUdMX1BST0Modm9pZCwgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgKEdMZW51
bSwgR0xlbnVtLCBHTGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFt
ZXRlcml2RVhULCAoR0xlbnVtLCBHTGVudW0sIEdMaW50KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0
U2hhZGVySW5mb0xvZywgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNoYXIqKSkKIEdMX1BS
T0Modm9pZCwgZ2xHZXRTaGFkZXJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQogR0xfUFJP
Qyh2b2lkLCBnbEdldFNoYWRlclNvdXJjZSwgKEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIGNo
YXIqKSkKQEAgLTQ3LDEyICs0OCwxMyBAQCBHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmli
ZnYsIChHTHVpbnQsIEdMZW51bSwgR0xmbG9hdCopKQogR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRl
eEF0dHJpYml2LCAoR0x1aW50LCBHTGVudW0sIEdMaW50KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0
VmVydGV4QXR0cmliUG9pbnRlcnYsIChHTHVpbnQsIEdMZW51bSwgR0x2b2lkKiopKQogR0xfUFJP
QyhHTGJvb2xlYW4sIGdsSXNCdWZmZXIsIChHTHVpbnQpKQotR0xfUFJPQyhHTGJvb2xlYW4sIGds
SXNGcmFtZWJ1ZmZlciwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc0ZyYW1lYnVm
ZmVyRVhULCAoR0x1aW50KSkKIEdMX1BST0MoR0xib29sZWFuLCBnbElzUHJvZ3JhbSwgKEdMdWlu
dCkpCi1HTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1JlbmRlcmJ1ZmZlciwgKEdMdWludCkpCitHTF9Q
Uk9DKEdMYm9vbGVhbiwgZ2xJc1JlbmRlcmJ1ZmZlckVYVCwgKEdMdWludCkpCiBHTF9QUk9DKEdM
Ym9vbGVhbiwgZ2xJc1NoYWRlciwgKEdMdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsTGlua1Byb2dy
YW0sIChHTHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIChHTGVu
dW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSkpCitHTF9QUk9DKHZvaWQsIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhULChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgR0xzaXpl
aSwgR0xzaXplaSkpOworR0xfUFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQsIChH
TGVudW0sIEdMZW51bSwgR0xzaXplaSwgR0xzaXplaSkpCiBHTF9QUk9DKHZvaWQsIGdsU2FtcGxl
Q292ZXJhZ2UsIChHTGNsYW1wZiwgR0xib29sZWFuKSkKIEdMX1BST0Modm9pZCwgZ2xTaGFkZXJT
b3VyY2UsIChHTHVpbnQsIEdMc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQqKSkKIEdM
X1BST0Modm9pZCwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdMaW50
LCBHTHVpbnQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA2NjNhNzViLi42MDc5MjgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFFTdHls
ZU9wdGlvbkdyYXBoaWNzSXRlbT4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8UURlYnVnPgogCiAjaWYgRU5BQkxF
KFdFQkdMKQogCkBAIC01NywxMSArNTgsNiBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpH
cmFwaGljc0NvbnRleHQzREludGVybmFsKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LAogICAg
ICwgbV9ob3N0V2luZG93KGhvc3RXaW5kb3cpCiAgICAgLCBtX2dsV2lkZ2V0KDApCiAgICAgLCBt
X3ZpZXdwb3J0R0xXaWRnZXQoMCkKLSAgICAsIG1fdGV4dHVyZSgwKQotICAgICwgbV9jYW52YXNG
Ym8oMCkKLSAgICAsIG1fY3VycmVudEZibygwKQotICAgICwgbV9kZXB0aEJ1ZmZlcigwKQotICAg
ICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCiAgICAgLCBtX3Byb2NzQXJlVmFsaWQodHJ1ZSkK
IHsKICAgICBtX3ZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CkBAIC0x
MDMsMTMgKzk5LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBh
aW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiB7CiAgICAgUV9VTlVTRUQo
d2lkZ2V0KTsKIAorICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKKwogICAgIFFSZWN0
RiByZWN0ID0gb3B0aW9uID8gb3B0aW9uLT5yZWN0IDogYm91bmRpbmdSZWN0KCk7CiAKICAgICAv
LyBVc2UgZGlyZWN0IHRleHR1cmUgbWFwcGluZyBpZiBXZWJHTCBjYW52YXMgaGFzIGEgc2hhcmVk
IE9wZW5HTCBjb250ZXh0CiAgICAgLy8gd2l0aCBicm93c2VycyBPcGVuR0wgY29udGV4dC4KICAg
ICBRR0xXaWRnZXQqIHZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CiAg
ICAgaWYgKHZpZXdwb3J0R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBtX3ZpZXdwb3J0
R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBwYWludGVyLT5kZXZpY2UoKSkgewotICAg
ICAgICB2aWV3cG9ydEdMV2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBtX3RleHR1cmUpOworICAg
ICAgICB2aWV3cG9ydEdMV2lkZ2V0LT5kcmF3VGV4dHVyZShyZWN0LCBtX2NvbnRleHQtPm1fY29t
cG9zaXRvclRleHR1cmUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTgsMTAgKzEx
NiwxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBw
YWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50MzIqIGltYWdlUGl4ZWxz
ID0gcmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygpKTsKIAog
ICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9jb250ZXh0LT5nbEJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY2FudmFzRmJvKTsKKyNp
ZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyNl
bHNlCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOworI2VuZGlmCiAgICAgZ2xSZWFkUGl4
ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCksIEdy
YXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5TSUdORURfQllURSwg
aW1hZ2VQaXhlbHMpOwogCi0gICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY3VycmVudEZibyk7CisjaWYgZGVmaW5lZChRVF9P
UEVOR0xfRVNfMikKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKKyNlbHNlCisgICAg
bV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOworI2VuZGlmCiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMg
dXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20gbGVm
dAogICAgIC8vIFdlIG5lZWQgUkdCMzIgb3IgQVJHQjMyX1BNLCB3aXRoIHRoZSBvcmlnaW4gYXQg
dGhlIHRvcCBsZWZ0LgpAQCAtMTgxLDggKzE4NywyMyBAQCBQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRy
aQogfQogCiBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250
ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kb3cqIGhvc3RXaW5kb3csIGJvb2wpCi0g
ICAgOiBtX2F0dHJzKGF0dHJzKQorICAgIDogbV9jdXJyZW50V2lkdGgoMCkKKyAgICAsIG1fY3Vy
cmVudEhlaWdodCgwKQorICAgICwgbV9hdHRycyhhdHRycykKKyAgICAsIG1fdGV4dHVyZSgwKQor
ICAgICwgbV9jb21wb3NpdG9yVGV4dHVyZSgwKQorICAgICwgbV9mYm8oMCkKKyAgICAsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKDApCisgICAgLCBtX2xheWVyQ29tcG9zaXRlZChmYWxzZSkKKyAgICAs
IG1faW50ZXJuYWxDb2xvckZvcm1hdCgwKQorICAgICwgbV9ib3VuZEZCTygwKQorICAgICwgbV9h
Y3RpdmVUZXh0dXJlKDApCisgICAgLCBtX2JvdW5kVGV4dHVyZTAoMCkKKyAgICAsIG1fbXVsdGlz
YW1wbGVGQk8oMCkKKyAgICAsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIoMCkKKyAg
ICAsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcigwKQogICAgICwgbV9pbnRlcm5hbChuZXcgR3Jh
cGhpY3NDb250ZXh0M0RJbnRlcm5hbCh0aGlzLCBob3N0V2luZG93KSkKKwogewogI2lmIGRlZmlu
ZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgbV9hdHRycy5zdGVuY2lsID0gZmFsc2U7CkBAIC0yMDMs
NyArMjI0LDExIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGlj
c0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAjZWxzZQogI2RlZmluZSBHTF9Q
Uk9DKFJldHVyblZhbHVlLCBQcm9jLCBQYXJhbXMpIFByb2MgPSByZWludGVycHJldF9jYXN0PEdy
YXBoaWNzQ29udGV4dDNEOjpQcm9jIyNUeXBlPihtX2ludGVybmFsLT5nZXRQcm9jQWRkcmVzcygj
UHJvYykpOwogI2VuZGlmCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTMlF0LmgiCisjZWxzZQogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNET3BlbkdMUXQuaCIKKyNlbmRpZgogI3VuZGVmIEdMX1BST0MKIAogICAgIGlmICgh
bV9pbnRlcm5hbC0+bV9wcm9jc0FyZVZhbGlkKSB7CkBAIC0yMTMsMTAgKzIzOCwyMiBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIH0KIAogICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0
aGUgY2FudmFzIEZCTy4KLSAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9p
bnRlcm5hbC0+bV9jYW52YXNGYm8pOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZmJvKTsKKyNlbHNlCisgICAgZ2xH
ZW5GcmFtZWJ1ZmZlcnNFWFQoLyogY291bnQgKi8gMSwgJm1fZmJvKTsKKyNlbmRpZgorCisgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX3RleHR1cmUpOworICAgIGdsVGV4UGFyYW1ldGVyZihH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
TUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0
ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBh
cmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFX1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAg
IGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9ULCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURH
RSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCk7
CiAKLSAgICBnbEdlblRleHR1cmVzKDEsICZtX2ludGVybmFsLT5tX3RleHR1cmUpOwotICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1f
dGV4dHVyZSk7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3Np
dG9yVGV4dHVyZSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TElORUFSKTsKICAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpMSU5FQVIpOwogICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFw
aGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CkBAIC0yMjQsMTEgKzI2MSwxOSBAQCBHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDApOwogCiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgIGdsR2Vu
UmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7
CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJz
KC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjZWxzZQorICAgICAgICBn
bEdlblJlbmRlcmJ1ZmZlcnNFWFQoLyogY291bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVy
KTsKKyNlbmRpZgogCiAgICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5pdGlhbCBjbGVh
ciBjb2xvciB0byBibGFjay4KLSAgICBtX2ludGVybmFsLT5tX2N1cnJlbnRGYm8gPSBtX2ludGVy
bmFsLT5tX2NhbnZhc0ZibzsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQz
RDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fY2FudmFzRmJvKTsKKyAgICBtX2JvdW5kRkJP
ID0gbV9mYm87CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyNlbHNlCisgICAg
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zi
byk7CisjZW5kaWYKICAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIApA
QCAtMjQzLDcgKzI4OCw3IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QgR3JhcGhpY3NDb250
ZXh0M0Q6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKQogCiBQbGF0Zm9ybTNET2JqZWN0IEdy
YXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybVRleHR1cmUoKSBjb25zdAogewotICAgIHJldHVybiBt
X2ludGVybmFsLT5tX3RleHR1cmU7CisgICAgcmV0dXJuIG1fY29tcG9zaXRvclRleHR1cmU7CiB9
CiAKIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUxheWVyKCkgY29u
c3QKQEAgLTI2NSw2ICszMTAsMzQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5k
ZXJpbmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBtX2lu
dGVybmFsLT5wYWludChwYWludGVyLCAwLCAwKTsKIH0KIAorYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0MzRGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8dWludDhfdD4mIG91dHB1dFZlY3RvcikKK3sK
KyAgICBVTlVTRURfUEFSQU0oaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpOworICAgIGlmICgh
aW1hZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBRUGl4bWFwKiBuYXRpdmVQaXhtYXAg
PSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKKyAgICBpZiAoIW5hdGl2ZVBp
eG1hcCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgQWxwaGFPcCBuZWVkZWRBbHBoYU9w
ID0gQWxwaGFEb05vdGhpbmc7CisgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQorICAgICAgICAv
LyBGSVhNRTogbXVzdCBmZXRjaCB0aGUgaW1hZ2UgZGF0YSBiZWZvcmUgdGhlIHByZW11bHRpcGxp
Y2F0aW9uIHN0ZXAKKyAgICAgICAgbmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Vbm11bHRpcGx5Owor
ICAgIFFJbWFnZSBuYXRpdmVJbWFnZSA9IG5hdGl2ZVBpeG1hcC0+dG9JbWFnZSgpLmNvbnZlcnRU
b0Zvcm1hdChRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIG91dHB1dFZlY3Rvci5yZXNpemUo
bmF0aXZlSW1hZ2UuYnl0ZUNvdW50KCkpOworICAgIHJldHVybiBwYWNrUGl4ZWxzKG5hdGl2ZUlt
YWdlLnJnYlN3YXBwZWQoKS5iaXRzKCksIFNvdXJjZUZvcm1hdFJHQkE4LCBpbWFnZS0+d2lkdGgo
KSwgaW1hZ2UtPmhlaWdodCgpLCAwLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgdHlw
ZSwgbmVlZGVkQWxwaGFPcCwgb3V0cHV0VmVjdG9yLmRhdGEoKSk7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9z
dENhbGxiYWNrPikKK3sKK30KKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogUGFzc1JlZlB0
cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0lt
YWdlRGF0YSgpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQg
Zm9yIHByb3BlciBub24tcHJlbXVsdGlwbGllZC1hbHBoYQpAQCAtMjgzLDcgKzM1Niw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAg
IG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAKICAgICAvLyBDcmVhdGUg
Y29sb3IgYnVmZmVyCi0gICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgbV9pbnRlcm5hbC0+bV90ZXh0dXJlKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICBpZiAobV9h
dHRycy5hbHBoYSkKICAgICAgICAgZ2xUZXhJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAvKiBsZXZlbCAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgd2lkdGgsIGhl
aWdodCwgLyogYm9yZGVyICovIDAsIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0Nv
bnRleHQzRDo6VU5TSUdORURfQllURSwgLyogZGF0YSAqLyAwKTsKICAgICBlbHNlCkBAIC0yOTIs
NyArMzY1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCiAKICAgICBpZiAobV9hdHRycy5kZXB0aCkgewogICAgICAgICAvLyBDcmVhdGUg
ZGVwdGggYW5kIHN0ZW5jaWwgYnVmZmVycy4KLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1fZGVwdGhCdWZmZXIp
OworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJV
RkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIp
CiAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHcmFwaGljc0NvbnRleHQzRDo6UkVOREVS
QlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09NUE9ORU5UMTYsIHdpZHRoLCBoZWln
aHQpOwogI2Vsc2UKQEAgLTMwNSwxMyArMzc4LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIH0KIAogICAgIC8vIENvbnN0cnVj
dCBjYW52YXMgRkJPLgotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9pbnRlcm5hbC0+bV9jYW52YXNGYm8pOwotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2lu
dGVybmFsLT5tX3RleHR1cmUsIDApOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1Jf
QVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2NvbXBvc2l0b3JU
ZXh0dXJlLCAwKTsKICAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVS
LCBtX2ludGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNE
OjpERVBUSF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcik7CiAjaWYgIWRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgaWYg
KG1fYXR0cnMuc3RlbmNpbCkKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FU
VEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1faW50ZXJuYWwtPm1f
ZGVwdGhCdWZmZXIpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNI
TUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOwogI2VuZGlmCiAKICAgICBHTGVudW0gc3RhdHVzID0gZ2xDaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUik7CkBAIC0zNzYsOCArNDQ5LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QgYnVmZmVyKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbV9p
bnRlcm5hbC0+bV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKLSAgICBtX2ludGVybmFsLT5tX2N1
cnJlbnRGYm8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ludGVybmFsLT5tX2NhbnZhc0ZibzsKLSAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1faW50ZXJuYWwtPm1fY3VycmVudEZibyk7Cisg
ICAgbV9ib3VuZEZCTyA9IGJ1ZmZlciA/IGJ1ZmZlciA6IG1fZmJvOworICAgIGdsQmluZEZyYW1l
YnVmZmVyKHRhcmdldCwgbV9ib3VuZEZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHJlbmRl
cmJ1ZmZlcikKQEAgLTY4NywxMCArNzYwLDEwIEBAIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCiAKIEdDM0RlbnVt
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFcnJvcigpCiB7Ci0gICAgaWYgKG1faW50ZXJuYWwtPm1f
c3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsKLSAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVu
dW0+OjppdGVyYXRvciBpdGVyID0gbV9pbnRlcm5hbC0+bV9zeW50aGV0aWNFcnJvcnMuYmVnaW4o
KTsKKyAgICBpZiAobV9zeW50aGV0aWNFcnJvcnMuc2l6ZSgpID4gMCkgeworICAgICAgICBMaXN0
SGFzaFNldDxHQzNEZW51bT46Oml0ZXJhdG9yIGl0ZXIgPSBtX3N5bnRoZXRpY0Vycm9ycy5iZWdp
bigpOwogICAgICAgICBHQzNEZW51bSBlcnIgPSAqaXRlcjsKLSAgICAgICAgbV9pbnRlcm5hbC0+
bV9zeW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOworICAgICAgICBtX3N5bnRoZXRpY0Vycm9y
cy5yZW1vdmUoaXRlcik7CiAgICAgICAgIHJldHVybiBlcnI7CiAgICAgfQogCkBAIC0xMzYyLDU5
ICsxNDM1LDMyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRlbGV0ZVRleHR1cmUoUGxhdGZv
cm0zRE9iamVjdCB0ZXh0dXJlKQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzeW50aGVzaXpl
R0xFcnJvcihHQzNEZW51bSBlcnJvcikKIHsKLSAgICBtX2ludGVybmFsLT5tX3N5bnRoZXRpY0Vy
cm9ycy5hZGQoZXJyb3IpOworICAgIG1fc3ludGhldGljRXJyb3JzLmFkZChlcnJvcik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtMYXllckNvbXBvc2l0ZWQoKQogewotICAgIG1f
aW50ZXJuYWwtPm1fbGF5ZXJDb21wb3NpdGVkID0gdHJ1ZTsKKyAgICBtX2xheWVyQ29tcG9zaXRl
ZCA9IHRydWU7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcmtDb250ZXh0Q2hhbmdl
ZCgpCiB7CiAgICAgLy8gRklYTUU6IEFueSBhY2NlbGVyYXRlZCBjb21wb3NpdG9yIG5lZWRzIHRv
IGJlIHRvbGQgdG8gcmUtcmVhZCBmcm9tIGhlcmUuCi0gICAgbV9pbnRlcm5hbC0+bV9sYXllckNv
bXBvc2l0ZWQgPSBmYWxzZTsKKyAgICBtX2xheWVyQ29tcG9zaXRlZCA9IGZhbHNlOwogfQogCiBi
b29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZDsKKyAgICByZXR1cm4gbV9sYXllckNv
bXBvc2l0ZWQ7CiB9CiAKIEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVu
c2lvbnMoKQogewotICAgIGlmICghbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zKQotICAgICAgICBt
X2ludGVybmFsLT5tX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOwot
ICAgIHJldHVybiBtX2ludGVybmFsLT5tX2V4dGVuc2lvbnMuZ2V0KCk7Ci19Ci0KLWJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRw
dXRWZWN0b3IpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KTsKLSAgICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUVBpeG1hcCog
bmF0aXZlUGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAg
aWYgKCFuYXRpdmVQaXhtYXApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEFscGhhT3Ag
bmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOwotICAgIGlmICghcHJlbXVsdGlwbHlBbHBo
YSkKLSAgICAgICAgLy8gRklYTUU6IG11c3QgZmV0Y2ggdGhlIGltYWdlIGRhdGEgYmVmb3JlIHRo
ZSBwcmVtdWx0aXBsaWNhdGlvbiBzdGVwCi0gICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKLSAgICBRSW1hZ2UgbmF0aXZlSW1hZ2UgPSBuYXRpdmVQaXhtYXAtPnRvSW1h
Z2UoKS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKLSAgICBvdXRwdXRW
ZWN0b3IucmVzaXplKG5hdGl2ZUltYWdlLmJ5dGVDb3VudCgpKTsKLSAgICByZXR1cm4gcGFja1Bp
eGVscyhuYXRpdmVJbWFnZS5yZ2JTd2FwcGVkKCkuYml0cygpLCBTb3VyY2VGb3JtYXRSR0JBOCwg
aW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIG5lZWRlZEFscGhhT3AsIG91dHB1dFZlY3Rvci5kYXRhKCkpOwotfQot
Ci12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25Q
dHI8Q29udGV4dExvc3RDYWxsYmFjaz4pCi17CisgICAgaWYgKCFtX2V4dGVuc2lvbnMpCisgICAg
ICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7CisgICAgcmV0
dXJuIG1fZXh0ZW5zaW9ucy5nZXQoKTsKIH0KKyNlbmRpZgogCiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87364</attachid>
            <date>2011-03-29 10:47:12 -0700</date>
            <delta_ts>2011-03-30 02:09:37 -0700</delta_ts>
            <desc>clean up and compilation fix</desc>
            <filename>57261.diff</filename>
            <type>text/plain</type>
            <size>74725</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggYWQ4NThiZS4uYWU4MDhhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTMz
OTAsNiArMzM5MCwxMyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkg
ewogfQogCiBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9MSkgeworICAgIGNvbnRhaW5z
KERFRklORVMsIFFUX09QRU5HTF9FU18yKSB7CisgICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUzJRdC5oCisgICAgfSBlbHNlIHsK
KyAgICAgICAgSEVBREVSUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
RE9wZW5HTFF0LmgKKyAgICAgICAgU09VUkNFUyArPSBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisgICAgfQorCiAgICAgSEVBREVSUyArPSBcCiAg
ICAgICAgIGh0bWwvY2FudmFzL0NhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggXAogICAgICAgICBo
dG1sL2NhbnZhcy9XZWJHTE9iamVjdC5oIFwKQEAgLTM0MTEsMTcgKzM0MTgsMTggQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xV
bmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlP
YmplY3RPRVMuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmggXAor
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0RyYXdpbmdCdWZmZXIuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQz
REludGVybmFsUXQuaCBcCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29u
dGV4dDNET3BlbkdMUXQuaAogCiAgICAgIXY4IHsKICAgICAgICAgU09VUkNFUyArPSBcCiAgICAg
ICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKICAg
ICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMvQ2FudmFzQ29udGV4
dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIFwK
QEAgLTM0NDIsNiArMzQ1MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7
CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3BwIFwKICAgICAgICAgaHRt
bC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdp
bmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L3F0L0RyYXdpbmdC
dWZmZXJRdC5jcHAgXApAQCAtMzQ0OSw2ICszNDU4LDEwMiBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCR0w9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFF0LmNwcAogCiAgICAgICAgIElOQ0xVREVQQVRIICs9ICQkUFdEL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdQorCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtdmFyaWFibGUK
KyAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLW1pc3Npbmctbm9yZXR1cm4KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXVudXNlZC1mdW5jdGlvbgorICAgIFFNQUtFX0NYWEZMQUdTICs9IC1X
bm8tcGFyZW50aGVzZXMKKyAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLXR5cGUtbGltaXRzCisK
KyAgICBERUZJTkVTICs9IFlZRU5BQkxFX05MUz0wIFlZTFRZUEVfSVNfVFJJVklBTD0wCisKKyAg
ICBBTkdMRV9ESVIgPSAkJHJlcGxhY2UoUFdELCAiV2ViQ29yZSIsICJUaGlyZFBhcnR5L0FOR0xF
IikKKworICAgIElOQ0xVREVQQVRIICs9ICQkQU5HTEVfRElSL3NyYyAkJEFOR0xFX0RJUi9pbmNs
dWRlCisKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVy
L0Jhc2VUeXBlcy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvbW1vbi5o
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvbnN0YW50VW5pb24uaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9kZWJ1Zy5oIFwKKyAgICAgICAgJCRBTkdM
RV9ESVIvc3JjL2NvbXBpbGVyL0V4dGVuc2lvbkJlaGF2aW9yLmggXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvZ2xzbGFuZy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL2dsc2xhbmdfdGFiLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
SW5mb1NpbmsuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXpl
RGxsLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZUdsb2Jh
bHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplLmggXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2ludGVybWVkaWF0ZS5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2xvY2FsaW50ZXJtZWRpYXRlLmggXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvTU1hcC5oIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL29zaW5jbHVkZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL091dHB1dEdMU0wuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9P
dXRwdXRITFNMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUGFyc2VIZWxw
ZXIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Qb29sQWxsb2MuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvYXRvbS5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jb21waWxlLmggXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NwcC5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9tZW1vcnkuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvcGFyc2VyLmggXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3ByZXByb2Nlc3Mu
aCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5l
ci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zbGds
b2JhbHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
c3ltYm9scy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci90b2tlbnMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9RdWFsaWZpZXJB
bGl2ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1JlbW92ZVRyZWUuaCBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TaEhhbmRsZS5oIFwKKyAgICAgICAgJCRBTkdM
RV9ESVIvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9UcmFuc2xhdG9ySExTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1R5cGVzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVW5mb2xkU2Vs
ZWN0LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvdXRpbC5oIFwKKyAgICAg
ICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uaCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5oIFwKKworICAgIFNPVVJDRVMgKz0g
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvZGVHZW5ITFNMLmNwcCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db21waWxlci5jcHAgXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvZGVidWcuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL2dsc2xhbmdfbGV4LmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9nbHNsYW5nX3RhYi5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5m
b1NpbmsuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUu
Y3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVEbGwuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0ludGVybWVkaWF0ZS5jcHAgXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvaW50ZXJtT3V0LmNwcCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRlcm1UcmF2ZXJzZS5jcHAgXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3BwIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL091dHB1dEdMU0wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL3BhcnNlQ29uc3QuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Q
b29sQWxsb2MuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9hdG9tLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL2NwcC5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9jcHBzdHJ1Y3QuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvbWVtb3J5LmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL3NjYW5uZXIuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3Ivc3ltYm9scy5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci90b2tlbnMuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9R
dWFsaWZpZXJBbGl2ZS5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUmVt
b3ZlVHJlZS5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2VhcmNoU3lt
Ym9sLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TaGFkZXJMYW5nLmNw
cCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAgXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuY3BwIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9VbmZvbGRTZWxlY3QuY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0aWwuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIv
c3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuY3BwIFwKIH0KIAogd2luMzI6IXdpbjMyLWcrKyo6Y29u
dGFpbnMoUU1BS0VfSE9TVC5hcmNoLCB4ODZfNjQpOnsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCmluZGV4IDdiZGRiZjQuLmM4
NzVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xF
V2ViS2l0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5H
TEVXZWJLaXRCcmlkZ2UuaApAQCAtMjYsNyArMjYsMTEgQEAKICNpZm5kZWYgQU5HTEVXZWJLaXRC
cmlkZ2VfaAogI2RlZmluZSBBTkdMRVdlYktpdEJyaWRnZV9oCiAKKyNpZiBQTEFURk9STShRVCkK
KyNpbmNsdWRlICJBTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2Vsc2UKICNp
bmNsdWRlICJBTkdMRS9TaGFkZXJMYW5nLmgiCisjZW5kaWYKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggMTE3
MDc3Yy4uYjYxMThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIENBTGF5ZXI7
CiBjbGFzcyBXZWJHTExheWVyOwogI2VuZGlmCiAjZWxpZiBQTEFURk9STShRVCkKKyNpbmNsdWRl
ICJBTkdMRVdlYktpdEJyaWRnZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWxRdC5oIgogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRUGFpbnRlcjsKQEAgLTQ3Nyw3ICs0
NzgsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZURy
YXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOwogICAgIAotI2lmIFBMQVRG
T1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShDSFJPTUlVTSkgfHwgUExBVEZPUk0oUVQpCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5n
IG9uLCBibGl0IGZyb20gbXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBw
cmVwYXJlVGV4dHVyZSgpOwogI2VuZGlmCkBAIC04NjAsNyArODYxLDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICBBbHBoYU9wIGFscGhhT3AsCiAgICAgICAgICAgICAgICAgICAgIHZv
aWQqIGRlc3RpbmF0aW9uRGF0YSk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShRVCkKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidz
IHJlcXVlc3RlZCBjb250ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCiAgICAgLy8gaW4gcGFydGlj
dWxhciBzdGVuY2lsIGFuZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IK
ICAgICAvLyBjb3VsZCBub3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9m
IHRoZSBPcGVuR0wKQEAgLTg3NCw3ICs4NzUsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgbV9jdXJy
ZW50V2lkdGgsIG1fY3VycmVudEhlaWdodDsKIAotI2lmIFBMQVRGT1JNKE1BQykKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKFFUKQogICAgIHR5cGVkZWYgc3RydWN0IHsKICAgICAgICAg
U3RyaW5nIHNvdXJjZTsKICAgICAgICAgU3RyaW5nIGxvZzsKQEAgLTg4MiwxNiArODgzLDIyIEBA
IHB1YmxpYzoKICAgICB9IFNoYWRlclNvdXJjZUVudHJ5OwogICAgIEhhc2hNYXA8UGxhdGZvcm0z
RE9iamVjdCwgU2hhZGVyU291cmNlRW50cnk+IG1fc2hhZGVyU291cmNlTWFwOwogCi0gICAgZnJp
ZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKICAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2Nv
bXBpbGVyOwotCisjaWYgUExBVEZPUk0oUVQpCisgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMz
RFF0OworICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9leHRlbnNpb25zOworI2Vsc2UKKyAg
ICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwogICAgIE93blB0cjxFeHRlbnNpb25z
M0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKKyNlbmRpZgogCiAgICAgQXR0cmlidXRlcyBtX2F0dHJz
OwogICAgIFZlY3RvcjxWZWN0b3I8ZmxvYXQ+ID4gbV92ZXJ0ZXhBcnJheTsKIAorI2lmIFBMQVRG
T1JNKE1BQykKICAgICBDR0xDb250ZXh0T2JqIG1fY29udGV4dE9iajsKICAgICBSZXRhaW5QdHI8
V2ViR0xMYXllcj4gbV93ZWJHTExheWVyOworI2VuZGlmCiAgICAgR0MzRHVpbnQgbV90ZXh0dXJl
LCBtX2NvbXBvc2l0b3JUZXh0dXJlOwogICAgIEdDM0R1aW50IG1fZmJvOwogICAgIEdDM0R1aW50
IG1fZGVwdGhTdGVuY2lsQnVmZmVyOwpAQCAtOTEzLDExICs5MjAsMTQgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShRVCkKLSAgICBBdHRyaWJ1dGVzIG1fYXR0cnM7CiAjZGVmaW5l
IEdMX1BST0MoUmV0dXJuVmFsdWUsIFByb2MsIFBhcmFtcykgXAogICAgIHR5cGVkZWYgUmV0dXJu
VmFsdWUgKEFQSUVOVFJZKiBQcm9jIyNUeXBlKSBQYXJhbXM7IFwKICAgICBQcm9jIyNUeXBlIFBy
b2M7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRE9wZW5HTEVTMlF0LmgiCisjZWxzZQogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNET3Bl
bkdMUXQuaCIKKyNlbmRpZgogI3VuZGVmIEdMX1BST0MKICNlbmRpZgogICAgIC8vIEZJWE1FOiBp
ZGVhbGx5IHRoaXMgd291bGQgYmUgdXNlZCBvbiBhbGwgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggYzEyNWU5NC4uYWY5YjFhYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1
ZGUgIkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
IkV4dGVuc2lvbnMzRFF0LmgiCisjZWxzZQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTC5o
IgorI2VuZGlmCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKQEAgLTQzLDYgKzQ3LDEw
IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVaW50OEFycmF5Lmgi
CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2VuZGlmCisKICNpZiBQ
TEFURk9STShNQUMpCiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjZW5kaWYKQEAgLTgyLDE1ICs5
MCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNp
Z25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaQogCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZC
TyA9IGZhbHNlOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJP
KTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VY
VCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKDAsIDAsIG1fY3VycmVu
dFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRI
ZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJP
KTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQs
IG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50V2lk
dGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdo
dCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgICAgIG11c3RSZXN0b3Jl
RkJPID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX2Zi
bykgewogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwotICAgICAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAg
ICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0xMDgsOSArMTE2LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIgKnBpeGVscywgaW50IHBpeGVs
c1NpCiAgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdu
bWVudCk7CiAKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKIH0KIAorI2lm
IFBMQVRGT1JNKE1BQykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVz
dWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSFRN
TENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygpOwpAQCAtMTM3LDYgKzE0
Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiAgICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMu
Z2V0KCksIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAg
ICBjYW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5jb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KKyNlbmRpZgogCiBQYXNzUmVmUHRyPEltYWdlRGF0
YT4gR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkK
IHsKQEAgLTE2MCw4ICsxNzAsMTMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29u
dGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworI2lmIFBMQVRG
T1JNKFFUKQorICAgIGlmICghbV9pbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAKICAgICBpZiAo
d2lkdGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTk4LDIxICsyMTMsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgIGlmIChzYW1wbGVDb3Vu
dCA+IG1heFNhbXBsZUNvdW50KQogICAgICAgICAgICAgc2FtcGxlQ291bnQgPSBtYXhTYW1wbGVD
b3VudDsKICAgICAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAg
ICAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVGQk8pOworICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVC
VUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIG11c3RSZXN0b3JlRkJP
ID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9S
RU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICA6Omds
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNh
bXBsZUNvdW50LCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgICAg
ICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVD
b2xvckJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZG
RVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwg
bV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsK
ICAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAg
ICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRp
c2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIGlu
dGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGds
QmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBpbnRlcm5hbERlcHRo
U3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBpZiAobV9hdHRycy5z
dGVuY2lsKQotICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJV
RkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAg
ICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9T
VEVOQ0lMX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxl
RGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAg
ICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211
bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfREVQVEhfQVRUQUNITUVO
VF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZm
ZXIpOwogICAgICAgICB9Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRF
UkJVRkZFUl9FWFQsIDApOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVS
QlVGRkVSX0VYVCwgMCk7CiAgICAgICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQo
R0xfRlJBTUVCVUZGRVJfRVhUKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURV9FWFQpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBjbGVhbnVwLgogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKQEAgLTIyMiwyMiArMjM3LDIyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIC8vIHJlc2l6ZSByZWd1bGFyIEZCTwogICAgIGlm
IChtX2JvdW5kRkJPICE9IG1fZmJvKSB7CiAgICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsK
LSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zi
byk7CiAgICAgfQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUp
OwogICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZv
cm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDAp
OwotICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1Jf
QVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwogICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICA6Omds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRo
LCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICA6Omds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CiAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlh
cyAmJiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpKSB7Ci0gICAgICAgIDo6Z2xC
aW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKLSAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVGRkVS
X0VYVCwgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAg
ICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5j
aWxCdWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVG
RkVSX0VYVCwgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAg
ICAgICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VY
VCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NU
RU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICA6OmdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRB
Q0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwot
ICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsK
KyAgICAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0
aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVS
QlVGRkVSX0VYVCwgMCk7CiAgICAgfQogICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNF
WFQoR0xfRlJBTUVCVUZGRVJfRVhUKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURV9FWFQpIHsK
ICAgICAgICAgLy8gRklYTUU6IGNsZWFudXAKQEAgLTI0NSw3ICsyNjAsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB9CiAKICAg
ICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAg
ICAgICBpZiAobV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICAgICAgbXVz
dFJlc3RvcmVGQk8gPSBmYWxzZTsKICAgICB9CkBAIC0yNzMsNyArMjg4LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgIDo6
Z2xHZXRJbnRlZ2VydihHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKICAg
ICAgICAgOjpnbENsZWFyU3RlbmNpbCgwKTsKICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX1NU
RU5DSUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJnN0ZW5jaWxNYXNrKSk7
Ci0gICAgICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsK
KyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsKICAg
ICAgICAgY2xlYXJNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgaXNT
Y2lzc29yRW5hYmxlZCA9IDo6Z2xJc0VuYWJsZWQoR0xfU0NJU1NPUl9URVNUKTsKQEAgLTI5MSw3
ICszMDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICB9CiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewogICAgICAgICA6Omds
Q2xlYXJTdGVuY2lsKGNsZWFyU3RlbmNpbCk7Ci0gICAgICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFy
YXRlKEdMX0ZST05ULCBzdGVuY2lsTWFzayk7CisgICAgICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0
ZShHTF9GUk9OVCwgc3RlbmNpbE1hc2spOwogICAgIH0KICAgICBpZiAoaXNTY2lzc29yRW5hYmxl
ZCkKICAgICAgICAgOjpnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwpAQCAtMzAzLDcgKzMxOCw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KQogICAgICAgICA6OmdsRGlzYWJsZShHTF9ESVRIRVIpOwogCiAgICAgaWYgKG11c3RSZXN0b3Jl
RkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9ib3VuZEZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgbV9ib3VuZEZCTyk7CiAKICAgICA6OmdsRmx1c2goKTsKIH0KQEAgLTMxOSwxNyArMzM0
LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKICAgICAgICAg
cmV0dXJuOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlh
bGlhcykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZG
RVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1l
YnVmZmVyRVhUKDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1f
Y3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJ
TkVBUik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJf
RVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xf
RFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJF
WFQoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsK
ICAgICB9Ci0gICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1f
ZmJvKTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZSgwKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUoMCk7CiAg
ICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwog
ICAgIDo6Z2xDb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JG
b3JtYXQsIDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDApOwotICAgIDo6
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2JvdW5kVGV4dHVyZTApOwotICAgIDo6Z2xB
Y3RpdmVUZXh0dXJlKG1fYWN0aXZlVGV4dHVyZSk7Ci0gICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOworICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbV9ib3VuZFRleHR1cmUwKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUobV9hY3Rp
dmVUZXh0dXJlKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQs
IG1fYm91bmRGQk8pOwogICAgIDo6Z2xGaW5pc2goKTsKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9
IHRydWU7CiB9CkBAIC0zMzgsNyArMzUzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0
aXZlVGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIG1fYWN0aXZlVGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgOjpnbEFjdGl2ZVRleHR1cmUo
dGV4dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAgLTM0NiwyMCArMzYxLDIwIEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3Jt
M0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpOworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dy
YW0sIEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKHBy
b2dyYW0pOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCaW5kQXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0
cmliTG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9y
bTNET2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
QmluZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwgYnVm
ZmVyKTsKIH0KIAogCkBAIC0zNzIsNyArMzg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YmluZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIK
ICAgICBlbHNlCiAgICAgICAgIGZibyA9IChtX2F0dHJzLmFudGlhbGlhcyA/IG1fbXVsdGlzYW1w
bGVGQk8gOiBtX2Zibyk7CiAgICAgaWYgKGZibyAhPSBtX2JvdW5kRkJPKSB7Ci0gICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQodGFyZ2V0LCBmYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVCh0YXJnZXQsIGZibyk7CiAgICAgICAgIG1fYm91bmRGQk8gPSBmYm87CiAgICAgfQog
fQpAQCAtMzgwLDcgKzM5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1
ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmlu
ZFJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIApAQCAtNDA3LDcg
KzQyMiw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0g
bW9kZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNE
ZW51bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgOjpnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEp
OworICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAK
IApAQCAtNDIwLDMxICs0MzUsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5j
KEdDM0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwg
R0MzRGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3Jj
QWxwaGEsIGRzdEFscGhhKTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZm
ZXJEYXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVz
YWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0
YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2Fn
ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQnVmZmVyRGF0YSh0YXJn
ZXQsIHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBk
YXRhLCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNv
bnN0IHZvaWQqIGRhdGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1
ZmZlclN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsQnVmZmVyU3Vi
RGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNz
Q29udGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXNFWFQodGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhU
KHRhcmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0MzRGNs
YW1wZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAtNTE3
LDEzICs1MzIsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0
Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICBjb25zdCBDU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVy
Q1N0cmluZyA9IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIq
IHRyYW5zbGF0ZWRTaGFkZXJQdHIgPSB0cmFuc2xhdGVkU2hhZGVyQ1N0cmluZy5kYXRhKCk7CiAg
ICAgCi0gICAgOjpnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZ0cmFuc2xhdGVkU2hhZGVyUHRy
LCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7CisgICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAx
LCAmdHJhbnNsYXRlZFNoYWRlclB0ciwgJnRyYW5zbGF0ZWRTaGFkZXJMZW5ndGgpOwogICAgIAot
ICAgIDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRl
cik7CiAgICAgCiAgICAgaW50IEdMQ29tcGlsZVN1Y2Nlc3M7CiAgICAgCi0gICAgOjpnbEdldFNo
YWRlcml2KHNoYWRlciwgQ09NUElMRV9TVEFUVVMsICZHTENvbXBpbGVTdWNjZXNzKTsKKyAgICBn
bEdldFNoYWRlcml2KHNoYWRlciwgQ09NUElMRV9TVEFUVVMsICZHTENvbXBpbGVTdWNjZXNzKTsK
ICAgICAKICAgICAvLyBBU1NFUlQgdGhhdCBBTkdMRSBnZW5lcmF0ZWQgR0xTTCB3aWxsIGJlIGFj
Y2VwdGVkIGJ5IE9wZW5HTAogICAgIEFTU0VSVChHTENvbXBpbGVTdWNjZXNzID09IEdMX1RSVUUp
OwpAQCAtNTMzLDI4ICs1NDgsMjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleElt
YWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5k
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAg
ICAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQs
IHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElO
RUFSKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQs
IG1fZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZl
ckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0aCwgeSArIGhl
aWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgfQogICAgIDo6Z2xD
b3B5VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgs
IGhlaWdodCwgYm9yZGVyKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZC
TyA9PSBtX211bHRpc2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwg
R0MzRGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQg
eCwgR0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91
bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
RVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAg
OjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwot
ICAgICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdo
dCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9M
SU5FQVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgbV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVG
RkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVm
ZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsg
aGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CiAgICAgOjpn
bENvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHks
IHdpZHRoLCBoZWlnaHQpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTU4Niw3ICs2
MDEsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9i
amVjdCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAg
IEFTU0VSVChzaGFkZXIpOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xEZXRh
Y2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBz
aGFkZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNh
cCkKQEAgLTU5OCw3ICs2MTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdD
M0RlbnVtIGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJB
cnJheShHQzNEdWludCBpbmRleCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJh
eXMoR0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtNjIy
LDcgKzYzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXAp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWlu
dCBpbmRleCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5k
ZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2goKQpAQCAtNjQwLDEzICs2
NTUsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51
bSBhdHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmpl
Y3QgYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdl
dCwgYnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0
YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJl
LCBHQzNEaW50IGxldmVsKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xG
cmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4
dHVyZSwgbGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQodGFyZ2V0LCBhdHRh
Y2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC02NTgsNyArNjczLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdldCk7Cisg
ICAgZ2xHZW5lcmF0ZU1pcG1hcEVYVCh0YXJnZXQpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBp
bmRleCwgQWN0aXZlSW5mbyYgaW5mbykKQEAgLTY2OSwxMiArNjg0LDEyIEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdD
M0R1aW50IGluZGV4CiAgICAgfQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50
IG1heEF0dHJpYnV0ZVNpemUgPSAwOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xf
QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7CisgICAgZ2xH
ZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4
QXR0cmlidXRlU2l6ZSk7CiAgICAgR0xjaGFyIG5hbWVbbWF4QXR0cmlidXRlU2l6ZV07IC8vIEdM
X0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uCiAg
ICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVu
dW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4
QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xH
ZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGluZm8ubmFtZSA9IFN0cmluZyhuYW1lLCBuYW1lTGVuZ3RoKTsK
QEAgLTY5MSwxMiArNzA2LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVu
aWZvcm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgfQogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKLSAg
ICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgs
ICZtYXhVbmlmb3JtU2l6ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZF
X1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKICAgICBHTGNoYXIgbmFtZVtt
YXhVbmlmb3JtU2l6ZV07IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMg
bnVsbCB0ZXJtaW5hdGlvbgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQg
c2l6ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3Jt
KHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlw
ZSwgbmFtZSk7CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlm
b3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAgICAgaWYgKCFuYW1l
TGVuZ3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW5mby5uYW1lID0gU3RyaW5nKG5h
bWUsIG5hbWVMZW5ndGgpOwpAQCAtNzEyLDcgKzcyNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXpl
aSBtCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRl
cnMpOworICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwg
c2hhZGVycyk7CiB9CiAKIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24o
UGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC03MjEsNyAr
NzM2LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xHZXRBdHRyaWJMb2NhdGlv
bihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldEF0dHJpYkxv
Y2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4
dDNEOjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygp
CkBAIC03NjAsNyArNzc1LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVm
ZmVyKFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzQnVmZmVyKGJ1ZmZl
cik7CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC03NzUsNyArNzkwLDcg
QEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCBmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc0ZyYW1lYnVmZmVyRVhUKGZyYW1l
YnVmZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyRVhUKGZyYW1lYnVmZmVyKTsKIH0K
IAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCkBAIC03ODQsNyArNzk5LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250
ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6Omds
SXNQcm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0K
IAogR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3Jt
M0RPYmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtNzkzLDcgKzgwOCw3IEBAIEdDM0Rib29sZWFuIEdy
YXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1
ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1JlbmRlcmJ1ZmZlckVYVChyZW5kZXJidWZmZXIpOworICAg
IHJldHVybiBnbElzUmVuZGVyYnVmZmVyRVhUKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29s
ZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikK
QEAgLTgwMiw3ICs4MTcsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFk
ZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNTaGFkZXIoc2hhZGVy
KTsKKyAgICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTgy
NCw3ICs4MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9y
bTNET2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQ
cm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3Jl
aShHQzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTg0NiwxNSArODYxLDE1IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpn
bEZsdXNoKCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9t
dWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURf
RlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgICAgICA6Omds
QmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCAr
IHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotICAg
ICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwor
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9t
dWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJB
TUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHks
IHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9D
T0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAg
fQogICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
ZGF0YSk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQpAQCAtODgyLDcgKzg5Nyw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0
LCBHQzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAgIGludGVybmFsZm9ybWF0ID0gR0xfUkdCOwog
ICAgICAgICBicmVhazsKICAgICB9Ci0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFy
Z2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBH
QzNEYm9vbGVhbiBpbnZlcnQpCkBAIC05MTksNyArOTM0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1h
c2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVt
IGZhY2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2Us
IGZ1bmMsIHJlZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMs
IHJlZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdD
M0R1aW50IG1hc2spCkBAIC05MzEsNyArOTQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c3RlbmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5j
aWxNYXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNr
KTsKKyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwg
R0MzRGVudW0genBhc3MpCkBAIC05NDMsNyArOTU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFz
cykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZh
Y2UsIEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwg
ZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWws
IHpmYWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRl
cmYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHZhbHVlKQpAQCAt
OTYxLDEzMCArOTc2LDEzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJp
KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgdgogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2
MCk7CisgICAgZ2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5p
Zm9ybTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYo
R0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsK
KyAgICBnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBH
QzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVs
dGlwbGUgb2YgMgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMmZ2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXpl
LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50
IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYw
LCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
ZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5l
ZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IDo6Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2
KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0Mz
RGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9y
bTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNp
emVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxl
IG9mIDQKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTRmdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJy
YXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCB2MCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
VW5pZm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJy
ZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBn
bFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQg
djEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yaShsb2Nh
dGlvbiwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVk
cyB0byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJpdihs
b2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlm
b3JtM2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2
MikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTNpKGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5n
dGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZv
cm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdD
M0RpbnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRp
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24s
IHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXpl
aSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBv
ZiA0CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYo
bG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJm
dihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4g
dHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBG
SVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFu
c3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRy
YW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0
cml4NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIDE2CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAg
IGdsVW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVc2VQcm9ncmFt
KHByb2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAg
LTEwOTIsNjEgKzExMDcsNjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9n
cmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0p
OworICAgIGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwg
djApOworICAgIGdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFy
cmF5KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIx
ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRl
eCwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4
QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZl
cnRleEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJh
eSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2
MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAgICBnbFZl
cnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5k
ZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0Mz
RGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwg
djAsIHYxLCB2MiwgdjMpOworICAgIGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIs
IHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1
aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0
dHJpYjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0
ZXhBdHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5
cGUsIEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIg
b2Zmc2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlk
ZSwgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0
KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdD
M0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTE2NCw3ICsx
MTc5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5h
bWUsIEdDM0Rib29sZWFuKiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZl
clBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEZsb2F0dihHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKQEAgLTExNzgsNyArMTE5
Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAg
ICBhdHRhY2htZW50ID0gREVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5U
LCBlaXRoZXIgd29ya3MuCi0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEZyYW1l
YnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUs
IHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVu
dW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTIwOSw3ICsxMjI0LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250
ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVl
KTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3Qg
cHJvZ3JhbSkKQEAgLTEyMTgsMTQgKzEyMzMsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBsZW5ndGg7Ci0gICAgOjpnbEdldFByb2dyYW1p
dihwcm9ncmFtLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0UHJvZ3Jh
bWl2KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIEdMc2l6ZWkgc2l6ZTsKICAgICBHTGNoYXIq
IGluZm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogCi0gICAgOjpnbEdldFByb2dy
YW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3Jh
bUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAgICAgU3RyaW5nIHMoaW5m
byk7CiAgICAgZmFzdEZyZWUoaW5mbyk7CiAgICAgcmV0dXJuIHM7CkBAIC0xMjM0LDcgKzEyNDks
NyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZh
bHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNE
ZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xMjUwLDcgKzEyNjUsNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0Mz
RGVudW0gcG5hbWUsIEdDMwogICAgICAgICBjYXNlIFNIQURFUl9UWVBFOgogICAgICAgICAgICAg
Ly8gTGV0IE9wZW5HTCBoYW5kbGUgdGhlc2UuCiAgICAgICAgIAotICAgICAgICAgICAgOjpnbEdl
dFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGdsR2V0U2hhZGVy
aXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAog
ICAgICAgICBjYXNlIENPTVBJTEVfU1RBVFVTOgpAQCAtMTI5NSwxNCArMTMxMCwxNCBAQCBTdHJp
bmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBz
aGFkZXIpCiAKICAgICAgaWYgKGVudHJ5LmlzVmFsaWQpIHsKICAgICAgICAgIEdMaW50IGxlbmd0
aDsKLSAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwg
Jmxlbmd0aCk7CisgICAgICAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVO
R1RILCAmbGVuZ3RoKTsKICAgICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICAgIHJldHVy
biAiIjsKIAogICAgICAgICAgR0xzaXplaSBzaXplOwogICAgICAgICAgR0xjaGFyKiBpbmZvID0g
KEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKIAotICAgICAgICAgOjpnbEdldFNoYWRlcklu
Zm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICAgICAgIGdsR2V0U2hhZGVy
SW5mb0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgICAgICBTdHJpbmcg
cyhpbmZvKTsKICAgICAgICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTM0MSwxMyArMTM1NiwxMyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJn
ZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZs
b2F0KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VW5p
Zm9ybWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
VW5pZm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0Mz
RGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFVu
aWZvcm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWl2KHBy
b2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKQEAgLTEzNTUsMTkgKzEzNzAsMTkgQEAgR0MzRGludCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3QK
ICAgICBBU1NFUlQocHJvZ3JhbSk7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICBy
ZXR1cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkp
OworICAgIHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5k
YXRhKCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBw
bmFtZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1
ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1
aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwg
dmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CiB9
CiAKIEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0
KEdDM0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSkKQEAgLTEzNzUsNyArMTM5MCw3IEBAIEdD
M0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1
aW50IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBH
THZvaWQqIHBvaW50ZXIgPSAwOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRl
eCwgcG5hbWUsICZwb2ludGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwbmFtZSwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMTQ4Myw3ICsx
NDk4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlU2hhZGVyKFBsYXRmb3JtM0RP
YmplY3Qgc2hhZGVyKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGVsZXRlVGV4dHVyZShQbGF0
Zm9ybTNET2JqZWN0IHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmdGV4dHVyZSk7CisgICAgOjpnbERlbGV0ZVRleHR1cmVzKDEs
ICZ0ZXh0dXJlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3ludGhlc2l6ZUdMRXJy
b3IoR0MzRGVudW0gZXJyb3IpCkBAIC0xNTA5LDcgKzE1MjQsMTEgQEAgYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIEV4dGVuc2lvbnMzRCogR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQorI2lm
IFBMQVRGT1JNKFFUKQorICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5z
aW9uczNEUXQodGhpcykpOworI2Vsc2UKICAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIo
bmV3IEV4dGVuc2lvbnMzRE9wZW5HTCh0aGlzKSk7CisjZW5kaWYKICAgICByZXR1cm4gbV9leHRl
bnNpb25zLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAKaW5kZXggM2FkYzkzZi4uNzkwOGI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNE
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmNwcApAQCAtMzQsNyArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4
dGVuc2lvbnMzRFF0OjpFeHRlbnNpb25zM0RRdCgpCitFeHRlbnNpb25zM0RRdDo6RXh0ZW5zaW9u
czNEUXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRXh0ZW5zaW9uczNEUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmgKaW5kZXggYzY3ZmJlZC4uYTdjODYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCkBAIC00
OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRp
b25zLgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLSAgICBFeHRlbnNpb25z
M0RRdCgpOworICAgIEV4dGVuc2lvbnMzRFF0KGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEKik7CisK
KyAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHQzRAorICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzREludGVybmFsUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCmluZGV4IGNhZDQ0N2YuLmQxMWQ2
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNESW50ZXJuYWxRdC5oCkBAIC02MSwxNCArNjEsNyBA
QCBwdWJsaWM6CiAgICAgSG9zdFdpbmRvdyogbV9ob3N0V2luZG93OwogICAgIFFHTFdpZGdldCog
bV9nbFdpZGdldDsKICAgICBRR0xXaWRnZXQqIG1fdmlld3BvcnRHTFdpZGdldDsKLSAgICBHTHVp
bnQgbV90ZXh0dXJlOwotICAgIEdMdWludCBtX2NhbnZhc0ZibzsKLSAgICBHTHVpbnQgbV9jdXJy
ZW50RmJvOwotICAgIEdMdWludCBtX2RlcHRoQnVmZmVyOwotICAgIGJvb2wgbV9sYXllckNvbXBv
c2l0ZWQ7CiAgICAgaW50IG1fcHJvY3NBcmVWYWxpZDsKLSAgICBMaXN0SGFzaFNldDx1bnNpZ25l
ZCBpbnQ+IG1fc3ludGhldGljRXJyb3JzOwotICAgIE93blB0cjxFeHRlbnNpb25zM0RRdD4gbV9l
eHRlbnNpb25zOwogCiAgICAgdm9pZCogZ2V0UHJvY0FkZHJlc3MoY29uc3QgU3RyaW5nJiBwcm9j
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0NvbnRleHQzRE9wZW5HTEVTMlF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTEVTMlF0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZjAyMDQyNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMRVMyUXQu
aApAQCAtMCwwICsxLDkwIEBACitHTF9QUk9DKHZvaWQsIGdsQWN0aXZlVGV4dHVyZSwgKEdMZW51
bSkpCitHTF9QUk9DKHZvaWQsIGdsQXR0YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVpbnQpKQorR0xf
UFJPQyh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgKEdMdWludCwgR0x1aW50LCBjb25zdCBj
aGFyKikpCitHTF9QUk9DKHZvaWQsIGdsQmluZEJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkKK0dM
X1BST0Modm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIChHTGVudW0sIEdMdWludCkpCitHTF9QUk9D
KHZvaWQsIGdsQmluZFJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0x1aW50KSkKK0dMX1BST0Modm9p
ZCwgZ2xCbGVuZENvbG9yLCAoR0xjbGFtcGYsIEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFtcGYp
KQorR0xfUFJPQyh2b2lkLCBnbEJsZW5kRXF1YXRpb24sIChHTGVudW0pKQorR0xfUFJPQyh2b2lk
LCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVtKSkKK0dMX1BST0Modm9p
ZCwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdM
ZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKSkKK0dMX1BST0Modm9pZCwgZ2xCdWZmZXJE
YXRhLCAoR0xlbnVtLCBHTHNpemVpcHRyLCBjb25zdCBHTHZvaWQqLCBHTGVudW0pKQorR0xfUFJP
Qyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEsIChHTGVudW0sIEdMaW50cHRyLCBHTHNpemVpcHRyLCBj
b25zdCBHTHZvaWQqKSkKK0dMX1BST0MoR0xlbnVtLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMs
IChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbENvbXBpbGVTaGFkZXIsIChHTHVpbnQpKQorR0xf
UFJPQyhHTHVpbnQsIGdsQ3JlYXRlUHJvZ3JhbSwgKCkpCitHTF9QUk9DKEdMdWludCwgZ2xDcmVh
dGVTaGFkZXIsIChHTGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZUJ1ZmZlcnMsIChHTHNp
emVpLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMs
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVByb2dy
YW0sIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMsIChHTHNp
emVpIG4sIGNvbnN0IEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwgKEdM
dWludCkpCitHTF9QUk9DKHZvaWQsIGdsRGV0YWNoU2hhZGVyLCAoR0x1aW50LCBHTHVpbnQpKQor
R0xfUFJPQyh2b2lkLCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdMdWludCkpCitHTF9Q
Uk9DKHZvaWQsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVpbnQpKQorR0xfUFJPQyh2
b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwg
R0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgKEdMZW51bSwg
R0xlbnVtLCBHTGVudW0sIEdMdWludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkJ1ZmZl
cnMsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5lcmF0ZU1pcG1hcCwg
KEdMZW51bSB0YXJnZXQpKQorR0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVycywgKEdMc2l6
ZWksIEdMdWludCopKQorR0xfUFJPQyh2b2lkLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIChHTHNpemVp
LCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRBY3RpdmVBdHRyaWIsIChHTHVpbnQsIEdM
dWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFyKikpCitHTF9Q
Uk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdMdWludCwgR0x1aW50LCBHTHNpemVpLCBH
THNpemVpKiwgR0xpbnQqLCBHTGVudW0qLCBHTGNoYXIqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRB
dHRhY2hlZFNoYWRlcnMsIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTHVpbnQqKSkKK0dM
X1BST0MoR0xpbnQsIGdsR2V0QXR0cmliTG9jYXRpb24sIChHTHVpbnQsIGNvbnN0IGNoYXIqKSkK
K0dMX1BST0Modm9pZCwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBH
TGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRl
cml2LCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFtcykpCitHTF9QUk9DKHZv
aWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFy
KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0x1aW50LCBHTGVudW0sIEdMaW50
KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIChHTGVudW0s
IEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJJbmZvTG9nLCAoR0x1
aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopKQorR0xfUFJPQyh2b2lkLCBnbEdldFNoYWRl
cml2LCAoR0x1aW50LCBHTGVudW0sIEdMaW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVy
U291cmNlLCAoR0x1aW50LCBHTHNpemVpLCBHTHNpemVpKiwgY2hhciopKQorR0xfUFJPQyhHTGlu
dCwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIChHTHVpbnQsIGNvbnN0IGNoYXIqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRVbmlmb3JtZnYsIChHTHVpbnQsIEdMaW50LCBHTGZsb2F0KikpCitHTF9QUk9D
KHZvaWQsIGdsR2V0VW5pZm9ybWl2LCAoR0x1aW50LCBHTGludCwgR0xpbnQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiwgKEdMdWludCwgR0xlbnVtLCBHTGZsb2F0KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliaXYsIChHTHVpbnQsIEdMZW51bSwgR0xpbnQq
KSkKK0dMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgKEdMdWludCwgR0xl
bnVtLCBHTHZvaWQqKikpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc0J1ZmZlciwgKEdMdWludCkp
CitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc0ZyYW1lYnVmZmVyLCAoR0x1aW50KSkKK0dMX1BST0Mo
R0xib29sZWFuLCBnbElzUHJvZ3JhbSwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJ
c1JlbmRlcmJ1ZmZlciwgKEdMdWludCkpCitHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1NoYWRlciwg
KEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsTGlua1Byb2dyYW0sIChHTHVpbnQpKQorR0xfUFJP
Qyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UsIChHTGVudW0sIEdMZW51bSwgR0xzaXplaSwg
R0xzaXplaSkpCitHTF9QUk9DKHZvaWQsIGdsU2FtcGxlQ292ZXJhZ2UsIChHTGNsYW1wZiwgR0xi
b29sZWFuKSkKK0dMX1BST0Modm9pZCwgZ2xTaGFkZXJTb3VyY2UsIChHTHVpbnQsIEdMc2l6ZWks
IGNvbnN0IGNoYXIqKiwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xTdGVuY2lsRnVu
Y1NlcGFyYXRlLCAoR0xlbnVtLCBHTGVudW0sIEdMaW50LCBHTHVpbnQpKQorR0xfUFJPQyh2b2lk
LCBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUsIChHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQs
IGdsU3RlbmNpbE9wU2VwYXJhdGUsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTGVudW0pKQor
R0xfUFJPQyh2b2lkLCBnbFVuaWZvcm0xZiwgKEdMaW50LCBHTGZsb2F0KSkKK0dMX1BST0Modm9p
ZCwgZ2xVbmlmb3JtMWZ2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtMWksIChHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVu
aWZvcm0xaXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwg
Z2xVbmlmb3JtMmYsIChHTGludCwgR0xmbG9hdCwgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGds
VW5pZm9ybTJmdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZv
aWQsIGdsVW5pZm9ybTJpLCAoR0xpbnQsIEdMaW50LCBHTGludCkpCitHTF9QUk9DKHZvaWQsIGds
VW5pZm9ybTJpdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGludCopKQorR0xfUFJPQyh2b2lk
LCBnbFVuaWZvcm0zZiwgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0LCBHTGZsb2F0KSkKK0dMX1BS
T0Modm9pZCwgZ2xVbmlmb3JtM2Z2LCAoR0xpbnQsIEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkK
K0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtM2ksIChHTGludCwgR0xpbnQsIEdMaW50LCBHTGludCkp
CitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybTNpdiwgKEdMaW50LCBHTHNpemVpLCBjb25zdCBHTGlu
dCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm00ZiwgKEdMaW50LCBHTGZsb2F0LCBHTGZsb2F0
LCBHTGZsb2F0LCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGZ2LCAoR0xpbnQs
IEdMc2l6ZWksIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xVbmlmb3JtNGksIChH
TGludCwgR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZv
cm00aXYsIChHTGludCwgR0xzaXplaSwgY29uc3QgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xV
bmlmb3JtTWF0cml4MmZ2LCAoR0xpbnQsIEdMc2l6ZWksIEdMYm9vbGVhbiwgY29uc3QgR0xmbG9h
dCopKQorR0xfUFJPQyh2b2lkLCBnbFVuaWZvcm1NYXRyaXgzZnYsIChHTGludCwgR0xzaXplaSwg
R0xib29sZWFuLCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQsIGdsVW5pZm9ybU1hdHJp
eDRmdiwgKEdMaW50LCBHTHNpemVpLCBHTGJvb2xlYW4sIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BS
T0Modm9pZCwgZ2xVc2VQcm9ncmFtLCAoR0x1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xWYWxpZGF0
ZVByb2dyYW0sIChHTHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjFmLCAoR0x1
aW50LCBjb25zdCBHTGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIxZnYsIChH
THVpbnQsIGNvbnN0IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWIyZiwg
KEdMdWludCwgY29uc3QgR0xmbG9hdCwgY29uc3QgR0xmbG9hdCkpCitHTF9QUk9DKHZvaWQsIGds
VmVydGV4QXR0cmliMmZ2LCAoR0x1aW50LCBjb25zdCBHTGZsb2F0KikpCitHTF9QUk9DKHZvaWQs
IGdsVmVydGV4QXR0cmliM2YsIChHTHVpbnQsIGNvbnN0IEdMZmxvYXQsIGNvbnN0IEdMZmxvYXQs
IGNvbnN0IEdMZmxvYXQpKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjNmdiwgKEdMdWlu
dCwgY29uc3QgR0xmbG9hdCopKQorR0xfUFJPQyh2b2lkLCBnbFZlcnRleEF0dHJpYjRmLCAoR0x1
aW50LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBHTGZsb2F0LCBjb25zdCBH
TGZsb2F0KSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWI0ZnYsIChHTHVpbnQsIGNvbnN0
IEdMZmxvYXQqKSkKK0dMX1BST0Modm9pZCwgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyLCAoR0x1aW50
LCBHTGludCwgR0xlbnVtLCBHTGJvb2xlYW4sIEdMc2l6ZWksIGNvbnN0IEdMdm9pZCopKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0xRdC5oCmluZGV4IGYwMjA0MjYuLjA5OGVjYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMUXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTFF0LmgKQEAgLTIsNDEgKzIsNDIgQEAgR0xfUFJPQyh2b2lkLCBn
bEFjdGl2ZVRleHR1cmUsIChHTGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwg
KEdMdWludCwgR0x1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChH
THVpbnQsIEdMdWludCwgY29uc3QgY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIs
IChHTGVudW0sIEdMdWludCkpCi1HTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyLCAoR0xl
bnVtLCBHTHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChHTGVudW0s
IEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyRVhULCAoR0xlbnVtLCBH
THVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXJFWFQsIChHTGVudW0sIEdM
dWludCkpCiBHTF9QUk9DKHZvaWQsIGdsQmxlbmRDb2xvciwgKEdMY2xhbXBmLCBHTGNsYW1wZiwg
R0xjbGFtcGYsIEdMY2xhbXBmKSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0xl
bnVtKSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHTGVudW0sIEdM
ZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIChHTGVudW0gc3JjUkdC
LCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkpCitHTF9Q
Uk9DKHZvaWQsIGdsQmxpdEZyYW1lYnVmZmVyRVhULCAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xp
bnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGJpdGZpZWxkLCBHTGVudW0pKTsKIEdM
X1BST0Modm9pZCwgZ2xCdWZmZXJEYXRhLCAoR0xlbnVtLCBHTHNpemVpcHRyLCBjb25zdCBHTHZv
aWQqLCBHTGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEsIChHTGVudW0sIEdM
aW50cHRyLCBHTHNpemVpcHRyLCBjb25zdCBHTHZvaWQqKSkKLUdMX1BST0MoR0xlbnVtLCBnbENo
ZWNrRnJhbWVidWZmZXJTdGF0dXMsIChHTGVudW0pKQorR0xfUFJPQyhHTGVudW0sIGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1c0VYVCwgKEdMZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsQ29tcGlsZVNo
YWRlciwgKEdMdWludCkpCiBHTF9QUk9DKEdMdWludCwgZ2xDcmVhdGVQcm9ncmFtLCAoKSkKIEdM
X1BST0MoR0x1aW50LCBnbENyZWF0ZVNoYWRlciwgKEdMZW51bSkpCiBHTF9QUk9DKHZvaWQsIGds
RGVsZXRlQnVmZmVycywgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopKQotR0xfUFJPQyh2b2lkLCBn
bERlbGV0ZUZyYW1lYnVmZmVycywgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KikpCitHTF9QUk9D
KHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhULCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
KSkKIEdMX1BST0Modm9pZCwgZ2xEZWxldGVQcm9ncmFtLCAoR0x1aW50KSkKLUdMX1BST0Modm9p
ZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dM
X1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhULCAoR0xzaXplaSBuLCBjb25zdCBH
THVpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xEZWxldGVTaGFkZXIsIChHTHVpbnQpKQogR0xfUFJP
Qyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdMdWludCwgR0x1aW50KSkKIEdMX1BST0Modm9pZCwg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlciwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCkpCi1HTF9Q
Uk9DKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVt
LCBHTHVpbnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
ckVYVCwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGds
RnJhbWVidWZmZXJUZXh0dXJlMkRFWFQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQs
IEdMaW50KSkKIEdMX1BST0Modm9pZCwgZ2xHZW5CdWZmZXJzLCAoR0xzaXplaSwgR0x1aW50Kikp
Ci1HTF9QUk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIChHTGVudW0gdGFyZ2V0KSkKLUdMX1BS
T0Modm9pZCwgZ2xHZW5GcmFtZWJ1ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKLUdMX1BST0Mo
dm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZv
aWQsIGdsR2VuZXJhdGVNaXBtYXBFWFQsIChHTGVudW0gdGFyZ2V0KSkKK0dMX1BST0Modm9pZCwg
Z2xHZW5GcmFtZWJ1ZmZlcnNFWFQsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwg
Z2xHZW5SZW5kZXJidWZmZXJzRVhULCAoR0xzaXplaSwgR0x1aW50KikpCiBHTF9QUk9DKHZvaWQs
IGdsR2V0QWN0aXZlQXR0cmliLCAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBH
TGludCosIEdMZW51bSosIEdMY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZVVuaWZv
cm0sIChHTHVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwg
R0xjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0x1aW50LCBH
THNpemVpLCBHTHNpemVpKiwgR0x1aW50KikpCiBHTF9QUk9DKEdMaW50LCBnbEdldEF0dHJpYkxv
Y2F0aW9uLCAoR0x1aW50LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYsIChHTGVudW0sIEdMZW51bSwgR0xpbnQqKSkKLUdMX1BST0Modm9pZCwgZ2xH
ZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBHTGVu
dW0sIEdMaW50KiBwYXJhbXMpKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2RVhULCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFt
cykpCiBHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWks
IEdMc2l6ZWkqLCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0x1aW50
LCBHTGVudW0sIEdMaW50KikpCi1HTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyaXYsIChHTGVudW0sIEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXJpdkVYVCwgKEdMZW51bSwgR0xlbnVtLCBHTGludCopKQogR0xfUFJP
Qyh2b2lkLCBnbEdldFNoYWRlckluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBj
aGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVyaXYsIChHTHVpbnQsIEdMZW51bSwgR0xp
bnQqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJTb3VyY2UsIChHTHVpbnQsIEdMc2l6ZWks
IEdMc2l6ZWkqLCBjaGFyKikpCkBAIC00NywxMiArNDgsMTMgQEAgR0xfUFJPQyh2b2lkLCBnbEdl
dFZlcnRleEF0dHJpYmZ2LCAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKSkKIEdMX1BST0Modm9p
ZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQogR0xfUFJP
Qyh2b2lkLCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2LCAoR0x1aW50LCBHTGVudW0sIEdMdm9p
ZCoqKSkKIEdMX1BST0MoR0xib29sZWFuLCBnbElzQnVmZmVyLCAoR0x1aW50KSkKLUdMX1BST0Mo
R0xib29sZWFuLCBnbElzRnJhbWVidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4s
IGdsSXNGcmFtZWJ1ZmZlckVYVCwgKEdMdWludCkpCiBHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1By
b2dyYW0sIChHTHVpbnQpKQotR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXIsIChH
THVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXJFWFQsIChHTHVpbnQp
KQogR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNTaGFkZXIsIChHTHVpbnQpKQogR0xfUFJPQyh2b2lk
LCBnbExpbmtQcm9ncmFtLCAoR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlLCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKQorR0xfUFJPQyh2b2lk
LCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwoR0xlbnVtLCBHTHNpemVpLCBH
TGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKTsKK0dMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlRVhULCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKQogR0xfUFJPQyh2
b2lkLCBnbFNhbXBsZUNvdmVyYWdlLCAoR0xjbGFtcGYsIEdMYm9vbGVhbikpCiBHTF9QUk9DKHZv
aWQsIGdsU2hhZGVyU291cmNlLCAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0
IEdMaW50KikpCiBHTF9QUk9DKHZvaWQsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSwg
R0xlbnVtLCBHTGludCwgR0x1aW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjYzYTc1
Yi4uNjA3OTI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNp
bmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUgPFFEZWJ1Zz4K
IAogI2lmIEVOQUJMRShXRUJHTCkKIApAQCAtNTcsMTEgKzU4LDYgQEAgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwKICAgICAsIG1faG9zdFdpbmRvdyhob3N0V2luZG93KQogICAgICwgbV9nbFdpZGdl
dCgwKQogICAgICwgbV92aWV3cG9ydEdMV2lkZ2V0KDApCi0gICAgLCBtX3RleHR1cmUoMCkKLSAg
ICAsIG1fY2FudmFzRmJvKDApCi0gICAgLCBtX2N1cnJlbnRGYm8oMCkKLSAgICAsIG1fZGVwdGhC
dWZmZXIoMCkKLSAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQogICAgICwgbV9wcm9jc0Fy
ZVZhbGlkKHRydWUpCiB7CiAgICAgbV92aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRHTFdp
ZGdldCgpOwpAQCAtMTAzLDEzICs5OSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogewog
ICAgIFFfVU5VU0VEKHdpZGdldCk7CiAKKyAgICBtX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7
CisKICAgICBRUmVjdEYgcmVjdCA9IG9wdGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVj
dCgpOwogCiAgICAgLy8gVXNlIGRpcmVjdCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFz
IGhhcyBhIHNoYXJlZCBPcGVuR0wgY29udGV4dAogICAgIC8vIHdpdGggYnJvd3NlcnMgT3BlbkdM
IGNvbnRleHQuCiAgICAgUUdMV2lkZ2V0KiB2aWV3cG9ydEdMV2lkZ2V0ID0gZ2V0Vmlld3BvcnRH
TFdpZGdldCgpOwogICAgIGlmICh2aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQg
PT0gbV92aWV3cG9ydEdMV2lkZ2V0ICYmIHZpZXdwb3J0R0xXaWRnZXQgPT0gcGFpbnRlci0+ZGV2
aWNlKCkpIHsKLSAgICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV90
ZXh0dXJlKTsKKyAgICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV9j
b250ZXh0LT5tX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTE4LDEwICsxMTYsMTggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWlu
dChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBxdWludDMy
KiBpbWFnZVBpeGVscyA9IHJlaW50ZXJwcmV0X2Nhc3Q8cXVpbnQzMio+KG9mZnNjcmVlbkltYWdl
LmJpdHMoKSk7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotICAgIG1fY29udGV4
dC0+Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Nh
bnZhc0Zibyk7CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAgICBtX2NvbnRleHQtPmds
QmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0
LT5tX2Zibyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyNlbmRpZgog
ICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0
LmhlaWdodCgpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVO
U0lHTkVEX0JZVEUsIGltYWdlUGl4ZWxzKTsKIAotICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVi
dWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2N1cnJlbnRGYm8pOworI2lm
IGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7
CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKKyNlbmRpZgogCiAgICAgLy8g
T3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0
aGUgYm90dG9tIGxlZnQKICAgICAvLyBXZSBuZWVkIFJHQjMyIG9yIEFSR0IzMl9QTSwgd2l0aCB0
aGUgb3JpZ2luIGF0IHRoZSB0b3AgbGVmdC4KQEAgLTE4MSw4ICsxODcsMjMgQEAgUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmkKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNE
KEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBob3N0V2lu
ZG93LCBib29sKQotICAgIDogbV9hdHRycyhhdHRycykKKyAgICA6IG1fY3VycmVudFdpZHRoKDAp
CisgICAgLCBtX2N1cnJlbnRIZWlnaHQoMCkKKyAgICAsIG1fYXR0cnMoYXR0cnMpCisgICAgLCBt
X3RleHR1cmUoMCkKKyAgICAsIG1fY29tcG9zaXRvclRleHR1cmUoMCkKKyAgICAsIG1fZmJvKDAp
CisgICAgLCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcigwKQorICAgICwgbV9sYXllckNvbXBvc2l0ZWQo
ZmFsc2UpCisgICAgLCBtX2ludGVybmFsQ29sb3JGb3JtYXQoMCkKKyAgICAsIG1fYm91bmRGQk8o
MCkKKyAgICAsIG1fYWN0aXZlVGV4dHVyZSgwKQorICAgICwgbV9ib3VuZFRleHR1cmUwKDApCisg
ICAgLCBtX211bHRpc2FtcGxlRkJPKDApCisgICAgLCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2ls
QnVmZmVyKDApCisgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1faW50
ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwodGhpcywgaG9zdFdpbmRvdykpCisK
IHsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZh
bHNlOwpAQCAtMjAzLDcgKzIyNCwxMSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250
ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogI2Vsc2UK
ICNkZWZpbmUgR0xfUFJPQyhSZXR1cm5WYWx1ZSwgUHJvYywgUGFyYW1zKSBQcm9jID0gcmVpbnRl
cnByZXRfY2FzdDxHcmFwaGljc0NvbnRleHQzRDo6UHJvYyMjVHlwZT4obV9pbnRlcm5hbC0+Z2V0
UHJvY0FkZHJlc3MoI1Byb2MpKTsKICNlbmRpZgorI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIp
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xFUzJRdC5oIgorI2Vsc2UKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQzRE9wZW5HTFF0LmgiCisjZW5kaWYKICN1bmRlZiBHTF9QUk9D
CiAKICAgICBpZiAoIW1faW50ZXJuYWwtPm1fcHJvY3NBcmVWYWxpZCkgewpAQCAtMjEzLDEwICsy
MzgsMjIgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICB9CiAKICAgICAvLyBDcmVhdGUg
YnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCi0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1faW50ZXJuYWwtPm1fY2FudmFzRmJvKTsKKyNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQorICAgIGdsR2VuRnJhbWVidWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Zibyk7Cisj
ZWxzZQorICAgIGdsR2VuRnJhbWVidWZmZXJzRVhUKC8qIGNvdW50ICovIDEsICZtX2Zibyk7Cisj
ZW5kaWYKKworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBnbFRl
eFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAg
IGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7
CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9U
T19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OkNMQU1QX1RPX0VER0UpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDApOwogCi0gICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9pbnRlcm5hbC0+bV90ZXh0
dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBt
X2ludGVybmFsLT5tX3RleHR1cmUpOworICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRv
clRleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CiAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKICAgICBnbFRleFBhcmFtZXRlcmko
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
X1dSQVBfUywgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOwpAQCAtMjI0LDExICsy
NjEsMTkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29u
dGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGlmIChtX2F0dHJzLmRlcHRoKQot
ICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1faW50ZXJuYWwtPm1f
ZGVwdGhCdWZmZXIpOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAgICAgIGdsR2Vu
UmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2Vs
c2UKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzRVhUKC8qIGNvdW50ICovIDEsICZtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKIAogICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0
IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCi0gICAgbV9pbnRlcm5hbC0+bV9jdXJyZW50
RmJvID0gbV9pbnRlcm5hbC0+bV9jYW52YXNGYm87Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2ludGVybmFsLT5tX2NhbnZhc0Zibyk7Cisg
ICAgbV9ib3VuZEZCTyA9IG1fZmJvOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCisgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7
CisjZWxzZQorICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOworI2VuZGlmCiAgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAs
IDAuMCk7CiB9CiAKQEAgLTI0Myw3ICsyODgsNyBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNE
IEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkKIAogUGxhdGZv
cm0zRE9iamVjdCBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZvcm1UZXh0dXJlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV90ZXh0dXJlOworICAgIHJldHVybiBtX2NvbXBvc2l0
b3JUZXh0dXJlOwogfQogCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGljc0NvbnRleHQzRDo6cGxhdGZv
cm1MYXllcigpIGNvbnN0CkBAIC0yNjUsNiArMzEwLDM0IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQq
IGNvCiAgICAgbV9pbnRlcm5hbC0+cGFpbnQocGFpbnRlciwgMCwgMCk7CiB9CiAKK2Jvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0MzRGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+JiBvdXRw
dXRWZWN0b3IpCit7CisgICAgVU5VU0VEX1BBUkFNKGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgUVBpeG1hcCog
bmF0aXZlUGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CisgICAg
aWYgKCFuYXRpdmVQaXhtYXApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEFscGhhT3Ag
bmVlZGVkQWxwaGFPcCA9IEFscGhhRG9Ob3RoaW5nOworICAgIGlmICghcHJlbXVsdGlwbHlBbHBo
YSkKKyAgICAgICAgLy8gRklYTUU6IG11c3QgZmV0Y2ggdGhlIGltYWdlIGRhdGEgYmVmb3JlIHRo
ZSBwcmVtdWx0aXBsaWNhdGlvbiBzdGVwCisgICAgICAgIG5lZWRlZEFscGhhT3AgPSBBbHBoYURv
VW5tdWx0aXBseTsKKyAgICBRSW1hZ2UgbmF0aXZlSW1hZ2UgPSBuYXRpdmVQaXhtYXAtPnRvSW1h
Z2UoKS5jb252ZXJ0VG9Gb3JtYXQoUUltYWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICBvdXRwdXRW
ZWN0b3IucmVzaXplKG5hdGl2ZUltYWdlLmJ5dGVDb3VudCgpKTsKKyAgICByZXR1cm4gcGFja1Bp
eGVscyhuYXRpdmVJbWFnZS5yZ2JTd2FwcGVkKCkuYml0cygpLCBTb3VyY2VGb3JtYXRSR0JBOCwg
aW1hZ2UtPndpZHRoKCksIGltYWdlLT5oZWlnaHQoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQsIHR5cGUsIG5lZWRlZEFscGhhT3AsIG91dHB1dFZlY3Rvci5kYXRhKCkpOworfQor
Cit2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25Q
dHI8Q29udGV4dExvc3RDYWxsYmFjaz4pCit7Cit9CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNf
MikKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9JbWFnZURhdGEoKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJl
IGltcGxlbWVudGVkIGZvciBwcm9wZXIgbm9uLXByZW11bHRpcGxpZWQtYWxwaGEKQEAgLTI4Myw3
ICszNTYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50
IGhlaWdodCkKICAgICBtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogCiAg
ICAgLy8gQ3JlYXRlIGNvbG9yIGJ1ZmZlcgotICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIG1faW50ZXJuYWwtPm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7
CiAgICAgaWYgKG1fYXR0cnMuYWxwaGEpCiAgICAgICAgIGdsVGV4SW1hZ2UyRChHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgLyogbGV2ZWwgKi8gMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJH
QkEsIHdpZHRoLCBoZWlnaHQsIC8qIGJvcmRlciAqLyAwLCBHcmFwaGljc0NvbnRleHQzRDo6UkdC
QSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIC8qIGRhdGEgKi8gMCk7CiAgICAg
ZWxzZQpAQCAtMjkyLDcgKzM2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpIHsKICAgICAg
ICAgLy8gQ3JlYXRlIGRlcHRoIGFuZCBzdGVuY2lsIGJ1ZmZlcnMuCi0gICAgICAgIGdsQmluZFJl
bmRlcmJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBtX2ludGVybmFsLT5t
X2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICNpZiBkZWZpbmVkKFFU
X09QRU5HTF9FU18yKQogICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR3JhcGhpY3NDb250
ZXh0M0Q6OlJFTkRFUkJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkRFUFRIX0NPTVBPTkVOVDE2
LCB3aWR0aCwgaGVpZ2h0KTsKICNlbHNlCkBAIC0zMDUsMTMgKzM3OCwxMyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB9CiAKICAg
ICAvLyBDb25zdHJ1Y3QgY2FudmFzIEZCTy4KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1faW50ZXJuYWwtPm1fY2FudmFzRmJvKTsKLSAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV9pbnRlcm5hbC0+bV90ZXh0dXJlLCAwKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250
ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
bV9jb21wb3NpdG9yVGV4dHVyZSwgMCk7CiAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVS
LCBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJFTkRFUkJVRkZFUiwgbV9pbnRlcm5hbC0+bV9kZXB0aEJ1ZmZlcik7CisgICAgICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfQVRUQUNITUVOVCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJFTkRF
UkJVRkZFUiwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogI2lmICFkZWZpbmVkKFFUX09QRU5HTF9F
U18yKQogICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQz
RDo6U1RFTkNJTF9BVFRBQ0hNRU5ULCBHcmFwaGljc0NvbnRleHQzRDo6UkVOREVSQlVGRkVSLCBt
X2ludGVybmFsLT5tX2RlcHRoQnVmZmVyKTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29udGV4dDNEOjpT
VEVOQ0lMX0FUVEFDSE1FTlQsIEdyYXBoaWNzQ29udGV4dDNEOjpSRU5ERVJCVUZGRVIsIG1fZGVw
dGhTdGVuY2lsQnVmZmVyKTsKICNlbmRpZgogCiAgICAgR0xlbnVtIHN0YXR1cyA9IGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIpOwpAQCAtMzc2
LDggKzQ0OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0g
dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVy
KQogewogICAgIG1faW50ZXJuYWwtPm1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7Ci0gICAgbV9p
bnRlcm5hbC0+bV9jdXJyZW50RmJvID0gYnVmZmVyID8gYnVmZmVyIDogbV9pbnRlcm5hbC0+bV9j
YW52YXNGYm87Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIodGFyZ2V0LCBtX2ludGVybmFsLT5tX2N1
cnJlbnRGYm8pOworICAgIG1fYm91bmRGQk8gPSBidWZmZXIgPyBidWZmZXIgOiBtX2ZibzsKKyAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIG1fYm91bmRGQk8pOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCkBAIC02ODcsMTAgKzc2MCwxMCBAQCBHcmFwaGljc0NvbnRl
eHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0ZXMo
KQogCiBHQzNEZW51bSBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXJyb3IoKQogewotICAgIGlmICht
X2ludGVybmFsLT5tX3N5bnRoZXRpY0Vycm9ycy5zaXplKCkgPiAwKSB7Ci0gICAgICAgIExpc3RI
YXNoU2V0PEdDM0RlbnVtPjo6aXRlcmF0b3IgaXRlciA9IG1faW50ZXJuYWwtPm1fc3ludGhldGlj
RXJyb3JzLmJlZ2luKCk7CisgICAgaWYgKG1fc3ludGhldGljRXJyb3JzLnNpemUoKSA+IDApIHsK
KyAgICAgICAgTGlzdEhhc2hTZXQ8R0MzRGVudW0+OjppdGVyYXRvciBpdGVyID0gbV9zeW50aGV0
aWNFcnJvcnMuYmVnaW4oKTsKICAgICAgICAgR0MzRGVudW0gZXJyID0gKml0ZXI7Ci0gICAgICAg
IG1faW50ZXJuYWwtPm1fc3ludGhldGljRXJyb3JzLnJlbW92ZShpdGVyKTsKKyAgICAgICAgbV9z
eW50aGV0aWNFcnJvcnMucmVtb3ZlKGl0ZXIpOwogICAgICAgICByZXR1cm4gZXJyOwogICAgIH0K
IApAQCAtMTM2Miw1OSArMTQzNSwzMiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZWxldGVU
ZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3ludGhlc2l6ZUdMRXJyb3IoR0MzRGVudW0gZXJyb3IpCiB7Ci0gICAgbV9pbnRlcm5hbC0+
bV9zeW50aGV0aWNFcnJvcnMuYWRkKGVycm9yKTsKKyAgICBtX3N5bnRoZXRpY0Vycm9ycy5hZGQo
ZXJyb3IpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJrTGF5ZXJDb21wb3NpdGVk
KCkKIHsKLSAgICBtX2ludGVybmFsLT5tX2xheWVyQ29tcG9zaXRlZCA9IHRydWU7CisgICAgbV9s
YXllckNvbXBvc2l0ZWQgPSB0cnVlOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjptYXJr
Q29udGV4dENoYW5nZWQoKQogewogICAgIC8vIEZJWE1FOiBBbnkgYWNjZWxlcmF0ZWQgY29tcG9z
aXRvciBuZWVkcyB0byBiZSB0b2xkIHRvIHJlLXJlYWQgZnJvbSBoZXJlLgotICAgIG1faW50ZXJu
YWwtPm1fbGF5ZXJDb21wb3NpdGVkID0gZmFsc2U7CisgICAgbV9sYXllckNvbXBvc2l0ZWQgPSBm
YWxzZTsKIH0KIAogYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9sYXllckNvbXBvc2l0ZWQ7CisgICAgcmV0
dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKLSAgICBpZiAoIW1faW50ZXJuYWwtPm1fZXh0ZW5zaW9u
cykKLSAgICAgICAgbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVu
c2lvbnMzRFF0KTsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+bV9leHRlbnNpb25zLmdldCgpOwot
fQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hZ2UqIGltYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDM0RlbnVtIGZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQzNEZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZUdhbW1hQW5kQ29s
b3JQcm9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3Rvcjx1
aW50OF90PiYgb3V0cHV0VmVjdG9yKQotewotICAgIFVOVVNFRF9QQVJBTShpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSk7Ci0gICAgaWYgKCFpbWFnZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFFQaXhtYXAqIG5hdGl2ZVBpeG1hcCA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRG
cmFtZSgpOwotICAgIGlmICghbmF0aXZlUGl4bWFwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBBbHBoYU9wIG5lZWRlZEFscGhhT3AgPSBBbHBoYURvTm90aGluZzsKLSAgICBpZiAoIXBy
ZW11bHRpcGx5QWxwaGEpCi0gICAgICAgIC8vIEZJWE1FOiBtdXN0IGZldGNoIHRoZSBpbWFnZSBk
YXRhIGJlZm9yZSB0aGUgcHJlbXVsdGlwbGljYXRpb24gc3RlcAotICAgICAgICBuZWVkZWRBbHBo
YU9wID0gQWxwaGFEb1VubXVsdGlwbHk7Ci0gICAgUUltYWdlIG5hdGl2ZUltYWdlID0gbmF0aXZl
UGl4bWFwLT50b0ltYWdlKCkuY29udmVydFRvRm9ybWF0KFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7
Ci0gICAgb3V0cHV0VmVjdG9yLnJlc2l6ZShuYXRpdmVJbWFnZS5ieXRlQ291bnQoKSk7Ci0gICAg
cmV0dXJuIHBhY2tQaXhlbHMobmF0aXZlSW1hZ2UucmdiU3dhcHBlZCgpLmJpdHMoKSwgU291cmNl
Rm9ybWF0UkdCQTgsIGltYWdlLT53aWR0aCgpLCBpbWFnZS0+aGVpZ2h0KCksIDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0LCB0eXBlLCBuZWVkZWRBbHBoYU9wLCBvdXRwdXRWZWN0b3Iu
ZGF0YSgpKTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxs
YmFjayhQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+KQoteworICAgIGlmICghbV9leHRl
bnNpb25zKQorICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNE
UXQpOworICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CisjZW5kaWYKIAogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87483</attachid>
            <date>2011-03-30 02:09:37 -0700</date>
            <delta_ts>2011-03-30 04:21:01 -0700</delta_ts>
            <desc>clean up</desc>
            <filename>57261.diff</filename>
            <type>text/plain</type>
            <size>56963</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggZDIxY2RmYy4uMzBiZmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0
MTEsNiArMzQxMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJLaXRMb3NlQ29udGV4dC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXApAQCAtMzQyMSw2ICszNDIy
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKICAgICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMv
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xP
YmplY3QuY3BwIFwKQEAgLTM0NDEsMTMgKzM0NDMsMTExIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKIAogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFBX
RC9wbGF0Zm9ybS9ncmFwaGljcy9ncHUKKworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdW51
c2VkLXZhcmlhYmxlCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby1taXNzaW5nLW5vcmV0dXJu
CisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtZnVuY3Rpb24KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXBhcmVudGhlc2VzCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby10
eXBlLWxpbWl0cworCisgICAgREVGSU5FUyArPSBZWUVOQUJMRV9OTFM9MCBZWUxUWVBFX0lTX1RS
SVZJQUw9MAorCisgICAgQU5HTEVfRElSID0gJCRyZXBsYWNlKFBXRCwgIldlYkNvcmUiLCAiVGhp
cmRQYXJ0eS9BTkdMRSIpCisKKyAgICBJTkNMVURFUEFUSCArPSAkJEFOR0xFX0RJUi9zcmMgJCRB
TkdMRV9ESVIvaW5jbHVkZQorCisgICAgSEVBREVSUyArPSBcCisgICAgICAgICQkQU5HTEVfRElS
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9Db21tb24uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIv
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZURsbC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemVHbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5p
dGlhbGl6ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQ
YXJzZUNvbnRleHQuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9sb2NhbGludGVybWVk
aWF0ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL01NYXAuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9vc2luY2x1ZGUuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L2F0b20uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
Y29tcGlsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9jcHAuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
bWVtb3J5LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L3BhcnNlci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9wcmVwcm9jZXNzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3Ivc2xnbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL3N5bWJvbHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvdG9rZW5zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvUXVhbGlmaWVyQWxpdmUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9S
ZW1vdmVUcmVlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2VhcmNoU3lt
Ym9sLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9UeXBlcy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1VuZm9sZFNlbGVjdC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0
aWwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuaCBcCisKKyAg
ICBTT1VSQ0VTICs9IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvZGVHZW5H
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2RlYnVnLmNwcCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL0luZm9TaW5rLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0
aWFsaXplRGxsLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRlcm1l
ZGlhdGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2ludGVybU91dC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvYXRvbS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9jcHAuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvY3Bwc3RydWN0LmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1JlbW92ZVRyZWUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1NlYXJjaFN5bWJvbC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JH
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExT
TC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVW5mb2xkU2VsZWN0LmNw
cCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci91dGlsLmNwcCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmNwcCBcCiB9CiAKIHdpbjMyOiF3
aW4zMi1nKysqOmNvbnRhaW5zKFFNQUtFX0hPU1QuYXJjaCwgeDg2XzY0KTp7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAppbmRl
eCA3YmRkYmY0Li5jODc1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKQEAgLTI2LDcgKzI2LDExIEBACiAjaWZuZGVm
IEFOR0xFV2ViS2l0QnJpZGdlX2gKICNkZWZpbmUgQU5HTEVXZWJLaXRCcmlkZ2VfaAogCisjaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSAiQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcu
aCIKKyNlbHNlCiAjaW5jbHVkZSAiQU5HTEUvU2hhZGVyTGFuZy5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IDhhYzYzZTYuLjUzZTk4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTUsNiArNTUsNyBAQCBj
bGFzcyBDQUxheWVyOwogY2xhc3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzREludGVybmFsUXQuaCIKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVBhaW50ZXI7
CkBAIC00NzcsNyArNDc4LDcgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxEcmF3aW5nQnVm
ZmVyPiBjcmVhdGVEcmF3aW5nQnVmZmVyKGNvbnN0IEludFNpemUmID0gSW50U2l6ZSgpKTsKICAg
ICAKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9NSVVNKQorI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKFFUKQogICAgIC8vIFdpdGgg
bXVsdGlzYW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJP
LgogICAgIHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKICNlbmRpZgpAQCAtODYwLDcgKzg2MSw3IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCBhbHBoYU9wLAogICAgICAgICAg
ICAgICAgICAgICB2b2lkKiBkZXN0aW5hdGlvbkRhdGEpOwogCi0jaWYgUExBVEZPUk0oTUFDKQor
I2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oUVQpCiAgICAgLy8gVGFrZSBpbnRvIGFjY291
bnQgdGhlIHVzZXIncyByZXF1ZXN0ZWQgY29udGV4dCBjcmVhdGlvbiBhdHRyaWJ1dGVzLAogICAg
IC8vIGluIHBhcnRpY3VsYXIgc3RlbmNpbCBhbmQgYW50aWFsaWFzLCBhbmQgZGV0ZXJtaW5lIHdo
aWNoIGNvdWxkIG9yCiAgICAgLy8gY291bGQgbm90IGJlIGhvbm9yZWQgYmFzZWQgb24gdGhlIGNh
cGFiaWxpdGllcyBvZiB0aGUgT3BlbkdMCkBAIC04OTUsMTAgKzg5Niw5IEBAIHB1YmxpYzoKICAg
ICB9IFNoYWRlclNvdXJjZUVudHJ5OwogICAgIEhhc2hNYXA8UGxhdGZvcm0zRE9iamVjdCwgU2hh
ZGVyU291cmNlRW50cnk+IG1fc2hhZGVyU291cmNlTWFwOwogCisgICAgQU5HTEVXZWJLaXRCcmlk
Z2UgbV9jb21waWxlcjsKICNpZiBQTEFURk9STShNQUMpCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVu
c2lvbnMzRE9wZW5HTDsKLSAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwotCiAgICAg
T3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gbV9leHRlbnNpb25zOwogI2VuZGlmCiAKQEAgLTky
OCw3ICs5MjgsNiBAQCBwdWJsaWM6CiAgICAgLy8gRXJyb3JzIHJhaXNlZCBieSBzeW50aGVzaXpl
R0xFcnJvcigpLgogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBtX3N5bnRoZXRpY0Vycm9yczsK
ICNlbmRpZgotCiAgICAgLy8gRklYTUU6IGlkZWFsbHkgdGhpcyB3b3VsZCBiZSB1c2VkIG9uIGFs
bCBwbGF0Zm9ybXMuCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pIHx8IFBMQVRGT1JNKFFUKQogICAg
IGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzREludGVybmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTC5jcHAKaW5kZXggYzEyNWU5NC4uNzdmOTlmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0zMyw3ICszMywxMSBAQAogI2luY2x1ZGUg
IkFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCiAjaW5jbHVkZSAi
Q2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRFF0LmgiCisjZWxzZQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTC5oIgor
I2VuZGlmCiAjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKQEAgLTQzLDYgKzQ3LDEwIEBA
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJVaW50OEFycmF5LmgiCiAK
KyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2VuZGlmCisKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjZW5kaWYKQEAgLTgyLDE1ICs5MCwx
NSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25l
ZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaQogCiAgICAgYm9vbCBtdXN0UmVzdG9yZUZCTyA9
IGZhbHNlOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICA6OmdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsK
LSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKDAsIDAsIG1fY3VycmVudFdp
ZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWln
aHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0gICAgICAgIDo6Z2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsK
KyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1f
ZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50V2lkdGgs
IG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwg
R0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgICAgIG11c3RSZXN0b3JlRkJP
ID0gdHJ1ZTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX2Zibykg
ewogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwotICAgICAgICAgICAgOjpnbEJp
bmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xMDgsOSArMTE2LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2lnbmVkIGNoYXIgKnBpeGVscywgaW50IHBpeGVsc1Np
CiAgICAgICAgIDo6Z2xQaXhlbFN0b3JlaShHTF9QQUNLX0FMSUdOTUVOVCwgcGFja0FsaWdubWVu
dCk7CiAKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKIH0KIAorI2lmIFBM
QVRGT1JNKE1BQykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0
c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcyA9IGNvbnRleHQtPmNhbnZhcygpOwpAQCAtMTM3LDYgKzE0Niw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiAgICAgcGFpbnRUb0NhbnZhcyhwaXhlbHMuZ2V0
KCksIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsCiAgICAgICAgICAgICAgICAgICBj
YW52YXMtPndpZHRoKCksIGNhbnZhcy0+aGVpZ2h0KCksIGltYWdlQnVmZmVyLT5jb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KKyNlbmRpZgogCiBQYXNzUmVmUHRyPEltYWdlRGF0YT4g
R3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIHsK
QEAgLTE2MCw4ICsxNzAsMTMgQEAgUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4
dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogeworI2lmIFBMQVRGT1JN
KFFUKQorICAgIGlmICghbV9pbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuOworI2Vsc2UKICAgICBp
ZiAoIW1fY29udGV4dE9iaikKICAgICAgICAgcmV0dXJuOworI2VuZGlmCiAKICAgICBpZiAod2lk
dGggPT0gbV9jdXJyZW50V2lkdGggJiYgaGVpZ2h0ID09IG1fY3VycmVudEhlaWdodCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk4LDIxICsyMTMsMjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgIGlmIChzYW1wbGVDb3VudCA+
IG1heFNhbXBsZUNvdW50KQogICAgICAgICAgICAgc2FtcGxlQ291bnQgPSBtYXhTYW1wbGVDb3Vu
dDsKICAgICAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVGQk8pOworICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZG
RVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKICAgICAgICAgICAgIG11c3RSZXN0b3JlRkJPID0g
dHJ1ZTsKICAgICAgICAgfQotICAgICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5E
RVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwotICAgICAgICA6OmdsUmVu
ZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBs
ZUNvdW50LCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAgICAgICA6
OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xv
ckJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJf
RVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwgbV9p
bnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
X0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKICAg
ICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKSB7Ci0gICAgICAgICAg
ICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2Ft
cGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIGludGVy
bmFsRGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgIGdsQmlu
ZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRGVwdGhT
dGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBpbnRlcm5hbERlcHRoU3Rl
bmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVu
Y2lsKQotICAgICAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAg
IGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRGVw
dGhTdGVuY2lsQnVmZmVyKTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLmRlcHRoKQotICAgICAg
ICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9F
WFQsIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRp
c2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfREVQVEhfQVRUQUNITUVOVF9F
WFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIp
OwogICAgICAgICB9Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJV
RkZFUl9FWFQsIDApOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVG
RkVSX0VYVCwgMCk7CiAgICAgICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQoR0xf
RlJBTUVCVUZGRVJfRVhUKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURV9FWFQpIHsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBjbGVhbnVwLgogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
QEAgLTIyMiwyMiArMjM3LDIyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50
IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIC8vIHJlc2l6ZSByZWd1bGFyIEZCTwogICAgIGlmICht
X2JvdW5kRkJPICE9IG1fZmJvKSB7CiAgICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAg
ICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsK
KyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7
CiAgICAgfQogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleHR1cmUpOwog
ICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1h
dCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwot
ICAgIDo6Z2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfVEVYVFVSRV8yRCwgbV90ZXh0dXJlLCAwKTsKKyAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRU
QUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOwogICAgIDo6Z2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKICAgICA6OmdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKICAgICA6OmdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7CiAgICAgaWYgKCFtX2F0dHJzLmFudGlhbGlhcyAm
JiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpKSB7Ci0gICAgICAgIDo6Z2xCaW5k
UmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVGRkVSX0VY
VCwgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOworICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQoR0xfUkVOREVSQlVGRkVS
X0VYVCwgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgICAg
ICBpZiAobV9hdHRycy5zdGVuY2lsKQotICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwg
R0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5D
SUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fZGVwdGhTdGVuY2lsQnVm
ZmVyKTsKICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICA6OmdsRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRBQ0hN
RU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAg
ICAgICA6OmdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsKKyAg
ICAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0
ZW5jaWxCdWZmZXIpOworICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVG
RkVSX0VYVCwgMCk7CiAgICAgfQogICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQo
R0xfRlJBTUVCVUZGRVJfRVhUKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURV9FWFQpIHsKICAg
ICAgICAgLy8gRklYTUU6IGNsZWFudXAKQEAgLTI0NSw3ICsyNjAsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICB9CiAKICAgICBp
ZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAg
ICBpZiAobV9ib3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQogICAgICAgICAgICAgbXVzdFJl
c3RvcmVGQk8gPSBmYWxzZTsKICAgICB9CkBAIC0yNzMsNyArMjg4LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgIDo6Z2xH
ZXRJbnRlZ2VydihHTF9TVEVOQ0lMX0NMRUFSX1ZBTFVFLCAmY2xlYXJTdGVuY2lsKTsKICAgICAg
ICAgOjpnbENsZWFyU3RlbmNpbCgwKTsKICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdMX1NURU5D
SUxfV1JJVEVNQVNLLCByZWludGVycHJldF9jYXN0PEdMaW50Kj4oJnN0ZW5jaWxNYXNrKSk7Ci0g
ICAgICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsKKyAg
ICAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCAweGZmZmZmZmZmKTsKICAgICAg
ICAgY2xlYXJNYXNrIHw9IEdMX1NURU5DSUxfQlVGRkVSX0JJVDsKICAgICB9CiAgICAgaXNTY2lz
c29yRW5hYmxlZCA9IDo6Z2xJc0VuYWJsZWQoR0xfU0NJU1NPUl9URVNUKTsKQEAgLTI5MSw3ICsz
MDYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhl
aWdodCkKICAgICB9CiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkgewogICAgICAgICA6OmdsQ2xl
YXJTdGVuY2lsKGNsZWFyU3RlbmNpbCk7Ci0gICAgICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRl
KEdMX0ZST05ULCBzdGVuY2lsTWFzayk7CisgICAgICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShH
TF9GUk9OVCwgc3RlbmNpbE1hc2spOwogICAgIH0KICAgICBpZiAoaXNTY2lzc29yRW5hYmxlZCkK
ICAgICAgICAgOjpnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwpAQCAtMzAzLDcgKzMxOCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog
ICAgICAgICA6OmdsRGlzYWJsZShHTF9ESVRIRVIpOwogCiAgICAgaWYgKG11c3RSZXN0b3JlRkJP
KQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9i
b3VuZEZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgbV9ib3VuZEZCTyk7CiAKICAgICA6OmdsRmx1c2goKTsKIH0KQEAgLTMxOSwxNyArMzM0LDE3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBhcmVUZXh0dXJlKCkKICAgICAgICAgcmV0
dXJuOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlh
cykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJf
RVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxpdEZyYW1lYnVm
ZmVyRVhUKDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY3Vy
cmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVB
Uik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhU
LCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJB
V19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQo
MCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lk
dGgsIG1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKICAg
ICB9Ci0gICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZSgwKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUoMCk7CiAgICAg
OjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAg
IDo6Z2xDb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBtX2ludGVybmFsQ29sb3JGb3Jt
YXQsIDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIDApOwotICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2JvdW5kVGV4dHVyZTApOwotICAgIDo6Z2xBY3Rp
dmVUZXh0dXJlKG1fYWN0aXZlVGV4dHVyZSk7Ci0gICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOworICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbV9ib3VuZFRleHR1cmUwKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUobV9hY3RpdmVU
ZXh0dXJlKTsKKyAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1f
Ym91bmRGQk8pOwogICAgIDo6Z2xGaW5pc2goKTsKICAgICBtX2xheWVyQ29tcG9zaXRlZCA9IHRy
dWU7CiB9CkBAIC0zMzgsNyArMzUzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YWN0aXZl
VGV4dHVyZShHQzNEZW51bSB0ZXh0dXJlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwog
ICAgIG1fYWN0aXZlVGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgOjpnbEFjdGl2ZVRleHR1cmUodGV4
dHVyZSk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKHRleHR1cmUpOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcikKQEAgLTM0NiwyMCArMzYxLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RP
YmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgQVNTRVJUKHNoYWRlcik7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIp
OworICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0s
IEdDM0R1aW50IGluZGV4LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgQVNTRVJUKHByb2dy
YW0pOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCaW5kQXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgZ2xCaW5kQXR0cmli
TG9jYXRpb24ocHJvZ3JhbSwgaW5kZXgsIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRCdWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmlu
ZEJ1ZmZlcih0YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xCaW5kQnVmZmVyKHRhcmdldCwgYnVmZmVy
KTsKIH0KIAogCkBAIC0zNzIsNyArMzg3LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Ymlu
ZEZyYW1lYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIKICAg
ICBlbHNlCiAgICAgICAgIGZibyA9IChtX2F0dHJzLmFudGlhbGlhcyA/IG1fbXVsdGlzYW1wbGVG
Qk8gOiBtX2Zibyk7CiAgICAgaWYgKGZibyAhPSBtX2JvdW5kRkJPKSB7Ci0gICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXJFWFQodGFyZ2V0LCBmYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
ckVYVCh0YXJnZXQsIGZibyk7CiAgICAgICAgIG1fYm91bmRGQk8gPSBmYm87CiAgICAgfQogfQpA
QCAtMzgwLDcgKzM5NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJpbmRGcmFtZWJ1ZmZl
cihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpiaW5kUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9i
amVjdCByZW5kZXJidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIpOworICAgIGdsQmluZFJl
bmRlcmJ1ZmZlckVYVCh0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIApAQCAtNDA3LDcgKzQy
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb24oR0MzRGVudW0gbW9k
ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHQzNEZW51
bSBtb2RlUkdCLCBHQzNEZW51bSBtb2RlQWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwor
ICAgIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9CiAKIApA
QCAtNDIwLDMxICs0MzUsMzEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRGdW5jKEdD
M0RlbnVtIHNmYWN0b3IsIEdDM0RlbnVtIGRmYWN0b3IpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpibGVuZEZ1bmNTZXBhcmF0ZShHQzNEZW51bSBzcmNSR0IsIEdDM0RlbnVtIGRzdFJHQiwgR0Mz
RGVudW0gc3JjQWxwaGEsIEdDM0RlbnVtIGRzdEFscGhhKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIDo6Z2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxw
aGEsIGRzdEFscGhhKTsKKyAgICBnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBz
cmNBbHBoYSwgZHN0QWxwaGEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRHNpemVpcHRyIHNpemUsIEdDM0RlbnVtIHVzYWdlKQog
ewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdldCwg
c2l6ZSwgMCwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIDAsIHVzYWdl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyRGF0YShHQzNEZW51bSB0YXJn
ZXQsIEdDM0RzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHQzNEZW51bSB1c2FnZSkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQnVmZmVyRGF0YSh0YXJnZXQs
IHNpemUsIGRhdGEsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCBkYXRh
LCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlclN1YkRhdGEoR0Mz
RGVudW0gdGFyZ2V0LCBHQzNEaW50cHRyIG9mZnNldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0
IHZvaWQqIGRhdGEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1ZmZl
clN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOworICAgIGdsQnVmZmVyU3ViRGF0
YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CiB9CiAKIEdDM0RlbnVtIEdyYXBoaWNzQ29u
dGV4dDNEOjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXNFWFQodGFyZ2V0KTsKKyAgICByZXR1cm4gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzRVhUKHRh
cmdldCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyQ29sb3IoR0MzRGNsYW1w
ZiByLCBHQzNEY2xhbXBmIGcsIEdDM0RjbGFtcGYgYiwgR0MzRGNsYW1wZiBhKQpAQCAtNTE3LDEz
ICs1MzIsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9y
bTNET2JqZWN0IHNoYWRlcikKICAgICBjb25zdCBDU3RyaW5nJiB0cmFuc2xhdGVkU2hhZGVyQ1N0
cmluZyA9IHRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UudXRmOCgpOwogICAgIGNvbnN0IGNoYXIqIHRy
YW5zbGF0ZWRTaGFkZXJQdHIgPSB0cmFuc2xhdGVkU2hhZGVyQ1N0cmluZy5kYXRhKCk7CiAgICAg
Ci0gICAgOjpnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsICZ0cmFuc2xhdGVkU2hhZGVyUHRyLCAm
dHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7CisgICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAm
dHJhbnNsYXRlZFNoYWRlclB0ciwgJnRyYW5zbGF0ZWRTaGFkZXJMZW5ndGgpOwogICAgIAotICAg
IDo6Z2xDb21waWxlU2hhZGVyKHNoYWRlcik7CisgICAgZ2xDb21waWxlU2hhZGVyKHNoYWRlcik7
CiAgICAgCiAgICAgaW50IEdMQ29tcGlsZVN1Y2Nlc3M7CiAgICAgCi0gICAgOjpnbEdldFNoYWRl
cml2KHNoYWRlciwgQ09NUElMRV9TVEFUVVMsICZHTENvbXBpbGVTdWNjZXNzKTsKKyAgICBnbEdl
dFNoYWRlcml2KHNoYWRlciwgQ09NUElMRV9TVEFUVVMsICZHTENvbXBpbGVTdWNjZXNzKTsKICAg
ICAKICAgICAvLyBBU1NFUlQgdGhhdCBBTkdMRSBnZW5lcmF0ZWQgR0xTTCB3aWxsIGJlIGFjY2Vw
dGVkIGJ5IE9wZW5HTAogICAgIEFTU0VSVChHTENvbXBpbGVTdWNjZXNzID09IEdMX1RSVUUpOwpA
QCAtNTMzLDI4ICs1NDgsMjggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleEltYWdl
MkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNEaW50IGxldmVsLCBHQzNEZW51bQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xC
aW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAgICAg
ICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgs
IHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFS
KTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1f
ZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9E
UkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVY
VCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdo
dCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgfQogICAgIDo6Z2xDb3B5
VGV4SW1hZ2UyRCh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhl
aWdodCwgYm9yZGVyKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9
PSBtX211bHRpc2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlUZXhTdWJJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGludCBsZXZlbCwgR0MzRGludCB4b2Zmc2V0LCBHQzNEaW50IHlvZmZzZXQsIEdDM0RpbnQgeCwg
R0MzRGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRG
Qk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAg
ICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwg
eCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5F
QVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVy
RVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVp
Z2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CiAgICAgOjpnbENv
cHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09
IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJB
TUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y3VsbEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTU4Niw3ICs2MDEs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkZXRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVj
dCBwcm9ncmFtLCBQbGF0Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFT
U0VSVChzaGFkZXIpOwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xEZXRhY2hT
aGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKKyAgICBnbERldGFjaFNoYWRlcihwcm9ncmFtLCBzaGFk
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0RlbnVtIGNhcCkK
QEAgLTU5OCw3ICs2MTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlKEdDM0Rl
bnVtIGNhcCkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eShHQzNEdWludCBpbmRleCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbERpc2FibGVWZXJ0ZXhBdHRy
aWJBcnJheShpbmRleCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRyYXdBcnJheXMo
R0MzRGVudW0gbW9kZSwgR0MzRGludCBmaXJzdCwgR0MzRHNpemVpIGNvdW50KQpAQCAtNjIyLDcg
KzYzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZShHQzNEZW51bSBjYXApCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShHQzNEdWludCBp
bmRleCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmaW5pc2goKQpAQCAtNjQwLDEzICs2NTUs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Zmx1c2goKQogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBh
dHRhY2htZW50LCBHQzNEZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3Qg
YnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwg
YnVmZmVyKTsKKyAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNo
bWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCBidWZmZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIGF0
dGFjaG1lbnQsIEdDM0RlbnVtIHRleHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlLCBH
QzNEaW50IGxldmVsKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xGcmFt
ZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVy
ZSwgbGV2ZWwpOworICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQodGFyZ2V0LCBhdHRhY2ht
ZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC02NTgsNyArNjczLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6ZnJvbnRGYWNlKEdDM0RlbnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpnZW5lcmF0ZU1pcG1hcChHQzNEZW51bSB0YXJnZXQpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdldCk7CisgICAg
Z2xHZW5lcmF0ZU1pcG1hcEVYVCh0YXJnZXQpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRl
eCwgQWN0aXZlSW5mbyYgaW5mbykKQEAgLTY2OSwxMiArNjg0LDEyIEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1
aW50IGluZGV4CiAgICAgfQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1h
eEF0dHJpYnV0ZVNpemUgPSAwOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNU
SVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0cmlidXRlU2l6ZSk7CisgICAgZ2xHZXRQ
cm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RILCAmbWF4QXR0
cmlidXRlU2l6ZSk7CiAgICAgR0xjaGFyIG5hbWVbbWF4QXR0cmlidXRlU2l6ZV07IC8vIEdMX0FD
VElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCBpbmNsdWRlcyBudWxsIHRlcm1pbmF0aW9uCiAgICAg
R0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBzaXplID0gMDsKICAgICBHTGVudW0g
dHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0
cmlidXRlU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CisgICAgZ2xHZXRB
Y3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgsIG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3Ro
LCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogICAgIGlmICghbmFtZUxlbmd0aCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGluZm8ubmFtZSA9IFN0cmluZyhuYW1lLCBuYW1lTGVuZ3RoKTsKQEAg
LTY5MSwxMiArNzA2LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEFjdGl2ZVVuaWZv
cm0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEdWludCBpbmRlCiAgICAgfQogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IG1heFVuaWZvcm1TaXplID0gMDsKLSAgICA6
OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZt
YXhVbmlmb3JtU2l6ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VO
SUZPUk1fTUFYX0xFTkdUSCwgJm1heFVuaWZvcm1TaXplKTsKICAgICBHTGNoYXIgbmFtZVttYXhV
bmlmb3JtU2l6ZV07IC8vIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEggaW5jbHVkZXMgbnVs
bCB0ZXJtaW5hdGlvbgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6
ZSA9IDA7CiAgICAgR0xlbnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVVbmlmb3JtKHBy
b2dyYW0sIGluZGV4LCBtYXhVbmlmb3JtU2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwg
bmFtZSk7CisgICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0sIGluZGV4LCBtYXhVbmlmb3Jt
U2l6ZSwgJm5hbWVMZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAgICAgaWYgKCFuYW1lTGVu
Z3RoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaW5mby5uYW1lID0gU3RyaW5nKG5hbWUs
IG5hbWVMZW5ndGgpOwpAQCAtNzEyLDcgKzcyNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldEF0dGFjaGVkU2hhZGVycyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RzaXplaSBt
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291bnQsIHNoYWRlcnMp
OworICAgIGdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hh
ZGVycyk7CiB9CiAKIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmIG5hbWUpCkBAIC03MjEsNyArNzM2
LDcgQEAgaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xHZXRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIHJldHVybiBnbEdldEF0dHJpYkxvY2F0
aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRDb250ZXh0QXR0cmlidXRlcygpCkBA
IC03NjAsNyArNzc1LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzQnVmZmVy
KFBsYXRmb3JtM0RPYmplY3QgYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzQnVmZmVyKGJ1ZmZlcik7
CisgICAgcmV0dXJuIGdsSXNCdWZmZXIoYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xlYW4gR3JhcGhp
Y3NDb250ZXh0M0Q6OmlzRW5hYmxlZChHQzNEZW51bSBjYXApCkBAIC03NzUsNyArNzkwLDcgQEAg
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzRnJhbWVidWZmZXIoUGxhdGZvcm0zRE9i
amVjdCBmcmFtZWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc0ZyYW1lYnVmZmVyRVhUKGZyYW1lYnVm
ZmVyKTsKKyAgICByZXR1cm4gZ2xJc0ZyYW1lYnVmZmVyRVhUKGZyYW1lYnVmZmVyKTsKIH0KIAog
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0
IHByb2dyYW0pCkBAIC03ODQsNyArNzk5LDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0
M0Q6OmlzUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNQ
cm9ncmFtKHByb2dyYW0pOworICAgIHJldHVybiBnbElzUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAog
R0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RP
YmplY3QgcmVuZGVyYnVmZmVyKQpAQCAtNzkzLDcgKzgwOCw3IEBAIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgcmV0dXJuIDo6Z2xJc1JlbmRlcmJ1ZmZlckVYVChyZW5kZXJidWZmZXIpOworICAgIHJl
dHVybiBnbElzUmVuZGVyYnVmZmVyRVhUKHJlbmRlcmJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKQEAg
LTgwMiw3ICs4MTcsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNTaGFkZXIoc2hhZGVyKTsK
KyAgICByZXR1cm4gZ2xJc1NoYWRlcihzaGFkZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFwaGlj
c0NvbnRleHQzRDo6aXNUZXh0dXJlKFBsYXRmb3JtM0RPYmplY3QgdGV4dHVyZSkKQEAgLTgyNCw3
ICs4MzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpsaW5rUHJvZ3JhbShQbGF0Zm9ybTNE
T2JqZWN0IHByb2dyYW0pCiB7CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xMaW5rUHJvZ3JhbShwcm9ncmFtKTsKKyAgICBnbExpbmtQcm9n
cmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwaXhlbFN0b3JlaShH
QzNEZW51bSBwbmFtZSwgR0MzRGludCBwYXJhbSkKQEAgLTg0NiwxNSArODYxLDE1IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0Rz
aXplaSB3aWR0aCwgR0MzRHNpCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgOjpnbEZs
dXNoKCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0
aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJB
TUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgICAgICA6OmdsQmxp
dEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdp
ZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotICAgICAg
ICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVC
VUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHgg
KyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xP
Ul9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAgOjpnbEZsdXNoKCk7CiAgICAgfQog
ICAgIDo6Z2xSZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0
YSk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8gPT0gbV9tdWx0aXNh
bXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpyZWxlYXNlU2hhZGVyQ29tcGlsZXIoKQpAQCAtODgyLDcgKzg5Nyw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEZW51bSBpbnRlcm5hbGZvCiAgICAgICAgIGludGVybmFsZm9ybWF0ID0gR0xfUkdCOwogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VFWFQodGFyZ2V0
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgZ2xSZW5kZXJidWZmZXJTdG9y
YWdlRVhUKHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzYW1wbGVDb3ZlcmFnZShHQzNEY2xhbXBmIHZhbHVlLCBHQzNE
Ym9vbGVhbiBpbnZlcnQpCkBAIC05MTksNyArOTM0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6c3RlbmNpbEZ1bmMoR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2sp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsRnVuY1NlcGFyYXRlKEdDM0RlbnVtIGZh
Y2UsIEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWludCBtYXNrKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1
bmMsIHJlZiwgbWFzayk7CisgICAgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlKGZhY2UsIGZ1bmMsIHJl
ZiwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1
aW50IG1hc2spCkBAIC05MzEsNyArOTQ2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3Rl
bmNpbE1hc2soR0MzRHVpbnQgbWFzaykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxN
YXNrU2VwYXJhdGUoR0MzRGVudW0gZmFjZSwgR0MzRHVpbnQgbWFzaykKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsK
KyAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwgbWFzayk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0Mz
RGVudW0genBhc3MpCkBAIC05NDMsNyArOTU4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxPcFNlcGFyYXRlKEdDM0RlbnVtIGZhY2Us
IEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBHQzNEZW51bSB6cGFzcykKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFp
bCwgemZhaWwsIHpwYXNzKTsKKyAgICBnbFN0ZW5jaWxPcFNlcGFyYXRlKGZhY2UsIGZhaWwsIHpm
YWlsLCB6cGFzcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmYo
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0IHZhbHVlKQpAQCAtOTYx
LDEzMCArOTc2LDEzMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJhbWV0ZXJpKEdD
M0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgdgogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybTFmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCkKIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7
CisgICAgZ2xVbmlmb3JtMWYobG9jYXRpb24sIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTFmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9y
bTFmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMmYoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbWFrZUNv
bnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKKyAg
ICBnbFVuaWZvcm0yZihsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTJmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgMgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMmZ2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMmZ2KGxvY2F0aW9uLCBzaXplLCBh
cnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZihHQzNEaW50IGxv
Y2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2
MSwgdjIpOworICAgIGdsVW5pZm9ybTNmKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xVbmlmb3JtM2Z2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtM2Z2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm00ZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZs
b2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRm
KGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OnVuaWZvcm00ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDQKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTRmdihsb2NhdGlv
biwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWkoR0MzRGludCBsb2NhdGlv
biwgR0MzRGludCB2MCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5p
Zm9ybTFpKGxvY2F0aW9uLCB2MCk7CisgICAgZ2xVbmlmb3JtMWkobG9jYXRpb24sIHYwKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpdihHQzNEaW50IGxvY2F0aW9uLCBH
QzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgOjpnbFVuaWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVu
aWZvcm0xaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6dW5pZm9ybTJpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yaShsb2NhdGlv
biwgdjAsIHYxKTsKKyAgICBnbFVuaWZvcm0yaShsb2NhdGlvbiwgdjAsIHYxKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTJpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50
KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0
byBiZSBhIG11bHRpcGxlIG9mIDIKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
VW5pZm9ybTJpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJpdihsb2Nh
dGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3Jt
M2koR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0MzRGludCB2MikK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTNpKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zaShsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbFVuaWZvcm0zaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0z
aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0Rp
bnQgdjIsIEdDM0RpbnQgdjMpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bFVuaWZvcm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOworICAgIGdsVW5pZm9ybTRpKGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVu
aWZvcm00aXYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXpl
KQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm00aXYobG9jYXRpb24sIHNp
emUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybU1hdHJpeDJmdihHQzNEaW50IGxvY2F0
aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBz
aXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA0
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgyZnYobG9j
YXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm1NYXRyaXgzZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJh
bnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhN
RTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOQogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIDo6Z2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bv
c2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4
NGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBh
cnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBi
ZSBhIG11bHRpcGxlIG9mIDE2CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVu
aWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVzZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9n
cmFtKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVc2VQcm9ncmFtKHBy
b2dyYW0pOworICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dmFsaWRhdGVQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKQEAgLTEw
OTIsNjEgKzExMDcsNjEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmFsaWRhdGVQcm9ncmFt
KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwor
ICAgIGdsVmFsaWRhdGVQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIxZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYwKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjAp
OworICAgIGdsVmVydGV4QXR0cmliMWYoaW5kZXgsIHYwKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dmVydGV4QXR0cmliMWZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIxZnYo
aW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjFmdihpbmRleCwgYXJyYXkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIyZihHQzNEdWludCBpbmRleCwg
R0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFZlcnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOworICAgIGdsVmVydGV4QXR0
cmliMmYoaW5kZXgsIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYjJmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7
CisgICAgZ2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliM2YoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCwg
R0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFZlcnRleEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKKyAgICBnbFZlcnRl
eEF0dHJpYjNmKGluZGV4LCB2MCwgdjEsIHYyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dmVydGV4QXR0cmliM2Z2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgs
IGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJpYjNmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZihHQzNEdWludCBpbmRleCwgR0MzRGZs
b2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAs
IHYxLCB2MiwgdjMpOworICAgIGdsVmVydGV4QXR0cmliNGYoaW5kZXgsIHYwLCB2MSwgdjIsIHYz
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGZ2KEdDM0R1aW50
IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIDo6Z2xWZXJ0ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKKyAgICBnbFZlcnRleEF0dHJp
YjRmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhB
dHRyaWJQb2ludGVyKEdDM0R1aW50IGluZGV4LCBHQzNEaW50IHNpemUsIEdDM0RlbnVtIHR5cGUs
IEdDM0Rib29sZWFuIG5vcm1hbGl6ZWQsIEdDM0RzaXplaSBzdHJpZGUsIEdDM0RpbnRwdHIgb2Zm
c2V0KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9mZnNldCkpKTsKKyAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwg
cmVpbnRlcnByZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2aWV3cG9ydChHQzNEaW50IHgsIEdDM0Rp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQpAQCAtMTE2NCw3ICsxMTc5
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Qm9vbGVhbnYoR0MzRGVudW0gcG5hbWUs
IEdDM0Rib29sZWFuKiB2YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRCdWZmZXJQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdih0
YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZs
b2F0dihHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKQEAgLTExNzgsNyArMTE5Myw3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAg
ICAgaWYgKGF0dGFjaG1lbnQgPT0gREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgICAgICBh
dHRhY2htZW50ID0gREVQVEhfQVRUQUNITUVOVDsgLy8gT3IgU1RFTkNJTF9BVFRBQ0hNRU5ULCBl
aXRoZXIgd29ya3MuCi0gICAgOjpnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2
RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2RVhUKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHZh
bHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0g
cG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTIwOSw3ICsxMjI0LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW50ZWdlcnYoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbWl2KFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsK
KyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUpOwogfQogCiBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJv
Z3JhbSkKQEAgLTEyMTgsMTQgKzEyMzMsMTQgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpn
ZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBsZW5ndGg7Ci0gICAgOjpnbEdldFByb2dyYW1pdihw
cm9ncmFtLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOworICAgIGdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgaWYgKCFsZW5ndGgp
CiAgICAgICAgIHJldHVybiAiIjsKIAogICAgIEdMc2l6ZWkgc2l6ZTsKICAgICBHTGNoYXIqIGlu
Zm8gPSAoR0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogCi0gICAgOjpnbEdldFByb2dyYW1J
bmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgIGdsR2V0UHJvZ3JhbUlu
Zm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAgICAgU3RyaW5nIHMoaW5mbyk7
CiAgICAgZmFzdEZyZWUoaW5mbyk7CiAgICAgcmV0dXJuIHM7CkBAIC0xMjM0LDcgKzEyNDksNyBA
QCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RP
YmplY3QgcHJvZ3JhbSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNEZW51
bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xMjUwLDcgKzEyNjUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwgR0MzRGVu
dW0gcG5hbWUsIEdDMwogICAgICAgICBjYXNlIFNIQURFUl9UWVBFOgogICAgICAgICAgICAgLy8g
TGV0IE9wZW5HTCBoYW5kbGUgdGhlc2UuCiAgICAgICAgIAotICAgICAgICAgICAgOjpnbEdldFNo
YWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKKyAgICAgICAgICAgIGdsR2V0U2hhZGVyaXYo
c2hhZGVyLCBwbmFtZSwgdmFsdWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAg
ICAgICBjYXNlIENPTVBJTEVfU1RBVFVTOgpAQCAtMTI5NSwxNCArMTMxMCwxNCBAQCBTdHJpbmcg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlckluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCiAKICAgICAgaWYgKGVudHJ5LmlzVmFsaWQpIHsKICAgICAgICAgIEdMaW50IGxlbmd0aDsK
LSAgICAgICAgIDo6Z2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxl
bmd0aCk7CisgICAgICAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RI
LCAmbGVuZ3RoKTsKICAgICAgICAgIGlmICghbGVuZ3RoKQogICAgICAgICAgICAgIHJldHVybiAi
IjsKIAogICAgICAgICAgR0xzaXplaSBzaXplOwogICAgICAgICAgR0xjaGFyKiBpbmZvID0gKEdM
Y2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKIAotICAgICAgICAgOjpnbEdldFNoYWRlckluZm9M
b2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICAgICAgIGdsR2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOwogCiAgICAgICAgICBTdHJpbmcgcyhp
bmZvKTsKICAgICAgICAgIGZhc3RGcmVlKGluZm8pOwpAQCAtMTM0MSwxMyArMTM1NiwxMyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRUZXhQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIHBuYW1lLCBHQzNEaQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5pZm9y
bWZ2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0
KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VW5pZm9y
bWZ2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtZnYocHJvZ3Jh
bSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VW5p
Zm9ybWl2KFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRGludCBsb2NhdGlvbiwgR0MzRGlu
dCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFVuaWZv
cm1pdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWl2KHByb2dy
YW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIEdDM0RpbnQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTEzNTUsMTkgKzEzNzAsMTkgQEAgR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3QKICAg
ICBBU1NFUlQocHJvZ3JhbSk7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1
cm4gOjpnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIHJldHVybiBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRh
KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJmdihHQzNE
dWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFt
ZSwgdmFsdWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYml2KEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFs
dWUpOworICAgIGdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2YWx1ZSk7CiB9CiAK
IEdDM0RzaXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdD
M0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSkKQEAgLTEzNzUsNyArMTM5MCw3IEBAIEdDM0Rz
aXplaXB0ciBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliT2Zmc2V0KEdDM0R1aW50
IGluZGV4LCBHQzNEZW51bSBwCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAKICAgICBHTHZv
aWQqIHBvaW50ZXIgPSAwOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihpbmRleCwg
cG5hbWUsICZwb2ludGVyKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBw
bmFtZSwgJnBvaW50ZXIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxHQzNEc2l6ZWlwdHI+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHBvaW50ZXIpKTsKIH0KIApAQCAtMTUwNiwxMiArMTUy
MSwxNCBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAog
ICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KIAorI2lmICFQTEFURk9STShRVCkKIEV4
dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogewogICAgIGlm
ICghbV9leHRlbnNpb25zKQogICAgICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0
ZW5zaW9uczNET3BlbkdMKHRoaXMpKTsKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwog
fQorI2VuZGlmCiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwCmluZGV4IDNhZGM5M2YuLjc5MDhiNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25z
M0RRdC5jcHAKQEAgLTM0LDcgKzM0LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1FeHRl
bnNpb25zM0RRdDo6RXh0ZW5zaW9uczNEUXQoKQorRXh0ZW5zaW9uczNEUXQ6OkV4dGVuc2lvbnMz
RFF0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQorICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9F
eHRlbnNpb25zM0RRdC5oCmluZGV4IGM2N2ZiZWQuLmE3Yzg2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaApAQCAtNDgs
NyArNDgsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVl
ZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9u
cy4KICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0gICAgRXh0ZW5zaW9uczNE
UXQoKTsKKyAgICBFeHRlbnNpb25zM0RRdChjbGFzcyBHcmFwaGljc0NvbnRleHQzRCopOworCisg
ICAgLy8gV2VhayBwb2ludGVyIGJhY2sgdG8gR3JhcGhpY3NDb250ZXh0M0QKKyAgICBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RQcm9jcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oCmluZGV4IGYwMjA0MjYuLjA5OGVjYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNE
UHJvY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGlj
c0NvbnRleHQzRFByb2NzLmgKQEAgLTIsNDEgKzIsNDIgQEAgR0xfUFJPQyh2b2lkLCBnbEFjdGl2
ZVRleHR1cmUsIChHTGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRlciwgKEdMdWlu
dCwgR0x1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIChHTHVpbnQs
IEdMdWludCwgY29uc3QgY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRCdWZmZXIsIChHTGVu
dW0sIEdMdWludCkpCi1HTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyLCAoR0xlbnVtLCBH
THVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIChHTGVudW0sIEdMdWlu
dCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyRVhULCAoR0xlbnVtLCBHTHVpbnQp
KQorR0xfUFJPQyh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXJFWFQsIChHTGVudW0sIEdMdWludCkp
CiBHTF9QUk9DKHZvaWQsIGdsQmxlbmRDb2xvciwgKEdMY2xhbXBmLCBHTGNsYW1wZiwgR0xjbGFt
cGYsIEdMY2xhbXBmKSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0xlbnVtKSkK
IEdMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHTGVudW0sIEdMZW51bSkp
CiBHTF9QUk9DKHZvaWQsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIChHTGVudW0gc3JjUkdCLCBHTGVu
dW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkpCitHTF9QUk9DKHZv
aWQsIGdsQmxpdEZyYW1lYnVmZmVyRVhULCAoR0xpbnQsIEdMaW50LCBHTGludCwgR0xpbnQsIEdM
aW50LCBHTGludCwgR0xpbnQsIEdMaW50LCBHTGJpdGZpZWxkLCBHTGVudW0pKTsKIEdMX1BST0Mo
dm9pZCwgZ2xCdWZmZXJEYXRhLCAoR0xlbnVtLCBHTHNpemVpcHRyLCBjb25zdCBHTHZvaWQqLCBH
TGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEsIChHTGVudW0sIEdMaW50cHRy
LCBHTHNpemVpcHRyLCBjb25zdCBHTHZvaWQqKSkKLUdMX1BST0MoR0xlbnVtLCBnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMsIChHTGVudW0pKQorR0xfUFJPQyhHTGVudW0sIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1c0VYVCwgKEdMZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsQ29tcGlsZVNoYWRlciwg
KEdMdWludCkpCiBHTF9QUk9DKEdMdWludCwgZ2xDcmVhdGVQcm9ncmFtLCAoKSkKIEdMX1BST0Mo
R0x1aW50LCBnbENyZWF0ZVNoYWRlciwgKEdMZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsRGVsZXRl
QnVmZmVycywgKEdMc2l6ZWksIGNvbnN0IEdMdWludCopKQotR0xfUFJPQyh2b2lkLCBnbERlbGV0
ZUZyYW1lYnVmZmVycywgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KikpCitHTF9QUk9DKHZvaWQs
IGdsRGVsZXRlRnJhbWVidWZmZXJzRVhULCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKIEdM
X1BST0Modm9pZCwgZ2xEZWxldGVQcm9ncmFtLCAoR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xE
ZWxldGVSZW5kZXJidWZmZXJzLCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqKSkKK0dMX1BST0Mo
dm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhULCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQq
KSkKIEdMX1BST0Modm9pZCwgZ2xEZWxldGVTaGFkZXIsIChHTHVpbnQpKQogR0xfUFJPQyh2b2lk
LCBnbERldGFjaFNoYWRlciwgKEdMdWludCwgR0x1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXksIChHTHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5LCAoR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlciwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCkpCi1HTF9QUk9DKHZv
aWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVp
bnQsIEdMaW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwg
KEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdMdWludCkpCitHTF9QUk9DKHZvaWQsIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkRFWFQsIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdMaW50
KSkKIEdMX1BST0Modm9pZCwgZ2xHZW5CdWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCi1HTF9Q
Uk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIChHTGVudW0gdGFyZ2V0KSkKLUdMX1BST0Modm9p
ZCwgZ2xHZW5GcmFtZWJ1ZmZlcnMsIChHTHNpemVpLCBHTHVpbnQqKSkKLUdMX1BST0Modm9pZCwg
Z2xHZW5SZW5kZXJidWZmZXJzLCAoR0xzaXplaSwgR0x1aW50KikpCitHTF9QUk9DKHZvaWQsIGds
R2VuZXJhdGVNaXBtYXBFWFQsIChHTGVudW0gdGFyZ2V0KSkKK0dMX1BST0Modm9pZCwgZ2xHZW5G
cmFtZWJ1ZmZlcnNFWFQsIChHTHNpemVpLCBHTHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZW5S
ZW5kZXJidWZmZXJzRVhULCAoR0xzaXplaSwgR0x1aW50KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0
QWN0aXZlQXR0cmliLCAoR0x1aW50LCBHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBHTGludCos
IEdMZW51bSosIEdMY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZVVuaWZvcm0sIChH
THVpbnQsIEdMdWludCwgR0xzaXplaSwgR0xzaXplaSosIEdMaW50KiwgR0xlbnVtKiwgR0xjaGFy
KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0x1aW50LCBHTHNpemVp
LCBHTHNpemVpKiwgR0x1aW50KikpCiBHTF9QUk9DKEdMaW50LCBnbEdldEF0dHJpYkxvY2F0aW9u
LCAoR0x1aW50LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1l
dGVyaXYsIChHTGVudW0sIEdMZW51bSwgR0xpbnQqKSkKLUdMX1BST0Modm9pZCwgZ2xHZXRGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdMZW51bSwgR0xlbnVtLCBHTGVudW0sIEdM
aW50KiBwYXJhbXMpKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2RVhULCAoR0xlbnVtLCBHTGVudW0sIEdMZW51bSwgR0xpbnQqIHBhcmFtcykpCiBH
TF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbUluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6
ZWkqLCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0UHJvZ3JhbWl2LCAoR0x1aW50LCBHTGVu
dW0sIEdMaW50KikpCi1HTF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYs
IChHTGVudW0sIEdMZW51bSwgR0xpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRSZW5kZXJidWZm
ZXJQYXJhbWV0ZXJpdkVYVCwgKEdMZW51bSwgR0xlbnVtLCBHTGludCopKQogR0xfUFJPQyh2b2lk
LCBnbEdldFNoYWRlckluZm9Mb2csIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6ZWkqLCBjaGFyKikp
CiBHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVyaXYsIChHTHVpbnQsIEdMZW51bSwgR0xpbnQqKSkK
IEdMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJTb3VyY2UsIChHTHVpbnQsIEdMc2l6ZWksIEdMc2l6
ZWkqLCBjaGFyKikpCkBAIC00NywxMiArNDgsMTMgQEAgR0xfUFJPQyh2b2lkLCBnbEdldFZlcnRl
eEF0dHJpYmZ2LCAoR0x1aW50LCBHTGVudW0sIEdMZmxvYXQqKSkKIEdMX1BST0Modm9pZCwgZ2xH
ZXRWZXJ0ZXhBdHRyaWJpdiwgKEdMdWludCwgR0xlbnVtLCBHTGludCopKQogR0xfUFJPQyh2b2lk
LCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2LCAoR0x1aW50LCBHTGVudW0sIEdMdm9pZCoqKSkK
IEdMX1BST0MoR0xib29sZWFuLCBnbElzQnVmZmVyLCAoR0x1aW50KSkKLUdMX1BST0MoR0xib29s
ZWFuLCBnbElzRnJhbWVidWZmZXIsIChHTHVpbnQpKQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNG
cmFtZWJ1ZmZlckVYVCwgKEdMdWludCkpCiBHTF9QUk9DKEdMYm9vbGVhbiwgZ2xJc1Byb2dyYW0s
IChHTHVpbnQpKQotR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXIsIChHTHVpbnQp
KQorR0xfUFJPQyhHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXJFWFQsIChHTHVpbnQpKQogR0xf
UFJPQyhHTGJvb2xlYW4sIGdsSXNTaGFkZXIsIChHTHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbExp
bmtQcm9ncmFtLCAoR0x1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
LCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwoR0xlbnVtLCBHTHNpemVpLCBHTGVudW0s
IEdMc2l6ZWksIEdMc2l6ZWkpKTsKK0dMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
RVhULCAoR0xlbnVtLCBHTGVudW0sIEdMc2l6ZWksIEdMc2l6ZWkpKQogR0xfUFJPQyh2b2lkLCBn
bFNhbXBsZUNvdmVyYWdlLCAoR0xjbGFtcGYsIEdMYm9vbGVhbikpCiBHTF9QUk9DKHZvaWQsIGds
U2hhZGVyU291cmNlLCAoR0x1aW50LCBHTHNpemVpLCBjb25zdCBjaGFyKiosIGNvbnN0IEdMaW50
KikpCiBHTF9QUk9DKHZvaWQsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgKEdMZW51bSwgR0xlbnVt
LCBHTGludCwgR0x1aW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggYzE4NDZmMC4uOWM4
NDMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTk3LDYgKzk3LDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0
eWxlT3B0aW9uR3JhcGgKIHsKICAgICBRX1VOVVNFRCh3aWRnZXQpOwogCisgICAgbV9jb250ZXh0
LT5wcmVwYXJlVGV4dHVyZSgpOworCiAgICAgUVJlY3RGIHJlY3QgPSBvcHRpb24gPyBvcHRpb24t
PnJlY3QgOiBib3VuZGluZ1JlY3QoKTsKIAogICAgIC8vIFVzZSBkaXJlY3QgdGV4dHVyZSBtYXBw
aW5nIGlmIFdlYkdMIGNhbnZhcyBoYXMgYSBzaGFyZWQgT3BlbkdMIGNvbnRleHQKQEAgLTExMywx
NSArMTE1LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50
ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoCiAKICAgICBtX2dsV2lkZ2V0LT5t
YWtlQ3VycmVudCgpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJv
KTsKLSNlbHNlCiAgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOworI2Vsc2UKKyAgICBtX2NvbnRl
eHQtPmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jb250ZXh0LT5tX2Zibyk7CiAjZW5kaWYKICAgICBnbFJlYWRQaXhlbHMoLyogeCAqLyAwLCAv
KiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CisK
ICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRmJvKTsKLSNlbHNl
CiAgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Nv
bnRleHQtPm1fZmJvKTsKICNlbmRpZgogCiAgICAgLy8gT3BlbkdMIGdpdmVzIHVzIEFCR1Igb24g
MzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0aGUgYm90dG9tIGxlZnQKQEAgLTE5OSw2
ICsyMDIsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgICwgbV9tdWx0aXNhbXBsZURl
cHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKDApCiAg
ICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRleHQzREludGVybmFsKHRoaXMsIGhvc3RX
aW5kb3cpKQorCiB7CiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBtX2F0dHJzLnN0
ZW5jaWwgPSBmYWxzZTsKQEAgLTIyNyw3ICsyMzEsMTkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6Okdy
YXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0
V2kKICAgICB9CiAKICAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCisj
aWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmbV9mYm8pOworI2Vsc2UKKyAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgvKiBjb3Vu
dCAqLyAxLCAmbV9mYm8pOworI2VuZGlmCisKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1
cmUpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1f
dGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1Qs
IEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwpAQCAtMjM4LDExICsyNTQsMTkg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGlmIChtX2F0dHJzLmRlcHRoKQorI2lmIGRl
ZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3Vu
dCAqLyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOworI2Vsc2UKKyAgICAgICAgZ2xHZW5SZW5k
ZXJidWZmZXJzRVhUKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjZW5k
aWYKIAogICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3Ig
dG8gYmxhY2suCiAgICAgbV9ib3VuZEZCTyA9IG1fZmJvOworI2lmIGRlZmluZWQoUVRfT1BFTkdM
X0VTXzIpCiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSLCBtX2Zibyk7CisjZWxzZQorICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworI2VuZGlmCiAgICAgZ2xDbGVhckNvbG9yKDAu
MCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKQEAgLTI3OSw2ICszMDMsNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhDYW52YXNSZW5kZXJpbmdD
b250ZXh0KiBjbwogICAgIG1faW50ZXJuYWwtPnBhaW50KHBhaW50ZXIsIDAsIDApOwogfQogCisj
aWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKIFBhc3NSZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQogewogICAgIC8v
IEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGltcGxlbWVudGVkIGZvciBwcm9wZXIgbm9uLXByZW11
bHRpcGxpZWQtYWxwaGEKQEAgLTEzOTQsMTEgKzE0MTksMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sYXllckNvbXBv
c2l0ZWQ7CiB9CisjZW5kaWYKIAogRXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5z
aW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCk7CisgICAgICAgIG1fZXh0ZW5zaW9u
cyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCh0aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0
ZW5zaW9ucy5nZXQoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87500</attachid>
            <date>2011-03-30 04:21:01 -0700</date>
            <delta_ts>2011-03-30 05:15:18 -0700</delta_ts>
            <desc>Adapted to symbol resolver changes.</desc>
            <filename>57261.diff</filename>
            <type>text/plain</type>
            <size>56977</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggNDI1MWQ3My4uMjYyMDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0
MTEsNiArMzQxMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJLaXRMb3NlQ29udGV4dC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXApAQCAtMzQyMCw2ICszNDIx
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKICAgICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMv
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xP
YmplY3QuY3BwIFwKQEAgLTM0NDAsMTMgKzM0NDIsMTExIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKIAogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFBX
RC9wbGF0Zm9ybS9ncmFwaGljcy9ncHUKKworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdW51
c2VkLXZhcmlhYmxlCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby1taXNzaW5nLW5vcmV0dXJu
CisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtZnVuY3Rpb24KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXBhcmVudGhlc2VzCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby10
eXBlLWxpbWl0cworCisgICAgREVGSU5FUyArPSBZWUVOQUJMRV9OTFM9MCBZWUxUWVBFX0lTX1RS
SVZJQUw9MAorCisgICAgQU5HTEVfRElSID0gJCRyZXBsYWNlKFBXRCwgIldlYkNvcmUiLCAiVGhp
cmRQYXJ0eS9BTkdMRSIpCisKKyAgICBJTkNMVURFUEFUSCArPSAkJEFOR0xFX0RJUi9zcmMgJCRB
TkdMRV9ESVIvaW5jbHVkZQorCisgICAgSEVBREVSUyArPSBcCisgICAgICAgICQkQU5HTEVfRElS
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9Db21tb24uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIv
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZURsbC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemVHbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5p
dGlhbGl6ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQ
YXJzZUNvbnRleHQuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9sb2NhbGludGVybWVk
aWF0ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL01NYXAuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9vc2luY2x1ZGUuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L2F0b20uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
Y29tcGlsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9jcHAuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
bWVtb3J5LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L3BhcnNlci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9wcmVwcm9jZXNzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3Ivc2xnbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL3N5bWJvbHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvdG9rZW5zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvUXVhbGlmaWVyQWxpdmUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9S
ZW1vdmVUcmVlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2VhcmNoU3lt
Ym9sLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9UeXBlcy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1VuZm9sZFNlbGVjdC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0
aWwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuaCBcCisKKyAg
ICBTT1VSQ0VTICs9IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvZGVHZW5H
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2RlYnVnLmNwcCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL0luZm9TaW5rLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0
aWFsaXplRGxsLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRlcm1l
ZGlhdGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2ludGVybU91dC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvYXRvbS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9jcHAuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvY3Bwc3RydWN0LmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1JlbW92ZVRyZWUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1NlYXJjaFN5bWJvbC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JH
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExT
TC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVW5mb2xkU2VsZWN0LmNw
cCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci91dGlsLmNwcCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmNwcCBcCiB9CiAKIHdpbjMyOiF3
aW4zMi1nKysqOmNvbnRhaW5zKFFNQUtFX0hPU1QuYXJjaCwgeDg2XzY0KTp7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAppbmRl
eCA3YmRkYmY0Li5jODc1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKQEAgLTI2LDcgKzI2LDExIEBACiAjaWZuZGVm
IEFOR0xFV2ViS2l0QnJpZGdlX2gKICNkZWZpbmUgQU5HTEVXZWJLaXRCcmlkZ2VfaAogCisjaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSAiQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcu
aCIKKyNlbHNlCiAjaW5jbHVkZSAiQU5HTEUvU2hhZGVyTGFuZy5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IGYzOTZiYjEuLmM1YzZkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTUsNiArNTUsNyBAQCBj
bGFzcyBDQUxheWVyOwogY2xhc3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUVBhaW50ZXI7CiBjbGFzcyBRUmVjdDsKQEAgLTQ3OSw3ICs0ODAsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29u
c3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oQ0hST01JVU0pCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkg
fHwgUExBVEZPUk0oUVQpCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20g
bXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgp
OwogI2VuZGlmCkBAIC04NjIsNyArODYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBBbHBoYU9wIGFscGhhT3AsCiAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0aW9u
RGF0YSk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShRVCkKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250
ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFu
ZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBu
b3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKQEAg
LTkwMCwxMCArOTAxLDkgQEAgcHVibGljOgogICAgIH0gU2hhZGVyU291cmNlRW50cnk7CiAgICAg
SGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3Vy
Y2VNYXA7CiAKKyAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwotICAgIEFOR0xFV2Vi
S2l0QnJpZGdlIG1fY29tcGlsZXI7Ci0KICAgICBPd25QdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBt
X2V4dGVuc2lvbnM7CiAjZW5kaWYKIApAQCAtOTMzLDcgKzkzMyw2IEBAIHB1YmxpYzoKICAgICAv
LyBFcnJvcnMgcmFpc2VkIGJ5IHN5bnRoZXNpemVHTEVycm9yKCkuCiAgICAgTGlzdEhhc2hTZXQ8
R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogI2VuZGlmCi0KICAgICAvLyBGSVhNRTogaWRl
YWxseSB0aGlzIHdvdWxkIGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KICNpZiBQTEFURk9STShD
SFJPTUlVTSkgfHwgUExBVEZPUk0oUVQpCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBj
MTI1ZTk0Li5lYTg2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAK
QEAgLTMzLDcgKzMzLDExIEBACiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisj
aWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKKyNlbHNlCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCisjZW5kaWYKICNpbmNsdWRlICJGbG9hdDMyQXJy
YXkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgpAQCAtNDMsNiArNDcsMTEgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PGNzdHJpbmc+CisjaW5jbHVkZSA8UXRPcGVuR0wvUXRPcGVuR0w+CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbmRpZgpAQCAtODIsMTUgKzkx
LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2ln
bmVkIGNoYXIgKnBpeGVscywgaW50IHBpeGVsc1NpCiAKICAgICBib29sIG11c3RSZXN0b3JlRkJP
ID0gZmFsc2U7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8p
OwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhU
LCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhl
aWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8p
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJlbnRXaWR0
aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0
LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAgbXVzdFJlc3RvcmVG
Qk8gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2JvdW5kRkJPICE9IG1fZmJv
KSB7CiAgICAgICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEwOCw5ICsxMTcsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxz
U2kKICAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25t
ZW50KTsKIAogICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOwogfQogCisjaWYg
UExBVEZPUk0oTUFDKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CkBAIC0xMzcsNiArMTQ3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBwYWludFRvQ2FudmFzKHBpeGVscy5n
ZXQoKSwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwKICAgICAgICAgICAgICAgICAg
IGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCkpOwogfQorI2VuZGlmCiAKIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQog
ewpAQCAtMTYwLDggKzE3MSwxMyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250
ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CisjaWYgUExBVEZP
Uk0oUVQpCisgICAgaWYgKCFtX2ludGVybmFsKQorICAgICAgICByZXR1cm47CisjZWxzZQogICAg
IGlmICghbV9jb250ZXh0T2JqKQogICAgICAgICByZXR1cm47CisjZW5kaWYKIAogICAgIGlmICh3
aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KQogICAg
ICAgICByZXR1cm47CkBAIC0xOTgsMjEgKzIxNCwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgaWYgKHNhbXBsZUNvdW50
ID4gbWF4U2FtcGxlQ291bnQpCiAgICAgICAgICAgICBzYW1wbGVDb3VudCA9IG1heFNhbXBsZUNv
dW50OwogICAgICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAg
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJV
RkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8g
PSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JF
TkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2Ft
cGxlQ291bnQsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNv
bG9yQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBt
X2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVO
VDBfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwog
ICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpIHsKLSAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwgaW50
ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgZ2xC
aW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0
aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIGludGVybmFsRGVwdGhT
dGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVG
RkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NU
RU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVE
ZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgR0xfREVQVEhfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRBQ0hNRU5U
X0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZl
cik7CiAgICAgICAgIH0KLSAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVS
QlVGRkVSX0VYVCwgMCk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJC
VUZGRVJfRVhULCAwKTsKICAgICAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVChH
TF9GUkFNRUJVRkZFUl9FWFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IGNsZWFudXAuCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwpAQCAtMjIyLDIyICsyMzgsMjIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgLy8gcmVzaXplIHJlZ3VsYXIgRkJPCiAgICAgaWYg
KG1fYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwot
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8p
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKICAgICB9CiAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7
CiAgICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7
Ci0gICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMF9FWFQsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CiAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIDo6Z2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICAgICBpZiAoIW1fYXR0cnMuYW50aWFsaWFz
ICYmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkpIHsKLSAgICAgICAgOjpnbEJp
bmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOwotICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZGRVJf
RVhULCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
IGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNp
bEJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZG
RVJfRVhULCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAg
ICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlRfRVhU
LCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RF
TkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0RFUFRIX0FUVEFD
SE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0g
ICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIDApOwor
ICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9F
WFQsIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJC
VUZGRVJfRVhULCAwKTsKICAgICB9CiAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VY
VChHTF9GUkFNRUJVRkZFUl9FWFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewog
ICAgICAgICAvLyBGSVhNRTogY2xlYW51cApAQCAtMjQ1LDcgKzI2MSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIH0KIAogICAg
IGlmIChtX2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAg
ICAgIGlmIChtX2JvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgICAgICBtdXN0
UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIH0KQEAgLTI3Myw3ICsyODksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX1NURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOwogICAg
ICAgICA6OmdsQ2xlYXJTdGVuY2lsKDApOwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfU1RF
TkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsK
LSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwor
ICAgICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwogICAg
ICAgICBjbGVhck1hc2sgfD0gR0xfU1RFTkNJTF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpc1Nj
aXNzb3JFbmFibGVkID0gOjpnbElzRW5hYmxlZChHTF9TQ0lTU09SX1RFU1QpOwpAQCAtMjkxLDcg
KzMwNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogICAgIH0KICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CiAgICAgICAgIDo6Z2xD
bGVhclN0ZW5jaWwoY2xlYXJTdGVuY2lsKTsKLSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0xfRlJPTlQsIHN0ZW5jaWxNYXNrKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRl
KEdMX0ZST05ULCBzdGVuY2lsTWFzayk7CiAgICAgfQogICAgIGlmIChpc1NjaXNzb3JFbmFibGVk
KQogICAgICAgICA6OmdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CkBAIC0zMDMsNyArMzE5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiAgICAgICAgIDo6Z2xEaXNhYmxlKEdMX0RJVEhFUik7CiAKICAgICBpZiAobXVzdFJlc3RvcmVG
Qk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBt
X2JvdW5kRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBtX2JvdW5kRkJPKTsKIAogICAgIDo6Z2xGbHVzaCgpOwogfQpAQCAtMzE5LDE3ICszMzUs
MTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogICAgICAgICBy
ZXR1cm47CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFs
aWFzKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVi
dWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElO
RUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9E
UkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVY
VCgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRX
aWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwog
ICAgIH0KLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9m
Ym8pOwotICAgIDo6Z2xBY3RpdmVUZXh0dXJlKDApOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgIGdsQWN0aXZlVGV4dHVyZSgwKTsKICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAg
ICAgOjpnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZv
cm1hdCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCk7Ci0gICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7Ci0gICAgOjpnbEFj
dGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlKTsKLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtX2JvdW5kVGV4dHVyZTApOworICAgIGdsQWN0aXZlVGV4dHVyZShtX2FjdGl2
ZVRleHR1cmUpOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9ib3VuZEZCTyk7CiAgICAgOjpnbEZpbmlzaCgpOwogICAgIG1fbGF5ZXJDb21wb3NpdGVkID0g
dHJ1ZTsKIH0KQEAgLTMzOCw3ICszNTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3Rp
dmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgbV9hY3RpdmVUZXh0dXJlID0gdGV4dHVyZTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMzQ2LDIwICszNjIsMjAgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0z
RE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJpbmRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xC
aW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZm
ZXIpOwogfQogCiAKQEAgLTM3Miw3ICszODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcgog
ICAgIGVsc2UKICAgICAgICAgZmJvID0gKG1fYXR0cnMuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBs
ZUZCTyA6IG1fZmJvKTsKICAgICBpZiAoZmJvICE9IG1fYm91bmRGQk8pIHsKLSAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVCh0YXJnZXQsIGZibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyRVhUKHRhcmdldCwgZmJvKTsKICAgICAgICAgbV9ib3VuZEZCTyA9IGZibzsKICAgICB9CiB9
CkBAIC0zODAsNyArMzk2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsQmluZFJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5k
UmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogCkBAIC00MDcsNyAr
NDIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBt
b2RlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0Rl
bnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7
CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKIH0KIAog
CkBAIC00MjAsMzEgKzQzNiwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMo
R0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBH
QzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0Is
IHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2Up
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0
LCBzaXplLCAwLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNh
Z2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRh
dGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJE
YXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3ND
b250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1c0VYVCh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQo
dGFyZ2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xh
bXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC01MTcs
MTMgKzUzMywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIGNvbnN0IENTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJD
U3RyaW5nID0gdHJhbnNsYXRlZFNoYWRlclNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciog
dHJhbnNsYXRlZFNoYWRlclB0ciA9IHRyYW5zbGF0ZWRTaGFkZXJDU3RyaW5nLmRhdGEoKTsKICAg
ICAKLSAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQdHIs
ICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEs
ICZ0cmFuc2xhdGVkU2hhZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7CiAgICAgCi0g
ICAgOjpnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKICAgICAKICAgICBpbnQgR0xDb21waWxlU3VjY2VzczsKICAgICAKLSAgICA6OmdsR2V0U2hh
ZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nlc3MpOworICAgIGds
R2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nlc3MpOwog
ICAgIAogICAgIC8vIEFTU0VSVCB0aGF0IEFOR0xFIGdlbmVyYXRlZCBHTFNMIHdpbGwgYmUgYWNj
ZXB0ZWQgYnkgT3BlbkdMCiAgICAgQVNTRVJUKEdMQ29tcGlsZVN1Y2Nlc3MgPT0gR0xfVFJVRSk7
CkBAIC01MzMsMjggKzU0OSwyOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRG
Qk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAg
ICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwg
eCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5F
QVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVy
RVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVp
Z2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CiAgICAgOjpnbENv
cHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3Vu
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6
OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0g
ICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0
LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJ
TkVBUik7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBtX2Zibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZG
RVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQo
R0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZm
ZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBo
ZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgIH0KICAgICA6Omds
Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQpAQCAtNTg2LDcgKzYw
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAg
QVNTRVJUKHNoYWRlcik7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERldGFj
aFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNo
YWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2Fw
KQpAQCAtNTk4LDcgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0Mz
RGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5
cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBAIC02MjIs
NyArNjM4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50
IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRl
eCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCkBAIC02NDAsMTMgKzY1
NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCBidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
YXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUs
IEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZy
YW1lYnVmZmVyVGV4dHVyZTJERVhUKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0
dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0dGFj
aG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTY1OCw3ICs2NzQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2VuZXJhdGVNaXBtYXBFWFQodGFyZ2V0KTsKKyAg
ICBnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdldCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGlu
ZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAtNjY5LDEyICs2ODUsMTIgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQg
bWF4QXR0cmlidXRlU2l6ZSA9IDA7Ci0gICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9B
Q1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKKyAgICBnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhB
dHRyaWJ1dGVTaXplKTsKICAgICBHTGNoYXIgbmFtZVttYXhBdHRyaWJ1dGVTaXplXTsgLy8gR0xf
QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24KICAg
ICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51
bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhB
dHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdl
dEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5n
dGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW5mby5uYW1lID0gU3RyaW5nKG5hbWUsIG5hbWVMZW5ndGgpOwpA
QCAtNjkxLDEyICs3MDcsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGUKICAgICB9CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwotICAg
IDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwg
Jm1heFVuaWZvcm1TaXplKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVf
VU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwogICAgIEdMY2hhciBuYW1lW21h
eFVuaWZvcm1TaXplXTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBz
aXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBl
LCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZv
cm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKICAgICBpZiAoIW5hbWVM
ZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFt
ZSwgbmFtZUxlbmd0aCk7CkBAIC03MTIsNyArNzI4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVp
IG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVy
cyk7CisgICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBz
aGFkZXJzKTsKIH0KIAogaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTcyMSw3ICs3
MzcsNyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbEdldEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkK
QEAgLTc2MCw3ICs3NzYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNCdWZmZXIoYnVmZmVy
KTsKKyAgICByZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTc3NSw3ICs3OTEsNyBA
QCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IGZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzRnJhbWVidWZmZXJFWFQoZnJhbWVi
dWZmZXIpOworICAgIHJldHVybiBnbElzRnJhbWVidWZmZXJFWFQoZnJhbWVidWZmZXIpOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTc4NCw3ICs4MDAsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJ
c1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCkBAIC03OTMsNyArODA5LDcgQEAgR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVm
ZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICByZXR1cm4gOjpnbElzUmVuZGVyYnVmZmVyRVhUKHJlbmRlcmJ1ZmZlcik7CisgICAg
cmV0dXJuIGdsSXNSZW5kZXJidWZmZXJFWFQocmVuZGVyYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpA
QCAtODAyLDcgKzgxOCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1NoYWRlcihzaGFkZXIp
OworICAgIHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODI0
LDcgKzg0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbExpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsTGlua1By
b2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVp
KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQpAQCAtODQ2LDE1ICs4NjIsMTUgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2kKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6Omds
Rmx1c2goKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211
bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9G
UkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xC
bGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsg
d2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Cisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211
bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFN
RUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQoeCwgeSwg
eCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NP
TE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9
CiAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCkBAIC04ODIsNyArODk4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9SR0I7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdD
M0Rib29sZWFuIGludmVydCkKQEAgLTkxOSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFz
aykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0g
ZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0Mz
RHVpbnQgbWFzaykKQEAgLTkzMSw3ICs5NDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpz
dGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2sp
OworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKQEAgLTk0Myw3ICs5NTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNz
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBm
YWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwg
emZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
ZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC05
NjEsMTMwICs5NzcsMTMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmko
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCB2CiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYw
KTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlm
b3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwor
ICAgIGdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAyCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAs
IHYxLCB2Mik7CisgICAgZ2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rm
bG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0zZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNE
ZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3Jt
NGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xV
bmlmb3JtMWkobG9jYXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2
MSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTJpKGxvY2F0
aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rp
bnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYy
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0Mz
RGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGko
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDQKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJh
bnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAg
Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAt
MTA5Miw2MSArMTEwOCw2MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7
CisgICAgZ2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2
MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFm
dihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5
KTsKKyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVy
dGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmRl
eCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0
cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBv
ZmZzZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJp
YlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnBy
ZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRl
LCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQp
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xMTY0LDcgKzEx
ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwbmFt
ZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RmxvYXR2KEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQpAQCAtMTE3OCw3ICsxMTk0
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAg
IGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQs
IGVpdGhlciB3b3Jrcy4KLSAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51
bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xMjA5LDcgKzEyMjUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUp
OworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQpAQCAtMTIxOCwxNCArMTIzNCwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIAogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IGxlbmd0aDsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuICIiOwogCiAgICAgR0xzaXplaSBzaXplOwogICAgIEdMY2hhciog
aW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAKLSAgICA6OmdsR2V0UHJvZ3Jh
bUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKICAgICBTdHJpbmcgcyhpbmZv
KTsKICAgICBmYXN0RnJlZShpbmZvKTsKICAgICByZXR1cm4gczsKQEAgLTEyMzQsNyArMTI1MCw3
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTEyNTAsNyArMTI2Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNE
ZW51bSBwbmFtZSwgR0MzCiAgICAgICAgIGNhc2UgU0hBREVSX1RZUEU6CiAgICAgICAgICAgICAv
LyBMZXQgT3BlbkdMIGhhbmRsZSB0aGVzZS4KICAgICAgICAgCi0gICAgICAgICAgICA6OmdsR2V0
U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQ09NUElMRV9TVEFUVVM6CkBAIC0xMjk1LDE0ICsxMzExLDE0IEBAIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKIAogICAgICBpZiAoZW50cnkuaXNWYWxpZCkgewogICAgICAgICAgR0xpbnQgbGVuZ3Ro
OwotICAgICAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAm
bGVuZ3RoKTsKKyAgICAgICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5H
VEgsICZsZW5ndGgpOwogICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICAgcmV0dXJu
ICIiOwogCiAgICAgICAgICBHTHNpemVpIHNpemU7CiAgICAgICAgICBHTGNoYXIqIGluZm8gPSAo
R0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogCi0gICAgICAgICA6OmdsR2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgICAgICAgZ2xHZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICAgICAgIFN0cmluZyBz
KGluZm8pOwogICAgICAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xMzQxLDEzICsxMzU3LDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRVbmlm
b3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1mdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRV
bmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtMTM1NSwxOSArMTM3MSwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAog
ICAgIEFTU0VSVChwcm9ncmFtKTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJl
dHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdD
M0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0K
IAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKQpAQCAtMTM3NSw3ICsxMzkxLDcgQEAgR0Mz
RHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIEdM
dm9pZCogcG9pbnRlciA9IDA7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwbmFtZSwgJnBvaW50ZXIpOworICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgs
IHBuYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNTA2LDEyICsx
NTIyLDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCisjaWYgIVBMQVRGT1JNKFFUKQog
RXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBF
eHRlbnNpb25zM0RPcGVuR0wodGhpcykpOwogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7
CiB9CisjZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAKaW5kZXggM2FkYzkzZi4uNzkwOGI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNE
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmNwcApAQCAtMzQsNyArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4
dGVuc2lvbnMzRFF0OjpFeHRlbnNpb25zM0RRdCgpCitFeHRlbnNpb25zM0RRdDo6RXh0ZW5zaW9u
czNEUXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRXh0ZW5zaW9uczNEUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmgKaW5kZXggYzY3ZmJlZC4uYTdjODYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCkBAIC00
OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRp
b25zLgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLSAgICBFeHRlbnNpb25z
M0RRdCgpOworICAgIEV4dGVuc2lvbnMzRFF0KGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEKik7CisK
KyAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHQzRAorICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFByb2NzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFByb2NzLmgKaW5kZXggOTkyODBkNy4uYjVhOWNjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RQcm9jcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUHJvY3MuaApAQCAtMiwzOCArMiwzOSBAQCBHTF9QUk9DKHZvaWQsIGdsQWN0
aXZlVGV4dHVyZSwgKEdDM0RlbnVtKSkKIEdMX1BST0Modm9pZCwgZ2xBdHRhY2hTaGFkZXIsIChH
QzNEdWludCwgR0MzRHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwg
KEdDM0R1aW50LCBHQzNEdWludCwgY29uc3QgY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRC
dWZmZXIsIChHQzNEZW51bSwgR0MzRHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEJpbmRGcmFtZWJ1
ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCi1HTF9QUk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1
ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVm
ZmVyRVhULCAoR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kUmVuZGVy
YnVmZmVyRVhULCAoR0MzRGVudW0sIEdDM0R1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZENv
bG9yLCAoR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZikpCiBH
TF9QUk9DKHZvaWQsIGdsQmxlbmRFcXVhdGlvbiwgKEdDM0RlbnVtKSkKIEdMX1BST0Modm9pZCwg
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0pKQogR0xfUFJPQyh2
b2lkLCBnbEJsZW5kRnVuY1NlcGFyYXRlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJsaXRGcmFtZWJ1ZmZlckVYVCwgKEdDM0RpbnQs
IEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pKTsKIEdMX1BST0Modm9pZCwgZ2xCdWZmZXJE
YXRhLCAoR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCosIEdDM0RlbnVtKSkKIEdM
X1BST0Modm9pZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0MzRGVudW0sIEdDM0RpbnRwdHIsIEdDM0Rz
aXplaXB0ciwgY29uc3Qgdm9pZCopKQotR0xfUFJPQyhHQzNEZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzLCAoR0MzRGVudW0pKQorR0xfUFJPQyhHQzNEZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzRVhULCAoR0MzRGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbENvbXBpbGVTaGFkZXIs
IChHQzNEdWludCkpCiBHTF9QUk9DKEdDM0R1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQogR0xf
UFJPQyhHQzNEdWludCwgZ2xDcmVhdGVTaGFkZXIsIChHQzNEZW51bSkpCiBHTF9QUk9DKHZvaWQs
IGdsRGVsZXRlQnVmZmVycywgKEdDM0RzaXplaSwgY29uc3QgR0MzRHVpbnQqKSkKLUdMX1BST0Mo
dm9pZCwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMsIChHQzNEc2l6ZWksIGNvbnN0IEdDM0R1aW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhULCAoR0MzRHNpemVpLCBjb25z
dCBHQzNEdWludCopKQogR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVByb2dyYW0sIChHQzNEdWludCkp
Ci1HTF9QUk9DKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwgY29uc3Qg
R0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhULCAoR0Mz
RHNpemVpLCBjb25zdCBHQzNEdWludCopKQogR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwg
KEdDM0R1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xEZXRhY2hTaGFkZXIsIChHQzNEdWludCwgR0Mz
RHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1
aW50KSkKIEdMX1BST0Modm9pZCwgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1aW50
KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgKEdDM0RlbnVtLCBH
QzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50LCBHQzNE
aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgKEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyREVYVCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1
aW50LCBHQzNEaW50KSkKIEdMX1BST0Modm9pZCwgZ2xHZW5CdWZmZXJzLCAoR0MzRHNpemVpLCBH
QzNEdWludCopKQotR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwLCAoR0MzRGVudW0pKQot
R0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkK
LUdMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCAoR0MzRHNpemVpLCBHQzNEdWludCop
KQorR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwRVhULCAoR0MzRGVudW0pKQorR0xfUFJP
Qyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVyc0VYVCwgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dM
X1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzRVhULCAoR0MzRHNpemVpLCBHQzNEdWludCop
KQogR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZUF0dHJpYiwgKEdDM0R1aW50LCBHQzNEdWludCwg
R0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVudW0qLCBjaGFyKikpCiBHTF9Q
Uk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdDM0R1aW50LCBHQzNEdWludCwgR0MzRHNp
emVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVudW0qLCBjaGFyKikpCiBHTF9QUk9DKHZv
aWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
KiwgR0MzRHVpbnQqKSkKIEdMX1BST0MoR0MzRGludCwgZ2xHZXRBdHRyaWJMb2NhdGlvbiwgKEdD
M0R1aW50LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1ldGVy
aXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKLUdMX1BST0Modm9pZCwgZ2xHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGVudW0sIEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQq
KSkKIEdMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgKEdDM0R1aW50LCBHQzNEc2l6
ZWksIEdDM0RzaXplaSosIGNoYXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtaXYsIChH
QzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdiwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCopKQpAQCAtNDcs
MTIgKzQ4LDEzIEBAIEdMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiwgKEdDM0R1aW50
LCBHQzNEZW51bSwgR0MzRGZsb2F0KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmli
aXYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVydiwgKEdDM0R1aW50LCBHQzNEZW51bSwgdm9pZCoqKSkKIEdMX1BS
T0MoR0MzRGJvb2xlYW4sIGdsSXNCdWZmZXIsIChHQzNEdWludCkpCi1HTF9QUk9DKEdDM0Rib29s
ZWFuLCBnbElzRnJhbWVidWZmZXIsIChHQzNEdWludCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBn
bElzRnJhbWVidWZmZXJFWFQsIChHQzNEdWludCkpCiBHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElz
UHJvZ3JhbSwgKEdDM0R1aW50KSkKLUdMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNSZW5kZXJidWZm
ZXIsIChHQzNEdWludCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElzUmVuZGVyYnVmZmVyRVhU
LCAoR0MzRHVpbnQpKQogR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1NoYWRlciwgKEdDM0R1aW50
KSkKIEdMX1BST0Modm9pZCwgZ2xMaW5rUHJvZ3JhbSwgKEdDM0R1aW50KSkKLUdMX1BST0Modm9p
ZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEc2l6ZWks
IEdDM0RzaXplaSkpCitHTF9QUk9DKHZvaWQsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCwgKEdD
M0RlbnVtLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwgKEdDM0RlbnVtLCBHQzNEc2l6ZWks
IEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkpOwogR0xfUFJPQyh2b2lkLCBnbFNhbXBs
ZUNvdmVyYWdlLCAoR0MzRGNsYW1wZiwgR0MzRGJvb2xlYW4pKQogR0xfUFJPQyh2b2lkLCBnbFNo
YWRlclNvdXJjZSwgKEdDM0R1aW50LCBHQzNEc2l6ZWksIGNvbnN0IGNoYXIqKiwgY29uc3QgR0Mz
RGludCopKQogR0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUsIChHQzNEZW51bSwg
R0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXgg
ZDhiNDQxMy4uNDljMjc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTEyMSw2ICsxMjEs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWlu
dGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogewogICAgIFFfVU5VU0VEKHdpZGdldCk7CiAK
KyAgICBtX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CisKICAgICBRUmVjdEYgcmVjdCA9IG9w
dGlvbiA/IG9wdGlvbi0+cmVjdCA6IGJvdW5kaW5nUmVjdCgpOwogCiAgICAgLy8gVXNlIGRpcmVj
dCB0ZXh0dXJlIG1hcHBpbmcgaWYgV2ViR0wgY2FudmFzIGhhcyBhIHNoYXJlZCBPcGVuR0wgY29u
dGV4dApAQCAtMTM3LDE1ICsxMzksMTYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFs
OjpwYWludChRUGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKIAogICAg
IG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikK
LSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1f
Y29udGV4dC0+bV9mYm8pOwotI2Vsc2UKICAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVy
KEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZWxz
ZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6
OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKICNlbmRpZgogICAgIGdsUmVhZFBpeGVs
cygvKiB4ICovIDAsIC8qIHkgKi8gMCwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBHcmFw
aGljc0NvbnRleHQzRDo6UkdCQSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIGlt
YWdlUGl4ZWxzKTsKKwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91
bmRGYm8pOwotI2Vsc2UKICAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKKyNlbHNlCisg
ICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwogI2VuZGlmCiAKICAgICAvLyBPcGVuR0wgZ2l2
ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUgb3JpZ2luIGF0IHRoZSBib3R0b20g
bGVmdApAQCAtMjIzLDYgKzIyNiw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRl
eHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAgICAgLCBt
X211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCiAgICAgLCBtX211bHRpc2FtcGxlQ29s
b3JCdWZmZXIoMCkKICAgICAsIG1faW50ZXJuYWwobmV3IEdyYXBoaWNzQ29udGV4dDNESW50ZXJu
YWwodGhpcywgaG9zdFdpbmRvdykpCisKIHsKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQog
ICAgIG1fYXR0cnMuc3RlbmNpbCA9IGZhbHNlOwpAQCAtMjUxLDcgKzI1NSwxOSBAQCBHcmFwaGlj
c0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMgYXR0cnMsIEhvc3RXaQogICAgIH0KIAogICAgIC8vIENyZWF0ZSBidWZmZXJzIGZvciB0aGUg
Y2FudmFzIEZCTy4KKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogICAgIGdsR2VuRnJhbWVi
dWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2Zibyk7CisjZWxzZQorICAgIGdsR2VuRnJhbWVidWZm
ZXJzRVhUKC8qIGNvdW50ICovIDEsICZtX2Zibyk7CisjZW5kaWYKKworICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJm1fdGV4dHVyZSk7CisgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV90ZXh0dXJlKTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJ
TFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9X
UkFQX1MsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX1dSQVBfVCwgR3JhcGhpY3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCiAgICAgZ2xH
ZW5UZXh0dXJlcygxLCAmbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4dHVyZShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CkBAIC0y
NjIsMTEgKzI3OCwxOSBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgIGdsQmluZFRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOwogCiAgICAgaWYgKG1fYXR0cnMu
ZGVwdGgpCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICAgICAgZ2xHZW5SZW5kZXJi
dWZmZXJzKC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjZWxzZQorICAg
ICAgICBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQoLyogY291bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKKyNlbmRpZgogCiAgICAgLy8gQmluZCBjYW52YXMgRkJPIGFuZCBzZXQgaW5pdGlh
bCBjbGVhciBjb2xvciB0byBibGFjay4KICAgICBtX2JvdW5kRkJPID0gbV9mYm87CisjaWYgZGVm
aW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyNlbHNlCisgICAgZ2xCaW5kRnJhbWVidWZmZXJF
WFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisjZW5kaWYKICAgICBn
bENsZWFyQ29sb3IoMC4wLCAwLjAsIDAuMCwgMC4wKTsKIH0KIApAQCAtMzAzLDYgKzMyNyw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENh
bnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiAgICAgbV9pbnRlcm5hbC0+cGFpbnQocGFpbnRlciwg
MCwgMCk7CiB9CiAKKyNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQogUGFzc1JlZlB0cjxJbWFn
ZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0
YSgpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQgZm9yIHBy
b3BlciBub24tcHJlbXVsdGlwbGllZC1hbHBoYQpAQCAtMTQyMSwxMSArMTQ0NiwxMiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0ZWQoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xheWVyQ29tcG9zaXRlZDsKIH0KKyNlbmRpZgogCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNz
Q29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAg
ICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KTsKKyAgICAg
ICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4dGVuc2lvbnMzRFF0KHRoaXMpKTsKICAg
ICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87507</attachid>
            <date>2011-03-30 05:14:52 -0700</date>
            <delta_ts>2011-03-30 05:14:52 -0700</delta_ts>
            <desc>compilation fix</desc>
            <filename>57261.diff</filename>
            <type>text/plain</type>
            <size>57272</size>
            <attacher name="Jarkko Sakkinen">jarkko.j.sakkinen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggNDI1MWQ3My4uMjYyMDAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0
MTEsNiArMzQxMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJLaXRMb3NlQ29udGV4dC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXApAQCAtMzQyMCw2ICszNDIx
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKICAgICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMv
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xP
YmplY3QuY3BwIFwKQEAgLTM0NDAsMTMgKzM0NDIsMTExIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKIAogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFBX
RC9wbGF0Zm9ybS9ncmFwaGljcy9ncHUKKworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdW51
c2VkLXZhcmlhYmxlCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby1taXNzaW5nLW5vcmV0dXJu
CisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtZnVuY3Rpb24KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXBhcmVudGhlc2VzCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby10
eXBlLWxpbWl0cworCisgICAgREVGSU5FUyArPSBZWUVOQUJMRV9OTFM9MCBZWUxUWVBFX0lTX1RS
SVZJQUw9MAorCisgICAgQU5HTEVfRElSID0gJCRyZXBsYWNlKFBXRCwgIldlYkNvcmUiLCAiVGhp
cmRQYXJ0eS9BTkdMRSIpCisKKyAgICBJTkNMVURFUEFUSCArPSAkJEFOR0xFX0RJUi9zcmMgJCRB
TkdMRV9ESVIvaW5jbHVkZQorCisgICAgSEVBREVSUyArPSBcCisgICAgICAgICQkQU5HTEVfRElS
L3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9Db21tb24uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db25zdGFu
dFVuaW9uLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2dsc2xhbmcuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIv
c3JjL2NvbXBpbGVyL0luZm9TaW5rLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvSW5pdGlhbGl6ZURsbC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemVHbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5p
dGlhbGl6ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVQ
YXJzZUNvbnRleHQuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9pbnRlcm1l
ZGlhdGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9sb2NhbGludGVybWVk
aWF0ZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL01NYXAuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9vc2luY2x1ZGUuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1BhcnNlSGVscGVyLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUG9v
bEFsbG9jLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L2F0b20uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
Y29tcGlsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9jcHAuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
bWVtb3J5LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L3BhcnNlci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9wcmVwcm9jZXNzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3Ivc2xnbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL3N5bWJvbHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvdG9rZW5zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvUXVhbGlmaWVyQWxpdmUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9S
ZW1vdmVUcmVlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2VhcmNoU3lt
Ym9sLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JHTFNMLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckhMU0wuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9UeXBlcy5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1VuZm9sZFNlbGVjdC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0
aWwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRp
b25zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmgg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuaCBcCisKKyAg
ICBTT1VSQ0VTICs9IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvZGVHZW5H
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db2RlR2VuSExTTC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIFwKKyAg
ICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2RlYnVnLmNwcCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL0luZm9TaW5rLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9Jbml0aWFsaXplLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0
aWFsaXplRGxsLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRlcm1l
ZGlhdGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2ludGVybU91dC5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW50ZXJtVHJhdmVyc2UuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL29zc291cmNlX3Bvc2l4LmNwcCBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRITFNMLmNwcCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9wYXJzZUNvbnN0LmNwcCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9QYXJzZUhlbHBlci5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUG9vbEFsbG9jLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvYXRvbS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9jcHAuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvY3Bwc3RydWN0LmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1JlbW92ZVRyZWUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1NlYXJjaFN5bWJvbC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
U2hhZGVyTGFuZy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU3ltYm9s
VGFibGUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JH
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExT
TC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVW5mb2xkU2VsZWN0LmNw
cCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci91dGlsLmNwcCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYXJpYWJsZUluZm8uY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZlcnNpb25HTFNMLmNwcCBcCiB9CiAKIHdpbjMyOiF3
aW4zMi1nKysqOmNvbnRhaW5zKFFNQUtFX0hPU1QuYXJjaCwgeDg2XzY0KTp7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaAppbmRl
eCA3YmRkYmY0Li5jODc1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKQEAgLTI2LDcgKzI2LDExIEBACiAjaWZuZGVm
IEFOR0xFV2ViS2l0QnJpZGdlX2gKICNkZWZpbmUgQU5HTEVXZWJLaXRCcmlkZ2VfaAogCisjaWYg
UExBVEZPUk0oUVQpCisjaW5jbHVkZSAiQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcu
aCIKKyNlbHNlCiAjaW5jbHVkZSAiQU5HTEUvU2hhZGVyTGFuZy5oIgorI2VuZGlmCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oCmluZGV4IGYzOTZiYjEuLmM1YzZkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTUsNiArNTUsNyBAQCBj
bGFzcyBDQUxheWVyOwogY2xhc3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0o
UVQpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKIFFUX0JFR0lOX05BTUVTUEFDRQog
Y2xhc3MgUVBhaW50ZXI7CiBjbGFzcyBRUmVjdDsKQEAgLTQ3OSw3ICs0ODAsNyBAQCBwdWJsaWM6
CiAKICAgICBQYXNzUmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29u
c3QgSW50U2l6ZSYgPSBJbnRTaXplKCkpOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oQ0hST01JVU0pCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShDSFJPTUlVTSkg
fHwgUExBVEZPUk0oUVQpCiAgICAgLy8gV2l0aCBtdWx0aXNhbXBsaW5nIG9uLCBibGl0IGZyb20g
bXVsdGlzYW1wbGVGQk8gdG8gcmVndWxhciBGQk8uCiAgICAgdm9pZCBwcmVwYXJlVGV4dHVyZSgp
OwogI2VuZGlmCkBAIC04NjIsNyArODYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICBBbHBoYU9wIGFscGhhT3AsCiAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGRlc3RpbmF0aW9u
RGF0YSk7CiAKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShRVCkKICAgICAvLyBUYWtlIGludG8gYWNjb3VudCB0aGUgdXNlcidzIHJlcXVlc3RlZCBjb250
ZXh0IGNyZWF0aW9uIGF0dHJpYnV0ZXMsCiAgICAgLy8gaW4gcGFydGljdWxhciBzdGVuY2lsIGFu
ZCBhbnRpYWxpYXMsIGFuZCBkZXRlcm1pbmUgd2hpY2ggY291bGQgb3IKICAgICAvLyBjb3VsZCBu
b3QgYmUgaG9ub3JlZCBiYXNlZCBvbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBPcGVuR0wKQEAg
LTkwMCwxMCArOTAxLDkgQEAgcHVibGljOgogICAgIH0gU2hhZGVyU291cmNlRW50cnk7CiAgICAg
SGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFkZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3Vy
Y2VNYXA7CiAKKyAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogI2lmIFBMQVRGT1JN
KE1BQykKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMOwotICAgIEFOR0xFV2Vi
S2l0QnJpZGdlIG1fY29tcGlsZXI7Ci0KICAgICBPd25QdHI8RXh0ZW5zaW9uczNET3BlbkdMPiBt
X2V4dGVuc2lvbnM7CiAjZW5kaWYKIApAQCAtOTMzLDcgKzkzMyw2IEBAIHB1YmxpYzoKICAgICAv
LyBFcnJvcnMgcmFpc2VkIGJ5IHN5bnRoZXNpemVHTEVycm9yKCkuCiAgICAgTGlzdEhhc2hTZXQ8
R0MzRGVudW0+IG1fc3ludGhldGljRXJyb3JzOwogI2VuZGlmCi0KICAgICAvLyBGSVhNRTogaWRl
YWxseSB0aGlzIHdvdWxkIGJlIHVzZWQgb24gYWxsIHBsYXRmb3Jtcy4KICNpZiBQTEFURk9STShD
SFJPTUlVTSkgfHwgUExBVEZPUk0oUVQpCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNESW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBj
MTI1ZTk0Li5lYTg2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAK
QEAgLTMzLDcgKzMzLDExIEBACiAjaW5jbHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViR0xPYmplY3QuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisj
aWYgUExBVEZPUk0oUVQpCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEUXQuaCIKKyNlbHNlCiAjaW5j
bHVkZSAiRXh0ZW5zaW9uczNET3BlbkdMLmgiCisjZW5kaWYKICNpbmNsdWRlICJGbG9hdDMyQXJy
YXkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFz
RWxlbWVudC5oIgpAQCAtNDMsNiArNDcsMTEgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgogI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKIAorI2lmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PGNzdHJpbmc+CisjaW5jbHVkZSA8UXRPcGVuR0wvUXRPcGVuR0w+CisjZW5kaWYKKwogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbmRpZgpAQCAtODIsMTUgKzkx
LDE1IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlYWRSZW5kZXJpbmdSZXN1bHRzKHVuc2ln
bmVkIGNoYXIgKnBpeGVscywgaW50IHBpeGVsc1NpCiAKICAgICBib29sIG11c3RSZXN0b3JlRkJP
ID0gZmFsc2U7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8p
OwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhU
LCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50
V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhl
aWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKLSAgICAgICAgOjpnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8p
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJlbnRXaWR0
aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0
LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAgbXVzdFJlc3RvcmVG
Qk8gPSB0cnVlOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX2JvdW5kRkJPICE9IG1fZmJv
KSB7CiAgICAgICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IHRydWU7Ci0gICAgICAgICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEwOCw5ICsxMTcsMTAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxz
U2kKICAgICAgICAgOjpnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfQUxJR05NRU5ULCBwYWNrQWxpZ25t
ZW50KTsKIAogICAgIGlmIChtdXN0UmVzdG9yZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOwogfQogCisjaWYg
UExBVEZPUk0oTUFDKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1
bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAgICBIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CkBAIC0xMzcsNiArMTQ3
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBwYWludFRvQ2FudmFzKHBpeGVscy5n
ZXQoKSwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwKICAgICAgICAgICAgICAgICAg
IGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCkpOwogfQorI2VuZGlmCiAKIFBhc3NSZWZQdHI8SW1hZ2VEYXRh
PiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURhdGEoKQog
ewpAQCAtMTYwLDggKzE3MSwxMyBAQCBQYXNzUmVmUHRyPEltYWdlRGF0YT4gR3JhcGhpY3NDb250
ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvSW1hZ2VEYXRhKCkKIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CisjaWYgUExBVEZP
Uk0oUVQpCisgICAgaWYgKCFtX2ludGVybmFsKQorICAgICAgICByZXR1cm47CisjZWxzZQogICAg
IGlmICghbV9jb250ZXh0T2JqKQogICAgICAgICByZXR1cm47CisjZW5kaWYKIAogICAgIGlmICh3
aWR0aCA9PSBtX2N1cnJlbnRXaWR0aCAmJiBoZWlnaHQgPT0gbV9jdXJyZW50SGVpZ2h0KQogICAg
ICAgICByZXR1cm47CkBAIC0xOTgsMjEgKzIxNCwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgaWYgKHNhbXBsZUNvdW50
ID4gbWF4U2FtcGxlQ291bnQpCiAgICAgICAgICAgICBzYW1wbGVDb3VudCA9IG1heFNhbXBsZUNv
dW50OwogICAgICAgICBpZiAobV9ib3VuZEZCTyAhPSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAg
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0
aXNhbXBsZUZCTyk7CisgICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJV
RkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8g
PSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JF
TkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xS
ZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2Ft
cGxlQ291bnQsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAg
IDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNv
bG9yQnVmZmVyKTsKKyAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZU11bHRpc2FtcGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBt
X2ludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVO
VDBfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwog
ICAgICAgICBpZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpIHsKLSAgICAgICAg
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwgaW50
ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgZ2xC
aW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0
aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlz
YW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIGludGVybmFsRGVwdGhT
dGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0
ZW5jaWwpCi0gICAgICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVG
RkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NU
RU5DSUxfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVE
ZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAg
ICAgICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgR0xfREVQVEhfQVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRBQ0hNRU5U
X0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZl
cik7CiAgICAgICAgIH0KLSAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVS
QlVGRkVSX0VYVCwgMCk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJC
VUZGRVJfRVhULCAwKTsKICAgICAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVChH
TF9GUkFNRUJVRkZFUl9FWFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewogICAg
ICAgICAgICAgLy8gRklYTUU6IGNsZWFudXAuCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwpAQCAtMjIyLDIyICsyMzgsMjIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShp
bnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgLy8gcmVzaXplIHJlZ3VsYXIgRkJPCiAgICAgaWYg
KG1fYm91bmRGQk8gIT0gbV9mYm8pIHsKICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwot
ICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8p
OworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKICAgICB9CiAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7
CiAgICAgOjpnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9y
bWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7
Ci0gICAgOjpnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xf
Q09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMF9FWFQsIEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CiAgICAgOjpnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIDo6Z2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIDo6Z2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKICAgICBpZiAoIW1fYXR0cnMuYW50aWFsaWFz
ICYmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkpIHsKLSAgICAgICAgOjpnbEJp
bmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZm
ZXIpOwotICAgICAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZGRVJf
RVhULCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAg
IGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNp
bEJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZG
RVJfRVhULCBpbnRlcm5hbERlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAg
ICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlRfRVhU
LCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RF
TkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxC
dWZmZXIpOwogICAgICAgICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgIDo6Z2xGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0RFUFRIX0FUVEFD
SE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0g
ICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIDApOwor
ICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9F
WFQsIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRo
U3RlbmNpbEJ1ZmZlcik7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJC
VUZGRVJfRVhULCAwKTsKICAgICB9CiAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VY
VChHTF9GUkFNRUJVRkZFUl9FWFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewog
ICAgICAgICAvLyBGSVhNRTogY2xlYW51cApAQCAtMjQ1LDcgKzI2MSw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIH0KIAogICAg
IGlmIChtX2F0dHJzLmFudGlhbGlhcykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAg
ICAgIGlmIChtX2JvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgICAgICBtdXN0
UmVzdG9yZUZCTyA9IGZhbHNlOwogICAgIH0KQEAgLTI3Myw3ICsyODksNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgOjpn
bEdldEludGVnZXJ2KEdMX1NURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOwogICAg
ICAgICA6OmdsQ2xlYXJTdGVuY2lsKDApOwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfU1RF
TkNJTF9XUklURU1BU0ssIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsK
LSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwor
ICAgICAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwogICAg
ICAgICBjbGVhck1hc2sgfD0gR0xfU1RFTkNJTF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpc1Nj
aXNzb3JFbmFibGVkID0gOjpnbElzRW5hYmxlZChHTF9TQ0lTU09SX1RFU1QpOwpAQCAtMjkxLDcg
KzMwNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQg
aGVpZ2h0KQogICAgIH0KICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CiAgICAgICAgIDo6Z2xD
bGVhclN0ZW5jaWwoY2xlYXJTdGVuY2lsKTsKLSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJh
dGUoR0xfRlJPTlQsIHN0ZW5jaWxNYXNrKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRl
KEdMX0ZST05ULCBzdGVuY2lsTWFzayk7CiAgICAgfQogICAgIGlmIChpc1NjaXNzb3JFbmFibGVk
KQogICAgICAgICA6OmdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CkBAIC0zMDMsNyArMzE5LDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQp
CiAgICAgICAgIDo6Z2xEaXNhYmxlKEdMX0RJVEhFUik7CiAKICAgICBpZiAobXVzdFJlc3RvcmVG
Qk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBt
X2JvdW5kRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBtX2JvdW5kRkJPKTsKIAogICAgIDo6Z2xGbHVzaCgpOwogfQpAQCAtMzE5LDE3ICszMzUs
MTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogICAgICAgICBy
ZXR1cm47CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFs
aWFzKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZF
Ul9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVi
dWZmZXJFWFQoMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9j
dXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElO
RUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9F
WFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9E
UkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVY
VCgwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRX
aWR0aCwgbV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwog
ICAgIH0KLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9m
Ym8pOwotICAgIDo6Z2xBY3RpdmVUZXh0dXJlKDApOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgIGdsQWN0aXZlVGV4dHVyZSgwKTsKICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAg
ICAgOjpnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZv
cm1hdCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCk7Ci0gICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7Ci0gICAgOjpnbEFj
dGl2ZVRleHR1cmUobV9hY3RpdmVUZXh0dXJlKTsKLSAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CisgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtX2JvdW5kVGV4dHVyZTApOworICAgIGdsQWN0aXZlVGV4dHVyZShtX2FjdGl2
ZVRleHR1cmUpOworICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9ib3VuZEZCTyk7CiAgICAgOjpnbEZpbmlzaCgpOwogICAgIG1fbGF5ZXJDb21wb3NpdGVkID0g
dHJ1ZTsKIH0KQEAgLTMzOCw3ICszNTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjphY3Rp
dmVUZXh0dXJlKEdDM0RlbnVtIHRleHR1cmUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgbV9hY3RpdmVUZXh0dXJlID0gdGV4dHVyZTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZSh0
ZXh0dXJlKTsKKyAgICBnbEFjdGl2ZVRleHR1cmUodGV4dHVyZSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmF0dGFjaFNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQpAQCAtMzQ2LDIwICszNjIsMjAgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0z
RE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRl
cik7CisgICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6YmluZEF0dHJpYkxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3Jh
bSwgR0MzRHVpbnQgaW5kZXgsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKICAgICBBU1NFUlQocHJv
Z3JhbSk7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJpbmRBdHRyaWJMb2Nh
dGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBnbEJpbmRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3Jt
M0RPYmplY3QgYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xC
aW5kQnVmZmVyKHRhcmdldCwgYnVmZmVyKTsKKyAgICBnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZm
ZXIpOwogfQogCiAKQEAgLTM3Miw3ICszODgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpi
aW5kRnJhbWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcgog
ICAgIGVsc2UKICAgICAgICAgZmJvID0gKG1fYXR0cnMuYW50aWFsaWFzID8gbV9tdWx0aXNhbXBs
ZUZCTyA6IG1fZmJvKTsKICAgICBpZiAoZmJvICE9IG1fYm91bmRGQk8pIHsKLSAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVCh0YXJnZXQsIGZibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyRVhUKHRhcmdldCwgZmJvKTsKICAgICAgICAgbV9ib3VuZEZCTyA9IGZibzsKICAgICB9CiB9
CkBAIC0zODAsNyArMzk2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmluZEZyYW1lYnVm
ZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxhdGZvcm0zRE9iamVjdCBidWZmZXIKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmJpbmRSZW5kZXJidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsQmluZFJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CisgICAgZ2xCaW5k
UmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKIH0KIAogCkBAIC00MDcsNyAr
NDIzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvbihHQzNEZW51bSBt
b2RlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YmxlbmRFcXVhdGlvblNlcGFyYXRlKEdDM0Rl
bnVtIG1vZGVSR0IsIEdDM0RlbnVtIG1vZGVBbHBoYSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsQmxlbmRFcXVhdGlvblNlcGFyYXRlKG1vZGVSR0IsIG1vZGVBbHBoYSk7
CisgICAgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFscGhhKTsKIH0KIAog
CkBAIC00MjAsMzEgKzQzNiwzMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEZ1bmMo
R0MzRGVudW0gc2ZhY3RvciwgR0MzRGVudW0gZGZhY3RvcikKIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJsZW5kRnVuY1NlcGFyYXRlKEdDM0RlbnVtIHNyY1JHQiwgR0MzRGVudW0gZHN0UkdCLCBH
QzNEZW51bSBzcmNBbHBoYSwgR0MzRGVudW0gZHN0QWxwaGEpCiB7CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgOjpnbEJsZW5kRnVuY1NlcGFyYXRlKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOworICAgIGdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0Is
IHNyY0FscGhhLCBkc3RBbHBoYSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZl
ckRhdGEoR0MzRGVudW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgR0MzRGVudW0gdXNhZ2Up
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1ZmZlckRhdGEodGFyZ2V0
LCBzaXplLCAwLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6ZSwgMCwgdXNh
Z2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJEYXRhKEdDM0RlbnVtIHRh
cmdldCwgR0MzRHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEsIEdDM0RlbnVtIHVzYWdl
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xCdWZmZXJEYXRhKHRhcmdl
dCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOworICAgIGdsQnVmZmVyRGF0YSh0YXJnZXQsIHNpemUsIGRh
dGEsIHVzYWdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6YnVmZmVyU3ViRGF0YShH
QzNEZW51bSB0YXJnZXQsIEdDM0RpbnRwdHIgb2Zmc2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29u
c3Qgdm9pZCogZGF0YSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQnVm
ZmVyU3ViRGF0YSh0YXJnZXQsIG9mZnNldCwgc2l6ZSwgZGF0YSk7CisgICAgZ2xCdWZmZXJTdWJE
YXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIAogR0MzRGVudW0gR3JhcGhpY3ND
b250ZXh0M0Q6OmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0MzRGVudW0gdGFyZ2V0KQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1c0VYVCh0YXJnZXQpOworICAgIHJldHVybiBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNFWFQo
dGFyZ2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Y2xlYXJDb2xvcihHQzNEY2xh
bXBmIHIsIEdDM0RjbGFtcGYgZywgR0MzRGNsYW1wZiBiLCBHQzNEY2xhbXBmIGEpCkBAIC01MTcs
MTMgKzUzMywxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRm
b3JtM0RPYmplY3Qgc2hhZGVyKQogICAgIGNvbnN0IENTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJD
U3RyaW5nID0gdHJhbnNsYXRlZFNoYWRlclNvdXJjZS51dGY4KCk7CiAgICAgY29uc3QgY2hhciog
dHJhbnNsYXRlZFNoYWRlclB0ciA9IHRyYW5zbGF0ZWRTaGFkZXJDU3RyaW5nLmRhdGEoKTsKICAg
ICAKLSAgICA6OmdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQdHIs
ICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKKyAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEs
ICZ0cmFuc2xhdGVkU2hhZGVyUHRyLCAmdHJhbnNsYXRlZFNoYWRlckxlbmd0aCk7CiAgICAgCi0g
ICAgOjpnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKKyAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKICAgICAKICAgICBpbnQgR0xDb21waWxlU3VjY2VzczsKICAgICAKLSAgICA6OmdsR2V0U2hh
ZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nlc3MpOworICAgIGds
R2V0U2hhZGVyaXYoc2hhZGVyLCBDT01QSUxFX1NUQVRVUywgJkdMQ29tcGlsZVN1Y2Nlc3MpOwog
ICAgIAogICAgIC8vIEFTU0VSVCB0aGF0IEFOR0xFIGdlbmVyYXRlZCBHTFNMIHdpbGwgYmUgYWNj
ZXB0ZWQgYnkgT3BlbkdMCiAgICAgQVNTRVJUKEdMQ29tcGlsZVN1Y2Nlc3MgPT0gR0xfVFJVRSk7
CkBAIC01MzMsMjggKzU0OSwyOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4SW1h
Z2UyRChHQzNEZW51bSB0YXJnZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RlbnVtCiB7CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRG
Qk8gPT0gbV9tdWx0aXNhbXBsZUZCTykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKLSAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAg
ICAgICA6OmdsQmxpdEZyYW1lYnVmZmVyRVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwg
eCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5F
QVIpOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwg
bV9mYm8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVy
RVhUKHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVp
Z2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOworICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CiAgICAgOjpnbENv
cHlUZXhJbWFnZTJEKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBib3JkZXIpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJP
ID09IG1fbXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Y29weVRleFN1YkltYWdlMkQoR0MzRGVudW0gdGFyZ2V0LCBH
QzNEaW50IGxldmVsLCBHQzNEaW50IHhvZmZzZXQsIEdDM0RpbnQgeW9mZnNldCwgR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3Vu
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6
OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0g
ICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0
LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJ
TkVBUik7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhU
LCBtX2Zibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZG
RVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQo
R0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZm
ZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBo
ZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgIH0KICAgICA6Omds
Q29weVRleFN1YkltYWdlMkQodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgeCwgeSwg
d2lkdGgsIGhlaWdodCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91bmRGQk8g
PT0gbV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9G
UkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpjdWxsRmFjZShHQzNEZW51bSBtb2RlKQpAQCAtNTg2LDcgKzYw
Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRldGFjaFNoYWRlcihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIFBsYXRmb3JtM0RPYmplY3QKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAg
QVNTRVJUKHNoYWRlcik7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbERldGFj
aFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOworICAgIGdsRGV0YWNoU2hhZGVyKHByb2dyYW0sIHNo
YWRlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0MzRGVudW0gY2Fw
KQpAQCAtNTk4LDcgKzYxNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmRpc2FibGUoR0Mz
RGVudW0gY2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZVZlcnRleEF0dHJpYkFy
cmF5KEdDM0R1aW50IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoaW5kZXgpOworICAgIGdsRGlzYWJsZVZlcnRleEF0
dHJpYkFycmF5KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZHJhd0FycmF5
cyhHQzNEZW51bSBtb2RlLCBHQzNEaW50IGZpcnN0LCBHQzNEc2l6ZWkgY291bnQpCkBAIC02MjIs
NyArNjM4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlKEdDM0RlbnVtIGNhcCkK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmVuYWJsZVZlcnRleEF0dHJpYkFycmF5KEdDM0R1aW50
IGluZGV4KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRl
eCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZpbmlzaCgpCkBAIC02NDAsMTMgKzY1
NiwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpmbHVzaCgpCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVt
IGF0dGFjaG1lbnQsIEdDM0RlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgUGxhdGZvcm0zRE9iamVj
dCBidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZyYW1lYnVm
ZmVyUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0
LCBidWZmZXIpOworICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRh
Y2htZW50LCByZW5kZXJidWZmZXJ0YXJnZXQsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0g
YXR0YWNobWVudCwgR0MzRGVudW0gdGV4dGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUs
IEdDM0RpbnQgbGV2ZWwpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEZy
YW1lYnVmZmVyVGV4dHVyZTJERVhUKHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0
dXJlLCBsZXZlbCk7CisgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyREVYVCh0YXJnZXQsIGF0dGFj
aG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKQEAgLTY1OCw3ICs2NzQsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpmcm9udEZhY2UoR0MzRGVudW0gbW9kZSkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdlbmVyYXRlTWlwbWFwKEdDM0RlbnVtIHRhcmdldCkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2VuZXJhdGVNaXBtYXBFWFQodGFyZ2V0KTsKKyAg
ICBnbEdlbmVyYXRlTWlwbWFwRVhUKHRhcmdldCk7CiB9CiAKIGJvb2wgR3JhcGhpY3NDb250ZXh0
M0Q6OmdldEFjdGl2ZUF0dHJpYihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGlu
ZGV4LCBBY3RpdmVJbmZvJiBpbmZvKQpAQCAtNjY5LDEyICs2ODUsMTIgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0Mz
RHVpbnQgaW5kZXgKICAgICB9CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQg
bWF4QXR0cmlidXRlU2l6ZSA9IDA7Ci0gICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9B
Q1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhBdHRyaWJ1dGVTaXplKTsKKyAgICBnbEdl
dFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgsICZtYXhB
dHRyaWJ1dGVTaXplKTsKICAgICBHTGNoYXIgbmFtZVttYXhBdHRyaWJ1dGVTaXplXTsgLy8gR0xf
QUNUSVZFX0FUVFJJQlVURV9NQVhfTEVOR1RIIGluY2x1ZGVzIG51bGwgdGVybWluYXRpb24KICAg
ICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdMaW50IHNpemUgPSAwOwogICAgIEdMZW51
bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhB
dHRyaWJ1dGVTaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKKyAgICBnbEdl
dEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgbWF4QXR0cmlidXRlU2l6ZSwgJm5hbWVMZW5n
dGgsICZzaXplLCAmdHlwZSwgbmFtZSk7CiAgICAgaWYgKCFuYW1lTGVuZ3RoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaW5mby5uYW1lID0gU3RyaW5nKG5hbWUsIG5hbWVMZW5ndGgpOwpA
QCAtNjkxLDEyICs3MDcsMTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QWN0aXZlVW5p
Zm9ybShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0R1aW50IGluZGUKICAgICB9CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbWF4VW5pZm9ybVNpemUgPSAwOwotICAg
IDo6Z2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwg
Jm1heFVuaWZvcm1TaXplKTsKKyAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVf
VU5JRk9STV9NQVhfTEVOR1RILCAmbWF4VW5pZm9ybVNpemUpOwogICAgIEdMY2hhciBuYW1lW21h
eFVuaWZvcm1TaXplXTsgLy8gR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCBpbmNsdWRlcyBu
dWxsIHRlcm1pbmF0aW9uCiAgICAgR0xzaXplaSBuYW1lTGVuZ3RoID0gMDsKICAgICBHTGludCBz
aXplID0gMDsKICAgICBHTGVudW0gdHlwZSA9IDA7Ci0gICAgOjpnbEdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZvcm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBl
LCBuYW1lKTsKKyAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgaW5kZXgsIG1heFVuaWZv
cm1TaXplLCAmbmFtZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKICAgICBpZiAoIW5hbWVM
ZW5ndGgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFt
ZSwgbmFtZUxlbmd0aCk7CkBAIC03MTIsNyArNzI4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0QXR0YWNoZWRTaGFkZXJzKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHNpemVp
IG0KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsR2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIG1heENvdW50LCBjb3VudCwgc2hhZGVy
cyk7CisgICAgZ2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBz
aGFkZXJzKTsKIH0KIAogaW50IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBdHRyaWJMb2NhdGlvbihQ
bGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0IFN0cmluZyYgbmFtZSkKQEAgLTcyMSw3ICs3
MzcsNyBAQCBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0aW9uKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJgogICAgICAgICByZXR1cm4gLTE7CiAKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbEdldEF0dHJpYkxvY2F0aW9u
KHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0
M0Q6OkF0dHJpYnV0ZXMgR3JhcGhpY3NDb250ZXh0M0Q6OmdldENvbnRleHRBdHRyaWJ1dGVzKCkK
QEAgLTc2MCw3ICs3NzYsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNCdWZm
ZXIoUGxhdGZvcm0zRE9iamVjdCBidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNCdWZmZXIoYnVmZmVy
KTsKKyAgICByZXR1cm4gZ2xJc0J1ZmZlcihidWZmZXIpOwogfQogCiBHQzNEYm9vbGVhbiBHcmFw
aGljc0NvbnRleHQzRDo6aXNFbmFibGVkKEdDM0RlbnVtIGNhcCkKQEAgLTc3NSw3ICs3OTEsNyBA
QCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNGcmFtZWJ1ZmZlcihQbGF0Zm9ybTNE
T2JqZWN0IGZyYW1lYnVmZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzRnJhbWVidWZmZXJFWFQoZnJhbWVi
dWZmZXIpOworICAgIHJldHVybiBnbElzRnJhbWVidWZmZXJFWFQoZnJhbWVidWZmZXIpOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKQEAgLTc4NCw3ICs4MDAsNyBAQCBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRl
eHQzRDo6aXNQcm9ncmFtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKICAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJ
c1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIGdsSXNQcm9ncmFtKHByb2dyYW0pOwogfQog
CiBHQzNEYm9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0z
RE9iamVjdCByZW5kZXJidWZmZXIpCkBAIC03OTMsNyArODA5LDcgQEAgR0MzRGJvb2xlYW4gR3Jh
cGhpY3NDb250ZXh0M0Q6OmlzUmVuZGVyYnVmZmVyKFBsYXRmb3JtM0RPYmplY3QgcmVuZGVyYnVm
ZmVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICByZXR1cm4gOjpnbElzUmVuZGVyYnVmZmVyRVhUKHJlbmRlcmJ1ZmZlcik7CisgICAg
cmV0dXJuIGdsSXNSZW5kZXJidWZmZXJFWFQocmVuZGVyYnVmZmVyKTsKIH0KIAogR0MzRGJvb2xl
YW4gR3JhcGhpY3NDb250ZXh0M0Q6OmlzU2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQpA
QCAtODAyLDcgKzgxOCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1NoYWRl
cihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogCiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc1NoYWRlcihzaGFkZXIp
OworICAgIHJldHVybiBnbElzU2hhZGVyKHNoYWRlcik7CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBo
aWNzQ29udGV4dDNEOjppc1RleHR1cmUoUGxhdGZvcm0zRE9iamVjdCB0ZXh0dXJlKQpAQCAtODI0
LDcgKzg0MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmxpbmtQcm9ncmFtKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSkKIHsKICAgICBBU1NFUlQocHJvZ3JhbSk7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbExpbmtQcm9ncmFtKHByb2dyYW0pOworICAgIGdsTGlua1By
b2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBpeGVsU3RvcmVp
KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHBhcmFtKQpAQCAtODQ2LDE1ICs4NjIsMTUgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFBpeGVscyhHQzNEaW50IHgsIEdDM0RpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2kKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICA6Omds
Rmx1c2goKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211
bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9G
UkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xC
bGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsg
d2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7Cisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX211
bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFN
RUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJFWFQoeCwgeSwg
eCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NP
TE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgICAgICA6OmdsRmx1c2goKTsKICAgICB9
CiAgICAgOjpnbFJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBk
YXRhKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3VuZEZCTyA9PSBtX211bHRp
c2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCkBAIC04ODIsNyArODk4LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHQzNEZW51bSB0YXJnZXQs
IEdDM0RlbnVtIGludGVybmFsZm8KICAgICAgICAgaW50ZXJuYWxmb3JtYXQgPSBHTF9SR0I7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KLSAgICA6OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVCh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2VFWFQodGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNhbXBsZUNvdmVyYWdlKEdDM0RjbGFtcGYgdmFsdWUsIEdD
M0Rib29sZWFuIGludmVydCkKQEAgLTkxOSw3ICs5MzUsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpzdGVuY2lsRnVuYyhHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFz
aykKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnN0ZW5jaWxGdW5jU2VwYXJhdGUoR0MzRGVudW0g
ZmFjZSwgR0MzRGVudW0gZnVuYywgR0MzRGludCByZWYsIEdDM0R1aW50IG1hc2spCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwg
ZnVuYywgcmVmLCBtYXNrKTsKKyAgICBnbFN0ZW5jaWxGdW5jU2VwYXJhdGUoZmFjZSwgZnVuYywg
cmVmLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE1hc2soR0Mz
RHVpbnQgbWFzaykKQEAgLTkzMSw3ICs5NDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpz
dGVuY2lsTWFzayhHQzNEdWludCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNp
bE1hc2tTZXBhcmF0ZShHQzNEZW51bSBmYWNlLCBHQzNEdWludCBtYXNrKQogewogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2sp
OworICAgIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZShmYWNlLCBtYXNrKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6c3RlbmNpbE9wKEdDM0RlbnVtIGZhaWwsIEdDM0RlbnVtIHpmYWlsLCBH
QzNEZW51bSB6cGFzcykKQEAgLTk0Myw3ICs5NTksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNz
KQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbE9wU2VwYXJhdGUoR0MzRGVudW0gZmFj
ZSwgR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZhaWwsIEdDM0RlbnVtIHpwYXNzKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBm
YWlsLCB6ZmFpbCwgenBhc3MpOworICAgIGdsU3RlbmNpbE9wU2VwYXJhdGUoZmFjZSwgZmFpbCwg
emZhaWwsIHpwYXNzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1ldGVy
ZihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQgdmFsdWUpCkBAIC05
NjEsMTMwICs5NzcsMTMwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnRleFBhcmFtZXRlcmko
R0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCB2CiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp1bmlmb3JtMWYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMWYobG9jYXRpb24sIHYw
KTsKKyAgICBnbFVuaWZvcm0xZihsb2NhdGlvbiwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMWZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlm
b3JtMWZ2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yZihH
QzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwor
ICAgIGdsVW5pZm9ybTJmKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMmZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiAyCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0yZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0yZnYobG9jYXRpb24sIHNpemUs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNmKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAs
IHYxLCB2Mik7CisgICAgZ2xVbmlmb3JtM2YobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rm
bG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAzCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm0zZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0zZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5p
Zm9ybTRmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNE
ZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICA6OmdsVW5pZm9ybTRmKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3Jt
NGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQz
RDo6dW5pZm9ybTRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtNGZ2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGZ2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaShHQzNEaW50IGxvY2F0
aW9uLCBHQzNEaW50IHYwKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xV
bmlmb3JtMWkobG9jYXRpb24sIHYwKTsKKyAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMWl2KEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGds
VW5pZm9ybTFpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtMmkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2
MSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTJpKGxvY2F0
aW9uLCB2MCwgdjEpOworICAgIGdsVW5pZm9ybTJpKGxvY2F0aW9uLCB2MCwgdjEpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtMml2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rp
bnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRz
IHRvIGJlIGEgbXVsdGlwbGUgb2YgMgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xVbmlmb3JtMml2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtMml2KGxv
Y2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZv
cm0zaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYxLCBHQzNEaW50IHYy
KQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtM2kobG9jYXRp
b24sIHYwLCB2MSwgdjIpOworICAgIGdsVW5pZm9ybTNpKGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsK
IH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTNpdihHQzNEaW50IGxvY2F0aW9u
LCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICA6OmdsVW5pZm9ybTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTNpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtNGkoR0MzRGludCBsb2NhdGlvbiwgR0MzRGludCB2MCwgR0MzRGludCB2MSwgR0Mz
RGludCB2MiwgR0MzRGludCB2MykKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsVW5pZm9ybTRpKGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xVbmlmb3JtNGko
bG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTRpdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50KiBhcnJheSwgR0MzRHNpemVpIHNp
emUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDQK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTRpdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTRpdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwog
fQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4MmZ2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0Rib29sZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVp
IHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9m
IDQKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDJmdihs
b2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4MmZ2
KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6dW5pZm9ybU1hdHJpeDNmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0
cmFuc3Bvc2UsIEdDM0RmbG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJ
WE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiA5CiAgICAgbWFrZUNvbnRleHRD
dXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIHNpemUsIHRyYW5z
cG9zZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwgdHJh
bnNwb3NlLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRy
aXg0ZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQq
IGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRv
IGJlIGEgbXVsdGlwbGUgb2YgMTYKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgc2l6ZSwgdHJhbnNwb3NlLCBhcnJheSk7CisgICAg
Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dXNlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHBy
b2dyYW0pCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7CisgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2YWxpZGF0ZVByb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQpAQCAt
MTA5Miw2MSArMTEwOCw2MSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZVByb2dy
YW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgIEFTU0VSVChwcm9ncmFtKTsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7
CisgICAgZ2xWYWxpZGF0ZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnZlcnRleEF0dHJpYjFmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQgdjApCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2
MCk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZihpbmRleCwgdjApOwogfQogCiB2b2lkIEdyYXBoaWNz
Q29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIxZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJy
YXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjFm
dihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMWZ2KGluZGV4LCBhcnJheSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjJmKEdDM0R1aW50IGluZGV4
LCBHQzNEZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmVydGV4QXR0cmliMmYoaW5kZXgsIHYwLCB2MSk7CisgICAgZ2xWZXJ0ZXhB
dHRyaWIyZihpbmRleCwgdjAsIHYxKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVy
dGV4QXR0cmliMmZ2KEdDM0R1aW50IGluZGV4LCBHQzNEZmxvYXQqIGFycmF5KQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZnYoaW5kZXgsIGFycmF5
KTsKKyAgICBnbFZlcnRleEF0dHJpYjJmdihpbmRleCwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWIzZihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0IHYw
LCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQo
KTsKLSAgICA6OmdsVmVydGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOworICAgIGdsVmVy
dGV4QXR0cmliM2YoaW5kZXgsIHYwLCB2MSwgdjIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp2ZXJ0ZXhBdHRyaWIzZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjNmdihpbmRl
eCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliM2Z2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmKEdDM0R1aW50IGluZGV4LCBHQzNE
ZmxvYXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyLCBHQzNEZmxvYXQgdjMpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2
MCwgdjEsIHYyLCB2Myk7CisgICAgZ2xWZXJ0ZXhBdHRyaWI0ZihpbmRleCwgdjAsIHYxLCB2Miwg
djMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7
Ci0gICAgOjpnbFZlcnRleEF0dHJpYjRmdihpbmRleCwgYXJyYXkpOworICAgIGdsVmVydGV4QXR0
cmliNGZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRl
eEF0dHJpYlBvaW50ZXIoR0MzRHVpbnQgaW5kZXgsIEdDM0RpbnQgc2l6ZSwgR0MzRGVudW0gdHlw
ZSwgR0MzRGJvb2xlYW4gbm9ybWFsaXplZCwgR0MzRHNpemVpIHN0cmlkZSwgR0MzRGludHB0ciBv
ZmZzZXQpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJp
YlBvaW50ZXIoaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcmVpbnRlcnBy
ZXRfY2FzdDxHTHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4ob2Zmc2V0KSkpOworICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRl
LCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQp
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZpZXdwb3J0KEdDM0RpbnQgeCwgR0Mz
RGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQpCkBAIC0xMTY0LDcgKzEx
ODAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRCb29sZWFudihHQzNEZW51bSBwbmFt
ZSwgR0MzRGJvb2xlYW4qIHZhbHVlKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QnVmZmVy
UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldEJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2
KHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RmxvYXR2KEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQpAQCAtMTE3OCw3ICsxMTk0
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFy
YW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBpZiAoYXR0YWNobWVudCA9PSBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQpCiAgICAgICAg
IGF0dGFjaG1lbnQgPSBERVBUSF9BVFRBQ0hNRU5UOyAvLyBPciBTVEVOQ0lMX0FUVEFDSE1FTlQs
IGVpdGhlciB3b3Jrcy4KLSAgICA6OmdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwgdmFsdWUpOworICAgIGdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBhdHRhY2htZW50LCBwbmFtZSwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51
bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCkBAIC0xMjA5LDcgKzEyMjUsNyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpnZXRJbnRlZ2VydihHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUp
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtaXYoUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRl
eHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgdmFsdWUp
OworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2YWx1ZSk7CiB9CiAKIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtKQpAQCAtMTIxOCwxNCArMTIzNCwxNCBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFByb2dyYW1JbmZvTG9nKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSkKIAogICAgIG1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgIEdMaW50IGxlbmd0aDsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2
KHByb2dyYW0sIEdMX0lORk9fTE9HX0xFTkdUSCwgJmxlbmd0aCk7CisgICAgZ2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKICAgICBpZiAoIWxlbmd0
aCkKICAgICAgICAgcmV0dXJuICIiOwogCiAgICAgR0xzaXplaSBzaXplOwogICAgIEdMY2hhciog
aW5mbyA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAKLSAgICA6OmdsR2V0UHJvZ3Jh
bUluZm9Mb2cocHJvZ3JhbSwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgZ2xHZXRQcm9ncmFt
SW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKICAgICBTdHJpbmcgcyhpbmZv
KTsKICAgICBmYXN0RnJlZShpbmZvKTsKICAgICByZXR1cm4gczsKQEAgLTEyMzQsNyArMTI1MCw3
IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0UmVuZGVyYnVmZmVy
UGFyYW1ldGVyaXYoR0MzRGVudW0gdGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGludCogdmFs
dWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdldFJlbmRlcmJ1ZmZl
clBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcml2RVhUKHRhcmdldCwgcG5hbWUsIHZhbHVlKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIsIEdDM0Rl
bnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTEyNTAsNyArMTI2Niw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFNoYWRlcml2KFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyLCBHQzNE
ZW51bSBwbmFtZSwgR0MzCiAgICAgICAgIGNhc2UgU0hBREVSX1RZUEU6CiAgICAgICAgICAgICAv
LyBMZXQgT3BlbkdMIGhhbmRsZSB0aGVzZS4KICAgICAgICAgCi0gICAgICAgICAgICA6OmdsR2V0
U2hhZGVyaXYoc2hhZGVyLCBwbmFtZSwgdmFsdWUpOworICAgICAgICAgICAgZ2xHZXRTaGFkZXJp
dihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgCiAg
ICAgICAgIGNhc2UgQ09NUElMRV9TVEFUVVM6CkBAIC0xMjk1LDE0ICsxMzExLDE0IEBAIFN0cmlu
ZyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVySW5mb0xvZyhQbGF0Zm9ybTNET2JqZWN0IHNo
YWRlcikKIAogICAgICBpZiAoZW50cnkuaXNWYWxpZCkgewogICAgICAgICAgR0xpbnQgbGVuZ3Ro
OwotICAgICAgICAgOjpnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19MT0dfTEVOR1RILCAm
bGVuZ3RoKTsKKyAgICAgICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5H
VEgsICZsZW5ndGgpOwogICAgICAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgICAgICAgcmV0dXJu
ICIiOwogCiAgICAgICAgICBHTHNpemVpIHNpemU7CiAgICAgICAgICBHTGNoYXIqIGluZm8gPSAo
R0xjaGFyKikgZmFzdE1hbGxvYyhsZW5ndGgpOwogCi0gICAgICAgICA6OmdsR2V0U2hhZGVySW5m
b0xvZyhzaGFkZXIsIGxlbmd0aCwgJnNpemUsIGluZm8pOworICAgICAgICAgZ2xHZXRTaGFkZXJJ
bmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CiAKICAgICAgICAgIFN0cmluZyBz
KGluZm8pOwogICAgICAgICAgZmFzdEZyZWUoaW5mbyk7CkBAIC0xMzQxLDEzICsxMzU3LDEzIEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFRleFBhcmFtZXRlcml2KEdDM0RlbnVtIHRhcmdl
dCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRVbmlm
b3JtZnYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxv
YXQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRVbmlm
b3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1mdihwcm9n
cmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRV
bmlmb3JtaXYoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNEaW50IGxvY2F0aW9uLCBHQzNE
aW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgZ2xHZXRVbmlmb3JtaXYocHJv
Z3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKIH0KIAogR0MzRGludCBHcmFwaGljc0NvbnRleHQzRDo6
Z2V0VW5pZm9ybUxvY2F0aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5n
JiBuYW1lKQpAQCAtMTM1NSwxOSArMTM3MSwxOSBAQCBHQzNEaW50IEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdAog
ICAgIEFTU0VSVChwcm9ncmFtKTsKIAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJl
dHVybiA6OmdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRhdGEoKSk7
CisgICAgcmV0dXJuIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUudXRmOCgpLmRh
dGEoKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYmZ2KEdD
M0R1aW50IGluZGV4LCBHQzNEZW51bSBwbmFtZSwgR0MzRGZsb2F0KiB2YWx1ZSkKIHsKICAgICBt
YWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBu
YW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRleCwgcG5hbWUsIHZhbHVl
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmliaXYoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliaXYoaW5kZXgsIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHZhbHVlKTsKIH0K
IAogR0MzRHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQo
R0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lKQpAQCAtMTM3NSw3ICsxMzkxLDcgQEAgR0Mz
RHNpemVpcHRyIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJPZmZzZXQoR0MzRHVp
bnQgaW5kZXgsIEdDM0RlbnVtIHAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKIAogICAgIEdM
dm9pZCogcG9pbnRlciA9IDA7Ci0gICAgOjpnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4
LCBwbmFtZSwgJnBvaW50ZXIpOworICAgIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgs
IHBuYW1lLCAmcG9pbnRlcik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdDM0RzaXplaXB0cj4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocG9pbnRlcikpOwogfQogCkBAIC0xNTA2LDEyICsx
NTIyLDE0IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmxheWVyQ29tcG9zaXRlZCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1fbGF5ZXJDb21wb3NpdGVkOwogfQogCisjaWYgIVBMQVRGT1JNKFFUKQog
RXh0ZW5zaW9uczNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAg
aWYgKCFtX2V4dGVuc2lvbnMpCiAgICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBF
eHRlbnNpb25zM0RPcGVuR0wodGhpcykpOwogICAgIHJldHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7
CiB9CisjZW5kaWYKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5jcHAKaW5kZXggM2FkYzkzZi4uNzkwOGI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNE
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lv
bnMzRFF0LmNwcApAQCAtMzQsNyArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUV4
dGVuc2lvbnMzRFF0OjpFeHRlbnNpb25zM0RRdCgpCitFeHRlbnNpb25zM0RRdDo6RXh0ZW5zaW9u
czNEUXQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvRXh0ZW5zaW9uczNEUXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmgKaW5kZXggYzY3ZmJlZC4uYTdjODYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCkBAIC00
OCw3ICs0OCwxMCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBu
ZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRp
b25zLgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLSAgICBFeHRlbnNpb25z
M0RRdCgpOworICAgIEV4dGVuc2lvbnMzRFF0KGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEKik7CisK
KyAgICAvLyBXZWFrIHBvaW50ZXIgYmFjayB0byBHcmFwaGljc0NvbnRleHQzRAorICAgIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHQzRFByb2NzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHQzRFByb2NzLmgKaW5kZXggOTkyODBkNy4uZGVkYWI3NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RQcm9jcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dDNEUHJvY3MuaApAQCAtMiw0MSArMiw0MiBAQCBHTF9QUk9DKHZvaWQsIGdsQWN0
aXZlVGV4dHVyZSwgKEdDM0RlbnVtKSkKIEdMX1BST0Modm9pZCwgZ2xBdHRhY2hTaGFkZXIsIChH
QzNEdWludCwgR0MzRHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwg
KEdDM0R1aW50LCBHQzNEdWludCwgY29uc3QgY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEJpbmRC
dWZmZXIsIChHQzNEZW51bSwgR0MzRHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEJpbmRGcmFtZWJ1
ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCi1HTF9QUk9DKHZvaWQsIGdsQmluZFJlbmRlcmJ1
ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCitHTF9QUk9DKHZvaWQsIGdsQmluZEZyYW1lYnVm
ZmVyRVhULCAoR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kUmVuZGVy
YnVmZmVyRVhULCAoR0MzRGVudW0sIEdDM0R1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZENv
bG9yLCAoR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZiwgR0MzRGNsYW1wZikpCiBH
TF9QUk9DKHZvaWQsIGdsQmxlbmRFcXVhdGlvbiwgKEdDM0RlbnVtKSkKIEdMX1BST0Modm9pZCwg
Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0pKQogR0xfUFJPQyh2
b2lkLCBnbEJsZW5kRnVuY1NlcGFyYXRlLCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRGVudW0pKQorR0xfUFJPQyh2b2lkLCBnbEJsaXRGcmFtZWJ1ZmZlckVYVCwgKEdDM0RpbnQs
IEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdDM0RpbnQsIEdD
M0RpbnQsIEdDM0RiaXRmaWVsZCwgR0MzRGVudW0pKTsKIEdMX1BST0Modm9pZCwgZ2xCdWZmZXJE
YXRhLCAoR0MzRGVudW0sIEdDM0RzaXplaXB0ciwgY29uc3Qgdm9pZCosIEdDM0RlbnVtKSkKIEdM
X1BST0Modm9pZCwgZ2xCdWZmZXJTdWJEYXRhLCAoR0MzRGVudW0sIEdDM0RpbnRwdHIsIEdDM0Rz
aXplaXB0ciwgY29uc3Qgdm9pZCopKQotR0xfUFJPQyhHQzNEZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzLCAoR0MzRGVudW0pKQorR0xfUFJPQyhHQzNEZW51bSwgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzRVhULCAoR0MzRGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbENvbXBpbGVTaGFkZXIs
IChHQzNEdWludCkpCiBHTF9QUk9DKEdDM0R1aW50LCBnbENyZWF0ZVByb2dyYW0sICgpKQogR0xf
UFJPQyhHQzNEdWludCwgZ2xDcmVhdGVTaGFkZXIsIChHQzNEZW51bSkpCiBHTF9QUk9DKHZvaWQs
IGdsRGVsZXRlQnVmZmVycywgKEdDM0RzaXplaSwgY29uc3QgR0MzRHVpbnQqKSkKLUdMX1BST0Mo
dm9pZCwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMsIChHQzNEc2l6ZWksIGNvbnN0IEdDM0R1aW50Kikp
CitHTF9QUk9DKHZvaWQsIGdsRGVsZXRlRnJhbWVidWZmZXJzRVhULCAoR0MzRHNpemVpLCBjb25z
dCBHQzNEdWludCopKQogR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVByb2dyYW0sIChHQzNEdWludCkp
Ci1HTF9QUk9DKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVycywgKEdDM0RzaXplaSwgY29uc3Qg
R0MzRHVpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzRVhULCAoR0Mz
RHNpemVpLCBjb25zdCBHQzNEdWludCopKQogR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVNoYWRlciwg
KEdDM0R1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xEZXRhY2hTaGFkZXIsIChHQzNEdWludCwgR0Mz
RHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1
aW50KSkKIEdMX1BST0Modm9pZCwgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgKEdDM0R1aW50
KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgKEdDM0RlbnVtLCBH
QzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50LCBHQzNE
aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCwgKEdDM0Rl
bnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyREVYVCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0R1
aW50LCBHQzNEaW50KSkKIEdMX1BST0Modm9pZCwgZ2xHZW5CdWZmZXJzLCAoR0MzRHNpemVpLCBH
QzNEdWludCopKQotR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwLCAoR0MzRGVudW0pKQot
R0xfUFJPQyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVycywgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkK
LUdMX1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCAoR0MzRHNpemVpLCBHQzNEdWludCop
KQorR0xfUFJPQyh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwRVhULCAoR0MzRGVudW0pKQorR0xfUFJP
Qyh2b2lkLCBnbEdlbkZyYW1lYnVmZmVyc0VYVCwgKEdDM0RzaXplaSwgR0MzRHVpbnQqKSkKK0dM
X1BST0Modm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzRVhULCAoR0MzRHNpemVpLCBHQzNEdWludCop
KQogR0xfUFJPQyh2b2lkLCBnbEdldEFjdGl2ZUF0dHJpYiwgKEdDM0R1aW50LCBHQzNEdWludCwg
R0MzRHNpemVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVudW0qLCBjaGFyKikpCiBHTF9Q
Uk9DKHZvaWQsIGdsR2V0QWN0aXZlVW5pZm9ybSwgKEdDM0R1aW50LCBHQzNEdWludCwgR0MzRHNp
emVpLCBHQzNEc2l6ZWkqLCBHQzNEaW50KiwgR0MzRGVudW0qLCBjaGFyKikpCiBHTF9QUk9DKHZv
aWQsIGdsR2V0QXR0YWNoZWRTaGFkZXJzLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVp
KiwgR0MzRHVpbnQqKSkKIEdMX1BST0MoR0MzRGludCwgZ2xHZXRBdHRyaWJMb2NhdGlvbiwgKEdD
M0R1aW50LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QnVmZmVyUGFyYW1ldGVy
aXYsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQqKSkKLUdMX1BST0Modm9pZCwgZ2xHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGVudW0sIEdDM0RpbnQqKSkKK0dMX1BST0Modm9pZCwgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdkVYVCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQq
KSkKIEdMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgKEdDM0R1aW50LCBHQzNEc2l6
ZWksIEdDM0RzaXplaSosIGNoYXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRQcm9ncmFtaXYsIChH
QzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkKLUdMX1BST0Modm9pZCwgZ2xHZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdiwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJP
Qyh2b2lkLCBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2RVhULCAoR0MzRGVudW0sIEdDM0Rl
bnVtLCBHQzNEaW50KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0U2hhZGVySW5mb0xvZywgKEdDM0R1
aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIGNoYXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRT
aGFkZXJpdiwgKEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopKQogR0xfUFJPQyh2b2lkLCBn
bEdldFNoYWRlclNvdXJjZSwgKEdDM0R1aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIGNoYXIq
KSkKQEAgLTQ3LDEyICs0OCwxMyBAQCBHTF9QUk9DKHZvaWQsIGdsR2V0VmVydGV4QXR0cmliZnYs
IChHQzNEdWludCwgR0MzRGVudW0sIEdDM0RmbG9hdCopKQogR0xfUFJPQyh2b2lkLCBnbEdldFZl
cnRleEF0dHJpYml2LCAoR0MzRHVpbnQsIEdDM0RlbnVtLCBHQzNEaW50KikpCiBHTF9QUk9DKHZv
aWQsIGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYsIChHQzNEdWludCwgR0MzRGVudW0sIHZvaWQq
KikpCiBHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElzQnVmZmVyLCAoR0MzRHVpbnQpKQotR0xfUFJP
QyhHQzNEYm9vbGVhbiwgZ2xJc0ZyYW1lYnVmZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNE
Ym9vbGVhbiwgZ2xJc0ZyYW1lYnVmZmVyRVhULCAoR0MzRHVpbnQpKQogR0xfUFJPQyhHQzNEYm9v
bGVhbiwgZ2xJc1Byb2dyYW0sIChHQzNEdWludCkpCi1HTF9QUk9DKEdDM0Rib29sZWFuLCBnbElz
UmVuZGVyYnVmZmVyLCAoR0MzRHVpbnQpKQorR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1JlbmRl
cmJ1ZmZlckVYVCwgKEdDM0R1aW50KSkKIEdMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNTaGFkZXIs
IChHQzNEdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsTGlua1Byb2dyYW0sIChHQzNEdWludCkpCi1H
TF9QUk9DKHZvaWQsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZSwgKEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRHNpemVpLCBHQzNEc2l6ZWkpKQorR0xfUFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VFWFQsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RzaXplaSwgR0MzRHNpemVpKSkKK0dMX1BS
T0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQsIChHQzNEZW51bSwg
R0MzRHNpemVpLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpKTsKIEdMX1BST0Modm9p
ZCwgZ2xTYW1wbGVDb3ZlcmFnZSwgKEdDM0RjbGFtcGYsIEdDM0Rib29sZWFuKSkKIEdMX1BST0Mo
dm9pZCwgZ2xTaGFkZXJTb3VyY2UsIChHQzNEdWludCwgR0MzRHNpemVpLCBjb25zdCBjaGFyKios
IGNvbnN0IEdDM0RpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlLCAo
R0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEdWludCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCmluZGV4IGQ4YjQ0MTMuLjQ5YzI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0x
MjEsNiArMTIxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKIHsKICAgICBRX1VOVVNFRCh3
aWRnZXQpOwogCisgICAgbV9jb250ZXh0LT5wcmVwYXJlVGV4dHVyZSgpOworCiAgICAgUVJlY3RG
IHJlY3QgPSBvcHRpb24gPyBvcHRpb24tPnJlY3QgOiBib3VuZGluZ1JlY3QoKTsKIAogICAgIC8v
IFVzZSBkaXJlY3QgdGV4dHVyZSBtYXBwaW5nIGlmIFdlYkdMIGNhbnZhcyBoYXMgYSBzaGFyZWQg
T3BlbkdMIGNvbnRleHQKQEAgLTEzNywxNSArMTM5LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoCiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwogI2lmIGRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1F
QlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKLSNlbHNlCiAgICAgbV9jb250ZXh0LT5nbEJpbmRG
cmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9m
Ym8pOworI2Vsc2UKKyAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CiAjZW5kaWYKICAgICBn
bFJlYWRQaXhlbHMoLyogeCAqLyAwLCAvKiB5ICovIDAsIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWln
aHQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05F
RF9CWVRFLCBpbWFnZVBpeGVscyk7CisKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKQotICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250
ZXh0LT5tX2JvdW5kRmJvKTsKLSNlbHNlCiAgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7
CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fZmJvKTsKICNlbmRpZgogCiAgICAgLy8g
T3BlbkdMIGdpdmVzIHVzIEFCR1Igb24gMzIgYml0cywgYW5kIHdpdGggdGhlIG9yaWdpbiBhdCB0
aGUgYm90dG9tIGxlZnQKQEAgLTIyMyw2ICsyMjYsNyBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aQogICAgICwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQogICAgICwgbV9tdWx0
aXNhbXBsZUNvbG9yQnVmZmVyKDApCiAgICAgLCBtX2ludGVybmFsKG5ldyBHcmFwaGljc0NvbnRl
eHQzREludGVybmFsKHRoaXMsIGhvc3RXaW5kb3cpKQorCiB7CiAjaWYgZGVmaW5lZChRVF9PUEVO
R0xfRVNfMikKICAgICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKQEAgLTI1MSw3ICsyNTUsMTkg
QEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICB9CiAKICAgICAvLyBDcmVhdGUgYnVmZmVy
cyBmb3IgdGhlIGNhbnZhcyBGQk8uCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAgICBn
bEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9mYm8pOworI2Vsc2UKKyAgICBnbEdl
bkZyYW1lYnVmZmVyc0VYVCgvKiBjb3VudCAqLyAxLCAmbV9mYm8pOworI2VuZGlmCisKKyAgICBn
bEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJmKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
QUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKKyAgICBnbFRleFBhcmFtZXRl
cmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIpOworICAgIGdsVGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6Q0xBTVBfVE9fRURHRSk7CisgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdF
KTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsK
IAogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIGdsQmlu
ZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1
cmUpOwpAQCAtMjYyLDExICsyNzgsMTkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29u
dGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICBn
bEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGlm
IChtX2F0dHJzLmRlcHRoKQorI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgICAgIGds
R2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwor
I2Vsc2UKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzRVhUKC8qIGNvdW50ICovIDEsICZtX2Rl
cHRoU3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKIAogICAgIC8vIEJpbmQgY2FudmFzIEZCTyBhbmQg
c2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCiAgICAgbV9ib3VuZEZCTyA9IG1fZmJv
OworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisjZWxzZQorICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOworI2Vu
ZGlmCiAgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKQEAgLTMwMyw2
ICszMjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjbwogICAgIG1faW50ZXJuYWwtPnBhaW50
KHBhaW50ZXIsIDAsIDApOwogfQogCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGltcGxlbWVu
dGVkIGZvciBwcm9wZXIgbm9uLXByZW11bHRpcGxpZWQtYWxwaGEKQEAgLTE0MjEsMTEgKzE0NDYs
MTIgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CisjZW5kaWYKIAogRXh0ZW5zaW9uczNE
KiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4dGVu
c2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RR
dCk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25zM0RRdCh0
aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9ucy5nZXQoKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100040</attachid>
            <date>2011-07-07 15:34:47 -0700</date>
            <delta_ts>2011-07-15 09:50:12 -0700</delta_ts>
            <desc>fix ANGLE initialization</desc>
            <filename>opengl.diff</filename>
            <type>text/plain</type>
            <size>61390</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcm8KaW5kZXggZDc4YTEzYy4uNmNmMTljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM1
NzAsNiArMzU3MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJHTD0xKSB7CiAgICAg
ICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9uLmggXAogICAgICAgICBodG1sL2Nh
bnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmggXAogICAgICAgICBodG1sL2NhbnZhcy9X
ZWJLaXRMb3NlQ29udGV4dC5oIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJL
aXRCcmlkZ2UuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggXApAQCAtMzU3OSw2ICszNTgw
LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgU09VUkNF
UyArPSBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAKICAgICB9CisKICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgaHRtbC9jYW52YXMv
Q2FudmFzQ29udGV4dEF0dHJpYnV0ZXMuY3BwIFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViR0xP
YmplY3QuY3BwIFwKQEAgLTM1OTksMTMgKzM2MDEsMTIyIEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9XRUJHTD0xKSB7CiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVW5pZm9ybUxvY2F0aW9u
LmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuY3Bw
IFwKICAgICAgICAgaHRtbC9jYW52YXMvV2ViS2l0TG9zZUNvbnRleHQuY3BwIFwKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuY3BwIFwKICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3B1L3F0L0RyYXdpbmdCdWZmZXJRdC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvRXh0ZW5zaW9uczNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
cXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKIAogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFBX
RC9wbGF0Zm9ybS9ncmFwaGljcy9ncHUKKworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tdW51
c2VkLXZhcmlhYmxlCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby1taXNzaW5nLW5vcmV0dXJu
CisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtZnVuY3Rpb24KKyAgICBRTUFLRV9D
WFhGTEFHUyArPSAtV25vLXBhcmVudGhlc2VzCisgICAgUU1BS0VfQ1hYRkxBR1MgKz0gLVduby10
eXBlLWxpbWl0cworICAgIFFNQUtFX0NYWEZMQUdTICs9IC1Xbm8tcmVvcmRlcgorCisgICAgREVG
SU5FUyArPSBZWUVOQUJMRV9OTFM9MCBZWUxUWVBFX0lTX1RSSVZJQUw9MAorCisgICAgQU5HTEVf
RElSID0gJCRyZXBsYWNlKFBXRCwgIldlYkNvcmUiLCAiVGhpcmRQYXJ0eS9BTkdMRSIpCisKKyAg
ICBJTkNMVURFUEFUSCArPSAkJEFOR0xFX0RJUi9zcmMgJCRBTkdMRV9ESVIvaW5jbHVkZQorCisg
ICAgSEVBREVSUyArPSBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9CYXNlVHlw
ZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db21tb24uaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmggXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9FeHRlbnNpb25CZWhhdmlvci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL0Zvckxvb3BVbnJvbGwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9nbHNsYW5nLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZ2xzbGFu
Z190YWIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbmZvU2luay5oIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVEbGwuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplR2xvYmFscy5oIFwKKyAgICAg
ICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmggXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmggXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9NTWFwLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9vc2luY2x1ZGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRw
dXRFU1NMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5o
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmggXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmggXAorICAgICAgICAkJEFOR0xF
X0RJUi9zcmMvY29tcGlsZXIvUG9vbEFsbG9jLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvY29tcGlsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jcHAuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvbWVtb3J5LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3BhcnNlci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9wcmVwcm9jZXNzLmggXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2xnbG9iYWxzLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuaCBcCisgICAgICAgICQk
QU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmggXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuaCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9SZW1vdmVUcmVlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvU2VhcmNoU3ltYm9sLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvU2hIYW5kbGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1i
b2xUYWJsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JF
U1NMLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wu
aCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5oIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1R5cGVzLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvVW5mb2xkU2VsZWN0LmggXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvdXRpbC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVy
L1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9WYXJpYWJsZUluZm8uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WZXJz
aW9uR0xTTC5oIFwKKworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvQ29kZUdlbkdMU0wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL0NvZGVHZW5ITFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9D
b21waWxlci5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAgXAorICAgICAg
ICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAgXAorICAgICAgICAk
JEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL0luaXRpYWxpemVEbGwuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL0ludGVybWVkaWF0ZS5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvaW50ZXJtT3V0LmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRl
cm1UcmF2ZXJzZS5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvb3Nzb3Vy
Y2VfcG9zaXguY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL01hcExvbmdW
YXJpYWJsZU5hbWVzLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRw
dXRFU1NMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNM
LmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAgXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAgXAorICAgICAg
ICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2F0b20uYyBcCisgICAgICAgICQkQU5HTEVfRElS
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvY3BwLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NwcHN0cnVjdC5jIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9tZW1vcnkuYyBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5jIFwKKyAgICAgICAgJCRBTkdM
RV9ESVIvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xzLmMgXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL1F1YWxpZmllckFsaXZlLmNwcCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9SZW1vdmVUcmVlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElS
L3NyYy9jb21waWxlci9TZWFyY2hTeW1ib2wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1NoYWRlckxhbmcuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL1N5bWJvbFRhYmxlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9U
cmFuc2xhdG9yRVNTTC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJh
bnNsYXRvckdMU0wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5z
bGF0b3JITFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9VbmZvbGRT
ZWxlY3QuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0aWwuY3BwIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAgXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuY3BwIFwKIH0KIAog
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX01IVE1MPTEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oCmluZGV4IGE5ZDIyMzgu
LjBmNGJmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FO
R0xFV2ViS2l0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
QU5HTEVXZWJLaXRCcmlkZ2UuaApAQCAtMjksNyArMjksOSBAQAogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCi0jaWYgIVBMQVRGT1JN
KEdUSykKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJBTkdMRS9pbmNsdWRlL0dMU0xBTkcv
U2hhZGVyTGFuZy5oIgorI2VsaWYgIVBMQVRGT1JNKEdUSykKICNpbmNsdWRlICJBTkdMRS9TaGFk
ZXJMYW5nLmgiCiAjZWxzZQogI2luY2x1ZGUgIlNoYWRlckxhbmcuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IGE5
MDk2YTcuLjBjMGVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTgsNiArNTgsNyBAQCBjbGFzcyBDQUxheWVy
OwogY2xhc3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExBVEZPUk0oUVQpCisjaW5jbHVk
ZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVBhaW50
ZXI7CiBjbGFzcyBRUmVjdDsKQEAgLTQ5NSw3ICs0OTYsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYg
PSBJbnRTaXplKCkpOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01J
VU0pIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9N
SVVNKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIC8vIFdpdGggbXVsdGlz
YW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAg
IHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKICNlbmRpZgpAQCAtODgzLDcgKzg4NCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCBhbHBoYU9wLAogICAgICAgICAgICAgICAg
ICAgICB2b2lkKiBkZXN0aW5hdGlvbkRhdGEpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKQogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRl
eHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5k
IGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5v
dCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTApAQCAt
OTI3LDEwICs5MjgsOSBAQCBwdWJsaWM6CiAgICAgfSBTaGFkZXJTb3VyY2VFbnRyeTsKICAgICBI
YXNoTWFwPFBsYXRmb3JtM0RPYmplY3QsIFNoYWRlclNvdXJjZUVudHJ5PiBtX3NoYWRlclNvdXJj
ZU1hcDsKIAorICAgIEFOR0xFV2ViS2l0QnJpZGdlIG1fY29tcGlsZXI7CiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7Ci0gICAgQU5HTEVXZWJL
aXRCcmlkZ2UgbV9jb21waWxlcjsKLQogICAgIE93blB0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1f
ZXh0ZW5zaW9uczsKICNlbmRpZgogCkBAIC05NTYsNyArOTU2LDYgQEAgcHVibGljOgogICAgIC8v
IEVycm9ycyByYWlzZWQgYnkgc3ludGhlc2l6ZUdMRXJyb3IoKS4KICAgICBMaXN0SGFzaFNldDxH
QzNEZW51bT4gbV9zeW50aGV0aWNFcnJvcnM7CiAjZW5kaWYKLQogICAgIC8vIEZJWE1FOiBpZGVh
bGx5IHRoaXMgd291bGQgYmUgdXNlZCBvbiBhbGwgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKSB8fCBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwp
CiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBmZDcyMDczLi4xNWIwYTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTMzLDcgKzMzLDExIEBACiAjaW5j
bHVkZSAiQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViR0xPYmplY3QuaCIKICNpbmNs
dWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaWYgUExBVEZPUk0oUVQpCisjaW5jbHVk
ZSAiRXh0ZW5zaW9uczNEUXQuaCIKKyNlbHNlCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNET3BlbkdM
LmgiCisjZW5kaWYKICNpbmNsdWRlICJGbG9hdDMyQXJyYXkuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgpAQCAtNDYsNiArNTAs
MTEgQEAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1
ZGUgPFF0T3BlbkdML1F0T3BlbkdMPgorI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjaW5j
bHVkZSA8T3BlbkdML2dsLmg+CiAjZWxpZiBQTEFURk9STShHVEspCkBAIC04NywxNSArOTYsMTUg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRlcmluZ1Jlc3VsdHModW5zaWduZWQg
Y2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2kKIAogICAgIGJvb2wgbXVzdFJlc3RvcmVGQk8gPSBm
YWxzZTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMpIHsKLSAgICAgICAgOjpnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0g
ICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1f
ZmJvKTsKLSAgICAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJlbnRXaWR0
aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0
LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotICAgICAgICA6OmdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Cisg
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zi
byk7CisgICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyRVhUKDAsIDAsIG1fY3VycmVudFdpZHRoLCBt
X2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY3VycmVudFdpZHRoLCBtX2N1cnJlbnRIZWlnaHQsIEdM
X0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgICAgICBtdXN0UmVzdG9yZUZCTyA9
IHRydWU7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fYm91bmRGQk8gIT0gbV9mYm8pIHsK
ICAgICAgICAgICAgIG11c3RSZXN0b3JlRkJPID0gdHJ1ZTsKLSAgICAgICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CisgICAgICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMTEzLDkgKzEyMiwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpy
ZWFkUmVuZGVyaW5nUmVzdWx0cyh1bnNpZ25lZCBjaGFyICpwaXhlbHMsIGludCBwaXhlbHNTaQog
ICAgICAgICA6OmdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIHBhY2tBbGlnbm1lbnQp
OwogCiAgICAgaWYgKG11c3RSZXN0b3JlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CisgICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9ib3VuZEZCTyk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0KQogewogICAgIEhUTUxDYW52
YXNFbGVtZW50KiBjYW52YXMgPSBjb250ZXh0LT5jYW52YXMoKTsKQEAgLTE0Miw2ICsxNTIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0NhbnZhcyhD
YW52YXNSZW5kZXJpbmdDb250ZXh0KiBjbwogICAgIHBhaW50VG9DYW52YXMocGl4ZWxzLmdldCgp
LCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LAogICAgICAgICAgICAgICAgICAgY2Fu
dmFzLT53aWR0aCgpLCBjYW52YXMtPmhlaWdodCgpLCBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKSk7CiB9CisjZW5kaWYKIAogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdy
YXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CkBA
IC0yMDcsMjEgKzIxOCwyMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZXNoYXBlKGludCB3
aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgaWYgKHNhbXBsZUNvdW50ID4gbWF4U2FtcGxlQ291
bnQpCiAgICAgICAgICAgICBzYW1wbGVDb3VudCA9IG1heFNhbXBsZUNvdW50OwogICAgICAgICBp
ZiAobV9ib3VuZEZCTyAhPSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Cisg
ICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVs
dGlzYW1wbGVGQk8pOwogICAgICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQs
IG1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIG1faW50
ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIDo6Z2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
X0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUNvbG9yQnVmZmVyKTsKKyAg
ICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIHNhbXBsZUNvdW50LCBtX2ludGVybmFsQ29sb3JG
b3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9SRU5E
RVJCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIpOwogICAgICAgICBpZiAobV9h
dHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpIHsKLSAgICAgICAgICAgIDo6Z2xCaW5kUmVu
ZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5j
aWxCdWZmZXIpOwotICAgICAgICAgICAgOjpnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBs
ZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBzYW1wbGVDb3VudCwgaW50ZXJuYWxEZXB0aFN0ZW5j
aWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVy
RVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZmZXIp
OworICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVFWFQoR0xfUkVO
REVSQlVGRkVSX0VYVCwgc2FtcGxlQ291bnQsIGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgICAgIGlmIChtX2F0dHJzLnN0ZW5jaWwpCi0gICAgICAg
ICAgICAgICAgOjpnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VY
VCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9tdWx0
aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVO
VF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0ZW5jaWxCdWZm
ZXIpOwogICAgICAgICAgICAgaWYgKG1fYXR0cnMuZGVwdGgpCi0gICAgICAgICAgICAgICAgOjpn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfREVQVEhf
QVRUQUNITUVOVF9FWFQsIEdMX1JFTkRFUkJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVEZXB0aFN0
ZW5jaWxCdWZmZXIpOworICAgICAgICAgICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJF
WFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9ERVBUSF9BVFRBQ0hNRU5UX0VYVCwgR0xfUkVOREVS
QlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZURlcHRoU3RlbmNpbEJ1ZmZlcik7CiAgICAgICAgIH0K
LSAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJFWFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgMCk7
CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsK
ICAgICAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVChHTF9GUkFNRUJVRkZFUl9F
WFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewogICAgICAgICAgICAgLy8gRklY
TUU6IGNsZWFudXAuCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMjMxLDIyICsy
NDIsMjIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBo
ZWlnaHQpCiAgICAgLy8gcmVzaXplIHJlZ3VsYXIgRkJPCiAgICAgaWYgKG1fYm91bmRGQk8gIT0g
bV9mYm8pIHsKICAgICAgICAgbXVzdFJlc3RvcmVGQk8gPSB0cnVlOwotICAgICAgICA6OmdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKICAgICB9CiAgICAg
OjpnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSk7CiAgICAgOjpnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgOjpnbEZyYW1l
YnVmZmVyVGV4dHVyZTJERVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVO
VDBfRVhULCBHTF9URVhUVVJFXzJELCBtX3RleHR1cmUsIDApOworICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkRFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQs
IEdMX1RFWFRVUkVfMkQsIG1fdGV4dHVyZSwgMCk7CiAgICAgOjpnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwogICAgIDo6Z2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29s
b3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCAwKTsKICAgICBpZiAoIW1fYXR0cnMuYW50aWFsaWFzICYmIChtX2F0dHJzLnN0
ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkpIHsKLSAgICAgICAgOjpnbEJpbmRSZW5kZXJidWZmZXJF
WFQoR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICA6
OmdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBpbnRlcm5hbERl
cHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGdsQmluZFJlbmRlcmJ1
ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAg
ICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZUVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCBpbnRlcm5h
bERlcHRoU3RlbmNpbEZvcm1hdCwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGlmIChtX2F0dHJz
LnN0ZW5jaWwpCi0gICAgICAgICAgICA6OmdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJFWFQoR0xf
RlJBTUVCVUZGRVJfRVhULCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZG
RVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisgICAgICAgICAgICBnbEZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5U
X0VYVCwgR0xfUkVOREVSQlVGRkVSX0VYVCwgbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAgICAg
ICBpZiAobV9hdHRycy5kZXB0aCkKLSAgICAgICAgICAgIDo6Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0RFUFRIX0FUVEFDSE1FTlRfRVhULCBHTF9S
RU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIDo6Z2xCaW5k
UmVuZGVyYnVmZmVyRVhUKEdMX1JFTkRFUkJVRkZFUl9FWFQsIDApOworICAgICAgICAgICAgZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX0RFUFRIX0FU
VEFDSE1FTlRfRVhULCBHTF9SRU5ERVJCVUZGRVJfRVhULCBtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7
CisgICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlckVYVChHTF9SRU5ERVJCVUZGRVJfRVhULCAwKTsK
ICAgICB9CiAgICAgaWYgKGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1c0VYVChHTF9GUkFNRUJVRkZF
Ul9FWFQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFX0VYVCkgewogICAgICAgICAvLyBGSVhN
RTogY2xlYW51cApAQCAtMjU0LDcgKzI2NSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnJl
c2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIH0KIAogICAgIGlmIChtX2F0dHJzLmFu
dGlhbGlhcykgewotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
X0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdM
X0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiAgICAgICAgIGlmIChtX2JvdW5k
RkJPID09IG1fbXVsdGlzYW1wbGVGQk8pCiAgICAgICAgICAgICBtdXN0UmVzdG9yZUZCTyA9IGZh
bHNlOwogICAgIH0KQEAgLTI4Miw3ICsyOTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpy
ZXNoYXBlKGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgICAgOjpnbEdldEludGVnZXJ2KEdM
X1NURU5DSUxfQ0xFQVJfVkFMVUUsICZjbGVhclN0ZW5jaWwpOwogICAgICAgICA6OmdsQ2xlYXJT
dGVuY2lsKDApOwogICAgICAgICA6OmdsR2V0SW50ZWdlcnYoR0xfU1RFTkNJTF9XUklURU1BU0ss
IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQqPigmc3RlbmNpbE1hc2spKTsKLSAgICAgICAgOjpnbFN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOworICAgICAgICBnbFN0ZW5j
aWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4ZmZmZmZmZmYpOwogICAgICAgICBjbGVhck1hc2sg
fD0gR0xfU1RFTkNJTF9CVUZGRVJfQklUOwogICAgIH0KICAgICBpc1NjaXNzb3JFbmFibGVkID0g
OjpnbElzRW5hYmxlZChHTF9TQ0lTU09SX1RFU1QpOwpAQCAtMzAwLDcgKzMxMSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnJlc2hhcGUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICAgIH0K
ICAgICBpZiAobV9hdHRycy5zdGVuY2lsKSB7CiAgICAgICAgIDo6Z2xDbGVhclN0ZW5jaWwoY2xl
YXJTdGVuY2lsKTsKLSAgICAgICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIHN0
ZW5jaWxNYXNrKTsKKyAgICAgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05ULCBzdGVu
Y2lsTWFzayk7CiAgICAgfQogICAgIGlmIChpc1NjaXNzb3JFbmFibGVkKQogICAgICAgICA6Omds
RW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CkBAIC0zMTIsNyArMzIzLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cmVzaGFwZShpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgICAgICAgIDo6Z2xE
aXNhYmxlKEdMX0RJVEhFUik7CiAKICAgICBpZiAobXVzdFJlc3RvcmVGQk8pCi0gICAgICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKKyAg
ICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJP
KTsKIAogICAgIDo6Z2xGbHVzaCgpOwogfQpAQCAtMzI4LDE4ICszMzksMTggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cHJlcGFyZVRleHR1cmUoKQogICAgICAgICByZXR1cm47CiAgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzKSB7Ci0gICAgICAg
IDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlz
YW1wbGVGQk8pOwotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVC
VUZGRVJfRVhULCBtX2Zibyk7Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoMCwgMCwg
bV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1f
Y3VycmVudEhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1w
bGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVS
X0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwogICAgIH0KLSAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgIDo6Z2xB
Y3RpdmVUZXh0dXJlKDApOwotICAgIDo6Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKLSAgICA6OmdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0LCAwKTsKLSAgICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9ib3VuZFRl
eHR1cmUwKTsKLSAgICA6OmdsQWN0aXZlVGV4dHVyZShtX2FjdGl2ZVRleHR1cmUpOwotICAgIDo6
Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2JvdW5kRkJPKTsKLSAg
ICA6OmdsRmluaXNoKCk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBtX2Zibyk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKKyAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAgIGdsQ29w
eVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCAwLCAw
LCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwKTsKKyAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7CisgICAgZ2xBY3RpdmVUZXh0dXJlKG1f
YWN0aXZlVGV4dHVyZSk7CisgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBtX2JvdW5kRkJPKTsKKyAgICBnbEZpbmlzaCgpOwogICAgIG1fbGF5ZXJDb21wb3NpdGVk
ID0gdHJ1ZTsKIH0KIApAQCAtMzQ3LDcgKzM1OCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmFjdGl2ZVRleHR1cmUoR0MzRGVudW0gdGV4dHVyZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBtX2FjdGl2ZVRleHR1cmUgPSB0ZXh0dXJlOwotICAgIDo6Z2xBY3RpdmVUZXh0
dXJlKHRleHR1cmUpOworICAgIGdsQWN0aXZlVGV4dHVyZSh0ZXh0dXJlKTsKIH0KIAogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YXR0YWNoU2hhZGVyKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwg
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCkBAIC0zNTUsMjAgKzM2NiwyMCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjphdHRhY2hTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBQbGF0
Zm9ybTNET2JqZWN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogICAgIEFTU0VSVChzaGFkZXIpOwog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwg
c2hhZGVyKTsKKyAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBzaGFkZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQXR0cmliTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBw
cm9ncmFtLCBHQzNEdWludCBpbmRleCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VS
VChwcm9ncmFtKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmluZEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGdsQmlu
ZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGluZGV4LCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kQnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgUGxh
dGZvcm0zRE9iamVjdCBidWZmZXIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbEJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOworICAgIGdsQmluZEJ1ZmZlcih0YXJnZXQs
IGJ1ZmZlcik7CiB9CiAKIApAQCAtMzgxLDcgKzM5Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OmJpbmRGcmFtZWJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgYnVm
ZmVyCiAgICAgZWxzZQogICAgICAgICBmYm8gPSAobV9hdHRycy5hbnRpYWxpYXMgPyBtX211bHRp
c2FtcGxlRkJPIDogbV9mYm8pOwogICAgIGlmIChmYm8gIT0gbV9ib3VuZEZCTykgewotICAgICAg
ICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKHRhcmdldCwgZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXJFWFQodGFyZ2V0LCBmYm8pOwogICAgICAgICBtX2JvdW5kRkJPID0gZmJvOwogICAg
IH0KIH0KQEAgLTM4OSw3ICs0MDAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpiaW5kRnJh
bWVidWZmZXIoR0MzRGVudW0gdGFyZ2V0LCBQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcgogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6YmluZFJlbmRlcmJ1ZmZlcihHQzNEZW51bSB0YXJnZXQsIFBsYXRm
b3JtM0RPYmplY3QgcmVuZGVyYnVmZmVyKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIDo6Z2xCaW5kUmVuZGVyYnVmZmVyRVhUKHRhcmdldCwgcmVuZGVyYnVmZmVyKTsKKyAgICBn
bEJpbmRSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCByZW5kZXJidWZmZXIpOwogfQogCiAKQEAgLTQx
Niw3ICs0MjcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uKEdDM0Rl
bnVtIG1vZGUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpibGVuZEVxdWF0aW9uU2VwYXJhdGUo
R0MzRGVudW0gbW9kZVJHQiwgR0MzRGVudW0gbW9kZUFscGhhKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUobW9kZVJHQiwgbW9kZUFs
cGhhKTsKKyAgICBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlUkdCLCBtb2RlQWxwaGEpOwog
fQogCiAKQEAgLTQyOSwzMSArNDQwLDMxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJsZW5k
RnVuYyhHQzNEZW51bSBzZmFjdG9yLCBHQzNEZW51bSBkZmFjdG9yKQogdm9pZCBHcmFwaGljc0Nv
bnRleHQzRDo6YmxlbmRGdW5jU2VwYXJhdGUoR0MzRGVudW0gc3JjUkdCLCBHQzNEZW51bSBkc3RS
R0IsIEdDM0RlbnVtIHNyY0FscGhhLCBHQzNEZW51bSBkc3RBbHBoYSkKIHsKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQmxlbmRGdW5jU2VwYXJhdGUoc3JjUkdCLCBkc3RSR0Is
IHNyY0FscGhhLCBkc3RBbHBoYSk7CisgICAgZ2xCbGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRz
dFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
YnVmZmVyRGF0YShHQzNEZW51bSB0YXJnZXQsIEdDM0RzaXplaXB0ciBzaXplLCBHQzNEZW51bSB1
c2FnZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsQnVmZmVyRGF0YSh0
YXJnZXQsIHNpemUsIDAsIHVzYWdlKTsKKyAgICBnbEJ1ZmZlckRhdGEodGFyZ2V0LCBzaXplLCAw
LCB1c2FnZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmJ1ZmZlckRhdGEoR0MzRGVu
dW0gdGFyZ2V0LCBHQzNEc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0MzRGVudW0g
dXNhZ2UpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEJ1ZmZlckRhdGEo
dGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CisgICAgZ2xCdWZmZXJEYXRhKHRhcmdldCwgc2l6
ZSwgZGF0YSwgdXNhZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpidWZmZXJTdWJE
YXRhKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludHB0ciBvZmZzZXQsIEdDM0RzaXplaXB0ciBzaXpl
LCBjb25zdCB2b2lkKiBkYXRhKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6
Z2xCdWZmZXJTdWJEYXRhKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKKyAgICBnbEJ1ZmZl
clN1YkRhdGEodGFyZ2V0LCBvZmZzZXQsIHNpemUsIGRhdGEpOwogfQogCiBHQzNEZW51bSBHcmFw
aGljc0NvbnRleHQzRDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHQzNEZW51bSB0YXJnZXQpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzRVhUKHRhcmdldCk7CisgICAgcmV0dXJuIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
c0VYVCh0YXJnZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckNvbG9yKEdD
M0RjbGFtcGYgciwgR0MzRGNsYW1wZiBnLCBHQzNEY2xhbXBmIGIsIEdDM0RjbGFtcGYgYSkKQEAg
LTUyNiwxMyArNTM3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIo
UGxhdGZvcm0zRE9iamVjdCBzaGFkZXIpCiAgICAgY29uc3QgQ1N0cmluZyYgdHJhbnNsYXRlZFNo
YWRlckNTdHJpbmcgPSB0cmFuc2xhdGVkU2hhZGVyU291cmNlLnV0ZjgoKTsKICAgICBjb25zdCBj
aGFyKiB0cmFuc2xhdGVkU2hhZGVyUHRyID0gdHJhbnNsYXRlZFNoYWRlckNTdHJpbmcuZGF0YSgp
OwogICAgIAotICAgIDo6Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCAxLCAmdHJhbnNsYXRlZFNoYWRl
clB0ciwgJnRyYW5zbGF0ZWRTaGFkZXJMZW5ndGgpOworICAgIGdsU2hhZGVyU291cmNlKHNoYWRl
ciwgMSwgJnRyYW5zbGF0ZWRTaGFkZXJQdHIsICZ0cmFuc2xhdGVkU2hhZGVyTGVuZ3RoKTsKICAg
ICAKLSAgICA6OmdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOworICAgIGdsQ29tcGlsZVNoYWRlcihz
aGFkZXIpOwogICAgIAogICAgIGludCBHTENvbXBpbGVTdWNjZXNzOwogICAgIAotICAgIDo6Z2xH
ZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAmR0xDb21waWxlU3VjY2Vzcyk7Cisg
ICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIENPTVBJTEVfU1RBVFVTLCAmR0xDb21waWxlU3VjY2Vz
cyk7CiAgICAgCiAgICAgLy8gQVNTRVJUIHRoYXQgQU5HTEUgZ2VuZXJhdGVkIEdMU0wgd2lsbCBi
ZSBhY2NlcHRlZCBieSBPcGVuR0wKICAgICBBU1NFUlQoR0xDb21waWxlU3VjY2VzcyA9PSBHTF9U
UlVFKTsKQEAgLTU0MiwyOCArNTUzLDI4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvcHlU
ZXhJbWFnZTJEKEdDM0RlbnVtIHRhcmdldCwgR0MzRGludCBsZXZlbCwgR0MzRGVudW0KIHsKICAg
ICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9i
b3VuZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKSB7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwotICAgICAg
ICA6OmdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7
Ci0gICAgICAgIDo6Z2xCbGl0RnJhbWVidWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVp
Z2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdM
X0xJTkVBUik7Ci0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJf
RVhULCBtX2Zibyk7CisgICAgICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdMX1JFQURfRlJBTUVC
VUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCbGl0RnJhbWVi
dWZmZXJFWFQoeCwgeSwgeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5LCB4ICsgd2lkdGgsIHkg
KyBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwogICAgIH0KICAgICA6
OmdsQ29weVRleEltYWdlMkQodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlcik7CiAgICAgaWYgKG1fYXR0cnMuYW50aWFsaWFzICYmIG1fYm91
bmRGQk8gPT0gbV9tdWx0aXNhbXBsZUZCTykKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVY
VChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb3B5VGV4U3ViSW1hZ2UyRChHQzNEZW51bSB0YXJn
ZXQsIEdDM0RpbnQgbGV2ZWwsIEdDM0RpbnQgeG9mZnNldCwgR0MzRGludCB5b2Zmc2V0LCBHQzNE
aW50IHgsIEdDM0RpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0KQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBt
X2JvdW5kRkJPID09IG1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1
ZmZlckVYVChHTF9SRUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAg
ICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKLSAgICAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBo
ZWlnaHQsIHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwg
R0xfTElORUFSKTsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZF
Ul9FWFQsIG1fZmJvKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFN
RUJVRkZFUl9FWFQsIG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
ckVYVChHTF9EUkFXX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFt
ZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0aCwg
eSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgfQogICAg
IDo6Z2xDb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAobV9hdHRycy5hbnRpYWxpYXMgJiYgbV9ib3Vu
ZEZCTyA9PSBtX211bHRpc2FtcGxlRkJPKQotICAgICAgICA6OmdsQmluZEZyYW1lYnVmZmVyRVhU
KEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CisgICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmN1bGxGYWNlKEdDM0RlbnVtIG1vZGUpCkBAIC01OTUs
NyArNjA2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGV0YWNoU2hhZGVyKFBsYXRmb3Jt
M0RPYmplY3QgcHJvZ3JhbSwgUGxhdGZvcm0zRE9iamVjdAogICAgIEFTU0VSVChwcm9ncmFtKTsK
ICAgICBBU1NFUlQoc2hhZGVyKTsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6Omds
RGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CisgICAgZ2xEZXRhY2hTaGFkZXIocHJvZ3Jh
bSwgc2hhZGVyKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJsZShHQzNEZW51
bSBjYXApCkBAIC02MDcsNyArNjE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZGlzYWJs
ZShHQzNEZW51bSBjYXApCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoR0MzRHVpbnQgaW5kZXgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShpbmRleCk7CisgICAgZ2xEaXNhYmxlVmVy
dGV4QXR0cmliQXJyYXkoaW5kZXgpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpkcmF3
QXJyYXlzKEdDM0RlbnVtIG1vZGUsIEdDM0RpbnQgZmlyc3QsIEdDM0RzaXplaSBjb3VudCkKQEAg
LTYzMSw3ICs2NDIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjplbmFibGUoR0MzRGVudW0g
Y2FwKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0Mz
RHVpbnQgaW5kZXgpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KGluZGV4KTsKKyAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGluZGV4KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6ZmluaXNoKCkKQEAgLTY0OSwx
MyArNjYwLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZsdXNoKCkKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdDM0RlbnVtIHRhcmdldCwgR0Mz
RGVudW0gYXR0YWNobWVudCwgR0MzRGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBQbGF0Zm9ybTNE
T2JqZWN0IGJ1ZmZlcikKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXJFWFQodGFyZ2V0LCBhdHRhY2htZW50LCByZW5kZXJidWZmZXJ0
YXJnZXQsIGJ1ZmZlcik7CisgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlckVYVCh0YXJnZXQs
IGF0dGFjaG1lbnQsIHJlbmRlcmJ1ZmZlcnRhcmdldCwgYnVmZmVyKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0MzRGVudW0gdGFyZ2V0LCBHQzNE
ZW51bSBhdHRhY2htZW50LCBHQzNEZW51bSB0ZXh0YXJnZXQsIFBsYXRmb3JtM0RPYmplY3QgdGV4
dHVyZSwgR0MzRGludCBsZXZlbCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6
OmdsRnJhbWVidWZmZXJUZXh0dXJlMkRFWFQodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQs
IHRleHR1cmUsIGxldmVsKTsKKyAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJERVhUKHRhcmdldCwg
YXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQpAQCAtNjY3LDcgKzY3OCw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmZyb250RmFjZShHQzNEZW51bSBtb2RlKQogdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Z2VuZXJhdGVNaXBtYXAoR0MzRGVudW0gdGFyZ2V0KQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZW5lcmF0ZU1pcG1hcEVYVCh0YXJnZXQp
OworICAgIGdsR2VuZXJhdGVNaXBtYXBFWFQodGFyZ2V0KTsKIH0KIAogYm9vbCBHcmFwaGljc0Nv
bnRleHQzRDo6Z2V0QWN0aXZlQXR0cmliKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVp
bnQgaW5kZXgsIEFjdGl2ZUluZm8mIGluZm8pCkBAIC02NzgsMTIgKzY4OSwxMiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDNEOjpnZXRBY3RpdmVBdHRyaWIoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFt
LCBHQzNEdWludCBpbmRleAogICAgIH0KICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBH
TGludCBtYXhBdHRyaWJ1dGVTaXplID0gMDsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwgJm1heEF0dHJpYnV0ZVNpemUpOworICAg
IGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FDVElWRV9BVFRSSUJVVEVfTUFYX0xFTkdUSCwg
Jm1heEF0dHJpYnV0ZVNpemUpOwogICAgIEdMY2hhciBuYW1lW21heEF0dHJpYnV0ZVNpemVdOyAv
LyBHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEggaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdGlv
bgogICAgIEdMc2l6ZWkgbmFtZUxlbmd0aCA9IDA7CiAgICAgR0xpbnQgc2l6ZSA9IDA7CiAgICAg
R0xlbnVtIHR5cGUgPSAwOwotICAgIDo6Z2xHZXRBY3RpdmVBdHRyaWIocHJvZ3JhbSwgaW5kZXgs
IG1heEF0dHJpYnV0ZVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOworICAg
IGdsR2V0QWN0aXZlQXR0cmliKHByb2dyYW0sIGluZGV4LCBtYXhBdHRyaWJ1dGVTaXplLCAmbmFt
ZUxlbmd0aCwgJnNpemUsICZ0eXBlLCBuYW1lKTsKICAgICBpZiAoIW5hbWVMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpbmZvLm5hbWUgPSBTdHJpbmcobmFtZSwgbmFtZUxlbmd0
aCk7CkBAIC03MDAsMTIgKzcxMSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRBY3Rp
dmVVbmlmb3JtKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgR0MzRHVpbnQgaW5kZQogICAgIH0K
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICBHTGludCBtYXhVbmlmb3JtU2l6ZSA9IDA7
Ci0gICAgOjpnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVO
R1RILCAmbWF4VW5pZm9ybVNpemUpOworICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FD
VElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhVbmlmb3JtU2l6ZSk7CiAgICAgR0xjaGFyIG5h
bWVbbWF4VW5pZm9ybVNpemVdOyAvLyBHTF9BQ1RJVkVfVU5JRk9STV9NQVhfTEVOR1RIIGluY2x1
ZGVzIG51bGwgdGVybWluYXRpb24KICAgICBHTHNpemVpIG5hbWVMZW5ndGggPSAwOwogICAgIEdM
aW50IHNpemUgPSAwOwogICAgIEdMZW51bSB0eXBlID0gMDsKLSAgICA6OmdsR2V0QWN0aXZlVW5p
Zm9ybShwcm9ncmFtLCBpbmRleCwgbWF4VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwg
JnR5cGUsIG5hbWUpOworICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgbWF4
VW5pZm9ybVNpemUsICZuYW1lTGVuZ3RoLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwogICAgIGlmICgh
bmFtZUxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGluZm8ubmFtZSA9IFN0cmlu
ZyhuYW1lLCBuYW1lTGVuZ3RoKTsKQEAgLTcyMSw3ICs3MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpnZXRBdHRhY2hlZFNoYWRlcnMoUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBHQzNE
c2l6ZWkgbQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIDo6Z2xHZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgbWF4Q291bnQsIGNvdW50LCBz
aGFkZXJzKTsKKyAgICBnbEdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhDb3VudCwgY291
bnQsIHNoYWRlcnMpOwogfQogCiBpbnQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEF0dHJpYkxvY2F0
aW9uKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtNzMw
LDcgKzc0MSw3IEBAIGludCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0QXR0cmliTG9jYXRpb24oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHJldHVybiAtMTsK
IAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCBuYW1lLnV0ZjgoKS5kYXRhKCkpOwogfQogCiBHcmFwaGljc0Nv
bnRleHQzRDo6QXR0cmlidXRlcyBHcmFwaGljc0NvbnRleHQzRDo6Z2V0Q29udGV4dEF0dHJpYnV0
ZXMoKQpAQCAtNzY5LDcgKzc4MCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjpp
c0J1ZmZlcihQbGF0Zm9ybTNET2JqZWN0IGJ1ZmZlcikKICAgICAgICAgcmV0dXJuIEdMX0ZBTFNF
OwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIDo6Z2xJc0J1ZmZlcihi
dWZmZXIpOworICAgIHJldHVybiBnbElzQnVmZmVyKGJ1ZmZlcik7CiB9CiAKIEdDM0Rib29sZWFu
IEdyYXBoaWNzQ29udGV4dDNEOjppc0VuYWJsZWQoR0MzRGVudW0gY2FwKQpAQCAtNzg0LDcgKzc5
NSw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc0ZyYW1lYnVmZmVyKFBsYXRm
b3JtM0RPYmplY3QgZnJhbWVidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHJldHVybiA6OmdsSXNGcmFtZWJ1ZmZlckVYVChm
cmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIGdsSXNGcmFtZWJ1ZmZlckVYVChmcmFtZWJ1ZmZlcik7
CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0z
RE9iamVjdCBwcm9ncmFtKQpAQCAtNzkzLDcgKzgwNCw3IEBAIEdDM0Rib29sZWFuIEdyYXBoaWNz
Q29udGV4dDNEOjppc1Byb2dyYW0oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogICAgICAgICBy
ZXR1cm4gR0xfRkFMU0U7CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4g
OjpnbElzUHJvZ3JhbShwcm9ncmFtKTsKKyAgICByZXR1cm4gZ2xJc1Byb2dyYW0ocHJvZ3JhbSk7
CiB9CiAKIEdDM0Rib29sZWFuIEdyYXBoaWNzQ29udGV4dDNEOjppc1JlbmRlcmJ1ZmZlcihQbGF0
Zm9ybTNET2JqZWN0IHJlbmRlcmJ1ZmZlcikKQEAgLTgwMiw3ICs4MTMsNyBAQCBHQzNEYm9vbGVh
biBHcmFwaGljc0NvbnRleHQzRDo6aXNSZW5kZXJidWZmZXIoUGxhdGZvcm0zRE9iamVjdCByZW5k
ZXJidWZmZXIpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKIAogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIHJldHVybiA6OmdsSXNSZW5kZXJidWZmZXJFWFQocmVuZGVyYnVmZmVyKTsK
KyAgICByZXR1cm4gZ2xJc1JlbmRlcmJ1ZmZlckVYVChyZW5kZXJidWZmZXIpOwogfQogCiBHQzNE
Ym9vbGVhbiBHcmFwaGljc0NvbnRleHQzRDo6aXNTaGFkZXIoUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXIpCkBAIC04MTEsNyArODIyLDcgQEAgR0MzRGJvb2xlYW4gR3JhcGhpY3NDb250ZXh0M0Q6Omlz
U2hhZGVyKFBsYXRmb3JtM0RPYmplY3Qgc2hhZGVyKQogICAgICAgICByZXR1cm4gR0xfRkFMU0U7
CiAKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICByZXR1cm4gOjpnbElzU2hhZGVyKHNo
YWRlcik7CisgICAgcmV0dXJuIGdsSXNTaGFkZXIoc2hhZGVyKTsKIH0KIAogR0MzRGJvb2xlYW4g
R3JhcGhpY3NDb250ZXh0M0Q6OmlzVGV4dHVyZShQbGF0Zm9ybTNET2JqZWN0IHRleHR1cmUpCkBA
IC04MzMsNyArODQ0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6bGlua1Byb2dyYW0oUGxh
dGZvcm0zRE9iamVjdCBwcm9ncmFtKQogewogICAgIEFTU0VSVChwcm9ncmFtKTsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7CisgICAgZ2xM
aW5rUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGl4ZWxT
dG9yZWkoR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQgcGFyYW0pCkBAIC04NTUsMTUgKzg2NiwxNSBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5
LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaQogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogICAg
IDo6Z2xGbHVzaCgpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09
IG1fbXVsdGlzYW1wbGVGQk8pIHsKLSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9S
RUFEX0ZSQU1FQlVGRkVSX0VYVCwgbV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIDo6Z2xCaW5k
RnJhbWVidWZmZXJFWFQoR0xfRFJBV19GUkFNRUJVRkZFUl9FWFQsIG1fZmJvKTsKLSAgICAgICAg
OjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHks
IHggKyB3aWR0aCwgeSArIGhlaWdodCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsK
LSAgICAgICAgOjpnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fZmJv
KTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfUkVBRF9GUkFNRUJVRkZFUl9FWFQs
IG1fbXVsdGlzYW1wbGVGQk8pOworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9EUkFX
X0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOworICAgICAgICBnbEJsaXRGcmFtZWJ1ZmZlckVYVCh4
LCB5LCB4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHksIHggKyB3aWR0aCwgeSArIGhlaWdodCwg
R0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZm
ZXJFWFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX2Zibyk7CiAgICAgICAgIDo6Z2xGbHVzaCgpOwog
ICAgIH0KICAgICA6OmdsUmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGRhdGEpOwogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcyAmJiBtX2JvdW5kRkJPID09IG1f
bXVsdGlzYW1wbGVGQk8pCi0gICAgICAgIDo6Z2xCaW5kRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVC
VUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXJF
WFQoR0xfRlJBTUVCVUZGRVJfRVhULCBtX211bHRpc2FtcGxlRkJPKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6cmVsZWFzZVNoYWRlckNvbXBpbGVyKCkKQEAgLTg5MSw3ICs5MDIsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpyZW5kZXJidWZmZXJTdG9yYWdlKEdDM0RlbnVtIHRh
cmdldCwgR0MzRGVudW0gaW50ZXJuYWxmbwogICAgICAgICBpbnRlcm5hbGZvcm1hdCA9IEdMX1JH
QjsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIDo6Z2xSZW5kZXJidWZmZXJTdG9yYWdlRVhU
KHRhcmdldCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZUVYVCh0YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2FtcGxlQ292ZXJhZ2UoR0MzRGNsYW1wZiB2YWx1
ZSwgR0MzRGJvb2xlYW4gaW52ZXJ0KQpAQCAtOTI4LDcgKzkzOSw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnN0ZW5jaWxGdW5jKEdDM0RlbnVtIGZ1bmMsIEdDM0RpbnQgcmVmLCBHQzNEdWlu
dCBtYXNrKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c3RlbmNpbEZ1bmNTZXBhcmF0ZShHQzNE
ZW51bSBmYWNlLCBHQzNEZW51bSBmdW5jLCBHQzNEaW50IHJlZiwgR0MzRHVpbnQgbWFzaykKIHsK
ICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShm
YWNlLCBmdW5jLCByZWYsIG1hc2spOworICAgIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZShmYWNlLCBm
dW5jLCByZWYsIG1hc2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsTWFz
ayhHQzNEdWludCBtYXNrKQpAQCAtOTQwLDcgKzk1MSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnN0ZW5jaWxNYXNrKEdDM0R1aW50IG1hc2spCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpz
dGVuY2lsTWFza1NlcGFyYXRlKEdDM0RlbnVtIGZhY2UsIEdDM0R1aW50IG1hc2spCiB7CiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoZmFjZSwg
bWFzayk7CisgICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKGZhY2UsIG1hc2spOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3AoR0MzRGVudW0gZmFpbCwgR0MzRGVudW0gemZh
aWwsIEdDM0RlbnVtIHpwYXNzKQpAQCAtOTUyLDcgKzk2Myw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnN0ZW5jaWxPcChHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0g
enBhc3MpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzdGVuY2lsT3BTZXBhcmF0ZShHQzNEZW51
bSBmYWNlLCBHQzNEZW51bSBmYWlsLCBHQzNEZW51bSB6ZmFpbCwgR0MzRGVudW0genBhc3MpCiB7
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFN0ZW5jaWxPcFNlcGFyYXRlKGZh
Y2UsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CisgICAgZ2xTdGVuY2lsT3BTZXBhcmF0ZShmYWNlLCBm
YWlsLCB6ZmFpbCwgenBhc3MpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp0ZXhQYXJh
bWV0ZXJmKEdDM0RlbnVtIHRhcmdldCwgR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCB2YWx1ZSkK
QEAgLTk3MCwxMzAgKzk4MSwxMzAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dGV4UGFyYW1l
dGVyaShHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50IHYKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xZihHQzNEaW50IGxvY2F0aW9uLCBHQzNEZmxvYXQgdjAp
CiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0xZihsb2NhdGlv
biwgdjApOworICAgIGdsVW5pZm9ybTFmKGxvY2F0aW9uLCB2MCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0xZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpn
bFVuaWZvcm0xZnYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0xZnYobG9j
YXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bTJmKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQogewogICAg
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2
MSk7CisgICAgZ2xVbmlmb3JtMmYobG9jYXRpb24sIHYwLCB2MSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yZnYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0KiBhcnJh
eSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBh
IG11bHRpcGxlIG9mIDIKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9y
bTJmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9ybTJmdihsb2NhdGlvbiwg
c2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2YoR0Mz
RGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEsIEdDM0RmbG9hdCB2MikK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybTNmKGxvY2F0aW9u
LCB2MCwgdjEsIHYyKTsKKyAgICBnbFVuaWZvcm0zZihsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0zZnYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAgLy8gRklYTUU6IGxlbmd0
aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDMKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
LSAgICA6OmdsVW5pZm9ybTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOworICAgIGdsVW5pZm9y
bTNmdihsb2NhdGlvbiwgc2l6ZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp1bmlmb3JtNGYoR0MzRGludCBsb2NhdGlvbiwgR0MzRGZsb2F0IHYwLCBHQzNEZmxvYXQgdjEs
IEdDM0RmbG9hdCB2MiwgR0MzRGZsb2F0IHYzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OwotICAgIDo6Z2xVbmlmb3JtNGYobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVu
aWZvcm00Zihsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjp1bmlmb3JtNGZ2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RmbG9hdCogYXJyYXksIEdD
M0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVlZHMgdG8gYmUgYSBtdWx0
aXBsZSBvZiA0CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm00ZnYo
bG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm00ZnYobG9jYXRpb24sIHNpemUs
IGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9ybTFpKEdDM0RpbnQg
bG9jYXRpb24sIEdDM0RpbnQgdjApCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAg
OjpnbFVuaWZvcm0xaShsb2NhdGlvbiwgdjApOworICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB2
MCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0xaXYoR0MzRGludCBsb2Nh
dGlvbiwgR0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIG1ha2VDb250ZXh0
Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7Cisg
ICAgZ2xVbmlmb3JtMWl2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0Q6OnVuaWZvcm0yaShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNE
aW50IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtMmko
bG9jYXRpb24sIHYwLCB2MSk7CisgICAgZ2xVbmlmb3JtMmkobG9jYXRpb24sIHYwLCB2MSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm0yaXYoR0MzRGludCBsb2NhdGlvbiwg
R0MzRGludCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGgg
bmVlZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAyCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgOjpnbFVuaWZvcm0yaXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKKyAgICBnbFVuaWZvcm0y
aXYobG9jYXRpb24sIHNpemUsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dW5pZm9ybTNpKEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQgdjAsIEdDM0RpbnQgdjEsIEdDM0Rp
bnQgdjIpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFVuaWZvcm0zaShs
b2NhdGlvbiwgdjAsIHYxLCB2Mik7CisgICAgZ2xVbmlmb3JtM2kobG9jYXRpb24sIHYwLCB2MSwg
djIpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1bmlmb3JtM2l2KEdDM0RpbnQgbG9j
YXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTog
bGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMwogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwotICAgIDo6Z2xVbmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xV
bmlmb3JtM2l2KGxvY2F0aW9uLCBzaXplLCBhcnJheSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0M0Q6OnVuaWZvcm00aShHQzNEaW50IGxvY2F0aW9uLCBHQzNEaW50IHYwLCBHQzNEaW50IHYx
LCBHQzNEaW50IHYyLCBHQzNEaW50IHYzKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwot
ICAgIDo6Z2xVbmlmb3JtNGkobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFVuaWZv
cm00aShsb2NhdGlvbiwgdjAsIHYxLCB2MiwgdjMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjp1bmlmb3JtNGl2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0RpbnQqIGFycmF5LCBHQzNEc2l6
ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUg
b2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtNGl2KGxvY2F0
aW9uLCBzaXplLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtNGl2KGxvY2F0aW9uLCBzaXplLCBhcnJh
eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnVuaWZvcm1NYXRyaXgyZnYoR0MzRGlu
dCBsb2NhdGlvbiwgR0MzRGJvb2xlYW4gdHJhbnNwb3NlLCBHQzNEZmxvYXQqIGFycmF5LCBHQzNE
c2l6ZWkgc2l6ZSkKIHsKICAgICAvLyBGSVhNRTogbGVuZ3RoIG5lZWRzIHRvIGJlIGEgbXVsdGlw
bGUgb2YgNAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xVbmlmb3JtTWF0cml4
MmZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsKKyAgICBnbFVuaWZvcm1NYXRy
aXgyZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjp1bmlmb3JtTWF0cml4M2Z2KEdDM0RpbnQgbG9jYXRpb24sIEdDM0Rib29s
ZWFuIHRyYW5zcG9zZSwgR0MzRGZsb2F0KiBhcnJheSwgR0MzRHNpemVpIHNpemUpCiB7CiAgICAg
Ly8gRklYTUU6IGxlbmd0aCBuZWVkcyB0byBiZSBhIG11bHRpcGxlIG9mIDkKICAgICBtYWtlQ29u
dGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgc2l6ZSwg
dHJhbnNwb3NlLCBhcnJheSk7CisgICAgZ2xVbmlmb3JtTWF0cml4M2Z2KGxvY2F0aW9uLCBzaXpl
LCB0cmFuc3Bvc2UsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dW5pZm9y
bU1hdHJpeDRmdihHQzNEaW50IGxvY2F0aW9uLCBHQzNEYm9vbGVhbiB0cmFuc3Bvc2UsIEdDM0Rm
bG9hdCogYXJyYXksIEdDM0RzaXplaSBzaXplKQogewogICAgIC8vIEZJWE1FOiBsZW5ndGggbmVl
ZHMgdG8gYmUgYSBtdWx0aXBsZSBvZiAxNgogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAg
IDo6Z2xVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBzaXplLCB0cmFuc3Bvc2UsIGFycmF5KTsK
KyAgICBnbFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIHNpemUsIHRyYW5zcG9zZSwgYXJyYXkp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp1c2VQcm9ncmFtKFBsYXRmb3JtM0RPYmpl
Y3QgcHJvZ3JhbSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRlUHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0p
CkBAIC0xMTAxLDYxICsxMTEyLDYxIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZhbGlkYXRl
UHJvZ3JhbShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0pCiAgICAgQVNTRVJUKHByb2dyYW0pOwog
CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZhbGlkYXRlUHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBnbFZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6dmVydGV4QXR0cmliMWYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCB2MCkK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliMWYoaW5k
ZXgsIHYwKTsKKyAgICBnbFZlcnRleEF0dHJpYjFmKGluZGV4LCB2MCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjFmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0
KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0
cmliMWZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIxZnYoaW5kZXgsIGFycmF5
KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliMmYoR0MzRHVpbnQg
aW5kZXgsIEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIyZihpbmRleCwgdjAsIHYxKTsKKyAgICBnbFZl
cnRleEF0dHJpYjJmKGluZGV4LCB2MCwgdjEpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
Ojp2ZXJ0ZXhBdHRyaWIyZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RmbG9hdCogYXJyYXkpCiB7CiAg
ICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbFZlcnRleEF0dHJpYjJmdihpbmRleCwg
YXJyYXkpOworICAgIGdsVmVydGV4QXR0cmliMmZ2KGluZGV4LCBhcnJheSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmKEdDM0R1aW50IGluZGV4LCBHQzNEZmxv
YXQgdjAsIEdDM0RmbG9hdCB2MSwgR0MzRGZsb2F0IHYyKQogewogICAgIG1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotICAgIDo6Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CisgICAg
Z2xWZXJ0ZXhBdHRyaWIzZihpbmRleCwgdjAsIHYxLCB2Mik7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0Q6OnZlcnRleEF0dHJpYjNmdihHQzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJh
eSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliM2Z2
KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0ZXhBdHRyaWIzZnYoaW5kZXgsIGFycmF5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmVydGV4QXR0cmliNGYoR0MzRHVpbnQgaW5kZXgs
IEdDM0RmbG9hdCB2MCwgR0MzRGZsb2F0IHYxLCBHQzNEZmxvYXQgdjIsIEdDM0RmbG9hdCB2MykK
IHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliNGYoaW5k
ZXgsIHYwLCB2MSwgdjIsIHYzKTsKKyAgICBnbFZlcnRleEF0dHJpYjRmKGluZGV4LCB2MCwgdjEs
IHYyLCB2Myk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnZlcnRleEF0dHJpYjRmdihH
QzNEdWludCBpbmRleCwgR0MzRGZsb2F0KiBhcnJheSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKLSAgICA6OmdsVmVydGV4QXR0cmliNGZ2KGluZGV4LCBhcnJheSk7CisgICAgZ2xWZXJ0
ZXhBdHRyaWI0ZnYoaW5kZXgsIGFycmF5KTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
dmVydGV4QXR0cmliUG9pbnRlcihHQzNEdWludCBpbmRleCwgR0MzRGludCBzaXplLCBHQzNEZW51
bSB0eXBlLCBHQzNEYm9vbGVhbiBub3JtYWxpemVkLCBHQzNEc2l6ZWkgc3RyaWRlLCBHQzNEaW50
cHRyIG9mZnNldCkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsVmVydGV4
QXR0cmliUG9pbnRlcihpbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgc3RyaWRlLCByZWlu
dGVycHJldF9jYXN0PEdMdm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PihvZmZzZXQpKSk7Cisg
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBz
dHJpZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KG9m
ZnNldCkpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6dmlld3BvcnQoR0MzRGludCB4
LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCkKQEAgLTExNzMs
NyArMTE4NCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEJvb2xlYW52KEdDM0RlbnVt
IHBuYW1lLCBHQzNEYm9vbGVhbiogdmFsdWUpCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRC
dWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0QnVmZmVy
UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgIGdsR2V0QnVmZmVyUGFyYW1l
dGVyaXYodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNE
OjpnZXRGbG9hdHYoR0MzRGVudW0gcG5hbWUsIEdDM0RmbG9hdCogdmFsdWUpCkBAIC0xMTg3LDcg
KzExOTgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRGcmFtZWJ1ZmZlckF0dGFjaG1l
bnRQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDMwogICAgIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIGlmIChhdHRhY2htZW50ID09IERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCkKICAg
ICAgICAgYXR0YWNobWVudCA9IERFUFRIX0FUVEFDSE1FTlQ7IC8vIE9yIFNURU5DSUxfQVRUQUNI
TUVOVCwgZWl0aGVyIHdvcmtzLgotICAgIDo6Z2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCB2YWx1ZSk7CisgICAgZ2xHZXRG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdkVYVCh0YXJnZXQsIGF0dGFjaG1lbnQsIHBu
YW1lLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdD
M0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKQEAgLTEyMTgsNyArMTIyOSw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OmdldEludGVnZXJ2KEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2
YWx1ZSkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFByb2dyYW1pdihQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0sIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50KiB2YWx1ZSkKIHsKICAgICBtYWtl
Q29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIHBuYW1lLCB2
YWx1ZSk7CisgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgcG5hbWUsIHZhbHVlKTsKIH0KIAog
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0Zm9ybTNET2Jq
ZWN0IHByb2dyYW0pCkBAIC0xMjI3LDE0ICsxMjM4LDE0IEBAIFN0cmluZyBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0UHJvZ3JhbUluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtKQogCiAgICAg
bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgR0xpbnQgbGVuZ3RoOwotICAgIDo6Z2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR0xfSU5GT19MT0dfTEVOR1RILCAmbGVuZ3RoKTsKKyAgICBnbEdldFBy
b2dyYW1pdihwcm9ncmFtLCBHTF9JTkZPX0xPR19MRU5HVEgsICZsZW5ndGgpOwogICAgIGlmICgh
bGVuZ3RoKQogICAgICAgICByZXR1cm4gIiI7CiAKICAgICBHTHNpemVpIHNpemU7CiAgICAgR0xj
aGFyKiBpbmZvID0gKEdMY2hhciopIGZhc3RNYWxsb2MobGVuZ3RoKTsKIAotICAgIDo6Z2xHZXRQ
cm9ncmFtSW5mb0xvZyhwcm9ncmFtLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKKyAgICBnbEdldFBy
b2dyYW1JbmZvTG9nKHByb2dyYW0sIGxlbmd0aCwgJnNpemUsIGluZm8pOwogICAgIFN0cmluZyBz
KGluZm8pOwogICAgIGZhc3RGcmVlKGluZm8pOwogICAgIHJldHVybiBzOwpAQCAtMTI0Myw3ICsx
MjU0LDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRQcm9ncmFtSW5mb0xvZyhQbGF0
Zm9ybTNET2JqZWN0IHByb2dyYW0pCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRSZW5kZXJi
dWZmZXJQYXJhbWV0ZXJpdihHQzNEZW51bSB0YXJnZXQsIEdDM0RlbnVtIHBuYW1lLCBHQzNEaW50
KiB2YWx1ZSkKIHsKICAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAgICA6OmdsR2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOworICAgIGdsR2V0UmVu
ZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQodGFyZ2V0LCBwbmFtZSwgdmFsdWUpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJpdihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlciwg
R0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQpAQCAtMTI1OSw3ICsxMjcwLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0U2hhZGVyaXYoUGxhdGZvcm0zRE9iamVjdCBzaGFkZXIs
IEdDM0RlbnVtIHBuYW1lLCBHQzMKICAgICAgICAgY2FzZSBTSEFERVJfVFlQRToKICAgICAgICAg
ICAgIC8vIExldCBPcGVuR0wgaGFuZGxlIHRoZXNlLgogICAgICAgICAKLSAgICAgICAgICAgIDo6
Z2xHZXRTaGFkZXJpdihzaGFkZXIsIHBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBnbEdldFNo
YWRlcml2KHNoYWRlciwgcG5hbWUsIHZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKICAgICAgICAgY2FzZSBDT01QSUxFX1NUQVRVUzoKQEAgLTEzMDQsMTQgKzEzMTUsMTQgQEAg
U3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRTaGFkZXJJbmZvTG9nKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQogCiAgICAgIGlmIChlbnRyeS5pc1ZhbGlkKSB7CiAgICAgICAgICBHTGludCBs
ZW5ndGg7Ci0gICAgICAgICA6OmdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5H
VEgsICZsZW5ndGgpOworICAgICAgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0lORk9fTE9H
X0xFTkdUSCwgJmxlbmd0aCk7CiAgICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgICBy
ZXR1cm4gIiI7CiAKICAgICAgICAgIEdMc2l6ZWkgc2l6ZTsKICAgICAgICAgIEdMY2hhciogaW5m
byA9IChHTGNoYXIqKSBmYXN0TWFsbG9jKGxlbmd0aCk7CiAKLSAgICAgICAgIDo6Z2xHZXRTaGFk
ZXJJbmZvTG9nKHNoYWRlciwgbGVuZ3RoLCAmc2l6ZSwgaW5mbyk7CisgICAgICAgICBnbEdldFNo
YWRlckluZm9Mb2coc2hhZGVyLCBsZW5ndGgsICZzaXplLCBpbmZvKTsKIAogICAgICAgICAgU3Ry
aW5nIHMoaW5mbyk7CiAgICAgICAgICBmYXN0RnJlZShpbmZvKTsKQEAgLTEzNTAsMTMgKzEzNjEs
MTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VGV4UGFyYW1ldGVyaXYoR0MzRGVudW0g
dGFyZ2V0LCBHQzNEZW51bSBwbmFtZSwgR0MzRGkKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dFVuaWZvcm1mdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24sIEdD
M0RmbG9hdCogdmFsdWUpCiB7CiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgOjpnbEdl
dFVuaWZvcm1mdihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOworICAgIGdsR2V0VW5pZm9ybWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCB2YWx1ZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6
OmdldFVuaWZvcm1pdihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEdDM0RpbnQgbG9jYXRpb24s
IEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xH
ZXRVbmlmb3JtaXYocHJvZ3JhbSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICBnbEdldFVuaWZvcm1p
dihwcm9ncmFtLCBsb2NhdGlvbiwgdmFsdWUpOwogfQogCiBHQzNEaW50IEdyYXBoaWNzQ29udGV4
dDNEOjpnZXRVbmlmb3JtTG9jYXRpb24oUGxhdGZvcm0zRE9iamVjdCBwcm9ncmFtLCBjb25zdCBT
dHJpbmcmIG5hbWUpCkBAIC0xMzY0LDE5ICsxMzc1LDE5IEBAIEdDM0RpbnQgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldFVuaWZvcm1Mb2NhdGlvbihQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIGNvbnN0
IFN0CiAgICAgQVNTRVJUKHByb2dyYW0pOwogCiAgICAgbWFrZUNvbnRleHRDdXJyZW50KCk7Ci0g
ICAgcmV0dXJuIDo6Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4KCkuZGF0
YSgpKTsKKyAgICByZXR1cm4gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgbmFtZS51dGY4
KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0VmVydGV4QXR0cmli
ZnYoR0MzRHVpbnQgaW5kZXgsIEdDM0RlbnVtIHBuYW1lLCBHQzNEZmxvYXQqIHZhbHVlKQogewog
ICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJmdihpbmRl
eCwgcG5hbWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYmZ2KGluZGV4LCBwbmFtZSwg
dmFsdWUpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRWZXJ0ZXhBdHRyaWJpdihH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUsIEdDM0RpbnQqIHZhbHVlKQogewogICAgIG1h
a2VDb250ZXh0Q3VycmVudCgpOwotICAgIDo6Z2xHZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5h
bWUsIHZhbHVlKTsKKyAgICBnbEdldFZlcnRleEF0dHJpYml2KGluZGV4LCBwbmFtZSwgdmFsdWUp
OwogfQogCiBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9m
ZnNldChHQzNEdWludCBpbmRleCwgR0MzRGVudW0gcG5hbWUpCkBAIC0xMzg0LDcgKzEzOTUsNyBA
QCBHQzNEc2l6ZWlwdHIgR3JhcGhpY3NDb250ZXh0M0Q6OmdldFZlcnRleEF0dHJpYk9mZnNldChH
QzNEdWludCBpbmRleCwgR0MzRGVudW0gcAogICAgIG1ha2VDb250ZXh0Q3VycmVudCgpOwogCiAg
ICAgR0x2b2lkKiBwb2ludGVyID0gMDsKLSAgICA6OmdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYo
aW5kZXgsIHBuYW1lLCAmcG9pbnRlcik7CisgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihp
bmRleCwgcG5hbWUsICZwb2ludGVyKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0MzRHNpemVp
cHRyPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihwb2ludGVyKSk7CiB9CiAKQEAgLTE1MTUs
MTIgKzE1MjYsMTQgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6bGF5ZXJDb21wb3NpdGVkKCkg
Y29uc3QKICAgICByZXR1cm4gbV9sYXllckNvbXBvc2l0ZWQ7CiB9CiAKKyNpZiAhUExBVEZPUk0o
UVQpCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKICAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIo
bmV3IEV4dGVuc2lvbnMzRE9wZW5HTCh0aGlzKSk7CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9ucy5n
ZXQoKTsKIH0KKyNlbmRpZgogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmNwcAppbmRleCA0NWQ1ZTljLi4wMzFkYTdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNp
b25zM0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRXh0
ZW5zaW9uczNEUXQuY3BwCkBAIC0zNCw3ICszNCw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRXh0ZW5zaW9uczNEUXQ6OkV4dGVuc2lvbnMzRFF0KCkKK0V4dGVuc2lvbnMzRFF0OjpFeHRl
bnNpb25zM0RRdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9xdC9FeHRlbnNpb25zM0RRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvRXh0ZW5zaW9uczNEUXQuaAppbmRleCAxYmM0N2I4Li45MGYzODg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9FeHRlbnNpb25zM0RRdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0V4dGVuc2lvbnMzRFF0LmgK
QEAgLTQ5LDcgKzQ5LDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgLy8gVGhpcyBjbGFzcyBv
bmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHQzRCBpbXBsZW1l
bnRhdGlvbnMuCiAgICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotICAgIEV4dGVu
c2lvbnMzRFF0KCk7CisgICAgRXh0ZW5zaW9uczNEUXQoY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Qq
KTsKKworICAgIC8vIFdlYWsgcG9pbnRlciBiYWNrIHRvIEdyYXBoaWNzQ29udGV4dDNECisgICAg
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dDNEUHJvY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUHJvY3MuaAppbmRleCA5OTI4MGQ3Li5kZWRhYjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0Nv
bnRleHQzRFByb2NzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RQcm9jcy5oCkBAIC0yLDQxICsyLDQyIEBAIEdMX1BST0Modm9pZCwg
Z2xBY3RpdmVUZXh0dXJlLCAoR0MzRGVudW0pKQogR0xfUFJPQyh2b2lkLCBnbEF0dGFjaFNoYWRl
ciwgKEdDM0R1aW50LCBHQzNEdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsQmluZEF0dHJpYkxvY2F0
aW9uLCAoR0MzRHVpbnQsIEdDM0R1aW50LCBjb25zdCBjaGFyKikpCiBHTF9QUk9DKHZvaWQsIGds
QmluZEJ1ZmZlciwgKEdDM0RlbnVtLCBHQzNEdWludCkpCi1HTF9QUk9DKHZvaWQsIGdsQmluZEZy
YW1lYnVmZmVyLCAoR0MzRGVudW0sIEdDM0R1aW50KSkKLUdMX1BST0Modm9pZCwgZ2xCaW5kUmVu
ZGVyYnVmZmVyLCAoR0MzRGVudW0sIEdDM0R1aW50KSkKK0dMX1BST0Modm9pZCwgZ2xCaW5kRnJh
bWVidWZmZXJFWFQsIChHQzNEZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEJpbmRS
ZW5kZXJidWZmZXJFWFQsIChHQzNEZW51bSwgR0MzRHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEJs
ZW5kQ29sb3IsIChHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBmLCBHQzNEY2xhbXBm
KSkKIEdMX1BST0Modm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAoR0MzRGVudW0pKQogR0xfUFJPQyh2
b2lkLCBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSwgKEdDM0RlbnVtLCBHQzNEZW51bSkpCiBHTF9Q
Uk9DKHZvaWQsIGdsQmxlbmRGdW5jU2VwYXJhdGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0Rl
bnVtLCBHQzNEZW51bSkpCitHTF9QUk9DKHZvaWQsIGdsQmxpdEZyYW1lYnVmZmVyRVhULCAoR0Mz
RGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGludCwgR0MzRGlu
dCwgR0MzRGludCwgR0MzRGJpdGZpZWxkLCBHQzNEZW51bSkpOwogR0xfUFJPQyh2b2lkLCBnbEJ1
ZmZlckRhdGEsIChHQzNEZW51bSwgR0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKiwgR0MzRGVudW0p
KQogR0xfUFJPQyh2b2lkLCBnbEJ1ZmZlclN1YkRhdGEsIChHQzNEZW51bSwgR0MzRGludHB0ciwg
R0MzRHNpemVpcHRyLCBjb25zdCB2b2lkKikpCi1HTF9QUk9DKEdDM0RlbnVtLCBnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXMsIChHQzNEZW51bSkpCitHTF9QUk9DKEdDM0RlbnVtLCBnbENoZWNrRnJh
bWVidWZmZXJTdGF0dXNFWFQsIChHQzNEZW51bSkpCiBHTF9QUk9DKHZvaWQsIGdsQ29tcGlsZVNo
YWRlciwgKEdDM0R1aW50KSkKIEdMX1BST0MoR0MzRHVpbnQsIGdsQ3JlYXRlUHJvZ3JhbSwgKCkp
CiBHTF9QUk9DKEdDM0R1aW50LCBnbENyZWF0ZVNoYWRlciwgKEdDM0RlbnVtKSkKIEdMX1BST0Mo
dm9pZCwgZ2xEZWxldGVCdWZmZXJzLCAoR0MzRHNpemVpLCBjb25zdCBHQzNEdWludCopKQotR0xf
UFJPQyh2b2lkLCBnbERlbGV0ZUZyYW1lYnVmZmVycywgKEdDM0RzaXplaSwgY29uc3QgR0MzRHVp
bnQqKSkKK0dMX1BST0Modm9pZCwgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQsIChHQzNEc2l6ZWks
IGNvbnN0IEdDM0R1aW50KikpCiBHTF9QUk9DKHZvaWQsIGdsRGVsZXRlUHJvZ3JhbSwgKEdDM0R1
aW50KSkKLUdMX1BST0Modm9pZCwgZ2xEZWxldGVSZW5kZXJidWZmZXJzLCAoR0MzRHNpemVpLCBj
b25zdCBHQzNEdWludCopKQorR0xfUFJPQyh2b2lkLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNFWFQs
IChHQzNEc2l6ZWksIGNvbnN0IEdDM0R1aW50KikpCiBHTF9QUk9DKHZvaWQsIGdsRGVsZXRlU2hh
ZGVyLCAoR0MzRHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbERldGFjaFNoYWRlciwgKEdDM0R1aW50
LCBHQzNEdWludCkpCiBHTF9QUk9DKHZvaWQsIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5LCAo
R0MzRHVpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCAoR0Mz
RHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCAoR0MzRGVu
dW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHVpbnQpKQotR0xfUFJPQyh2b2lkLCBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJELCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHVpbnQs
IEdDM0RpbnQpKQorR0xfUFJPQyh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhULCAo
R0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHVpbnQpKQorR0xfUFJPQyh2b2lkLCBn
bEZyYW1lYnVmZmVyVGV4dHVyZTJERVhULCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRHVpbnQsIEdDM0RpbnQpKQogR0xfUFJPQyh2b2lkLCBnbEdlbkJ1ZmZlcnMsIChHQzNEc2l6
ZWksIEdDM0R1aW50KikpCi1HTF9QUk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIChHQzNEZW51
bSkpCi1HTF9QUk9DKHZvaWQsIGdsR2VuRnJhbWVidWZmZXJzLCAoR0MzRHNpemVpLCBHQzNEdWlu
dCopKQotR0xfUFJPQyh2b2lkLCBnbEdlblJlbmRlcmJ1ZmZlcnMsIChHQzNEc2l6ZWksIEdDM0R1
aW50KikpCitHTF9QUk9DKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXBFWFQsIChHQzNEZW51bSkpCitH
TF9QUk9DKHZvaWQsIGdsR2VuRnJhbWVidWZmZXJzRVhULCAoR0MzRHNpemVpLCBHQzNEdWludCop
KQorR0xfUFJPQyh2b2lkLCBnbEdlblJlbmRlcmJ1ZmZlcnNFWFQsIChHQzNEc2l6ZWksIEdDM0R1
aW50KikpCiBHTF9QUk9DKHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCAoR0MzRHVpbnQsIEdDM0R1
aW50LCBHQzNEc2l6ZWksIEdDM0RzaXplaSosIEdDM0RpbnQqLCBHQzNEZW51bSosIGNoYXIqKSkK
IEdMX1BST0Modm9pZCwgZ2xHZXRBY3RpdmVVbmlmb3JtLCAoR0MzRHVpbnQsIEdDM0R1aW50LCBH
QzNEc2l6ZWksIEdDM0RzaXplaSosIEdDM0RpbnQqLCBHQzNEZW51bSosIGNoYXIqKSkKIEdMX1BS
T0Modm9pZCwgZ2xHZXRBdHRhY2hlZFNoYWRlcnMsIChHQzNEdWludCwgR0MzRHNpemVpLCBHQzNE
c2l6ZWkqLCBHQzNEdWludCopKQogR0xfUFJPQyhHQzNEaW50LCBnbEdldEF0dHJpYkxvY2F0aW9u
LCAoR0MzRHVpbnQsIGNvbnN0IGNoYXIqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRCdWZmZXJQYXJh
bWV0ZXJpdiwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGludCopKQotR0xfUFJPQyh2b2lkLCBn
bEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdDM0RlbnVt
LCBHQzNEZW51bSwgR0MzRGludCopKQorR0xfUFJPQyh2b2lkLCBnbEdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2RVhULCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgR0Mz
RGludCopKQogR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1JbmZvTG9nLCAoR0MzRHVpbnQsIEdD
M0RzaXplaSwgR0MzRHNpemVpKiwgY2hhciopKQogR0xfUFJPQyh2b2lkLCBnbEdldFByb2dyYW1p
diwgKEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGludCopKQotR0xfUFJPQyh2b2lkLCBnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2LCAoR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEaW50KikpCitH
TF9QUk9DKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZFWFQsIChHQzNEZW51bSwg
R0MzRGVudW0sIEdDM0RpbnQqKSkKIEdMX1BST0Modm9pZCwgZ2xHZXRTaGFkZXJJbmZvTG9nLCAo
R0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwgY2hhciopKQogR0xfUFJPQyh2b2lkLCBn
bEdldFNoYWRlcml2LCAoR0MzRHVpbnQsIEdDM0RlbnVtLCBHQzNEaW50KikpCiBHTF9QUk9DKHZv
aWQsIGdsR2V0U2hhZGVyU291cmNlLCAoR0MzRHVpbnQsIEdDM0RzaXplaSwgR0MzRHNpemVpKiwg
Y2hhciopKQpAQCAtNDcsMTIgKzQ4LDEzIEBAIEdMX1BST0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRy
aWJmdiwgKEdDM0R1aW50LCBHQzNEZW51bSwgR0MzRGZsb2F0KikpCiBHTF9QUk9DKHZvaWQsIGds
R2V0VmVydGV4QXR0cmliaXYsIChHQzNEdWludCwgR0MzRGVudW0sIEdDM0RpbnQqKSkKIEdMX1BS
T0Modm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgKEdDM0R1aW50LCBHQzNEZW51bSwg
dm9pZCoqKSkKIEdMX1BST0MoR0MzRGJvb2xlYW4sIGdsSXNCdWZmZXIsIChHQzNEdWludCkpCi1H
TF9QUk9DKEdDM0Rib29sZWFuLCBnbElzRnJhbWVidWZmZXIsIChHQzNEdWludCkpCitHTF9QUk9D
KEdDM0Rib29sZWFuLCBnbElzRnJhbWVidWZmZXJFWFQsIChHQzNEdWludCkpCiBHTF9QUk9DKEdD
M0Rib29sZWFuLCBnbElzUHJvZ3JhbSwgKEdDM0R1aW50KSkKLUdMX1BST0MoR0MzRGJvb2xlYW4s
IGdsSXNSZW5kZXJidWZmZXIsIChHQzNEdWludCkpCitHTF9QUk9DKEdDM0Rib29sZWFuLCBnbElz
UmVuZGVyYnVmZmVyRVhULCAoR0MzRHVpbnQpKQogR0xfUFJPQyhHQzNEYm9vbGVhbiwgZ2xJc1No
YWRlciwgKEdDM0R1aW50KSkKIEdMX1BST0Modm9pZCwgZ2xMaW5rUHJvZ3JhbSwgKEdDM0R1aW50
KSkKLUdMX1BST0Modm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCAoR0MzRGVudW0sIEdDM0Rl
bnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkpCitHTF9QUk9DKHZvaWQsIGdsUmVuZGVyYnVmZmVy
U3RvcmFnZUVYVCwgKEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHNpemVpLCBHQzNEc2l6ZWkpKQor
R0xfUFJPQyh2b2lkLCBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUVYVCwgKEdDM0Rl
bnVtLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEc2l6ZWksIEdDM0RzaXplaSkpOwogR0xfUFJP
Qyh2b2lkLCBnbFNhbXBsZUNvdmVyYWdlLCAoR0MzRGNsYW1wZiwgR0MzRGJvb2xlYW4pKQogR0xf
UFJPQyh2b2lkLCBnbFNoYWRlclNvdXJjZSwgKEdDM0R1aW50LCBHQzNEc2l6ZWksIGNvbnN0IGNo
YXIqKiwgY29uc3QgR0MzRGludCopKQogR0xfUFJPQyh2b2lkLCBnbFN0ZW5jaWxGdW5jU2VwYXJh
dGUsIChHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0R1aW50KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0
M0RRdC5jcHAKaW5kZXggZGViYWMwNi4uYTEzNzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAK
QEAgLTEyMSw4ICsxMjEsOCBAQCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3ND
b250ZXh0M0RJbnRlcm5hbCgpCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICAgICBp
ZiAobV9nbFdpZGdldC0+aXNWYWxpZCgpKSB7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
Jm1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSk7Ci0gICAgICAgIG1fY29udGV4dC0+Z2xE
ZWxldGVSZW5kZXJidWZmZXJzKDEsICZtX2NvbnRleHQtPm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsK
LSAgICAgICAgbV9jb250ZXh0LT5nbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9jb250ZXh0LT5t
X2Zibyk7CisgICAgICAgIG1fY29udGV4dC0+Z2xEZWxldGVSZW5kZXJidWZmZXJzRVhUKDEsICZt
X2NvbnRleHQtPm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgbV9jb250ZXh0LT5nbERl
bGV0ZUZyYW1lYnVmZmVyc0VYVCgxLCAmbV9jb250ZXh0LT5tX2Zibyk7CiAgICAgfQogICAgIGRl
bGV0ZSBtX2dsV2lkZ2V0OwogICAgIG1fZ2xXaWRnZXQgPSAwOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlCiB7CiAgICAgaWYgKHRleHR1cmVNYXBwZXItPmlzT3Bl
bkdMQmFja2VkKCkpIHsKICAgICAgICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgICAgICB0ZXhtYXBH
TC0+ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX2NvbXBvc2l0b3JUZXh0dXJlLCAhbV9jb250ZXh0
LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3Bh
Y2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKKyAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0
dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCAhbV9jb250ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9h
dFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBm
bGlwICovKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwLDE2ICsxNzAsMTYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGUKIAogICAgIG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7
CiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwotI2Vsc2UKICAg
ICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJV
RkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJh
bWVidWZmZXJFWFQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1f
ZmJvKTsKICNlbmRpZgogICAgIGdsUmVhZFBpeGVscygvKiB4ICovIDAsIC8qIHkgKi8gMCwgd2lk
dGgsIGhlaWdodCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBpbWFnZVBpeGVscyk7CiAKICNpZiBkZWZpbmVkKFFUX09QRU5HTF9FU18y
KQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKLSNlbHNlCiAgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFt
ZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3Vu
ZEZCTyk7CisjZWxzZQorICAgIG1fY29udGV4dC0+Z2xCaW5kRnJhbWVidWZmZXJFWFQoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8pOwogI2VuZGlm
CiAKICAgICAvLyBPcGVuR0wgZ2l2ZXMgdXMgQUJHUiBvbiAzMiBiaXRzLCBhbmQgd2l0aCB0aGUg
b3JpZ2luIGF0IHRoZSBib3R0b20gbGVmdApAQCAtMjI0LDYgKzIyNCw3IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHls
ZU9wdGlvbkdyYXBoCiAgICAgLy8gd2l0aCBicm93c2VycyBPcGVuR0wgY29udGV4dC4KICAgICBR
R0xXaWRnZXQqIHZpZXdwb3J0R0xXaWRnZXQgPSBnZXRWaWV3cG9ydEdMV2lkZ2V0KCk7CiAgICAg
aWYgKHZpZXdwb3J0R0xXaWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBtX3ZpZXdwb3J0R0xX
aWRnZXQgJiYgdmlld3BvcnRHTFdpZGdldCA9PSBwYWludGVyLT5kZXZpY2UoKSkgeworICAgICAg
ICBtX2NvbnRleHQtPnByZXBhcmVUZXh0dXJlKCk7CiAgICAgICAgIHZpZXdwb3J0R0xXaWRnZXQt
PmRyYXdUZXh0dXJlKHJlY3QsIG1fY29udGV4dC0+bV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMzQsMTUgKzIzNSwxNSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRp
b25HcmFwaAogCiAgICAgbV9nbFdpZGdldC0+bWFrZUN1cnJlbnQoKTsKICNpZiBkZWZpbmVkKFFU
X09QRU5HTF9FU18yKQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7Ci0jZWxzZQogICAgIG1fY29udGV4dC0+Z2xC
aW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQt
Pm1fZmJvKTsKKyNlbHNlCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFw
aGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9mYm8pOwogI2VuZGlmCiAg
ICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJlY3Qu
aGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6VU5T
SUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwogI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCi0g
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Nv
bnRleHQtPm1fYm91bmRGQk8pOwotI2Vsc2UKICAgICBtX2NvbnRleHQtPmdsQmluZEZyYW1lYnVm
ZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJP
KTsKKyNlbHNlCisgICAgbV9jb250ZXh0LT5nbEJpbmRGcmFtZWJ1ZmZlckVYVChHcmFwaGljc0Nv
bnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fY29udGV4dC0+bV9ib3VuZEZCTyk7CiAjZW5kaWYKIAog
ICAgIC8vIE9wZW5HTCBnaXZlcyB1cyBBQkdSIG9uIDMyIGJpdHMsIGFuZCB3aXRoIHRoZSBvcmln
aW4gYXQgdGhlIGJvdHRvbSBsZWZ0CkBAIC0zMTAsNyArMzExLDcgQEAgR3JhcGhpY3NDb250ZXh0
M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJz
LCBIb3N0V2kKICAgICAsIG1fbGF5ZXJDb21wb3NpdGVkKGZhbHNlKQogICAgICwgbV9pbnRlcm5h
bENvbG9yRm9ybWF0KDApCiAgICAgLCBtX2JvdW5kRkJPKDApCi0gICAgLCBtX2FjdGl2ZVRleHR1
cmUoMCkKKyAgICAsIG1fYWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCkKICAgICAsIG1fYm91bmRU
ZXh0dXJlMCgwKQogICAgICwgbV9tdWx0aXNhbXBsZUZCTygwKQogICAgICwgbV9tdWx0aXNhbXBs
ZURlcHRoU3RlbmNpbEJ1ZmZlcigwKQpAQCAtMzIzLDcgKzMyNCw2IEBAIEdyYXBoaWNzQ29udGV4
dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRy
cywgSG9zdFdpCiAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCkKICAgICAgICAgbV9hdHRycy5kZXB0
aCA9IHRydWU7CiAjZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogCiAgICAg
aWYgKCFtX2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgTE9HX0VS
Uk9SKCJHcmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4i
KTsKQEAgLTM0NCw3ICszNDQsMTkgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4
dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICB9CiAK
ICAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCisjaWYgZGVmaW5lZChR
VF9PUEVOR0xfRVNfMikKICAgICBnbEdlbkZyYW1lYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9m
Ym8pOworI2Vsc2UKKyAgICBnbEdlbkZyYW1lYnVmZmVyc0VYVCgvKiBjb3VudCAqLyAxLCAmbV9m
Ym8pOworI2VuZGlmCisKKyAgICBnbEdlblRleHR1cmVzKDEsICZtX3RleHR1cmUpOworICAgIGds
QmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZSk7Cisg
ICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFS
KTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpM
SU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfV1JBUF9TLCBHcmFwaGljc0NvbnRleHQzRDo6
Q0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCAwKTsKIAogICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRv
clRleHR1cmUpOwogICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIG1fY29tcG9zaXRvclRleHR1cmUpOwpAQCAtMzU1LDEyICszNjcsMzYgQEAgR3JhcGhpY3ND
b250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVz
IGF0dHJzLCBIb3N0V2kKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCAwKTsKIAogICAgIGlmIChtX2F0dHJzLmRlcHRoKQorI2lmIGRlZmluZWQoUVRfT1BF
TkdMX0VTXzIpCiAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygvKiBjb3VudCAqLyAxLCAmbV9k
ZXB0aFN0ZW5jaWxCdWZmZXIpOworI2Vsc2UKKyAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzRVhU
KC8qIGNvdW50ICovIDEsICZtX2RlcHRoU3RlbmNpbEJ1ZmZlcik7CisjZW5kaWYKIAogICAgIC8v
IEJpbmQgY2FudmFzIEZCTyBhbmQgc2V0IGluaXRpYWwgY2xlYXIgY29sb3IgdG8gYmxhY2suCiAg
ICAgbV9ib3VuZEZCTyA9IG1fZmJvOworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7
CisjZWxzZQorICAgIGdsQmluZEZyYW1lYnVmZmVyRVhUKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFN
RUJVRkZFUiwgbV9mYm8pOworI2VuZGlmCiAgICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAs
IDAuMCk7CisKKyAgICAvLyBBTkdMRSBpbml0aWFsaXphdGlvbi4KKyAgICBTaEJ1aWx0SW5SZXNv
dXJjZXMgQU5HTEVSZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVS
ZXNvdXJjZXMpOworCisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJU
RVhfQVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOworICAgIGdldElu
dGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFO
R0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKKyAgICBnZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHQzRDo6TUFYX1ZBUllJTkdfVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1h
eFZhcnlpbmdWZWN0b3JzKTsKKyAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFY
X1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNvdXJjZXMuTWF4VmVydGV4VGV4
dHVyZUltYWdlVW5pdHMpOworICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhf
Q09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVzb3VyY2VzLk1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMpOyAKKyAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6
TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VV
bml0cyk7CisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9GUkFHTUVOVF9V
TklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3Jz
KTsKKworICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdMIEVTLgorICAgIEFOR0xFUmVz
b3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKKyAgICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhB
TkdMRVJlc291cmNlcyk7CiB9CiAKIEdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0
M0QoKQpAQCAtMzk4LDYgKzQzNCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50UmVu
ZGVyaW5nUmVzdWx0c1RvQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQqIGNvCiAgICAgbV9p
bnRlcm5hbC0+cGFpbnQocGFpbnRlciwgMCwgMCk7CiB9CiAKKyNpZiBkZWZpbmVkKFFUX09QRU5H
TF9FU18yKQogUGFzc1JlZlB0cjxJbWFnZURhdGE+IEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJl
bmRlcmluZ1Jlc3VsdHNUb0ltYWdlRGF0YSgpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMg
dG8gYmUgaW1wbGVtZW50ZWQgZm9yIHByb3BlciBub24tcHJlbXVsdGlwbGllZC1hbHBoYQpAQCAt
MTUxNCwxMSArMTU1MSwxMiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpsYXllckNvbXBvc2l0
ZWQoKSBjb25zdAogewogICAgIHJldHVybiBtX2xheWVyQ29tcG9zaXRlZDsKIH0KKyNlbmRpZgog
CiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsKICAg
ICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3
IEV4dGVuc2lvbnMzRFF0KTsKKyAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIobmV3IEV4
dGVuc2lvbnMzRFF0KHRoaXMpKTsKICAgICByZXR1cm4gbV9leHRlbnNpb25zLmdldCgpOwogfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100997</attachid>
            <date>2011-07-15 09:50:12 -0700</date>
            <delta_ts>2011-07-15 09:50:12 -0700</delta_ts>
            <desc>implement antialiasing</desc>
            <filename>antialias.diff</filename>
            <type>text/plain</type>
            <size>24541</size>
            <attacher name="Andrew Wason">rectalogic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5wcmkKaW5kZXggNzkwMGZjMC4uZDJjMzljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKQEAgLTEy
NCw2ICsxMjQsNyBAQCBXRUJDT1JFX0lOQ0xVREVQQVRIID0gXAogV0VCQ09SRV9JTkNMVURFUEFU
SCA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29yZS9icmlkZ2UvcXQgXAogICAgICQkU09VUkNF
X0RJUi9XZWJDb3JlL3BhZ2UvcXQgXAorICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQg
XAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3F0IFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggOGY1ZjRlMy4uNGRkM2VjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM1NzQsMTUgKzM1NzQsMTgg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQkdMPTEpIHsKICAgICAgICAgaHRtbC9jYW52
YXMvV2ViR0xVbmlmb3JtTG9jYXRpb24uaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250
ZXh0LmggXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5oIFwK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0
L0V4dGVuc2lvbnMzRFF0LmgKIAogICAgICF2OCB7CiAgICAgICAgIFNPVVJDRVMgKz0gXAogICAg
ICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCiAg
ICAgfQorCiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGh0bWwvY2FudmFzL0NhbnZhc0NvbnRl
eHRBdHRyaWJ1dGVzLmNwcCBcCiAgICAgICAgIGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcCBc
CkBAIC0zNjAzLDE1ICszNjA2LDEzMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCR0w9
MSkgewogICAgICAgICBodG1sL2NhbnZhcy9XZWJHTFVuaWZvcm1Mb2NhdGlvbi5jcHAgXAogICAg
ICAgICBodG1sL2NhbnZhcy9XZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTLmNwcCBcCiAgICAgICAg
IGh0bWwvY2FudmFzL1dlYktpdExvc2VDb250ZXh0LmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9xdC9EcmF3
aW5nQnVmZmVyUXQuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
RXh0ZW5zaW9uczNEUXQuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0M0RRdC5jcHAKIAogICAgICAgICBJTkNMVURFUEFUSCArPSAkJFBXRC9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUKIAotICAgICAgICBDT05GSUcgKz0gb3BlbmdsLXNoaW1zCisgICAgKmcr
KyogeworICAgICAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLXVudXNlZC12YXJpYWJsZQorICAg
ICAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLW1pc3Npbmctbm9yZXR1cm4KKyAgICAgICAgUU1B
S0VfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtZnVuY3Rpb24KKyAgICAgICAgUU1BS0VfQ1hYRkxB
R1MgKz0gLVduby1wYXJlbnRoZXNlcworICAgICAgICBRTUFLRV9DWFhGTEFHUyArPSAtV25vLXJl
b3JkZXIKKyAgICAgICAgIyBnKysgPCA0LjMgZG9lc24ndCBzdXBwb3J0IC1Xbm8tdHlwZS1saW1p
dHMKKyAgICAgICAgc3lzdGVtKCAkJFFNQUtFX0NYWCAtLXZlcnNpb24gfCBncmVwIC1lICJcXDxb
NC05XVxcLlszLTldXFwuWzAtOV0iICkgeworICAgICAgICAgICAgUU1BS0VfQ1hYRkxBR1MgKz0g
LVduby10eXBlLWxpbWl0cworICAgICAgICB9CisgICAgfQorCisgICAgREVGSU5FUyArPSBZWUVO
QUJMRV9OTFM9MCBZWUxUWVBFX0lTX1RSSVZJQUw9MAorCisgICAgQU5HTEVfRElSID0gJCRyZXBs
YWNlKFBXRCwgIldlYkNvcmUiLCAiVGhpcmRQYXJ0eS9BTkdMRSIpCisKKyAgICBJTkNMVURFUEFU
SCArPSAkJEFOR0xFX0RJUi9zcmMgJCRBTkdMRV9ESVIvaW5jbHVkZQorCisgICAgSEVBREVSUyAr
PSBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db21tb24uaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvZGVidWcuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9F
eHRlbnNpb25CZWhhdmlvci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0Zv
ckxvb3BVbnJvbGwuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5n
LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZ2xzbGFuZ190YWIuaCBcCisg
ICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbmZvU2luay5oIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemVEbGwuaCBcCisgICAgICAgICQkQU5HTEVf
RElSL3NyYy9jb21waWxlci9Jbml0aWFsaXplR2xvYmFscy5oIFwKKyAgICAgICAgJCRBTkdMRV9E
SVIvc3JjL2NvbXBpbGVyL0luaXRpYWxpemUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvaW50ZXJtZWRpYXRlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvbG9jYWxpbnRlcm1lZGlhdGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9NTWFwLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvTWFwTG9uZ1Zh
cmlhYmxlTmFtZXMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9vc2luY2x1
ZGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmggXAor
ICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0R0xTTC5oIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL091dHB1dEdMU0xCYXNlLmggXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIv
c3JjL2NvbXBpbGVyL1BhcnNlSGVscGVyLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29t
cGlsZXIvUG9vbEFsbG9jLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL2F0b20uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvY29tcGlsZS5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9jcHAuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvbWVtb3J5LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL3BhcnNlci5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9wcmVwcm9jZXNzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3Ivc2xnbG9iYWxzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvUXVhbGlmaWVyQWxpdmUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9SZW1vdmVUcmVlLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
U2VhcmNoU3ltYm9sLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvU2hIYW5k
bGUuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5oIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JFU1NMLmggXAorICAg
ICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wuaCBcCisgICAgICAg
ICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9ySExTTC5oIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL1R5cGVzLmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvVW5mb2xkU2VsZWN0LmggXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvdXRpbC5oIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGlt
aXRhdGlvbnMuaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WYXJpYWJsZUlu
Zm8uaCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9WZXJzaW9uR0xTTC5oIFwK
KworICAgIFNPVVJDRVMgKz0gXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvQ29k
ZUdlbkdMU0wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0NvZGVHZW5I
TFNMLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9Db21waWxlci5jcHAg
XAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvZGVidWcuY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcCBcCisgICAgICAgICQkQU5H
TEVfRElSL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvRm9yTG9vcFVucm9sbC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9z
cmMvY29tcGlsZXIvSW5mb1NpbmsuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL0luaXRpYWxpemUuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0lu
aXRpYWxpemVEbGwuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL0ludGVy
bWVkaWF0ZS5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvaW50ZXJtT3V0
LmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9JbnRlcm1UcmF2ZXJzZS5j
cHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvb3Nzb3VyY2VfcG9zaXguY3Bw
IFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVz
LmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRFU1NMLmNwcCBc
CisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMLmNwcCBcCisgICAg
ICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9PdXRwdXRHTFNMQmFzZS5jcHAgXAorICAgICAg
ICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5jcHAgXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvcGFyc2VDb25zdC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJ
Ui9zcmMvY29tcGlsZXIvUGFyc2VIZWxwZXIuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1Bvb2xBbGxvYy5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL2F0b20uYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvY3BwLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL2NwcHN0cnVjdC5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9tZW1vcnkuYyBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xzLmMgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3Jj
L2NvbXBpbGVyL1F1YWxpZmllckFsaXZlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9j
b21waWxlci9SZW1vdmVUcmVlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxl
ci9TZWFyY2hTeW1ib2wuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1No
YWRlckxhbmcuY3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1N5bWJvbFRh
YmxlLmNwcCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9UcmFuc2xhdG9yRVNT
TC5jcHAgXAorICAgICAgICAkJEFOR0xFX0RJUi9zcmMvY29tcGlsZXIvVHJhbnNsYXRvckdMU0wu
Y3BwIFwKKyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1RyYW5zbGF0b3JITFNMLmNw
cCBcCisgICAgICAgICQkQU5HTEVfRElSL3NyYy9jb21waWxlci9VbmZvbGRTZWxlY3QuY3BwIFwK
KyAgICAgICAgJCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL3V0aWwuY3BwIFwKKyAgICAgICAgJCRB
TkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhbGlkYXRlTGltaXRhdGlvbnMuY3BwIFwKKyAgICAgICAg
JCRBTkdMRV9ESVIvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAgXAorICAgICAgICAkJEFO
R0xFX0RJUi9zcmMvY29tcGlsZXIvVmVyc2lvbkdMU0wuY3BwIFwKKworICAgIENPTkZJRyArPSBv
cGVuZ2wtc2hpbXMKIH0KIAogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX01IVE1MPTEpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJp
ZGdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRn
ZS5oCmluZGV4IGE5ZDIyMzguLjBmNGJmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRCcmlkZ2UuaApAQCAtMjksNyArMjksOSBAQAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCi0jaWYgIVBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShRVCkKKyNpbmNsdWRlICJBTkdM
RS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oIgorI2VsaWYgIVBMQVRGT1JNKEdUSykKICNp
bmNsdWRlICJBTkdMRS9TaGFkZXJMYW5nLmgiCiAjZWxzZQogI2luY2x1ZGUgIlNoYWRlckxhbmcu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5oCmluZGV4IDkxYzZkOGYuLjQzM2MwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtNTgsNiArNTgs
NyBAQCBjbGFzcyBDQUxheWVyOwogY2xhc3MgV2ViR0xMYXllcjsKICNlbmRpZgogI2VsaWYgUExB
VEZPUk0oUVQpCisjaW5jbHVkZSAiQU5HTEVXZWJLaXRCcmlkZ2UuaCIKIFFUX0JFR0lOX05BTUVT
UEFDRQogY2xhc3MgUVBhaW50ZXI7CiBjbGFzcyBRUmVjdDsKQEAgLTg4LDEwICs4OSw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7CiBjbGFzcyBE
cmF3aW5nQnVmZmVyOwogY2xhc3MgRXh0ZW5zaW9uczNEOwotI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCAoUExB
VEZPUk0oUVQpICYmICFkZWZpbmVkKFFUX09QRU5HTF9FU18yKSkKIGNsYXNzIEV4dGVuc2lvbnMz
RE9wZW5HTDsKLSNlbmRpZgotI2lmIFBMQVRGT1JNKFFUKQorI2VsaWYgUExBVEZPUk0oUVQpICYm
IGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpCiBjbGFzcyBFeHRlbnNpb25zM0RRdDsKICNlbmRpZgog
Y2xhc3MgSG9zdFdpbmRvdzsKQEAgLTUwMiw3ICs1MDIsNyBAQCBwdWJsaWM6CiAKICAgICBQYXNz
UmVmUHRyPERyYXdpbmdCdWZmZXI+IGNyZWF0ZURyYXdpbmdCdWZmZXIoY29uc3QgSW50U2l6ZSYg
PSBJbnRTaXplKCkpOwogICAgIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oQ0hST01J
VU0pIHx8IFBMQVRGT1JNKEdUSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKENIUk9N
SVVNKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIC8vIFdpdGggbXVsdGlz
YW1wbGluZyBvbiwgYmxpdCBmcm9tIG11bHRpc2FtcGxlRkJPIHRvIHJlZ3VsYXIgRkJPLgogICAg
IHZvaWQgcHJlcGFyZVRleHR1cmUoKTsKICNlbmRpZgpAQCAtODkwLDcgKzg5MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgQWxwaGFPcCBhbHBoYU9wLAogICAgICAgICAgICAgICAg
ICAgICB2b2lkKiBkZXN0aW5hdGlvbkRhdGEpOwogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShHVEspCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFFUKQogICAgIC8vIFRha2UgaW50byBhY2NvdW50IHRoZSB1c2VyJ3MgcmVxdWVzdGVkIGNvbnRl
eHQgY3JlYXRpb24gYXR0cmlidXRlcywKICAgICAvLyBpbiBwYXJ0aWN1bGFyIHN0ZW5jaWwgYW5k
IGFudGlhbGlhcywgYW5kIGRldGVybWluZSB3aGljaCBjb3VsZCBvcgogICAgIC8vIGNvdWxkIG5v
dCBiZSBob25vcmVkIGJhc2VkIG9uIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIE9wZW5HTApAQCAt
OTAyLDcgKzkwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlYWRSZW5kZXJpbmdSZXN1bHRzKHVu
c2lnbmVkIGNoYXIqIHBpeGVscywgaW50IHBpeGVsc1NpemUpOwogI2VuZGlmCiAKLSNpZiBQTEFU
Rk9STShRVCkKKyNpZiBQTEFURk9STShRVCkgJiYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAg
ICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNEUXQ7CiAgICAgT3duUHRyPEV4dGVuc2lvbnMzRFF0
PiBtX2V4dGVuc2lvbnM7CiAjZW5kaWYKQEAgLTkyMywxMCArOTIzLDkgQEAgcHVibGljOgogICAg
IH0gU2hhZGVyU291cmNlRW50cnk7CiAgICAgSGFzaE1hcDxQbGF0Zm9ybTNET2JqZWN0LCBTaGFk
ZXJTb3VyY2VFbnRyeT4gbV9zaGFkZXJTb3VyY2VNYXA7CiAKLSNpZiBQTEFURk9STShNQUMpCi0g
ICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKICAgICBBTkdMRVdlYktpdEJyaWRn
ZSBtX2NvbXBpbGVyOwotCisjaWYgUExBVEZPUk0oTUFDKSB8fCAoUExBVEZPUk0oUVQpICYmICFk
ZWZpbmVkKFFUX09QRU5HTF9FU18yKSkKKyAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3Bl
bkdMOwogICAgIE93blB0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRp
ZgogCkBAIC05NTIsNyArOTUxLDYgQEAgcHVibGljOgogICAgIC8vIEVycm9ycyByYWlzZWQgYnkg
c3ludGhlc2l6ZUdMRXJyb3IoKS4KICAgICBMaXN0SGFzaFNldDxHQzNEZW51bT4gbV9zeW50aGV0
aWNFcnJvcnM7CiAjZW5kaWYKLQogICAgIC8vIEZJWE1FOiBpZGVhbGx5IHRoaXMgd291bGQgYmUg
dXNlZCBvbiBhbGwgcGxhdGZvcm1zLgogI2lmIFBMQVRGT1JNKENIUk9NSVVNKSB8fCBQTEFURk9S
TShRVCkgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCiAgICAgZnJpZW5kIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCmlu
ZGV4IDRjNzE2NGUuLjdkZWQ2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuY3BwCkBAIC0z
Nyw2ICszNyw4IEBACiAjaW5jbHVkZSA8T3BlbkdML2dsLmg+CiAjZWxpZiBQTEFURk9STShHVEsp
CiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKKyNlbGlmIFBMQVRGT1JNKFFUKQorI2luY2x1ZGUg
PGNhaXJvL09wZW5HTFNoaW1zLmg+CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTQ3LDcgKzE0OSw3IEBAIHZvaWQgRXh0ZW5zaW9uczNET3BlbkdMOjpyZW5kZXJidWZmZXJTdG9y
YWdlTXVsdGlzYW1wbGUodW5zaWduZWQgbG9uZyB0YXJnZXQsIHVuCiBQbGF0Zm9ybTNET2JqZWN0
IEV4dGVuc2lvbnMzRE9wZW5HTDo6Y3JlYXRlVmVydGV4QXJyYXlPRVMoKQogewogICAgIG1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0jaWYgIVBMQVRGT1JNKEdUSykgJiYgZGVmaW5l
ZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0CisjaWYgIVBMQVRGT1JNKEdUSykgJiYgIVBMQVRGT1JNKFFUKSAmJiBkZWZpbmVkKEdM
X0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmpl
Y3QKICAgICBHTHVpbnQgYXJyYXkgPSAwOwogICAgIGdsR2VuVmVydGV4QXJyYXlzQVBQTEUoMSwg
JmFycmF5KTsKICAgICByZXR1cm4gYXJyYXk7CkBAIC0xNjIsNyArMTY0LDcgQEAgdm9pZCBFeHRl
bnNpb25zM0RPcGVuR0w6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJy
YXkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3Vy
cmVudCgpOwotI2lmICFQTEFURk9STShHVEspICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2Fy
cmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdAorI2lmICFQTEFURk9S
TShHVEspICYmICFQTEFURk9STShRVCkgJiYgZGVmaW5lZChHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlf
b2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0CiAgICAgZ2xEZWxldGVWZXJ0
ZXhBcnJheXNBUFBMRSgxLCAmYXJyYXkpOwogI2VuZGlmCiB9CkBAIC0xNzMsNyArMTc1LDcgQEAg
R0MzRGJvb2xlYW4gRXh0ZW5zaW9uczNET3BlbkdMOjppc1ZlcnRleEFycmF5T0VTKFBsYXRmb3Jt
M0RPYmplY3QgYXJyYXkpCiAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAKICAgICBtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotI2lmICFQTEFURk9STShHVEspICYmIGRlZmlu
ZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQTEVfdmVydGV4X2FycmF5
X29iamVjdAorI2lmICFQTEFURk9STShHVEspICYmICFQTEFURk9STShRVCkgJiYgZGVmaW5lZChH
TF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2JqZWN0KSAmJiBHTF9BUFBMRV92ZXJ0ZXhfYXJyYXlfb2Jq
ZWN0CiAgICAgcmV0dXJuIGdsSXNWZXJ0ZXhBcnJheUFQUExFKGFycmF5KTsKICNlbHNlCiAgICAg
cmV0dXJuIEdMX0ZBTFNFOwpAQCAtMTg2LDcgKzE4OCw3IEBAIHZvaWQgRXh0ZW5zaW9uczNET3Bl
bkdMOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCBhcnJheSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSNpZiAhUExB
VEZPUk0oR1RLKSAmJiBkZWZpbmVkKEdMX0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QpICYmIEdM
X0FQUExFX3ZlcnRleF9hcnJheV9vYmplY3QKKyNpZiAhUExBVEZPUk0oR1RLKSAmJiAhUExBVEZP
Uk0oUVQpICYmIGRlZmluZWQoR0xfQVBQTEVfdmVydGV4X2FycmF5X29iamVjdCkgJiYgR0xfQVBQ
TEVfdmVydGV4X2FycmF5X29iamVjdAogICAgIGdsQmluZFZlcnRleEFycmF5QVBQTEUoYXJyYXkp
OwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBm
ZDcyMDczLi5jZmI2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAK
QEAgLTUwLDYgKzUwLDggQEAKICNpbmNsdWRlIDxPcGVuR0wvZ2wuaD4KICNlbGlmIFBMQVRGT1JN
KEdUSykKICNpbmNsdWRlICJPcGVuR0xTaGltcy5oIgorI2VsaWYgUExBVEZPUk0oUVQpCisjaW5j
bHVkZSA8Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xMTYsNiArMTE4LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cmVhZFJlbmRlcmlu
Z1Jlc3VsdHModW5zaWduZWQgY2hhciAqcGl4ZWxzLCBpbnQgcGl4ZWxzU2kKICAgICAgICAgOjpn
bEJpbmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUl9FWFQsIG1fYm91bmRGQk8pOwogfQog
CisjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJp
bmdSZXN1bHRzVG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCkKIHsKICAg
ICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gY29udGV4dC0+Y2FudmFzKCk7CkBAIC0xNDIs
NiArMTQ1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9DYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCogY28KICAgICBwYWludFRvQ2FudmFzKHBp
eGVscy5nZXQoKSwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwKICAgICAgICAgICAg
ICAgICAgIGNhbnZhcy0+d2lkdGgoKSwgY2FudmFzLT5oZWlnaHQoKSwgaW1hZ2VCdWZmZXItPmNv
bnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkpOwogfQorI2VuZGlmCiAKIFBhc3NSZWZQdHI8SW1h
Z2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9JbWFnZURh
dGEoKQogewpAQCAtMzMzLDcgKzMzNyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnByZXBh
cmVUZXh0dXJlKCkKICAgICAgICAgOjpnbEJsaXRGcmFtZWJ1ZmZlckVYVCgwLCAwLCBtX2N1cnJl
bnRXaWR0aCwgbV9jdXJyZW50SGVpZ2h0LCAwLCAwLCBtX2N1cnJlbnRXaWR0aCwgbV9jdXJyZW50
SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwogICAgIH0KICAgICA6Omds
QmluZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSX0VYVCwgbV9mYm8pOwotICAgIDo6Z2xB
Y3RpdmVUZXh0dXJlKDApOworICAgIDo6Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKICAg
ICA6OmdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAg
ICAgOjpnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1faW50ZXJuYWxDb2xvckZv
cm1hdCwgMCwgMCwgbV9jdXJyZW50V2lkdGgsIG1fY3VycmVudEhlaWdodCwgMCk7CiAgICAgOjpn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fYm91bmRUZXh0dXJlMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4
dDNEUXQuY3BwCmluZGV4IGEyMmIxNzcuLjU4MDY5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3Bw
CkBAIC0yMyw3ICsyMywxMSBAQAogI2luY2x1ZGUgIldlYkdMT2JqZWN0LmgiCiAjaW5jbHVkZSA8
Y2Fpcm8vT3BlbkdMU2hpbXMuaD4KICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICNpbmNsdWRlICJFeHRlbnNpb25zM0RRdC5o
IgorI2Vsc2UKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RPcGVuR0wuaCIKKyNlbmRpZgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSG9zdFdpbmRvdy5oIgpAQCAtNzYsNiArODAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdp
ZGdldCopOwogICAgIFFSZWN0RiBib3VuZGluZ1JlY3QoKSBjb25zdDsKKyAgICB2b2lkIG11bHRp
c2FtcGxlUmVzb2x2ZSgpIGNvbnN0OwogCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4
dDsKICAgICBIb3N0V2luZG93KiBtX2hvc3RXaW5kb3c7CkBAIC0xMDgsMTEgKzExMyw2IEBAIEdy
YXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OkdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWwoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsCiAgICAgbV9nbFdpZGdldC0+c2V0R2VvbWV0cnkoMCwgMCwg
MCwgMCk7CiAKICAgICBtX2dsV2lkZ2V0LT5tYWtlQ3VycmVudCgpOwotCi0jaWYgIWRlZmluZWQo
UVRfT1BFTkdMX0VTXzIpCi0gICAgZ2xFbmFibGUoR0xfUE9JTlRfU1BSSVRFKTsKLSAgICBnbEVu
YWJsZShHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9TSVpFKTsKLSNlbmRpZgogfQogCiBHcmFwaGlj
c0NvbnRleHQzREludGVybmFsOjp+R3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbCgpCkBAIC0xNDIs
OSArMTQyLDIzIEBAIHN0YXRpYyBpbmxpbmUgcXVpbnQzMiBzd2FwQmdyVG9SZ2IocXVpbnQzMiBw
aXhlbCkKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFVTRShURVhUVVJFX01B
UFBFUikKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RJbnRlcm5hbDo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5LCBC
aXRtYXBUZXh0dXJlKiBtYXNrKSBjb25zdAogeworICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMu
YW50aWFsaWFzKSB7CisgICAgICAgIGNvbnN0IFFHTENvbnRleHQqIGN1cnJlbnRDb250ZXh0ID0g
UUdMQ29udGV4dDo6Y3VycmVudENvbnRleHQoKTsKKyAgICAgICAgY29uc3QgUUdMQ29udGV4dCog
d2lkZ2V0Q29udGV4dCA9IG1fZ2xXaWRnZXQtPmNvbnRleHQoKTsKKyAgICAgICAgaWYgKGN1cnJl
bnRDb250ZXh0ICE9IHdpZGdldENvbnRleHQpCisgICAgICAgICAgICBtX2dsV2lkZ2V0LT5tYWtl
Q3VycmVudCgpOworICAgICAgICBtdWx0aXNhbXBsZVJlc29sdmUoKTsKKyAgICAgICAgaWYgKGN1
cnJlbnRDb250ZXh0KSB7CisgICAgICAgICAgICBpZiAoY3VycmVudENvbnRleHQgIT0gd2lkZ2V0
Q29udGV4dCkKKyAgICAgICAgICAgICAgICBjb25zdF9jYXN0PFFHTENvbnRleHQqPihjdXJyZW50
Q29udGV4dCktPm1ha2VDdXJyZW50KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9nbFdpZGdldC0+ZG9uZUN1cnJlbnQoKTsKKyAgICB9CisKICAgICBpZiAodGV4dHVy
ZU1hcHBlci0+aXNPcGVuR0xCYWNrZWQoKSkgewogICAgICAgICBUZXh0dXJlTWFwcGVyR0wqIHRl
eG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVyZU1hcHBlcik7Ci0g
ICAgICAgIHRleG1hcEdMLT5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fY29tcG9zaXRvclRleHR1
cmUsICFtX2NvbnRleHQtPm1fYXR0cnMuYWxwaGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5LCBtYXNrLCB0cnVlIC8qIGZsaXAgKi8pOworICAgICAgICB0ZXht
YXBHTC0+ZHJhd1RleHR1cmUobV9jb250ZXh0LT5tX3RleHR1cmUsICFtX2NvbnRleHQtPm1fYXR0
cnMuYWxwaGEsIEZsb2F0U2l6ZSgxLCAxKSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5LCBt
YXNrLCB0cnVlIC8qIGZsaXAgKi8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDgs
NiArMjIyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICAvLyB3aXRoIGJyb3dzZXJz
IE9wZW5HTCBjb250ZXh0LgogICAgIFFHTFdpZGdldCogdmlld3BvcnRHTFdpZGdldCA9IGdldFZp
ZXdwb3J0R0xXaWRnZXQoKTsKICAgICBpZiAodmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdM
V2lkZ2V0ID09IG1fdmlld3BvcnRHTFdpZGdldCAmJiB2aWV3cG9ydEdMV2lkZ2V0ID09IHBhaW50
ZXItPmRldmljZSgpKSB7CisgICAgICAgIG1fY29udGV4dC0+cHJlcGFyZVRleHR1cmUoKTsKICAg
ICAgICAgdmlld3BvcnRHTFdpZGdldC0+ZHJhd1RleHR1cmUocmVjdCwgbV9jb250ZXh0LT5tX2Nv
bXBvc2l0b3JUZXh0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxNyw2ICsyMzIs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNESW50ZXJuYWw6OnBhaW50KFFQYWludGVyKiBwYWlu
dGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaAogICAgIHF1aW50MzIqIGltYWdlUGl4ZWxzID0g
cmVpbnRlcnByZXRfY2FzdDxxdWludDMyKj4ob2Zmc2NyZWVuSW1hZ2UuYml0cygpKTsKIAogICAg
IG1fZ2xXaWRnZXQtPm1ha2VDdXJyZW50KCk7CisgICAgaWYgKG1fY29udGV4dC0+bV9hdHRycy5h
bnRpYWxpYXMpCisgICAgICAgIG11bHRpc2FtcGxlUmVzb2x2ZSgpOwogICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2Zibyk7
CiAgICAgZ2xSZWFkUGl4ZWxzKC8qIHggKi8gMCwgLyogeSAqLyAwLCByZWN0LndpZHRoKCksIHJl
Y3QuaGVpZ2h0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBLCBHcmFwaGljc0NvbnRleHQzRDo6
VU5TSUdORURfQllURSwgaW1hZ2VQaXhlbHMpOwogICAgIGdsQmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9jb250ZXh0LT5tX2JvdW5kRkJPKTsKQEAgLTI0
OCw2ICsyNjUsMTQgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzREludGVybmFsOjpwYWludChRUGFp
bnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGgKICAgICBwYWludGVyLT5kcmF3
SW1hZ2UoLyogeCAqLyAwLCAvKiB5ICovIDAsIG9mZnNjcmVlbkltYWdlKTsKIH0KIAordm9pZCBH
cmFwaGljc0NvbnRleHQzREludGVybmFsOjptdWx0aXNhbXBsZVJlc29sdmUoKSBjb25zdAorewor
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfRVhULCBtX2NvbnRleHQt
Pm1fbXVsdGlzYW1wbGVGQk8pOworICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVC
VUZGRVJfRVhULCBtX2NvbnRleHQtPm1fZmJvKTsKKyAgICBnbEJsaXRGcmFtZWJ1ZmZlcigwLCAw
LCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdodCwg
MCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWln
aHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX0xJTkVBUik7CisgICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2NvbnRleHQtPm1fYm91bmRGQk8p
OworfQorCiBQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBHcmFwaGljc0NvbnRleHQzRDo6
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2luZG93KiBo
b3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUpCiB7
CiAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IHJl
bmRlcmluZyBkaXJlY3RseSB0byB0aGUgSG9zdFdpbmRvdy4KQEAgLTI2OSw3ICsyOTQsNyBAQCBH
cmFwaGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0
dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaQogICAgICwgbV9sYXllckNvbXBvc2l0ZWQoZmFsc2UpCiAg
ICAgLCBtX2ludGVybmFsQ29sb3JGb3JtYXQoMCkKICAgICAsIG1fYm91bmRGQk8oMCkKLSAgICAs
IG1fYWN0aXZlVGV4dHVyZSgwKQorICAgICwgbV9hY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKQog
ICAgICwgbV9ib3VuZFRleHR1cmUwKDApCiAgICAgLCBtX211bHRpc2FtcGxlRkJPKDApCiAgICAg
LCBtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKDApCkBAIC0yNzksMTAgKzMwNCw4IEBA
IEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKICAg
ICBtX2F0dHJzLnN0ZW5jaWwgPSBmYWxzZTsKICNlbHNlCi0gICAgaWYgKG1fYXR0cnMuc3RlbmNp
bCkKLSAgICAgICAgbV9hdHRycy5kZXB0aCA9IHRydWU7CisgICAgdmFsaWRhdGVBdHRyaWJ1dGVz
KCk7CiAjZW5kaWYKLSAgICBtX2F0dHJzLmFudGlhbGlhcyA9IGZhbHNlOwogCiAgICAgaWYgKCFt
X2ludGVybmFsLT5tX2dsV2lkZ2V0LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgTE9HX0VSUk9SKCJH
cmFwaGljc0NvbnRleHQzRDogUUdMV2lkZ2V0IGluaXRpYWxpemF0aW9uIGZhaWxlZC4iKTsKQEAg
LTMwNCw2ICszMjcsMTQgQEAgR3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKEdy
YXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzLCBIb3N0V2kKICAgICAvLyBDcmVhdGUg
YnVmZmVycyBmb3IgdGhlIGNhbnZhcyBGQk8uCiAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoLyogY291
bnQgKi8gMSwgJm1fZmJvKTsKIAorICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1fdGV4dHVyZSk7Cisg
ICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJl
KTsKKyAgICBnbFRleFBhcmFtZXRlcmYoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpM
SU5FQVIpOworICAgIGdsVGV4UGFyYW1ldGVyZihHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0
M0Q6OkxJTkVBUik7CisgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1MsIEdyYXBoaWNzQ29udGV4
dDNEOjpDTEFNUF9UT19FREdFKTsKKyAgICBnbFRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX1dSQVBfVCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OkNMQU1QX1RPX0VER0UpOworICAgIGdsQmluZFRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIDApOworCiAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbV9jb21w
b3NpdG9yVGV4dHVyZSk7CiAgICAgZ2xCaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CiAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSKTsKQEAgLTMxMiwxMiArMzQzLDQzIEBA
IEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6
QXR0cmlidXRlcyBhdHRycywgSG9zdFdpCiAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9XUkFQX1QsIEdy
YXBoaWNzQ29udGV4dDNEOjpDTEFNUF9UT19FREdFKTsKICAgICBnbEJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKTsKIAotICAgIGlmIChtX2F0dHJzLmRlcHRoKQot
ICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoLyogY291bnQgKi8gMSwgJm1fZGVwdGhTdGVuY2ls
QnVmZmVyKTsKKyAgICAvLyBDcmVhdGUgYSBtdWx0aXNhbXBsZSBGQk8uCisgICAgaWYgKG1fYXR0
cnMuYW50aWFsaWFzKSB7CisgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtX211bHRpc2Ft
cGxlRkJPKTsKKyAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IG1fbXVs
dGlzYW1wbGVGQk87CisgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbV9tdWx0aXNhbXBs
ZUNvbG9yQnVmZmVyKTsKKyAgICAgICAgaWYgKG1fYXR0cnMuc3RlbmNpbCB8fCBtX2F0dHJzLmRl
cHRoKQorICAgICAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRGVw
dGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8vIEJpbmQgY2Fu
dmFzIEZCTworICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVIsIG1fZmJvKTsKKyAgICAgICAgbV9ib3VuZEZCTyA9IG1fZmJvOworICAgICAgICBp
ZiAobV9hdHRycy5zdGVuY2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAgICBnbEdlblJl
bmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICB9CiAKLSAgICAvLyBC
aW5kIGNhbnZhcyBGQk8gYW5kIHNldCBpbml0aWFsIGNsZWFyIGNvbG9yIHRvIGJsYWNrLgotICAg
IG1fYm91bmRGQk8gPSBtX2ZibzsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHcmFwaGljc0NvbnRl
eHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKKyAgICAvLyBBTkdMRSBpbml0aWFsaXphdGlvbi4K
KyAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7CisgICAgU2hJbml0QnVpbHRJ
blJlc291cmNlcygmQU5HTEVSZXNvdXJjZXMpOworCisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3ND
b250ZXh0M0Q6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0
dHJpYnMpOworICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1VO
SUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsK
KyAgICBnZXRJbnRlZ2VydihHcmFwaGljc0NvbnRleHQzRDo6TUFYX1ZBUllJTkdfVkVDVE9SUywg
JkFOR0xFUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzKTsKKyAgICBnZXRJbnRlZ2VydihHcmFw
aGljc0NvbnRleHQzRDo6TUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmQU5HTEVSZXNv
dXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgIGdldEludGVnZXJ2KEdyYXBo
aWNzQ29udGV4dDNEOjpNQVhfQ09NQklORURfVEVYVFVSRV9JTUFHRV9VTklUUywgJkFOR0xFUmVz
b3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOyAKKyAgICBnZXRJbnRlZ2VydihH
cmFwaGljc0NvbnRleHQzRDo6TUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZBTkdMRVJlc291cmNl
cy5NYXhUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0
M0Q6Ok1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZBTkdMRVJlc291cmNlcy5NYXhGcmFn
bWVudFVuaWZvcm1WZWN0b3JzKTsKKworICAgIC8vIEFsd2F5cyBzZXQgdG8gMSBmb3IgT3BlbkdM
IEVTLgorICAgIEFOR0xFUmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gMTsKKyAgICBtX2NvbXBp
bGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CisKKyNpZiAhZGVmaW5lZChRVF9PUEVO
R0xfRVNfMikKKyAgICBnbEVuYWJsZShHTF9QT0lOVF9TUFJJVEUpOworICAgIGdsRW5hYmxlKEdM
X1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUpOworI2VuZGlmCiAgICAgZ2xDbGVhckNvbG9yKDAu
MCwgMC4wLCAwLjAsIDAuMCk7CiB9CiAKQEAgLTMyNiw3ICszODgsMTUgQEAgR3JhcGhpY3NDb250
ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgpCiAgICAgbV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+
bWFrZUN1cnJlbnQoKTsKICAgICBpZiAobV9pbnRlcm5hbC0+bV9nbFdpZGdldC0+aXNWYWxpZCgp
KSB7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1fY29tcG9zaXRvclRleHR1cmUpOwot
ICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsK
KyAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsKKyAgICAgICAgaWYgKG1f
YXR0cnMuYW50aWFsaWFzKSB7CisgICAgICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwg
Jm1fbXVsdGlzYW1wbGVDb2xvckJ1ZmZlcik7CisgICAgICAgICAgICBpZiAobV9hdHRycy5zdGVu
Y2lsIHx8IG1fYXR0cnMuZGVwdGgpCisgICAgICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZtX211bHRpc2FtcGxlRGVwdGhTdGVuY2lsQnVmZmVyKTsKKyAgICAgICAgICAgIGds
RGVsZXRlRnJhbWVidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKKyAgICAgICAgfQorICAg
ICAgICBlbHNlIGlmIChtX2F0dHJzLnN0ZW5jaWwgfHwgbV9hdHRycy5kZXB0aCkKKyAgICAgICAg
ICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbV9kZXB0aFN0ZW5jaWxCdWZmZXIpOwogICAg
ICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbV9mYm8pOwogICAgIH0KIH0KQEAgLTM2Miw2
ICs0MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1Jlc3VsdHNU
b0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0KiBjbwogICAgIG1faW50ZXJuYWwtPnBhaW50
KHBhaW50ZXIsIDAsIDApOwogfQogCisjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKIFBhc3NS
ZWZQdHI8SW1hZ2VEYXRhPiBHcmFwaGljc0NvbnRleHQzRDo6cGFpbnRSZW5kZXJpbmdSZXN1bHRz
VG9JbWFnZURhdGEoKQogewogICAgIC8vIEZJWE1FOiBUaGlzIG5lZWRzIHRvIGJlIGltcGxlbWVu
dGVkIGZvciBwcm9wZXIgbm9uLXByZW11bHRpcGxpZWQtYWxwaGEKQEAgLTE0ODUsNiArMTU1Niw3
IEBAIEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lvbnMoKQogICAg
ICAgICBtX2V4dGVuc2lvbnMgPSBhZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNEUXQpOwogICAgIHJl
dHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CisjZW5kaWYKIAogYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHQzNEZW51bSBmb3JtYXQsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>